@dataworks-technology/cli 1.2.0 → 1.3.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/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +16 -0
- package/README.md +69 -0
- package/bin/mcp.js +9 -0
- package/bin/postinstall.js +23 -0
- package/dist/commands/agents/install.d.ts +17 -0
- package/dist/commands/agents/install.d.ts.map +1 -0
- package/dist/commands/agents/install.js +57 -0
- package/dist/commands/agents/install.js.map +1 -0
- package/dist/commands/agents/reminder.d.ts +16 -0
- package/dist/commands/agents/reminder.d.ts.map +1 -0
- package/dist/commands/agents/reminder.js +45 -0
- package/dist/commands/agents/reminder.js.map +1 -0
- package/dist/commands/commands.d.ts.map +1 -1
- package/dist/commands/commands.js +2 -0
- package/dist/commands/commands.js.map +1 -1
- package/dist/lib/agent-install.d.ts +24 -0
- package/dist/lib/agent-install.d.ts.map +1 -0
- package/dist/lib/agent-install.js +196 -0
- package/dist/lib/agent-install.js.map +1 -0
- package/dist/lib/agent-reminder.d.ts +17 -0
- package/dist/lib/agent-reminder.d.ts.map +1 -0
- package/dist/lib/agent-reminder.js +81 -0
- package/dist/lib/agent-reminder.js.map +1 -0
- package/dist/lib/command.d.ts +1 -0
- package/dist/lib/command.d.ts.map +1 -1
- package/dist/lib/command.js +5 -0
- package/dist/lib/command.js.map +1 -1
- package/dist/lib/query-metrics.d.ts +72 -0
- package/dist/lib/query-metrics.d.ts.map +1 -0
- package/dist/lib/query-metrics.js +383 -0
- package/dist/lib/query-metrics.js.map +1 -0
- package/dist/mcp/main.d.ts +2 -0
- package/dist/mcp/main.d.ts.map +1 -0
- package/dist/mcp/main.js +7 -0
- package/dist/mcp/main.js.map +1 -0
- package/dist/mcp/server.d.ts +85 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +235 -0
- package/dist/mcp/server.js.map +1 -0
- package/oclif.manifest.json +977 -864
- package/package.json +15 -4
- package/plugins/dataworks/.claude-plugin/plugin.json +17 -0
- package/plugins/dataworks/.codex-plugin/plugin.json +37 -0
- package/plugins/dataworks/.mcp.json +8 -0
- package/plugins/dataworks/skills/query-dataworks-metrics/SKILL.md +48 -0
- package/plugins/dataworks/skills/query-dataworks-metrics/agents/openai.yaml +13 -0
- package/skills/dataworks-cli/SKILL.md +18 -2
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { configPath } from "./config-store.js";
|
|
4
|
+
const reminderIntervalMs = 24 * 60 * 60 * 1000;
|
|
5
|
+
const defaultPreferences = {
|
|
6
|
+
disabled: false,
|
|
7
|
+
configured: false,
|
|
8
|
+
};
|
|
9
|
+
export function agentReminderPath() {
|
|
10
|
+
return join(dirname(configPath()), "agent-reminder.json");
|
|
11
|
+
}
|
|
12
|
+
export async function readAgentReminderPreferences() {
|
|
13
|
+
try {
|
|
14
|
+
const stored = JSON.parse(await readFile(agentReminderPath(), "utf8"));
|
|
15
|
+
return {
|
|
16
|
+
disabled: stored.disabled === true,
|
|
17
|
+
configured: stored.configured === true,
|
|
18
|
+
lastShownAt: typeof stored.lastShownAt === "string" ? stored.lastShownAt : undefined,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (error?.code === "ENOENT")
|
|
23
|
+
return { ...defaultPreferences };
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function writeAgentReminderPreferences(preferences) {
|
|
28
|
+
const path = agentReminderPath();
|
|
29
|
+
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
30
|
+
await writeFile(path, `${JSON.stringify(preferences, null, 2)}\n`, {
|
|
31
|
+
mode: 0o600,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export function shouldShowAgentReminder(preferences, context) {
|
|
35
|
+
if (!context.isTTY || context.disabledByEnvironment)
|
|
36
|
+
return false;
|
|
37
|
+
if (preferences.disabled || preferences.configured)
|
|
38
|
+
return false;
|
|
39
|
+
if (context.argv.includes("--json"))
|
|
40
|
+
return false;
|
|
41
|
+
if (context.argv[0] === "agents")
|
|
42
|
+
return false;
|
|
43
|
+
if (!preferences.lastShownAt)
|
|
44
|
+
return true;
|
|
45
|
+
const lastShown = Date.parse(preferences.lastShownAt);
|
|
46
|
+
if (!Number.isFinite(lastShown))
|
|
47
|
+
return true;
|
|
48
|
+
return (context.now ?? new Date()).getTime() - lastShown >= reminderIntervalMs;
|
|
49
|
+
}
|
|
50
|
+
export async function maybeShowAgentReminder(argv) {
|
|
51
|
+
try {
|
|
52
|
+
const preferences = await readAgentReminderPreferences();
|
|
53
|
+
if (!shouldShowAgentReminder(preferences, {
|
|
54
|
+
argv,
|
|
55
|
+
isTTY: process.stderr.isTTY === true,
|
|
56
|
+
disabledByEnvironment: process.env.DW_NO_AGENT_REMINDER === "1",
|
|
57
|
+
})) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
process.stderr.write("Tip: enable Dataworks in Codex or Claude Code with `dw agents install`.\n" +
|
|
61
|
+
"Hide this reminder with `dw agents reminder disable`.\n");
|
|
62
|
+
await writeAgentReminderPreferences({
|
|
63
|
+
...preferences,
|
|
64
|
+
lastShownAt: new Date().toISOString(),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// A reminder must never block or fail the requested CLI command.
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export async function configureAgentReminder(action) {
|
|
72
|
+
const current = await readAgentReminderPreferences();
|
|
73
|
+
const preferences = action === "disable"
|
|
74
|
+
? { ...current, disabled: true }
|
|
75
|
+
: action === "configured"
|
|
76
|
+
? { ...current, configured: true }
|
|
77
|
+
: { disabled: false, configured: false };
|
|
78
|
+
await writeAgentReminderPreferences(preferences);
|
|
79
|
+
return preferences;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=agent-reminder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-reminder.js","sourceRoot":"","sources":["../../src/lib/agent-reminder.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/command.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Command } from "@oclif/core";
|
|
2
2
|
import type { CommandError } from "@oclif/core/interfaces";
|
|
3
3
|
export declare abstract class DataworksCommand extends Command {
|
|
4
|
+
protected init(): Promise<void>;
|
|
4
5
|
protected catch(error: CommandError): Promise<void>;
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,8BAAsB,gBAAiB,SAAQ,OAAO;cAC3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;cAKrB,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBnE"}
|
package/dist/lib/command.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { Command } from "@oclif/core";
|
|
2
2
|
import { toCliError } from "./errors.js";
|
|
3
|
+
import { maybeShowAgentReminder } from "./agent-reminder.js";
|
|
3
4
|
export class DataworksCommand extends Command {
|
|
5
|
+
async init() {
|
|
6
|
+
await super.init();
|
|
7
|
+
await maybeShowAgentReminder(this.argv);
|
|
8
|
+
}
|
|
4
9
|
async catch(error) {
|
|
5
10
|
const cliError = toCliError(error);
|
|
6
11
|
if (this.argv.includes("--json")) {
|
package/dist/lib/command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAgB,gBAAiB,SAAQ,OAAO;IACjC,KAAK,CAAC,IAAI;QAC3B,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEkB,KAAK,CAAC,KAAK,CAAC,KAAmB;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC;gBAChB,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;iBAC1B;aACF,CAAC,IAAI,CACP,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { executeGraphql } from "./graphql-transport.js";
|
|
2
|
+
import { requireSession } from "./session.js";
|
|
3
|
+
export type MetricCategory = "METRICS_TYPE_A" | "METRICS_TYPE_B" | "METRICS_TYPE_C";
|
|
4
|
+
export interface QueryMetricsInput {
|
|
5
|
+
athleteId?: string;
|
|
6
|
+
athleteName?: string;
|
|
7
|
+
metric: string;
|
|
8
|
+
metricCategory?: MetricCategory;
|
|
9
|
+
limit?: number;
|
|
10
|
+
order?: "newest" | "oldest";
|
|
11
|
+
from?: string;
|
|
12
|
+
to?: string;
|
|
13
|
+
eventId?: string;
|
|
14
|
+
datasetDatasourceId?: string;
|
|
15
|
+
tenantId?: string;
|
|
16
|
+
timeoutMs?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface MetricPosition {
|
|
19
|
+
latitude: number;
|
|
20
|
+
longitude: number;
|
|
21
|
+
}
|
|
22
|
+
export interface MetricRow {
|
|
23
|
+
timestamp: string | number | null;
|
|
24
|
+
timestampIso: string | null;
|
|
25
|
+
athleteId: string | null;
|
|
26
|
+
metric: string | null;
|
|
27
|
+
value: unknown;
|
|
28
|
+
unit: string | null;
|
|
29
|
+
position: MetricPosition | null;
|
|
30
|
+
eventId: string | null;
|
|
31
|
+
datasetDatasourceId: string | null;
|
|
32
|
+
}
|
|
33
|
+
export interface QueryMetricsOutput {
|
|
34
|
+
environment: "uat" | "live";
|
|
35
|
+
tenantId: string;
|
|
36
|
+
athlete: {
|
|
37
|
+
publicId: string;
|
|
38
|
+
name: string | null;
|
|
39
|
+
matchedBy: "public_id" | "name" | "partial_name";
|
|
40
|
+
};
|
|
41
|
+
metric: {
|
|
42
|
+
requested: string;
|
|
43
|
+
canonical: string;
|
|
44
|
+
category: MetricCategory;
|
|
45
|
+
unit: string | null;
|
|
46
|
+
};
|
|
47
|
+
filters: {
|
|
48
|
+
eventId: string | null;
|
|
49
|
+
datasetDatasourceId: string | null;
|
|
50
|
+
from: string | null;
|
|
51
|
+
to: string | null;
|
|
52
|
+
};
|
|
53
|
+
order: "newest" | "oldest";
|
|
54
|
+
limit: number;
|
|
55
|
+
count: number;
|
|
56
|
+
rowCount: number;
|
|
57
|
+
status: string;
|
|
58
|
+
queryExecutionId: string | null;
|
|
59
|
+
queryTimeMs: number | null;
|
|
60
|
+
rows: MetricRow[];
|
|
61
|
+
}
|
|
62
|
+
export interface QueryMetricsDependencies {
|
|
63
|
+
graphql: typeof executeGraphql;
|
|
64
|
+
session: typeof requireSession;
|
|
65
|
+
sleep: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
66
|
+
now: () => number;
|
|
67
|
+
}
|
|
68
|
+
export declare function queryMetrics(input: QueryMetricsInput, options?: {
|
|
69
|
+
dependencies?: Partial<QueryMetricsDependencies>;
|
|
70
|
+
signal?: AbortSignal;
|
|
71
|
+
}): Promise<QueryMetricsOutput>;
|
|
72
|
+
//# sourceMappingURL=query-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-metrics.d.ts","sourceRoot":"","sources":["../../src/lib/query-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import { executeGraphql } from "./graphql-transport.js";
|
|
2
|
+
import { CliError, toCliError } from "./errors.js";
|
|
3
|
+
import { requireSession } from "./session.js";
|
|
4
|
+
const listAthletesDocument = `query listAthletes($limit: Int, $nextToken: String, $tenant: String!) {
|
|
5
|
+
listAthletes(limit: $limit, nextToken: $nextToken, tenant: $tenant) {
|
|
6
|
+
items { publicId externalId forename surname name nameShort }
|
|
7
|
+
nextToken
|
|
8
|
+
}
|
|
9
|
+
}`;
|
|
10
|
+
const getAthleteDocument = `query getAthlete($publicId: ID!, $tenant: String!) {
|
|
11
|
+
getAthlete(publicId: $publicId, tenant: $tenant) {
|
|
12
|
+
publicId externalId forename surname name nameShort
|
|
13
|
+
}
|
|
14
|
+
}`;
|
|
15
|
+
const executeDataExplorerDocument = `query executeDataExplorerQuery($input: DataExplorerQueryInput!, $tenant: String!) {
|
|
16
|
+
executeDataExplorerQuery(input: $input, tenant: $tenant) {
|
|
17
|
+
columns queryExecutionId queryTimeMs rowCount rows status
|
|
18
|
+
}
|
|
19
|
+
}`;
|
|
20
|
+
const knownMetrics = {
|
|
21
|
+
gps: { canonical: "latlong", category: "METRICS_TYPE_A", unit: null },
|
|
22
|
+
gpsposition: { canonical: "latlong", category: "METRICS_TYPE_A", unit: null },
|
|
23
|
+
heartrate: { canonical: "heartrate", category: "METRICS_TYPE_C", unit: "bpm" },
|
|
24
|
+
bpm: { canonical: "heartrate", category: "METRICS_TYPE_C", unit: "bpm" },
|
|
25
|
+
latlong: { canonical: "latlong", category: "METRICS_TYPE_A", unit: null },
|
|
26
|
+
location: { canonical: "latlong", category: "METRICS_TYPE_A", unit: null },
|
|
27
|
+
position: { canonical: "latlong", category: "METRICS_TYPE_A", unit: null },
|
|
28
|
+
timing: { canonical: "timing", category: "METRICS_TYPE_A", unit: null },
|
|
29
|
+
speed: { canonical: "speed", category: "METRICS_TYPE_B", unit: null },
|
|
30
|
+
altitude: { canonical: "altitude", category: "METRICS_TYPE_B", unit: null },
|
|
31
|
+
cadence: { canonical: "cadence", category: "METRICS_TYPE_B", unit: null },
|
|
32
|
+
power: { canonical: "power", category: "METRICS_TYPE_C", unit: null },
|
|
33
|
+
};
|
|
34
|
+
const defaultDependencies = {
|
|
35
|
+
graphql: executeGraphql,
|
|
36
|
+
session: requireSession,
|
|
37
|
+
sleep: (milliseconds, signal) => new Promise((resolve, reject) => {
|
|
38
|
+
if (signal?.aborted) {
|
|
39
|
+
reject(new CliError("Metric query cancelled", "QUERY_CANCELLED", 4));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const timeout = setTimeout(resolve, milliseconds);
|
|
43
|
+
signal?.addEventListener("abort", () => {
|
|
44
|
+
clearTimeout(timeout);
|
|
45
|
+
reject(new CliError("Metric query cancelled", "QUERY_CANCELLED", 4));
|
|
46
|
+
}, { once: true });
|
|
47
|
+
}),
|
|
48
|
+
now: Date.now,
|
|
49
|
+
};
|
|
50
|
+
function compact(value) {
|
|
51
|
+
return value
|
|
52
|
+
.trim()
|
|
53
|
+
.toLocaleLowerCase()
|
|
54
|
+
.replaceAll(/[^a-z0-9]/g, "");
|
|
55
|
+
}
|
|
56
|
+
function displayName(athlete) {
|
|
57
|
+
const full = [athlete.forename, athlete.surname]
|
|
58
|
+
.filter((part) => Boolean(part?.trim()))
|
|
59
|
+
.join(" ");
|
|
60
|
+
return athlete.name?.trim() || full || athlete.nameShort?.trim() || null;
|
|
61
|
+
}
|
|
62
|
+
function candidate(athlete) {
|
|
63
|
+
return { publicId: athlete.publicId, name: displayName(athlete) };
|
|
64
|
+
}
|
|
65
|
+
function searchableNames(athlete) {
|
|
66
|
+
return [
|
|
67
|
+
athlete.name,
|
|
68
|
+
[athlete.forename, athlete.surname].filter(Boolean).join(" "),
|
|
69
|
+
athlete.nameShort,
|
|
70
|
+
athlete.externalId,
|
|
71
|
+
]
|
|
72
|
+
.filter((value) => Boolean(value?.trim()))
|
|
73
|
+
.map(compact);
|
|
74
|
+
}
|
|
75
|
+
async function listAllAthletes(tenantId, dependencies) {
|
|
76
|
+
const athletes = [];
|
|
77
|
+
let nextToken;
|
|
78
|
+
let pages = 0;
|
|
79
|
+
do {
|
|
80
|
+
const result = await dependencies.graphql(listAthletesDocument, {
|
|
81
|
+
limit: 100,
|
|
82
|
+
nextToken,
|
|
83
|
+
tenant: tenantId,
|
|
84
|
+
});
|
|
85
|
+
const connection = result?.listAthletes;
|
|
86
|
+
athletes.push(...(connection?.items ?? []));
|
|
87
|
+
nextToken = connection?.nextToken;
|
|
88
|
+
pages += 1;
|
|
89
|
+
if (pages >= 100 && nextToken) {
|
|
90
|
+
throw new CliError("Athlete lookup exceeded 10,000 records; use athlete_id instead", "ATHLETE_LOOKUP_LIMIT");
|
|
91
|
+
}
|
|
92
|
+
} while (nextToken);
|
|
93
|
+
return athletes;
|
|
94
|
+
}
|
|
95
|
+
async function resolveAthlete(input, tenantId, dependencies) {
|
|
96
|
+
if (input.athleteId) {
|
|
97
|
+
const result = await dependencies.graphql(getAthleteDocument, {
|
|
98
|
+
publicId: input.athleteId,
|
|
99
|
+
tenant: tenantId,
|
|
100
|
+
});
|
|
101
|
+
if (!result?.getAthlete) {
|
|
102
|
+
throw new CliError(`No athlete found with public ID ${input.athleteId}`, "ATHLETE_NOT_FOUND", 1, { athleteId: input.athleteId });
|
|
103
|
+
}
|
|
104
|
+
return { athlete: result.getAthlete, matchedBy: "public_id" };
|
|
105
|
+
}
|
|
106
|
+
const requested = input.athleteName?.trim();
|
|
107
|
+
if (!requested) {
|
|
108
|
+
throw new CliError("Provide exactly one of athlete_id or athlete_name", "ATHLETE_REQUIRED", 2);
|
|
109
|
+
}
|
|
110
|
+
const normalized = compact(requested);
|
|
111
|
+
const athletes = await listAllAthletes(tenantId, dependencies);
|
|
112
|
+
const exact = athletes.filter((athlete) => searchableNames(athlete).includes(normalized));
|
|
113
|
+
const matches = exact.length > 0
|
|
114
|
+
? exact
|
|
115
|
+
: athletes.filter((athlete) => searchableNames(athlete).some((name) => name.includes(normalized)));
|
|
116
|
+
if (matches.length === 0) {
|
|
117
|
+
throw new CliError(`No athlete matched “${requested}”`, "ATHLETE_NOT_FOUND", 1, {
|
|
118
|
+
athleteName: requested,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
if (matches.length > 1) {
|
|
122
|
+
throw new CliError(`Athlete name “${requested}” is ambiguous; retry with athlete_id`, "ATHLETE_AMBIGUOUS", 2, { candidates: matches.slice(0, 20).map(candidate) });
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
athlete: matches[0],
|
|
126
|
+
matchedBy: exact.length === 1 ? "name" : "partial_name",
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function resolveMetric(input) {
|
|
130
|
+
const requested = input.metric.trim();
|
|
131
|
+
if (!requested)
|
|
132
|
+
throw new CliError("Metric cannot be empty", "METRIC_REQUIRED", 2);
|
|
133
|
+
const known = knownMetrics[compact(requested)];
|
|
134
|
+
if (known) {
|
|
135
|
+
if (input.metricCategory && input.metricCategory !== known.category) {
|
|
136
|
+
throw new CliError(`${requested} belongs to ${known.category}, not ${input.metricCategory}`, "METRIC_CATEGORY_CONFLICT", 2, { canonical: known.canonical, expectedCategory: known.category });
|
|
137
|
+
}
|
|
138
|
+
return { requested, ...known };
|
|
139
|
+
}
|
|
140
|
+
if (!input.metricCategory) {
|
|
141
|
+
throw new CliError(`Metric “${requested}” is not a known alias; provide metric_category explicitly`, "METRIC_CATEGORY_REQUIRED", 2, {
|
|
142
|
+
supportedAliases: Object.keys(knownMetrics).sort(),
|
|
143
|
+
categories: ["METRICS_TYPE_A", "METRICS_TYPE_B", "METRICS_TYPE_C"],
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
requested,
|
|
148
|
+
canonical: requested,
|
|
149
|
+
category: input.metricCategory,
|
|
150
|
+
unit: null,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function isoFilter(value, field) {
|
|
154
|
+
const milliseconds = Date.parse(value);
|
|
155
|
+
if (!Number.isFinite(milliseconds)) {
|
|
156
|
+
throw new CliError(`${field} must be an ISO 8601 date-time`, "TIME_INVALID", 2, {
|
|
157
|
+
field,
|
|
158
|
+
value,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
iso: new Date(milliseconds).toISOString(),
|
|
163
|
+
timestamp: Math.floor(milliseconds / 1000),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function decodeJson(value) {
|
|
167
|
+
let decoded = value;
|
|
168
|
+
for (let depth = 0; depth < 5 && typeof decoded === "string"; depth += 1) {
|
|
169
|
+
const trimmed = decoded.trim();
|
|
170
|
+
if (!/^[\[{\"]/.test(trimmed))
|
|
171
|
+
break;
|
|
172
|
+
try {
|
|
173
|
+
decoded = JSON.parse(trimmed);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return decoded;
|
|
180
|
+
}
|
|
181
|
+
function rowsFrom(result) {
|
|
182
|
+
const decoded = decodeJson(result.rows);
|
|
183
|
+
if (!Array.isArray(decoded)) {
|
|
184
|
+
throw new CliError("Data Explorer rows were not a JSON array", "QUERY_RESPONSE_INVALID", 1);
|
|
185
|
+
}
|
|
186
|
+
return decoded.map((row) => {
|
|
187
|
+
if (Array.isArray(row)) {
|
|
188
|
+
return Object.fromEntries(result.columns.map((column, index) => [column, row[index] ?? null]));
|
|
189
|
+
}
|
|
190
|
+
if (row && typeof row === "object")
|
|
191
|
+
return row;
|
|
192
|
+
throw new CliError("Data Explorer returned a row that was not an object or array", "QUERY_RESPONSE_INVALID", 1);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
function optionalString(value) {
|
|
196
|
+
if (typeof value === "string")
|
|
197
|
+
return value;
|
|
198
|
+
if (typeof value === "number")
|
|
199
|
+
return String(value);
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
function timestampIso(value) {
|
|
203
|
+
const numeric = typeof value === "number" ? value : Number(value);
|
|
204
|
+
if (!Number.isFinite(numeric))
|
|
205
|
+
return null;
|
|
206
|
+
const milliseconds = numeric > 10_000_000_000 ? numeric : numeric * 1000;
|
|
207
|
+
const date = new Date(milliseconds);
|
|
208
|
+
return Number.isNaN(date.valueOf()) ? null : date.toISOString();
|
|
209
|
+
}
|
|
210
|
+
function positionFrom(value) {
|
|
211
|
+
if (typeof value !== "string")
|
|
212
|
+
return null;
|
|
213
|
+
const [latitudeText, longitudeText, ...rest] = value.split(":");
|
|
214
|
+
if (rest.length > 0 || !latitudeText || !longitudeText)
|
|
215
|
+
return null;
|
|
216
|
+
const latitude = Number(latitudeText);
|
|
217
|
+
const longitude = Number(longitudeText);
|
|
218
|
+
if (!Number.isFinite(latitude) ||
|
|
219
|
+
!Number.isFinite(longitude) ||
|
|
220
|
+
latitude < -90 ||
|
|
221
|
+
latitude > 90 ||
|
|
222
|
+
longitude < -180 ||
|
|
223
|
+
longitude > 180)
|
|
224
|
+
return null;
|
|
225
|
+
return { latitude, longitude };
|
|
226
|
+
}
|
|
227
|
+
function parsedValue(value, canonicalMetric) {
|
|
228
|
+
const decoded = decodeJson(value);
|
|
229
|
+
if (typeof decoded === "undefined")
|
|
230
|
+
return null;
|
|
231
|
+
if (canonicalMetric === "latlong")
|
|
232
|
+
return decoded;
|
|
233
|
+
if (typeof decoded === "string" && decoded.trim() !== "") {
|
|
234
|
+
const numeric = Number(decoded);
|
|
235
|
+
if (Number.isFinite(numeric))
|
|
236
|
+
return numeric;
|
|
237
|
+
}
|
|
238
|
+
return decoded;
|
|
239
|
+
}
|
|
240
|
+
function normalizedRow(row, metric) {
|
|
241
|
+
const timestamp = row.timestamp;
|
|
242
|
+
const rawValue = row.current;
|
|
243
|
+
return {
|
|
244
|
+
timestamp: typeof timestamp === "string" || typeof timestamp === "number" ? timestamp : null,
|
|
245
|
+
timestampIso: timestampIso(timestamp),
|
|
246
|
+
athleteId: optionalString(row.athletepublicid),
|
|
247
|
+
metric: optionalString(row.metric) ?? metric.canonical,
|
|
248
|
+
value: parsedValue(rawValue, metric.canonical),
|
|
249
|
+
unit: metric.unit,
|
|
250
|
+
position: metric.canonical === "latlong" ? positionFrom(rawValue) : null,
|
|
251
|
+
eventId: optionalString(row.eventpublicid),
|
|
252
|
+
datasetDatasourceId: optionalString(row.datasetdatasourcepublicid),
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
function ensureSingleAthleteSelector(input) {
|
|
256
|
+
const count = Number(Boolean(input.athleteId?.trim())) +
|
|
257
|
+
Number(Boolean(input.athleteName?.trim()));
|
|
258
|
+
if (count !== 1) {
|
|
259
|
+
throw new CliError("Provide exactly one of athlete_id or athlete_name", "ATHLETE_SELECTOR_INVALID", 2);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
async function executeAndPoll(queryInput, tenantId, timeoutMs, dependencies, signal) {
|
|
263
|
+
const deadline = dependencies.now() + timeoutMs;
|
|
264
|
+
let delay = 300;
|
|
265
|
+
let input = queryInput;
|
|
266
|
+
while (true) {
|
|
267
|
+
if (signal?.aborted)
|
|
268
|
+
throw new CliError("Metric query cancelled", "QUERY_CANCELLED", 4);
|
|
269
|
+
const response = await dependencies.graphql(executeDataExplorerDocument, { input, tenant: tenantId });
|
|
270
|
+
const result = response?.executeDataExplorerQuery;
|
|
271
|
+
if (!result) {
|
|
272
|
+
throw new CliError("Data Explorer returned no query result", "QUERY_RESPONSE_INVALID");
|
|
273
|
+
}
|
|
274
|
+
const status = result.status?.toUpperCase() ?? "COMPLETED";
|
|
275
|
+
if (status !== "RUNNING") {
|
|
276
|
+
if (["FAILED", "ERROR", "CANCELLED"].includes(status)) {
|
|
277
|
+
throw new CliError(`Data Explorer query ended with status ${status}`, "QUERY_FAILED", 1, { queryExecutionId: result.queryExecutionId ?? null, status });
|
|
278
|
+
}
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
if (!result.queryExecutionId) {
|
|
282
|
+
throw new CliError("Data Explorer returned RUNNING without a query execution ID", "QUERY_RESPONSE_INVALID");
|
|
283
|
+
}
|
|
284
|
+
if (dependencies.now() >= deadline) {
|
|
285
|
+
throw new CliError(`Metric query did not finish within ${timeoutMs}ms`, "QUERY_TIMEOUT", 1, { queryExecutionId: result.queryExecutionId, timeoutMs });
|
|
286
|
+
}
|
|
287
|
+
await dependencies.sleep(delay, signal);
|
|
288
|
+
delay = Math.min(Math.round(delay * 1.5), 2_000);
|
|
289
|
+
input = { ...queryInput, queryExecutionId: result.queryExecutionId };
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
export async function queryMetrics(input, options = {}) {
|
|
293
|
+
const dependencies = { ...defaultDependencies, ...options.dependencies };
|
|
294
|
+
try {
|
|
295
|
+
ensureSingleAthleteSelector(input);
|
|
296
|
+
const session = await dependencies.session();
|
|
297
|
+
const tenantId = input.tenantId?.trim() || session.tenant;
|
|
298
|
+
if (!tenantId) {
|
|
299
|
+
throw new CliError("No tenant selected; run `dw tenant select` or provide tenant_id", "TENANT_REQUIRED", 2);
|
|
300
|
+
}
|
|
301
|
+
const limit = input.limit ?? 30;
|
|
302
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > 500) {
|
|
303
|
+
throw new CliError("limit must be an integer from 1 to 500", "LIMIT_INVALID", 2);
|
|
304
|
+
}
|
|
305
|
+
const timeoutMs = input.timeoutMs ?? 30_000;
|
|
306
|
+
if (!Number.isInteger(timeoutMs) || timeoutMs < 1_000 || timeoutMs > 120_000) {
|
|
307
|
+
throw new CliError("timeout_ms must be an integer from 1000 to 120000", "TIMEOUT_INVALID", 2);
|
|
308
|
+
}
|
|
309
|
+
const metric = resolveMetric(input);
|
|
310
|
+
const athlete = await resolveAthlete(input, tenantId, dependencies);
|
|
311
|
+
const from = input.from ? isoFilter(input.from, "from") : null;
|
|
312
|
+
const to = input.to ? isoFilter(input.to, "to") : null;
|
|
313
|
+
if (from && to && from.timestamp > to.timestamp) {
|
|
314
|
+
throw new CliError("from must not be later than to", "TIME_RANGE_INVALID", 2);
|
|
315
|
+
}
|
|
316
|
+
const rules = [
|
|
317
|
+
{ field: "metric", operator: "in", value: metric.canonical },
|
|
318
|
+
{
|
|
319
|
+
field: "athletepublicid",
|
|
320
|
+
operator: "in",
|
|
321
|
+
value: athlete.athlete.publicId,
|
|
322
|
+
},
|
|
323
|
+
];
|
|
324
|
+
if (input.eventId)
|
|
325
|
+
rules.push({ field: "eventpublicid", operator: "in", value: input.eventId });
|
|
326
|
+
if (input.datasetDatasourceId)
|
|
327
|
+
rules.push({
|
|
328
|
+
field: "datasetdatasourcepublicid",
|
|
329
|
+
operator: "in",
|
|
330
|
+
value: input.datasetDatasourceId,
|
|
331
|
+
});
|
|
332
|
+
if (from)
|
|
333
|
+
rules.push({ field: "timestamp", operator: ">=", value: String(from.timestamp) });
|
|
334
|
+
if (to)
|
|
335
|
+
rules.push({ field: "timestamp", operator: "<=", value: String(to.timestamp) });
|
|
336
|
+
const order = input.order ?? "newest";
|
|
337
|
+
const queryInput = {
|
|
338
|
+
columns: [
|
|
339
|
+
"timestamp",
|
|
340
|
+
"datasetdatasourcepublicid",
|
|
341
|
+
"eventpublicid",
|
|
342
|
+
"athletepublicid",
|
|
343
|
+
"metric",
|
|
344
|
+
"current",
|
|
345
|
+
],
|
|
346
|
+
metricCategory: metric.category,
|
|
347
|
+
filterRules: JSON.stringify({ combinator: "and", rules }),
|
|
348
|
+
limit,
|
|
349
|
+
orderBy: "timestamp",
|
|
350
|
+
orderDirection: order === "newest" ? "DESC" : "ASC",
|
|
351
|
+
};
|
|
352
|
+
const result = await executeAndPoll(queryInput, tenantId, timeoutMs, dependencies, options.signal);
|
|
353
|
+
const rows = rowsFrom(result).map((row) => normalizedRow(row, metric));
|
|
354
|
+
return {
|
|
355
|
+
environment: session.environment,
|
|
356
|
+
tenantId,
|
|
357
|
+
athlete: {
|
|
358
|
+
publicId: athlete.athlete.publicId,
|
|
359
|
+
name: displayName(athlete.athlete),
|
|
360
|
+
matchedBy: athlete.matchedBy,
|
|
361
|
+
},
|
|
362
|
+
metric,
|
|
363
|
+
filters: {
|
|
364
|
+
eventId: input.eventId ?? null,
|
|
365
|
+
datasetDatasourceId: input.datasetDatasourceId ?? null,
|
|
366
|
+
from: from?.iso ?? null,
|
|
367
|
+
to: to?.iso ?? null,
|
|
368
|
+
},
|
|
369
|
+
order,
|
|
370
|
+
limit,
|
|
371
|
+
count: rows.length,
|
|
372
|
+
rowCount: result.rowCount,
|
|
373
|
+
status: result.status ?? "COMPLETED",
|
|
374
|
+
queryExecutionId: result.queryExecutionId ?? null,
|
|
375
|
+
queryTimeMs: result.queryTimeMs ?? null,
|
|
376
|
+
rows,
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
catch (error) {
|
|
380
|
+
throw toCliError(error);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=query-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-metrics.js","sourceRoot":"","sources":["../../src/lib/query-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/mcp/main.ts"],"names":[],"mappings":"AAGA,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3D"}
|
package/dist/mcp/main.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
2
|
+
import { createDataworksMcpServer } from "./server.js";
|
|
3
|
+
export async function runDataworksMcpServer() {
|
|
4
|
+
const server = createDataworksMcpServer();
|
|
5
|
+
await server.connect(new StdioServerTransport());
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/mcp/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;IAC1C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC"}
|