@dataworks-technology/cli 1.4.0 → 1.5.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.
Files changed (37) hide show
  1. package/README.md +35 -2
  2. package/bin/postinstall.js +21 -1
  3. package/dist/commands/agents/install.d.ts +1 -0
  4. package/dist/commands/agents/install.d.ts.map +1 -1
  5. package/dist/commands/agents/install.js +14 -4
  6. package/dist/commands/agents/install.js.map +1 -1
  7. package/dist/lib/agent-install.d.ts +23 -0
  8. package/dist/lib/agent-install.d.ts.map +1 -1
  9. package/dist/lib/agent-install.js +51 -3
  10. package/dist/lib/agent-install.js.map +1 -1
  11. package/dist/lib/agent-reminder.d.ts +24 -2
  12. package/dist/lib/agent-reminder.d.ts.map +1 -1
  13. package/dist/lib/agent-reminder.js +56 -10
  14. package/dist/lib/agent-reminder.js.map +1 -1
  15. package/dist/lib/command.js +1 -1
  16. package/dist/lib/command.js.map +1 -1
  17. package/dist/lib/discover.d.ts +54 -0
  18. package/dist/lib/discover.d.ts.map +1 -0
  19. package/dist/lib/discover.js +129 -0
  20. package/dist/lib/discover.js.map +1 -0
  21. package/dist/lib/graphql-transport.d.ts +24 -0
  22. package/dist/lib/graphql-transport.d.ts.map +1 -1
  23. package/dist/lib/graphql-transport.js +36 -3
  24. package/dist/lib/graphql-transport.js.map +1 -1
  25. package/dist/lib/query-metrics.d.ts +2 -1
  26. package/dist/lib/query-metrics.d.ts.map +1 -1
  27. package/dist/lib/query-metrics.js +25 -15
  28. package/dist/lib/query-metrics.js.map +1 -1
  29. package/dist/mcp/server.d.ts +8 -3
  30. package/dist/mcp/server.d.ts.map +1 -1
  31. package/dist/mcp/server.js +182 -35
  32. package/dist/mcp/server.js.map +1 -1
  33. package/oclif.manifest.json +115 -105
  34. package/package.json +1 -1
  35. package/plugins/dataworks/.claude-plugin/plugin.json +1 -1
  36. package/plugins/dataworks/.codex-plugin/plugin.json +1 -1
  37. package/plugins/dataworks/skills/query-dataworks-metrics/SKILL.md +33 -9
package/README.md CHANGED
@@ -131,8 +131,8 @@ after installing a release that adds commands.
131
131
 
132
132
  ## AI agent metric queries
133
133
 
134
- The package includes a focused, read-only MCP server with one tool:
135
- `query_metrics`. It uses the same OS-backed login session and selected tenant as
134
+ The package includes a focused, read-only MCP server with three tools:
135
+ `query_metrics`, `list_athletes`, and `list_events`. It uses the same OS-backed login session and selected tenant as
136
136
  `dw`, resolves an athlete by exact ID or unique name, resolves metric names
137
137
  against the canonical Dataworks catalogue, polls asynchronous Data Explorer
138
138
  queries, and returns normalized structured rows. GPS values include decoded
@@ -154,6 +154,28 @@ Dataworks plugin for each detected client and reports the reload or restart step
154
154
  If an old marketplace registration points to a different CLI installation, rerun
155
155
  with `--force`.
156
156
 
157
+ ### Keeping the plugin current
158
+
159
+ Agent clients copy the plugin into a version-pinned directory rather than reading
160
+ the installed npm package, so upgrading the CLI does not by itself update the
161
+ skill an agent loads. The MCP server does move with the CLI, because it is
162
+ launched as `dw-mcp` from `PATH` — leaving a new server driven by an older skill
163
+ until the plugin is refreshed.
164
+
165
+ Global installs and upgrades refresh it automatically: the postinstall hook runs
166
+ `dw agents install --refresh`, which updates only clients that already have
167
+ Dataworks and configures nothing new. Reload the client afterwards with
168
+ `/reload-plugins` in Claude Code, or a new Codex thread.
169
+
170
+ When that cannot run — an install with `--ignore-scripts`, or a CLI reinstalled
171
+ under a different Node version — `dw` prints a reminder at most once a day
172
+ telling you the plugin is behind, and naming both steps needed to fix it.
173
+ Refresh with `dw agents install`, adding `--force` if the marketplace still
174
+ points at the previous installation, then reload the client.
175
+
176
+ Reloading matters either way: a client already running keeps the plugin copy it
177
+ loaded at start-up, so refreshing alone changes nothing in the current session.
178
+
157
179
  Successful setup automatically disables the periodic CLI reminder. To opt out
158
180
  without installing an agent integration, run `dw agents reminder disable`.
159
181
 
@@ -177,8 +199,19 @@ exactly one of `athlete_id` or `athlete_name`, plus `metric`; optional inputs ar
177
199
  `limit`, `order`, `from`, `to`, `event_id`, `dataset_datasource_id`,
178
200
  `tenant_id`, `metric_category`, and `timeout_ms`.
179
201
 
202
+ A query must be scoped by `athlete_id`, `athlete_name`, `event_id`, or
203
+ `dataset_datasource_id`. Supplying only an event or datasource answers questions
204
+ about a whole race — "the latest heart rate values at T100 San Francisco" — and
205
+ returns a null `athlete` with each row still carrying its own `athlete_id`.
206
+
207
+ `list_athletes` and `list_events` exist so an agent can resolve an ID instead of
208
+ guessing one, and can tell "not in this tenant" apart from "misspelled". When
209
+ `list_events` reports `unavailable: true` the event API returned nothing for that
210
+ session, which is a permissions problem rather than an empty tenant.
211
+
180
212
  The server never performs mutations. If name resolution is ambiguous, it
181
213
  returns candidates and requires an explicit athlete ID rather than guessing.
214
+ Every error carries a `recovery` field naming the command that fixes it.
182
215
 
183
216
  ---
184
217
 
@@ -17,7 +17,27 @@ if (
17
17
  "Dataworks CLI installed, but Bash autocomplete setup could not be prepared. Run `dw autocomplete bash` to retry.\n",
18
18
  );
19
19
  }
20
+
21
+ // Agent clients copy the plugin into a version-pinned directory instead of
22
+ // reading this package, so an upgrade leaves them on the previous skill while
23
+ // the MCP server moves forward with the CLI. Refresh clients that already have
24
+ // Dataworks; --refresh configures nothing new, so this cannot opt anyone in.
25
+ const refresh = spawnSync(
26
+ process.execPath,
27
+ [runPath, "agents", "install", "--refresh", "--json"],
28
+ { stdio: ["ignore", "pipe", "pipe"], encoding: "utf8" },
29
+ );
30
+ if (refresh.error || refresh.status !== 0) {
31
+ process.stderr.write(
32
+ "Dataworks CLI installed, but the agent plugin could not be refreshed automatically. Run `dw agents install` to update it.\n",
33
+ );
34
+ } else if ((refresh.stdout ?? "").includes('"status"')) {
35
+ process.stdout.write(
36
+ "Refreshed the Dataworks agent plugin. Run `/reload-plugins` in Claude Code, or start a new Codex thread.\n",
37
+ );
38
+ }
39
+
20
40
  process.stdout.write(
21
- "To use Dataworks from Codex or Claude Code, run `dw agents install` once.\n",
41
+ "To use Dataworks from Codex or Claude Code, run `dw agents install`. Rerun it after upgrading if the plugin is not refreshed automatically.\n",
22
42
  );
23
43
  }
@@ -10,6 +10,7 @@ export default class AgentsInstall extends DataworksCommand {
10
10
  };
11
11
  static flags: {
12
12
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ refresh: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
14
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
15
  };
15
16
  run(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/agents/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AASxD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,gBAAgB;IACzD,OAAgB,WAAW,SAC2D;IACtF,OAAgB,QAAQ;;;QAiBtB;IACF,OAAgB,IAAI;;MAMlB;IACF,OAAgB,KAAK;;;MAKnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BlC"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/agents/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAUxD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,gBAAgB;IACzD,OAAgB,WAAW,SAC2D;IACtF,OAAgB,QAAQ;;;QAqBtB;IACF,OAAgB,IAAI;;MAMlB;IACF,OAAgB,KAAK;;;;MASnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiClC"}
@@ -1,6 +1,6 @@
1
1
  import { Args, Flags } from "@oclif/core";
2
2
  import { DataworksCommand } from "../../lib/command.js";
3
- import { installAgentIntegration, supportedAgentClients, } from "../../lib/agent-install.js";
3
+ import { installAgentIntegration, refreshAgentIntegrations, supportedAgentClients, } from "../../lib/agent-install.js";
4
4
  import { writeResult } from "../../lib/output.js";
5
5
  import { configureAgentReminder } from "../../lib/agent-reminder.js";
6
6
  export default class AgentsInstall extends DataworksCommand {
@@ -22,6 +22,10 @@ export default class AgentsInstall extends DataworksCommand {
22
22
  description: "Replace a stale Dataworks marketplace registration",
23
23
  command: "dw agents install codex --force",
24
24
  },
25
+ {
26
+ description: "Update clients that already have Dataworks, and skip the rest",
27
+ command: "dw agents install --refresh",
28
+ },
25
29
  ];
26
30
  static args = {
27
31
  client: Args.string({
@@ -34,14 +38,19 @@ export default class AgentsInstall extends DataworksCommand {
34
38
  force: Flags.boolean({
35
39
  description: "Replace an existing Dataworks marketplace registration",
36
40
  }),
41
+ refresh: Flags.boolean({
42
+ description: "Only update clients that already have Dataworks installed; configure nothing new",
43
+ }),
37
44
  json: Flags.boolean({ description: "Emit stable JSON output" }),
38
45
  };
39
46
  async run() {
40
47
  const { args, flags } = await this.parse(AgentsInstall);
41
48
  const clients = args.client ? [args.client] : supportedAgentClients;
42
- const results = clients.map((client) => installAgentIntegration(client, { force: flags.force }));
49
+ const results = flags.refresh
50
+ ? refreshAgentIntegrations({ force: flags.force }).filter(({ client }) => clients.includes(client))
51
+ : clients.map((client) => installAgentIntegration(client, { force: flags.force }));
43
52
  if (results.some(({ status }) => status === "installed" || status === "updated")) {
44
- await configureAgentReminder("configured");
53
+ await configureAgentReminder("configured", this.config.version);
45
54
  }
46
55
  writeResult({ integrations: results }, {
47
56
  json: flags.json,
@@ -49,7 +58,8 @@ export default class AgentsInstall extends DataworksCommand {
49
58
  restartRequired: results.some(({ status }) => status === "installed" || status === "updated"),
50
59
  },
51
60
  });
52
- if (results.every(({ status }) => status === "unavailable" || status === "failed")) {
61
+ if (results.length > 0 &&
62
+ results.every(({ status }) => status === "unavailable" || status === "failed")) {
53
63
  process.exitCode = 1;
54
64
  }
55
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/agents/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,gBAAgB;IACzD,MAAM,CAAU,WAAW,GACzB,mFAAmF,CAAC;IACtF,MAAM,CAAU,QAAQ,GAAG;QACzB;YACE,WAAW,EAAE,2DAA2D;YACxE,OAAO,EAAE,mBAAmB;SAC7B;QACD;YACE,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE,yBAAyB;SACnC;QACD;YACE,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,+BAA+B;SACzC;QACD;YACE,WAAW,EAAE,oDAAoD;YACjE,OAAO,EAAE,iCAAiC;SAC3C;KACF,CAAC;IACF,MAAM,CAAU,IAAI,GAAG;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;YACjC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IACF,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,wDAAwD;SACtE,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;KAChE,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAqB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACnF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrC,uBAAuB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CACxD,CAAC;QACF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YACjF,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;QAED,WAAW,CACT,EAAE,YAAY,EAAE,OAAO,EAAE,EACzB;YACE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE;gBACJ,eAAe,EAAE,OAAO,CAAC,IAAI,CAC3B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,SAAS,CAC/D;aACF;SACF,CACF,CAAC;QAEF,IACE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,QAAQ,CAAC,EAC9E,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/agents/install.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@ export interface AgentInstallResult {
5
5
  status: AgentInstallStatus;
6
6
  message: string;
7
7
  nextStep: string;
8
+ /**
9
+ * Set when the failure is a marketplace registration pointing somewhere else,
10
+ * so a caller can retry with force instead of matching on message text.
11
+ */
12
+ reason?: "stale-marketplace";
8
13
  }
9
14
  export interface ProcessResult {
10
15
  status: number | null;
@@ -21,4 +26,22 @@ export interface AgentInstallOptions {
21
26
  export declare const supportedAgentClients: readonly AgentClient[];
22
27
  export declare function dataworksPackageRoot(): string;
23
28
  export declare function installAgentIntegration(client: AgentClient, options?: AgentInstallOptions): AgentInstallResult;
29
+ export interface AgentIntegrationState {
30
+ client: AgentClient;
31
+ installed: boolean;
32
+ /** Plugin version the client currently has, when it reports one. */
33
+ version?: string;
34
+ }
35
+ /** Report whether a client already has the Dataworks plugin, without changing anything. */
36
+ export declare function agentIntegrationState(client: AgentClient, options?: AgentInstallOptions): AgentIntegrationState;
37
+ /**
38
+ * Reinstall the plugin for every client that already has it, and leave clients
39
+ * that never opted in untouched.
40
+ *
41
+ * Agent clients copy the plugin into a version-pinned directory rather than
42
+ * reading the npm package, so upgrading the CLI leaves them on the previous
43
+ * skill while the MCP server — resolved as `dw-mcp` on PATH — moves forward.
44
+ * The npm postinstall hook calls this so that split cannot happen silently.
45
+ */
46
+ export declare function refreshAgentIntegrations(options?: AgentInstallOptions): AgentInstallResult[];
24
47
  //# sourceMappingURL=agent-install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-install.d.ts","sourceRoot":"","sources":["../../src/lib/agent-install.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,aAAa,CAAC;AAExF,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAKD,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAA6B,CAAC;AAEtF,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AA0PD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CAUpB"}
1
+ {"version":3,"file":"agent-install.d.ts","sourceRoot":"","sources":["../../src/lib/agent-install.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,aAAa,CAAC;AAExF,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAKD,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAA6B,CAAC;AAEtF,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAmQD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CAUpB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB,GAChC,qBAAqB,CAcvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,EAAE,CAatB"}
@@ -58,13 +58,13 @@ function claudeMarketplace(payload) {
58
58
  root: entry?.path ?? entry?.installLocation,
59
59
  };
60
60
  }
61
- function pluginIsInstalled(client, payload) {
61
+ function findPluginEntry(client, payload) {
62
62
  const entries = client === "codex" && payload && typeof payload === "object"
63
63
  ? payload.installed
64
64
  : payload;
65
65
  if (!Array.isArray(entries))
66
- return false;
67
- return entries.some((entry) => {
66
+ return undefined;
67
+ return entries.find((entry) => {
68
68
  if (!entry || typeof entry !== "object")
69
69
  return false;
70
70
  const item = entry;
@@ -75,6 +75,9 @@ function pluginIsInstalled(client, payload) {
75
75
  item.marketplaceName === marketplaceName)));
76
76
  });
77
77
  }
78
+ function pluginIsInstalled(client, payload) {
79
+ return findPluginEntry(client, payload) !== undefined;
80
+ }
78
81
  function unavailable(client) {
79
82
  const binary = executable(client);
80
83
  return {
@@ -105,6 +108,7 @@ function installCodex(options) {
105
108
  return {
106
109
  client: "codex",
107
110
  status: "failed",
111
+ reason: "stale-marketplace",
108
112
  message: `The ${marketplaceName} marketplace already points to ${currentRoot}.`,
109
113
  nextStep: "Run `dw agents install codex --force` to replace the stale marketplace registration.",
110
114
  };
@@ -151,6 +155,7 @@ function installClaudeCode(options) {
151
155
  return {
152
156
  client: "claude-code",
153
157
  status: "failed",
158
+ reason: "stale-marketplace",
154
159
  message: `The ${marketplaceName} marketplace already points to ${currentRoot}.`,
155
160
  nextStep: "Run `dw agents install claude-code --force` to replace the stale marketplace registration.",
156
161
  };
@@ -193,4 +198,47 @@ export function installAgentIntegration(client, options = {}) {
193
198
  return unavailable(client);
194
199
  return client === "codex" ? installCodex(resolved) : installClaudeCode(resolved);
195
200
  }
201
+ /** Report whether a client already has the Dataworks plugin, without changing anything. */
202
+ export function agentIntegrationState(client, options = {}) {
203
+ const run = options.run ?? defaultRunner;
204
+ const binary = executable(client);
205
+ const detected = run(binary, ["--version"]);
206
+ if (detected.status !== 0 || detected.error)
207
+ return { client, installed: false };
208
+ const list = run(binary, ["plugin", "list", "--json"]);
209
+ if (list.status !== 0)
210
+ return { client, installed: false };
211
+ const entry = findPluginEntry(client, parseJson(list.stdout));
212
+ if (!entry)
213
+ return { client, installed: false };
214
+ return {
215
+ client,
216
+ installed: true,
217
+ version: typeof entry.version === "string" ? entry.version : undefined,
218
+ };
219
+ }
220
+ /**
221
+ * Reinstall the plugin for every client that already has it, and leave clients
222
+ * that never opted in untouched.
223
+ *
224
+ * Agent clients copy the plugin into a version-pinned directory rather than
225
+ * reading the npm package, so upgrading the CLI leaves them on the previous
226
+ * skill while the MCP server — resolved as `dw-mcp` on PATH — moves forward.
227
+ * The npm postinstall hook calls this so that split cannot happen silently.
228
+ */
229
+ export function refreshAgentIntegrations(options = {}) {
230
+ const results = [];
231
+ for (const client of supportedAgentClients) {
232
+ if (!agentIntegrationState(client, options).installed)
233
+ continue;
234
+ let result = installAgentIntegration(client, options);
235
+ // A CLI reinstalled under a different Node version lives at a new path, which
236
+ // is precisely the case a refresh must repair rather than report.
237
+ if (result.reason === "stale-marketplace") {
238
+ result = installAgentIntegration(client, { ...options, force: true });
239
+ }
240
+ results.push(result);
241
+ }
242
+ return results;
243
+ }
196
244
  //# sourceMappingURL=agent-install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-install.js","sourceRoot":"","sources":["../../src/lib/agent-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-install.js","sourceRoot":"","sources":["../../src/lib/agent-install.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,14 @@ export interface AgentReminderPreferences {
2
2
  disabled: boolean;
3
3
  configured: boolean;
4
4
  lastShownAt?: string;
5
+ /**
6
+ * CLI version in effect when the agent integration was last installed. Agent
7
+ * clients copy the plugin into a version-pinned directory, so upgrading the npm
8
+ * package leaves the skill they load behind until `dw agents install` runs
9
+ * again. Comparing this against the running version detects that without
10
+ * shelling out to every client on a hot path.
11
+ */
12
+ configuredVersion?: string;
5
13
  }
6
14
  export interface AgentReminderContext {
7
15
  argv: readonly string[];
@@ -12,6 +20,20 @@ export interface AgentReminderContext {
12
20
  export declare function agentReminderPath(): string;
13
21
  export declare function readAgentReminderPreferences(): Promise<AgentReminderPreferences>;
14
22
  export declare function shouldShowAgentReminder(preferences: AgentReminderPreferences, context: AgentReminderContext): boolean;
15
- export declare function maybeShowAgentReminder(argv: readonly string[]): Promise<void>;
16
- export declare function configureAgentReminder(action: "disable" | "enable" | "configured"): Promise<AgentReminderPreferences>;
23
+ /**
24
+ * The installed agent plugin is a copy taken at install time, so a CLI upgrade
25
+ * leaves agents reading the previous skill. `dw agents install` normally reruns
26
+ * itself from the npm postinstall hook; this covers the cases where it cannot,
27
+ * such as `--ignore-scripts` or a non-global install.
28
+ */
29
+ export declare function shouldShowAgentUpgradeReminder(preferences: AgentReminderPreferences, context: AgentReminderContext, currentVersion: string): boolean;
30
+ /**
31
+ * Refreshing the plugin is only half the fix: a client that is already running
32
+ * keeps the copy it loaded at start-up, so the reminder has to name the reload
33
+ * step too. Otherwise a user reruns the install, sees no change, and concludes
34
+ * the refresh did not work.
35
+ */
36
+ export declare function agentUpgradeReminderMessage(installedVersion: string, currentVersion: string): string;
37
+ export declare function maybeShowAgentReminder(argv: readonly string[], currentVersion?: string): Promise<void>;
38
+ export declare function configureAgentReminder(action: "disable" | "enable" | "configured", configuredVersion?: string): Promise<AgentReminderPreferences>;
17
39
  //# sourceMappingURL=agent-reminder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-reminder.d.ts","sourceRoot":"","sources":["../../src/lib/agent-reminder.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAOD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAetF;AAYD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,wBAAwB,EACrC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAUT;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBnF;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,GAC1C,OAAO,CAAC,wBAAwB,CAAC,CAUnC"}
1
+ {"version":3,"file":"agent-reminder.d.ts","sourceRoot":"","sources":["../../src/lib/agent-reminder.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAOD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAmBtF;AA2BD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,wBAAwB,EACrC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAGT;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,wBAAwB,EACrC,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,MAAM,GACrB,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,MAAM,CAOR;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,EAC3C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,wBAAwB,CAAC,CAUnC"}
@@ -16,6 +16,9 @@ export async function readAgentReminderPreferences() {
16
16
  disabled: stored.disabled === true,
17
17
  configured: stored.configured === true,
18
18
  lastShownAt: typeof stored.lastShownAt === "string" ? stored.lastShownAt : undefined,
19
+ configuredVersion: typeof stored.configuredVersion === "string"
20
+ ? stored.configuredVersion
21
+ : undefined,
19
22
  };
20
23
  }
21
24
  catch (error) {
@@ -31,10 +34,10 @@ async function writeAgentReminderPreferences(preferences) {
31
34
  mode: 0o600,
32
35
  });
33
36
  }
34
- export function shouldShowAgentReminder(preferences, context) {
37
+ function reminderIsAllowed(preferences, context) {
35
38
  if (!context.isTTY || context.disabledByEnvironment)
36
39
  return false;
37
- if (preferences.disabled || preferences.configured)
40
+ if (preferences.disabled)
38
41
  return false;
39
42
  if (context.argv.includes("--json"))
40
43
  return false;
@@ -47,18 +50,61 @@ export function shouldShowAgentReminder(preferences, context) {
47
50
  return true;
48
51
  return (context.now ?? new Date()).getTime() - lastShown >= reminderIntervalMs;
49
52
  }
50
- export async function maybeShowAgentReminder(argv) {
53
+ export function shouldShowAgentReminder(preferences, context) {
54
+ if (preferences.configured)
55
+ return false;
56
+ return reminderIsAllowed(preferences, context);
57
+ }
58
+ /**
59
+ * The installed agent plugin is a copy taken at install time, so a CLI upgrade
60
+ * leaves agents reading the previous skill. `dw agents install` normally reruns
61
+ * itself from the npm postinstall hook; this covers the cases where it cannot,
62
+ * such as `--ignore-scripts` or a non-global install.
63
+ */
64
+ export function shouldShowAgentUpgradeReminder(preferences, context, currentVersion) {
65
+ if (!preferences.configured)
66
+ return false;
67
+ // Absent on installs predating version tracking; assume current rather than
68
+ // nagging every user once on upgrade to this release.
69
+ if (!preferences.configuredVersion)
70
+ return false;
71
+ if (preferences.configuredVersion === currentVersion)
72
+ return false;
73
+ return reminderIsAllowed(preferences, context);
74
+ }
75
+ /**
76
+ * Refreshing the plugin is only half the fix: a client that is already running
77
+ * keeps the copy it loaded at start-up, so the reminder has to name the reload
78
+ * step too. Otherwise a user reruns the install, sees no change, and concludes
79
+ * the refresh did not work.
80
+ */
81
+ export function agentUpgradeReminderMessage(installedVersion, currentVersion) {
82
+ return (`Dataworks CLI is ${currentVersion}, but the agent plugin was installed from ` +
83
+ `${installedVersion}. Agents are reading the older skill.\n` +
84
+ "Refresh it with `dw agents install`, then reload the client: run " +
85
+ "`/reload-plugins` in Claude Code, or start a new Codex thread.\n");
86
+ }
87
+ export async function maybeShowAgentReminder(argv, currentVersion) {
51
88
  try {
52
89
  const preferences = await readAgentReminderPreferences();
53
- if (!shouldShowAgentReminder(preferences, {
90
+ const context = {
54
91
  argv,
55
92
  isTTY: process.stderr.isTTY === true,
56
93
  disabledByEnvironment: process.env.DW_NO_AGENT_REMINDER === "1",
57
- })) {
58
- return;
94
+ };
95
+ let message;
96
+ if (shouldShowAgentReminder(preferences, context)) {
97
+ message =
98
+ "Tip: enable Dataworks in Codex or Claude Code with `dw agents install`.\n" +
99
+ "Hide this reminder with `dw agents reminder disable`.\n";
100
+ }
101
+ else if (currentVersion &&
102
+ shouldShowAgentUpgradeReminder(preferences, context, currentVersion)) {
103
+ message = agentUpgradeReminderMessage(preferences.configuredVersion ?? "an earlier version", currentVersion);
59
104
  }
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");
105
+ if (!message)
106
+ return;
107
+ process.stderr.write(message);
62
108
  await writeAgentReminderPreferences({
63
109
  ...preferences,
64
110
  lastShownAt: new Date().toISOString(),
@@ -68,12 +114,12 @@ export async function maybeShowAgentReminder(argv) {
68
114
  // A reminder must never block or fail the requested CLI command.
69
115
  }
70
116
  }
71
- export async function configureAgentReminder(action) {
117
+ export async function configureAgentReminder(action, configuredVersion) {
72
118
  const current = await readAgentReminderPreferences();
73
119
  const preferences = action === "disable"
74
120
  ? { ...current, disabled: true }
75
121
  : action === "configured"
76
- ? { ...current, configured: true }
122
+ ? { ...current, configured: true, configuredVersion }
77
123
  : { disabled: false, configured: false };
78
124
  await writeAgentReminderPreferences(preferences);
79
125
  return preferences;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-reminder.js","sourceRoot":"","sources":["../../src/lib/agent-reminder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-reminder.js","sourceRoot":"","sources":["../../src/lib/agent-reminder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAuB/C,MAAM,kBAAkB,GAA6B;IACnD,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,MAAM,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CACP,CAAC;QACvC,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI;YAClC,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,IAAI;YACtC,WAAW,EACT,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACzE,iBAAiB,EACf,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ;gBAC1C,CAAC,CAAC,MAAM,CAAC,iBAAiB;gBAC1B,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAC/D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,WAAqC;IAErC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACjE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,WAAqC,EACrC,OAA6B;IAE7B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,qBAAqB;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,WAAW,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE/C,IAAI,CAAC,WAAW,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,IAAI,kBAAkB,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,WAAqC,EACrC,OAA6B;IAE7B,IAAI,WAAW,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,WAAqC,EACrC,OAA6B,EAC7B,cAAsB;IAEtB,IAAI,CAAC,WAAW,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC1C,4EAA4E;IAC5E,sDAAsD;IACtD,IAAI,CAAC,WAAW,CAAC,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,WAAW,CAAC,iBAAiB,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,gBAAwB,EACxB,cAAsB;IAEtB,OAAO,CACL,oBAAoB,cAAc,4CAA4C;QAC9E,GAAG,gBAAgB,yCAAyC;QAC5D,mEAAmE;QACnE,kEAAkE,CACnE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAuB,EACvB,cAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,4BAA4B,EAAE,CAAC;QACzD,MAAM,OAAO,GAAyB;YACpC,IAAI;YACJ,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;YACpC,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG;SAChE,CAAC;QAEF,IAAI,OAA2B,CAAC;QAChC,IAAI,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;YAClD,OAAO;gBACL,2EAA2E;oBAC3E,yDAAyD,CAAC;QAC9D,CAAC;aAAM,IACL,cAAc;YACd,8BAA8B,CAAC,WAAW,EAAE,OAAO,EAAE,cAAc,CAAC,EACpE,CAAC;YACD,OAAO,GAAG,2BAA2B,CACnC,WAAW,CAAC,iBAAiB,IAAI,oBAAoB,EACrD,cAAc,CACf,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,6BAA6B,CAAC;YAClC,GAAG,WAAW;YACd,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA2C,EAC3C,iBAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,4BAA4B,EAAE,CAAC;IACrD,MAAM,WAAW,GACf,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChC,CAAC,CAAC,MAAM,KAAK,YAAY;YACvB,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE;YACrD,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/C,MAAM,6BAA6B,CAAC,WAAW,CAAC,CAAC;IACjD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -4,7 +4,7 @@ import { maybeShowAgentReminder } from "./agent-reminder.js";
4
4
  export class DataworksCommand extends Command {
5
5
  async init() {
6
6
  await super.init();
7
- await maybeShowAgentReminder(this.argv);
7
+ await maybeShowAgentReminder(this.argv, this.config.version);
8
8
  }
9
9
  async catch(error) {
10
10
  const cliError = toCliError(error);
@@ -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;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"}
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,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,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,54 @@
1
+ /**
2
+ * Roster and event lookup for agents.
3
+ *
4
+ * Without this an agent that hits ATHLETE_NOT_FOUND has no sanctioned way to find
5
+ * out what does exist, and drops to raw GraphQL to go looking — which is how a
6
+ * simple question turns into twenty exploratory shell commands.
7
+ */
8
+ import { executeGraphql } from "./graphql-transport.js";
9
+ import { requireSession } from "./session.js";
10
+ export interface DiscoverDependencies {
11
+ graphql: typeof executeGraphql;
12
+ session: typeof requireSession;
13
+ }
14
+ export interface AthleteSummary {
15
+ publicId: string;
16
+ name: string | null;
17
+ externalId: string | null;
18
+ }
19
+ export interface EventSummary {
20
+ publicId: string;
21
+ name: string | null;
22
+ startTime: string | null;
23
+ }
24
+ export interface DiscoverInput {
25
+ search?: string;
26
+ limit?: number;
27
+ tenantId?: string;
28
+ }
29
+ export interface AthleteListOutput {
30
+ tenantId: string;
31
+ total: number;
32
+ count: number;
33
+ search: string | null;
34
+ athletes: AthleteSummary[];
35
+ }
36
+ export interface EventListOutput {
37
+ tenantId: string;
38
+ total: number;
39
+ count: number;
40
+ search: string | null;
41
+ events: EventSummary[];
42
+ /**
43
+ * Set when the API returned null rather than a list. Callers must not read that
44
+ * as "no events exist"; it is usually a permissions problem on the session.
45
+ */
46
+ unavailable: boolean;
47
+ }
48
+ export declare function listAthletes(input?: DiscoverInput, options?: {
49
+ dependencies?: Partial<DiscoverDependencies>;
50
+ }): Promise<AthleteListOutput>;
51
+ export declare function listEvents(input?: DiscoverInput, options?: {
52
+ dependencies?: Partial<DiscoverDependencies>;
53
+ }): Promise<EventListOutput>;
54
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/lib/discover.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AA6ED,wBAAsB,YAAY,CAChC,KAAK,GAAE,aAAkB,EACzB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;CAAO,GAC7D,OAAO,CAAC,iBAAiB,CAAC,CAmC5B;AAED,wBAAsB,UAAU,CAC9B,KAAK,GAAE,aAAkB,EACzB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;CAAO,GAC7D,OAAO,CAAC,eAAe,CAAC,CAoC1B"}