@rockhopper-co/mcp-server 2.1.57-staging.4b5c02c → 2.1.59-staging.eb505a3

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.
@@ -78,9 +78,22 @@ export declare class ApiClient {
78
78
  /**
79
79
  * ENG-1756: declare (or clear) the human driving this agent. The CLI sets
80
80
  * it from the `/users/me` preflight (`msId`/`googleId` — the PAT owner);
81
- * subsequent writes then carry `X-Driving-Human`. While unset, the backend
82
- * resolves the driving human as the PAT owner server-side, so writes keep
83
- * working — this header is the explicit, forward-compatible form.
81
+ * subsequent writes then carry `X-Driving-Human`.
82
+ *
83
+ * ⛔ THERE IS NO SERVER-SIDE FALLBACK. This docblock used to end "while
84
+ * unset, the backend resolves the driving human as the PAT owner
85
+ * server-side, so writes keep working". ENG-4220 measured that FALSE and
86
+ * corrected the sentence at the CALL site (`cli.ts`) while leaving it here,
87
+ * at the definition — which is the copy a reader of this method actually
88
+ * opens.
89
+ *
90
+ * What the backend really does: the guard reads `request.userPlatformId`,
91
+ * the PAT middleware sets that from `User.getPlatformId()`, and that method
92
+ * IS `msId || googleId` — the same two fields the CLI reads. So the
93
+ * "fallback" only ever fires when the header would have been sent anyway,
94
+ * and an account linked to neither provider 403s on EVERY write. Passing
95
+ * `null` here is not a degraded mode that still works; it is a write outage,
96
+ * and `cli.ts` warns on stderr when it happens.
84
97
  */
85
98
  setDrivingHuman(platformId: string | null): void;
86
99
  /**
@@ -207,11 +220,18 @@ export declare class ApiClient {
207
220
  * the row was written rather than at read time. That is why this package,
208
221
  * which holds no delegated assertion, can ask the question at all.
209
222
  *
210
- * Unlike {@link searchDriveFiles} there is no `NO_DELEGATED_TOKEN` refusal to
211
- * classify: a caller who has never linked Microsoft gets a 200 with an empty
212
- * list and `freshness.lastFailureReason === 'no_delegated_token'`. The refusal
213
- * moved from the status code into the body, so a reader that only checks for
214
- * a thrown error will report an unlinked account as an empty drive.
223
+ * Unlike {@link searchDriveFiles} there is no thrown refusal to classify: a
224
+ * caller with no working Microsoft link gets a 200 with an empty list and the
225
+ * reason in `freshness.lastFailureReason`. The refusal moved from the status
226
+ * code into the body, so a reader that only checks for a thrown error will
227
+ * report an unlinked account as an empty drive.
228
+ *
229
+ * ENG-4311 — that field carries the backend's SCREAMING_SNAKE
230
+ * `GraphLinkFailure` value (`NO_DELEGATED_TOKEN`, `DELEGATED_TOKEN_REJECTED`,
231
+ * `DELEGATED_TOKEN_UNREADABLE`, `CONSENT_REQUIRED`), never the lowercase
232
+ * outcome name this sentence used to quote. `list_unenrolled_files` compared
233
+ * the lowercase one, so its guard against exactly the failure described above
234
+ * could not fire. Read it through `graphLinkFailureFrom`, never by hand.
215
235
  */
216
236
  listDriveInventory(params?: {
217
237
  enrollment?: DriveInventoryEnrollment;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
@@ -100,9 +100,22 @@ export class ApiClient {
100
100
  /**
101
101
  * ENG-1756: declare (or clear) the human driving this agent. The CLI sets
102
102
  * it from the `/users/me` preflight (`msId`/`googleId` — the PAT owner);
103
- * subsequent writes then carry `X-Driving-Human`. While unset, the backend
104
- * resolves the driving human as the PAT owner server-side, so writes keep
105
- * working — this header is the explicit, forward-compatible form.
103
+ * subsequent writes then carry `X-Driving-Human`.
104
+ *
105
+ * ⛔ THERE IS NO SERVER-SIDE FALLBACK. This docblock used to end "while
106
+ * unset, the backend resolves the driving human as the PAT owner
107
+ * server-side, so writes keep working". ENG-4220 measured that FALSE and
108
+ * corrected the sentence at the CALL site (`cli.ts`) while leaving it here,
109
+ * at the definition — which is the copy a reader of this method actually
110
+ * opens.
111
+ *
112
+ * What the backend really does: the guard reads `request.userPlatformId`,
113
+ * the PAT middleware sets that from `User.getPlatformId()`, and that method
114
+ * IS `msId || googleId` — the same two fields the CLI reads. So the
115
+ * "fallback" only ever fires when the header would have been sent anyway,
116
+ * and an account linked to neither provider 403s on EVERY write. Passing
117
+ * `null` here is not a degraded mode that still works; it is a write outage,
118
+ * and `cli.ts` warns on stderr when it happens.
106
119
  */
107
120
  setDrivingHuman(platformId) {
108
121
  this.drivingHumanPlatformId = platformId;
@@ -383,11 +396,18 @@ export class ApiClient {
383
396
  * the row was written rather than at read time. That is why this package,
384
397
  * which holds no delegated assertion, can ask the question at all.
385
398
  *
386
- * Unlike {@link searchDriveFiles} there is no `NO_DELEGATED_TOKEN` refusal to
387
- * classify: a caller who has never linked Microsoft gets a 200 with an empty
388
- * list and `freshness.lastFailureReason === 'no_delegated_token'`. The refusal
389
- * moved from the status code into the body, so a reader that only checks for
390
- * a thrown error will report an unlinked account as an empty drive.
399
+ * Unlike {@link searchDriveFiles} there is no thrown refusal to classify: a
400
+ * caller with no working Microsoft link gets a 200 with an empty list and the
401
+ * reason in `freshness.lastFailureReason`. The refusal moved from the status
402
+ * code into the body, so a reader that only checks for a thrown error will
403
+ * report an unlinked account as an empty drive.
404
+ *
405
+ * ENG-4311 — that field carries the backend's SCREAMING_SNAKE
406
+ * `GraphLinkFailure` value (`NO_DELEGATED_TOKEN`, `DELEGATED_TOKEN_REJECTED`,
407
+ * `DELEGATED_TOKEN_UNREADABLE`, `CONSENT_REQUIRED`), never the lowercase
408
+ * outcome name this sentence used to quote. `list_unenrolled_files` compared
409
+ * the lowercase one, so its guard against exactly the failure described above
410
+ * could not fire. Read it through `graphLinkFailureFrom`, never by hand.
391
411
  */
392
412
  async listDriveInventory(params) {
393
413
  const query = new URLSearchParams();
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { AuthSource } from './resolve-auth.js';
2
+ /**
3
+ * ENG-4222 — WHAT TO DO NEXT, NAMED FOR THE CREDENTIAL THE USER ACTUALLY HOLDS.
4
+ *
5
+ * The mid-session 401 handler used to branch on nothing and tell everybody to
6
+ * "Create a new Personal Access Token in Rockhopper Settings". A user who set
7
+ * the server up the way the README recommends never created one — they signed
8
+ * in through a browser — so it sent them to mint a credential they do not need
9
+ * when the remedy was to restart and re-approve.
10
+ *
11
+ * That is not an edge case: the device grant's token is minted with a
12
+ * 60-minute life and has no refresh endpoint, so every session that outlives
13
+ * an hour reaches the mid-session message by design.
14
+ *
15
+ * LIVES IN ITS OWN MODULE so it can be tested as a pure function. `cli.ts` is
16
+ * an entry script with top-level await — importing it to reach this branch
17
+ * runs logger init and auth resolution, which is why the tests that do that
18
+ * need `vi.doMock` and are order-sensitive under load. A string chosen from an
19
+ * enum needs none of that.
20
+ *
21
+ * Keep this the ONLY place the mid-session remediation sentence is written.
22
+ * The preflight path at `cli.ts` deliberately keeps its own wording: its PAT
23
+ * arm names the `ROCKHOPPER_TOKEN` env var rather than a restart, so routing
24
+ * it through here would make correct copy worse.
25
+ */
26
+ export declare function remediationFor(source: AuthSource): string;
27
+ //# sourceMappingURL=remediation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remediation.d.ts","sourceRoot":"","sources":["../../src/auth/remediation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAIzD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ENG-4222 — WHAT TO DO NEXT, NAMED FOR THE CREDENTIAL THE USER ACTUALLY HOLDS.
3
+ *
4
+ * The mid-session 401 handler used to branch on nothing and tell everybody to
5
+ * "Create a new Personal Access Token in Rockhopper Settings". A user who set
6
+ * the server up the way the README recommends never created one — they signed
7
+ * in through a browser — so it sent them to mint a credential they do not need
8
+ * when the remedy was to restart and re-approve.
9
+ *
10
+ * That is not an edge case: the device grant's token is minted with a
11
+ * 60-minute life and has no refresh endpoint, so every session that outlives
12
+ * an hour reaches the mid-session message by design.
13
+ *
14
+ * LIVES IN ITS OWN MODULE so it can be tested as a pure function. `cli.ts` is
15
+ * an entry script with top-level await — importing it to reach this branch
16
+ * runs logger init and auth resolution, which is why the tests that do that
17
+ * need `vi.doMock` and are order-sensitive under load. A string chosen from an
18
+ * enum needs none of that.
19
+ *
20
+ * Keep this the ONLY place the mid-session remediation sentence is written.
21
+ * The preflight path at `cli.ts` deliberately keeps its own wording: its PAT
22
+ * arm names the `ROCKHOPPER_TOKEN` env var rather than a restart, so routing
23
+ * it through here would make correct copy worse.
24
+ */
25
+ export function remediationFor(source) {
26
+ return source === 'pat'
27
+ ? 'Create a new Personal Access Token in Rockhopper Settings and restart this MCP server.'
28
+ : 'Restart this MCP server — it will run the browser sign-in again.';
29
+ }
30
+ //# sourceMappingURL=remediation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remediation.js","sourceRoot":"","sources":["../../src/auth/remediation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,OAAO,MAAM,KAAK,KAAK;QACrB,CAAC,CAAC,wFAAwF;QAC1F,CAAC,CAAC,kEAAkE,CAAC;AACzE,CAAC"}
package/dist/cli.js CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { serveStdio } from '@modelcontextprotocol/server/stdio';
3
3
  import { ApiClient } from './api-client.js';
4
+ import { remediationFor } from './auth/remediation.js';
4
5
  import { AuthResolutionError, resolveAuth, } from './auth/resolve-auth.js';
5
6
  import { flushLoggerSync, initLogger, log, serviceVersion, } from './logger.js';
6
7
  import { createServer } from './server.js';
@@ -78,9 +79,38 @@ try {
78
79
  // ENG-1756 (plan §9 decision 15): the PAT owner IS the human driving this
79
80
  // local agent — reuse the preflight to declare them, so every write carries
80
81
  // `X-Driving-Human` and the backend's anonymous-agent-write admission
81
- // never fires for this client. Best-effort: while unset, the backend
82
- // resolves the PAT owner server-side (same human).
83
- apiClient.setDrivingHuman(me?.msId ?? me?.googleId ?? null);
82
+ // never fires for this client.
83
+ //
84
+ // ENG-4220: the line that used to sit here said "Best-effort: while unset,
85
+ // the backend resolves the PAT owner server-side (same human)". That was
86
+ // FALSE and it hid a total write outage. The backend does not resolve the
87
+ // owner — the guard reads `request.userPlatformId`
88
+ // (`jwt-or-api-key.guard.ts:233`), the PAT middleware sets that from
89
+ // `User.getPlatformId()` (`pat-auth.middleware.ts:132`), and that method IS
90
+ // `msId || googleId` (`user.entity.ts:371-373`) — the same two fields read
91
+ // on the line below. So the documented fallback only ever fires when the
92
+ // header would already have been sent, and an account linked to neither
93
+ // provider 403s on EVERY write.
94
+ //
95
+ // This client deliberately does NOT paper over it by sending `internalId`
96
+ // instead. The value lands in `driving_human_platform_id`, and the only
97
+ // readers of that column match `User.msId`/`googleId` exactly
98
+ // (`users.service.ts:361-364`, `actor-names.ts:44`) — an internal id there
99
+ // would be recorded as an attribution no reader can resolve, on a financial
100
+ // audit trail, from a package customers pin by version. Admitting the write
101
+ // is a backend change; the client's job is to say so before the first tool
102
+ // call fails opaquely.
103
+ const drivingHumanPlatformId = me?.msId ?? me?.googleId ?? null;
104
+ apiClient.setDrivingHuman(drivingHumanPlatformId);
105
+ if (drivingHumanPlatformId === null) {
106
+ log.warn({ event: 'driving_human_unresolvable', internalId: me?.internalId }, 'driving_human_unresolvable');
107
+ // stderr, not a tool result: a tool result is read by the model and by
108
+ // nobody else, and this is the person's problem to fix, not the model's.
109
+ console.error('Warning: this Rockhopper account is not linked to Microsoft or Google, ' +
110
+ 'so every write will be refused with "no resolvable driving human" (403).\n' +
111
+ 'Reads still work. To enable writes, link a Microsoft or Google account ' +
112
+ 'in Rockhopper Settings, then restart this MCP server.');
113
+ }
84
114
  }
85
115
  catch (err) {
86
116
  const msg = err instanceof Error ? err.message : String(err);
@@ -111,8 +141,8 @@ catch (err) {
111
141
  // that only the model ever reads.
112
142
  apiClient.setAuthExpiredHandler(() => {
113
143
  log.warn({ event: 'auth_failed', reason: 'expired_mid_session' }, 'auth_failed');
114
- console.error('Error: Rockhopper rejected the token (401) — it expired or was revoked after this server started. ' +
115
- 'Create a new Personal Access Token in Rockhopper Settings and restart this MCP server.');
144
+ console.error('Error: Rockhopper rejected the token (401) — it expired or was revoked ' +
145
+ `after this server started. ${remediationFor(resolved.source)}`);
116
146
  });
117
147
  // ENG-2208: register only what this token may do. `createServer(apiClient)` —
118
148
  // one argument — used to register all nine write tools for every launch, so a
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,15 @@ export type DriveSearchOutcome =
89
89
  | 'microsoft_admin_approval_required'
90
90
  /** Microsoft could not answer, or the caller is searching too fast. */
91
91
  | 'search_unavailable'
92
+ /**
93
+ * ENG-4313 — the backend REFUSED this caller. Its own outcome and not a
94
+ * flavour of `search_unavailable`, for the reason
95
+ * `microsoft_admin_approval_required` is not one either: the two name
96
+ * opposite next moves. `search_unavailable` means try again; this means the
97
+ * answer will not change until somebody acts outside this session, and a
98
+ * retry costs a unit of the session's search budget for nothing.
99
+ */
100
+ | 'search_refused'
92
101
  /** This Rockhopper deployment serves no drive-search route yet. */
93
102
  | 'backend_unsupported'
94
103
  /** The confirmation named a file this session's search never returned. */
@@ -186,6 +195,22 @@ export interface ClassifiedSearchFailure {
186
195
  export declare function classifyDriveSearchFailure(error: unknown): ClassifiedSearchFailure;
187
196
  /** The backend's one refusal that means "the user must connect Microsoft". */
188
197
  export declare function isNoDelegatedToken(error: unknown): boolean;
198
+ /**
199
+ * The backend's `reason` for a refusal the USER CANNOT FIX (ENG-2614).
200
+ *
201
+ * The tenant has not approved Rockhopper, and Microsoft will not let an
202
+ * ordinary employee approve it — `Sites.Read.All` is administrator-only. So
203
+ * this arrives wearing the same coarse `NO_DELEGATED_TOKEN` code as "you
204
+ * have never connected", and treating the two alike is how the user ends up
205
+ * in a loop: handed a connect link, sent to Microsoft, refused, handed the
206
+ * same link again. Only the fine `reason` separates them.
207
+ *
208
+ * ENG-4311 — the value now comes from the SHARED constant rather than a local
209
+ * one. This file spelled the enum correctly and `list-unenrolled-files.ts`
210
+ * spelled it `'no_delegated_token'`, which matched nothing the backend writes;
211
+ * one repo held two spellings of one enum, and the wrong one was in the file
212
+ * nobody re-read. A second copy is what produced that, so there is one copy.
213
+ */
189
214
  export declare function isAdminConsentRequired(error: unknown): boolean;
190
215
  /**
191
216
  * What the assistant is told when an administrator has to act.
@@ -197,4 +222,24 @@ export declare function isAdminConsentRequired(error: unknown): boolean;
197
222
  * for this user yet.
198
223
  */
199
224
  export declare const ADMIN_CONSENT_TEXT: string;
225
+ /**
226
+ * ENG-4313 — the 401: this session's credential is no longer accepted.
227
+ *
228
+ * Says nothing about Microsoft, because Microsoft was never reached. The
229
+ * remedy is the one `auth/remediation.ts` names for a mid-session 401 — the
230
+ * server has to be restarted so it can authenticate again — and the human
231
+ * hears it there, on stderr; this is the same fact told to the model so it
232
+ * stops calling instead of retrying into a budget it will exhaust.
233
+ */
234
+ export declare const CREDENTIAL_REJECTED_TEXT: string;
235
+ /**
236
+ * ENG-4313 — the 403: the caller was refused, and refusal is not an outage.
237
+ *
238
+ * Deliberately does NOT guess WHY. A 403 on this route can be a token that
239
+ * holds the wrong scope, a route the account may not use, or a policy the
240
+ * client cannot see, and naming one of them would send the user to fix
241
+ * something that is not broken. What it CAN say for certain is that repeating
242
+ * the call changes nothing, which is the part that costs the session budget.
243
+ */
244
+ export declare const SEARCH_REFUSED_TEXT: string;
200
245
  //# sourceMappingURL=drive-search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drive-search.d.ts","sourceRoot":"","sources":["../src/drive-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,kFAAkF;AAClF,MAAM,MAAM,kBAAkB;AAC5B,0EAA0E;AACxE,YAAY;AACd,qDAAqD;GACnD,YAAY;AACd,+EAA+E;GAC7E,WAAW;AACb;;;;GAIG;GACD,UAAU;AACZ;;;;;;;;;GASG;GACD,WAAW;AACb;;;GAGG;GACD,eAAe;AACjB,8EAA8E;GAC5E,sBAAsB;AACxB,wEAAwE;GACtE,yBAAyB;AAC3B;;;;;;GAMG;GACD,mCAAmC;AACrC,uEAAuE;GACrE,oBAAoB;AACtB,mEAAmE;GACjE,qBAAqB;AACvB,0EAA0E;GACxE,mBAAmB,CAAC;AAExB;;;;;;GAMG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,IAAI,CAAK;gBAEY,KAAK,GAAE,MAAoC;IAExE,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;OAIG;IACH,KAAK,IAAI,OAAO;CAKjB;AAED,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAK7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,GACrC,iBAAiB,CAAC,SAAS,SAAS,EAAE,CAAC,CAKzC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,KAAK,EAAE,MAAM,GACZ,SAAS,GAAG,IAAI,CAKlB;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,CAS5D;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,uBAAuB,CAiCzB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI1D;AAcD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QAQuB,CAAC"}
1
+ {"version":3,"file":"drive-search.d.ts","sourceRoot":"","sources":["../src/drive-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,kFAAkF;AAClF,MAAM,MAAM,kBAAkB;AAC5B,0EAA0E;AACxE,YAAY;AACd,qDAAqD;GACnD,YAAY;AACd,+EAA+E;GAC7E,WAAW;AACb;;;;GAIG;GACD,UAAU;AACZ;;;;;;;;;GASG;GACD,WAAW;AACb;;;GAGG;GACD,eAAe;AACjB,8EAA8E;GAC5E,sBAAsB;AACxB,wEAAwE;GACtE,yBAAyB;AAC3B;;;;;;GAMG;GACD,mCAAmC;AACrC,uEAAuE;GACrE,oBAAoB;AACtB;;;;;;;GAOG;GACD,gBAAgB;AAClB,mEAAmE;GACjE,qBAAqB;AACvB,0EAA0E;GACxE,mBAAmB,CAAC;AAExB;;;;;;GAMG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,IAAI,CAAK;gBAEY,KAAK,GAAE,MAAoC;IAExE,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;OAIG;IACH,KAAK,IAAI,OAAO;CAKjB;AAED,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAK7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,GACrC,iBAAiB,CAAC,SAAS,SAAS,EAAE,CAAC,CAKzC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,KAAK,EAAE,MAAM,GACZ,SAAS,GAAG,IAAI,CAKlB;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,CAS5D;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,uBAAuB,CA0CzB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK9D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QAQuB,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,QAIwC,CAAC;AAE9E;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAKuC,CAAC"}
@@ -27,6 +27,7 @@
27
27
  */
28
28
  import { createRequestStateCodec, } from '@modelcontextprotocol/server';
29
29
  import { RockhopperApiError } from './api-client.js';
30
+ import { GRAPH_LINK_FAILURE } from './graph-link-failure.js';
30
31
  /**
31
32
  * Searches one session may run, total.
32
33
  *
@@ -175,6 +176,15 @@ export function classifyDriveSearchFailure(error) {
175
176
  'they have worked on lately.',
176
177
  };
177
178
  }
179
+ // ENG-4313 — these two used to fall through to the catch-all below, which
180
+ // blames Microsoft for a call Microsoft never received, calls a permanent
181
+ // answer transient, and asks a model to retry it. Neither is retryable.
182
+ if (error.status === 401) {
183
+ return { outcome: 'search_refused', message: CREDENTIAL_REJECTED_TEXT };
184
+ }
185
+ if (error.status === 403) {
186
+ return { outcome: 'search_refused', message: SEARCH_REFUSED_TEXT };
187
+ }
178
188
  }
179
189
  return {
180
190
  outcome: 'search_unavailable',
@@ -196,10 +206,16 @@ export function isNoDelegatedToken(error) {
196
206
  * have never connected", and treating the two alike is how the user ends up
197
207
  * in a loop: handed a connect link, sent to Microsoft, refused, handed the
198
208
  * same link again. Only the fine `reason` separates them.
209
+ *
210
+ * ENG-4311 — the value now comes from the SHARED constant rather than a local
211
+ * one. This file spelled the enum correctly and `list-unenrolled-files.ts`
212
+ * spelled it `'no_delegated_token'`, which matched nothing the backend writes;
213
+ * one repo held two spellings of one enum, and the wrong one was in the file
214
+ * nobody re-read. A second copy is what produced that, so there is one copy.
199
215
  */
200
- const CONSENT_REQUIRED = 'CONSENT_REQUIRED';
201
216
  export function isAdminConsentRequired(error) {
202
- return (error instanceof RockhopperApiError && error.reason === CONSENT_REQUIRED);
217
+ return (error instanceof RockhopperApiError &&
218
+ error.reason === GRAPH_LINK_FAILURE.CONSENT_REQUIRED);
203
219
  }
204
220
  /**
205
221
  * What the assistant is told when an administrator has to act.
@@ -218,4 +234,31 @@ export const ADMIN_CONSENT_TEXT = 'Rockhopper cannot search this user\'s Microso
218
234
  'https://docs.rockhopper.co/it-setup/approve-file-access, which has ' +
219
235
  'the approval link and what it grants. Everything else in Rockhopper ' +
220
236
  'keeps working meanwhile. Do not retry this search.';
237
+ /**
238
+ * ENG-4313 — the 401: this session's credential is no longer accepted.
239
+ *
240
+ * Says nothing about Microsoft, because Microsoft was never reached. The
241
+ * remedy is the one `auth/remediation.ts` names for a mid-session 401 — the
242
+ * server has to be restarted so it can authenticate again — and the human
243
+ * hears it there, on stderr; this is the same fact told to the model so it
244
+ * stops calling instead of retrying into a budget it will exhaust.
245
+ */
246
+ export const CREDENTIAL_REJECTED_TEXT = 'Rockhopper rejected this session\'s credential — it expired or was revoked ' +
247
+ 'after this server started. Nothing was searched, and this says nothing ' +
248
+ 'about what the user has. Restarting the MCP server lets it sign in again; ' +
249
+ 'a Personal Access Token holder needs a new one. Do not retry this search.';
250
+ /**
251
+ * ENG-4313 — the 403: the caller was refused, and refusal is not an outage.
252
+ *
253
+ * Deliberately does NOT guess WHY. A 403 on this route can be a token that
254
+ * holds the wrong scope, a route the account may not use, or a policy the
255
+ * client cannot see, and naming one of them would send the user to fix
256
+ * something that is not broken. What it CAN say for certain is that repeating
257
+ * the call changes nothing, which is the part that costs the session budget.
258
+ */
259
+ export const SEARCH_REFUSED_TEXT = 'Rockhopper refused this file search for this user — this is a permissions ' +
260
+ 'answer, not an outage, and nothing was searched. It is not an empty drive. ' +
261
+ 'Retrying will return the same answer, so do not retry this search. Ask the ' +
262
+ 'user to paste the workbook link and call `enroll_file` with it, or to check ' +
263
+ 'in Rockhopper Settings that this connection may search their files.';
221
264
  //# sourceMappingURL=drive-search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drive-search.js","sourceRoot":"","sources":["../src/drive-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drive-search.js","sourceRoot":"","sources":["../src/drive-search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"enrollment.d.ts","sourceRoot":"","sources":["../src/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,IAAI,EACJ,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,UAAU,GACV,kBAAkB,GAClB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,sBAAsB,GACtB,qBAAqB,GACrB,+BAA+B,GAC/B,qBAAqB,CAAC;AAE1B,uEAAuE;AACvE,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;AAmBtC;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,GACrB,kBAAkB,GAAG,+BAA+B,GAAG,IAAI,CAI7D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,uBAAuB,EACtC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAgC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAwG3E;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,uEAAuE;AACvE,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA2CnB"}
1
+ {"version":3,"file":"enrollment.d.ts","sourceRoot":"","sources":["../src/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,IAAI,EACJ,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,UAAU,GACV,kBAAkB,GAClB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,sBAAsB,GACtB,qBAAqB,GACrB,+BAA+B,GAC/B,qBAAqB,CAAC;AAE1B,uEAAuE;AACvE,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;AAmBtC;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,GACrB,kBAAkB,GAAG,+BAA+B,GAAG,IAAI,CAI7D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,uBAAuB,EACtC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAgC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAwG3E;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,uEAAuE;AACvE,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAkEnB"}
@@ -251,10 +251,31 @@ export async function resolveTeamShareTargets(api) {
251
251
  'Nothing was changed.');
252
252
  }
253
253
  const team = await api.getTeam(teamId);
254
- const mine = me.msId ?? me.googleId ?? null;
254
+ // ENG-4219 — READ THE SAME PAIR ON BOTH SIDES.
255
+ //
256
+ // The self side already read `msId ?? googleId`; the target side read `msId`
257
+ // alone, so a Google-linked teammate mapped to null and was filtered out
258
+ // below. A team with no Microsoft members filtered to EMPTY and reported
259
+ // "you are the only member of your team" to somebody with four colleagues —
260
+ // false, and relayed to the user as fact by the assistant.
261
+ //
262
+ // The identifier stays the PLATFORM id rather than moving to the internal
263
+ // `UserSummary.id` uuid, which reads like the better answer and is not one:
264
+ // the backend resolves every element of `shareWithUserMsIds` with
265
+ // `findOneByMsId` (`where: { msId }`), so an internal id matches no row and
266
+ // each teammate is skipped with a log line the user never sees — a silent
267
+ // no-op, strictly worse than today's wrong error. A teammate with NEITHER
268
+ // provider linked is still dropped here for the same reason: that endpoint
269
+ // has no way to reach them.
270
+ //
271
+ // `mine` is a SET of the caller's identities, not a single `??` pick. The
272
+ // roster may serialize a two-provider caller by whichever id it holds, and
273
+ // one value compared against the other namespace never matches — which put
274
+ // the caller in their own share list.
275
+ const mine = new Set([me.msId, me.googleId].filter((id) => !!id));
255
276
  const targets = (team.teamMembers ?? [])
256
- .map((member) => member.user?.msId ?? null)
257
- .filter((id) => !!id && id !== mine);
277
+ .map((member) => member.user?.msId ?? member.user?.googleId ?? null)
278
+ .filter((id) => !!id && !mine.has(id));
258
279
  if (targets.length === 0) {
259
280
  throw new TeamUnresolvedError(`You are the only member of ${team.name ? `the ${team.name} team` : 'your team'}, so sharing with the team would share it with nobody. Call ` +
260
281
  '`enroll_file` again with share_with="me" to add it just for ' +
@@ -1 +1 @@
1
- {"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../src/enrollment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../src/enrollment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * ENG-4311 — the delegated-Microsoft failure codes, spelled ONCE.
3
+ *
4
+ * ## The defect this exists to close
5
+ *
6
+ * `list_unenrolled_files` guarded against its worst failure — reporting "we
7
+ * never managed to look" as "there is nothing to add" — with
8
+ * `lastFailureReason === 'no_delegated_token'`. The backend does not write
9
+ * that string. Traced end to end:
10
+ *
11
+ * 1. `backend/src/resources/graph-links/graph-link-errors.ts` — the
12
+ * `GraphLinkFailure` enum is SCREAMING_SNAKE, and
13
+ * `NoDelegatedTokenError.reason` is a required constructor argument, so
14
+ * it is always one of the four values below.
15
+ * 2. `backend/src/user-drive-inventory/user-drive-inventory-refresh.service.ts`
16
+ * passes `error.reason` — the enum value — as the recorded reason.
17
+ * 3. `backend/src/user-drive-inventory/user-drive-sync-state.service.ts`
18
+ * stores `detail.reason ?? outcome`. `detail.reason` is set on that path,
19
+ * so the `?? outcome` fallback never runs.
20
+ * 4. `backend/src/user-drive-inventory/user-drive-inventory.service.ts`
21
+ * serializes the column verbatim. Nothing normalises the case anywhere.
22
+ *
23
+ * So the lowercase comparison never matched, the branch was unreachable, and a
24
+ * user with no working Microsoft link fell through to "the first scan has not
25
+ * finished, one has been started, try again shortly" — an instruction to retry,
26
+ * addressed to a state that no retry can change, with the real reason printed
27
+ * in a parenthetical one sentence later.
28
+ *
29
+ * ## Why the values live here and not in the two files that read them
30
+ *
31
+ * `drive-search.ts` already compared `CONSENT_REQUIRED` correctly. One repo
32
+ * held two spellings of one enum, and the file that got it wrong is the file
33
+ * nobody re-read. A second copy is what produced the defect, so there is one
34
+ * copy, imported by both.
35
+ *
36
+ * The strings are duplicated from the backend rather than imported because
37
+ * this package ships to customers over npm on its own release clock and takes
38
+ * no build dependency on the API. `LEGACY_OUTCOME_NAME` is what keeps that
39
+ * duplication honest in the one direction it can drift safely.
40
+ */
41
+ /**
42
+ * The four reasons a delegated Microsoft call can fail, byte-for-byte as the
43
+ * backend's `GraphLinkFailure` enum writes them.
44
+ *
45
+ * They are NOT interchangeable. Three of the four name a different party who
46
+ * has to act, and collapsing them is how ENG-2614's loop happened: a user whose
47
+ * TENANT is the blocker was handed a connect link, sent to Microsoft, refused,
48
+ * and returned with the same link.
49
+ */
50
+ export declare const GRAPH_LINK_FAILURE: {
51
+ /** No link on file — never consented, or unlinked. The user connects. */
52
+ readonly NO_DELEGATED_TOKEN: "NO_DELEGATED_TOKEN";
53
+ /** Microsoft rejected the stored refresh token. The user reconnects. */
54
+ readonly DELEGATED_TOKEN_REJECTED: "DELEGATED_TOKEN_REJECTED";
55
+ /** The ciphertext will not open under our key. OUR fault; the user
56
+ * reconnects anyway, because that is the only lever they hold. */
57
+ readonly DELEGATED_TOKEN_UNREADABLE: "DELEGATED_TOKEN_UNREADABLE";
58
+ /** The tenant has not approved Rockhopper. ONLY an administrator can act. */
59
+ readonly CONSENT_REQUIRED: "CONSENT_REQUIRED";
60
+ };
61
+ export type GraphLinkFailure = (typeof GRAPH_LINK_FAILURE)[keyof typeof GRAPH_LINK_FAILURE];
62
+ /**
63
+ * The delegated-link failure a recorded reason names, or `null`.
64
+ *
65
+ * `null` means "this is not a link failure" — `graph_unavailable`,
66
+ * `token_mint_failed`, an exception name, or nothing recorded at all. Those
67
+ * keep their existing handling: a caller must not render a Graph outage as a
68
+ * broken link, which would send the user to reconnect something that works.
69
+ *
70
+ * EXACT MATCH on the four. No case folding and no prefix test: a value we do
71
+ * not recognise is not "probably one of these", it is a code this package has
72
+ * not learned about, and guessing is what put a made-up string in the
73
+ * comparison in the first place.
74
+ */
75
+ export declare function graphLinkFailureFrom(reason: string | null | undefined): GraphLinkFailure | null;
76
+ export declare const GRAPH_LINK_FAILURE_TEXT: Readonly<Record<GraphLinkFailure, string>>;
77
+ //# sourceMappingURL=graph-link-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-link-failure.d.ts","sourceRoot":"","sources":["../src/graph-link-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB;IAC7B,yEAAyE;;IAEzE,wEAAwE;;IAExE;sEACkE;;IAElE,6EAA6E;;CAErE,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAgB/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,gBAAgB,GAAG,IAAI,CAMzB;AAqBD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAC5C,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CA2BjC,CAAC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * ENG-4311 — the delegated-Microsoft failure codes, spelled ONCE.
3
+ *
4
+ * ## The defect this exists to close
5
+ *
6
+ * `list_unenrolled_files` guarded against its worst failure — reporting "we
7
+ * never managed to look" as "there is nothing to add" — with
8
+ * `lastFailureReason === 'no_delegated_token'`. The backend does not write
9
+ * that string. Traced end to end:
10
+ *
11
+ * 1. `backend/src/resources/graph-links/graph-link-errors.ts` — the
12
+ * `GraphLinkFailure` enum is SCREAMING_SNAKE, and
13
+ * `NoDelegatedTokenError.reason` is a required constructor argument, so
14
+ * it is always one of the four values below.
15
+ * 2. `backend/src/user-drive-inventory/user-drive-inventory-refresh.service.ts`
16
+ * passes `error.reason` — the enum value — as the recorded reason.
17
+ * 3. `backend/src/user-drive-inventory/user-drive-sync-state.service.ts`
18
+ * stores `detail.reason ?? outcome`. `detail.reason` is set on that path,
19
+ * so the `?? outcome` fallback never runs.
20
+ * 4. `backend/src/user-drive-inventory/user-drive-inventory.service.ts`
21
+ * serializes the column verbatim. Nothing normalises the case anywhere.
22
+ *
23
+ * So the lowercase comparison never matched, the branch was unreachable, and a
24
+ * user with no working Microsoft link fell through to "the first scan has not
25
+ * finished, one has been started, try again shortly" — an instruction to retry,
26
+ * addressed to a state that no retry can change, with the real reason printed
27
+ * in a parenthetical one sentence later.
28
+ *
29
+ * ## Why the values live here and not in the two files that read them
30
+ *
31
+ * `drive-search.ts` already compared `CONSENT_REQUIRED` correctly. One repo
32
+ * held two spellings of one enum, and the file that got it wrong is the file
33
+ * nobody re-read. A second copy is what produced the defect, so there is one
34
+ * copy, imported by both.
35
+ *
36
+ * The strings are duplicated from the backend rather than imported because
37
+ * this package ships to customers over npm on its own release clock and takes
38
+ * no build dependency on the API. `LEGACY_OUTCOME_NAME` is what keeps that
39
+ * duplication honest in the one direction it can drift safely.
40
+ */
41
+ /**
42
+ * The four reasons a delegated Microsoft call can fail, byte-for-byte as the
43
+ * backend's `GraphLinkFailure` enum writes them.
44
+ *
45
+ * They are NOT interchangeable. Three of the four name a different party who
46
+ * has to act, and collapsing them is how ENG-2614's loop happened: a user whose
47
+ * TENANT is the blocker was handed a connect link, sent to Microsoft, refused,
48
+ * and returned with the same link.
49
+ */
50
+ export const GRAPH_LINK_FAILURE = {
51
+ /** No link on file — never consented, or unlinked. The user connects. */
52
+ NO_DELEGATED_TOKEN: 'NO_DELEGATED_TOKEN',
53
+ /** Microsoft rejected the stored refresh token. The user reconnects. */
54
+ DELEGATED_TOKEN_REJECTED: 'DELEGATED_TOKEN_REJECTED',
55
+ /** The ciphertext will not open under our key. OUR fault; the user
56
+ * reconnects anyway, because that is the only lever they hold. */
57
+ DELEGATED_TOKEN_UNREADABLE: 'DELEGATED_TOKEN_UNREADABLE',
58
+ /** The tenant has not approved Rockhopper. ONLY an administrator can act. */
59
+ CONSENT_REQUIRED: 'CONSENT_REQUIRED',
60
+ };
61
+ /**
62
+ * The lowercase OUTCOME name, which is a different thing from a reason and is
63
+ * still reachable.
64
+ *
65
+ * `recordOutcome` stores `detail.reason ?? outcome`, so a caller that records
66
+ * the outcome with no reason lands here, and so does any backend older than
67
+ * the enum. Accepted as `NO_DELEGATED_TOKEN` — the coarse answer it always
68
+ * meant — rather than dropped, because refusing it would re-open the same hole
69
+ * for the deployments that do send it.
70
+ */
71
+ const LEGACY_OUTCOME_NAME = 'no_delegated_token';
72
+ const KNOWN = new Set(Object.values(GRAPH_LINK_FAILURE));
73
+ /**
74
+ * The delegated-link failure a recorded reason names, or `null`.
75
+ *
76
+ * `null` means "this is not a link failure" — `graph_unavailable`,
77
+ * `token_mint_failed`, an exception name, or nothing recorded at all. Those
78
+ * keep their existing handling: a caller must not render a Graph outage as a
79
+ * broken link, which would send the user to reconnect something that works.
80
+ *
81
+ * EXACT MATCH on the four. No case folding and no prefix test: a value we do
82
+ * not recognise is not "probably one of these", it is a code this package has
83
+ * not learned about, and guessing is what put a made-up string in the
84
+ * comparison in the first place.
85
+ */
86
+ export function graphLinkFailureFrom(reason) {
87
+ if (typeof reason !== 'string')
88
+ return null;
89
+ if (reason === LEGACY_OUTCOME_NAME) {
90
+ return GRAPH_LINK_FAILURE.NO_DELEGATED_TOKEN;
91
+ }
92
+ return KNOWN.has(reason) ? reason : null;
93
+ }
94
+ /**
95
+ * What to tell the assistant for each failure, written to be ACTED on.
96
+ *
97
+ * Two rules hold across all four, and both are the point of the ticket:
98
+ *
99
+ * - **No retry language.** Every one of these is stable until a person does
100
+ * something outside this session. "Try again shortly" is what the dead
101
+ * branch's fall-through said, and a model complies with it.
102
+ * - **`connect_microsoft` appears only where the USER can fix it.** It is
103
+ * absent from the consent case on purpose (ENG-2614), and its absence is
104
+ * asserted rather than assumed.
105
+ *
106
+ * Each also states that an empty list is not evidence of an empty drive, since
107
+ * that inference is the harm the whole surface is written against.
108
+ */
109
+ const NOT_EVIDENCE = ' This list will stay empty until that is done, which is NOT the same as ' +
110
+ 'having nothing to add.';
111
+ export const GRAPH_LINK_FAILURE_TEXT = {
112
+ [GRAPH_LINK_FAILURE.NO_DELEGATED_TOKEN]: 'Rockhopper cannot see this user\'s workbooks: their Microsoft account ' +
113
+ 'is not connected. Run `connect_microsoft` first.' + NOT_EVIDENCE,
114
+ [GRAPH_LINK_FAILURE.DELEGATED_TOKEN_REJECTED]: 'Rockhopper cannot see this user\'s workbooks: their connection to ' +
115
+ 'Microsoft has expired or was revoked — in Microsoft, by them or by an ' +
116
+ 'administrator. Run `connect_microsoft` to reconnect.' + NOT_EVIDENCE,
117
+ [GRAPH_LINK_FAILURE.DELEGATED_TOKEN_UNREADABLE]: 'Rockhopper cannot see this user\'s workbooks: the stored Microsoft ' +
118
+ 'connection could not be read. That is a Rockhopper-side fault, not ' +
119
+ 'anything the user did wrong, and reconnecting repairs it — run ' +
120
+ '`connect_microsoft`.' + NOT_EVIDENCE,
121
+ // No connect link, deliberately: there is nothing on the far end of one for
122
+ // this user until an administrator acts. Mirrors `ADMIN_CONSENT_TEXT` in
123
+ // `drive-search.ts`, which answers the same condition on the search surface.
124
+ [GRAPH_LINK_FAILURE.CONSENT_REQUIRED]: 'Rockhopper cannot see this user\'s workbooks because their organisation ' +
125
+ 'has not approved Rockhopper yet. Microsoft only lets a Microsoft 365 ' +
126
+ 'administrator approve this — the user cannot grant it themselves, and ' +
127
+ 'connecting or signing in again will not change the answer. Ask the user ' +
128
+ 'to send their IT administrator to ' +
129
+ 'https://docs.rockhopper.co/it-setup/approve-file-access.' + NOT_EVIDENCE,
130
+ };
131
+ //# sourceMappingURL=graph-link-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-link-failure.js","sourceRoot":"","sources":["../src/graph-link-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,yEAAyE;IACzE,kBAAkB,EAAE,oBAAoB;IACxC,wEAAwE;IACxE,wBAAwB,EAAE,0BAA0B;IACpD;sEACkE;IAClE,0BAA0B,EAAE,4BAA4B;IACxD,6EAA6E;IAC7E,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAKX;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEjD,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAiC;IAEjC,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,MAAM,KAAK,mBAAmB,EAAE,CAAC;QACnC,OAAO,kBAAkB,CAAC,kBAAkB,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAA2B,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,YAAY,GAChB,0EAA0E;IAC1E,wBAAwB,CAAC;AAE3B,MAAM,CAAC,MAAM,uBAAuB,GAEhC;IACF,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EACrC,wEAAwE;QACxE,kDAAkD,GAAG,YAAY;IAEnE,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,EAC3C,oEAAoE;QACpE,wEAAwE;QACxE,sDAAsD,GAAG,YAAY;IAEvE,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,EAC7C,qEAAqE;QACrE,qEAAqE;QACrE,iEAAiE;QACjE,sBAAsB,GAAG,YAAY;IAEvC,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EACnC,0EAA0E;QAC1E,uEAAuE;QACvE,wEAAwE;QACxE,0EAA0E;QAC1E,oCAAoC;QACpC,0DAA0D,GAAG,YAAY;CAC5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list-unenrolled-files.d.ts","sourceRoot":"","sources":["../../src/tools/list-unenrolled-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,SAAS,GACb,IAAI,CAqFN"}
1
+ {"version":3,"file":"list-unenrolled-files.d.ts","sourceRoot":"","sources":["../../src/tools/list-unenrolled-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAUlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,SAAS,GACb,IAAI,CAqFN"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { GRAPH_LINK_FAILURE_TEXT, graphLinkFailureFrom, } from '../graph-link-failure.js';
2
3
  /**
3
4
  * ENG-2785 — "which of my workbooks are NOT in Rockhopper yet?"
4
5
  *
@@ -152,15 +153,21 @@ function renderFound(items, freshness, nextCursor = null) {
152
153
  `${lines.join('\n')}\n\n${dateline(freshness)}${moreToCome(nextCursor)}`);
153
154
  }
154
155
  function renderEmpty(freshness, nextCursor = null) {
155
- // ORDER IS LOAD-BEARING. An unlinked account and a first refresh that has not
156
+ // ORDER IS LOAD-BEARING. A broken link and a first refresh that has not
156
157
  // finished both mean there is nothing to page THROUGH, so sending the model
157
158
  // after another page instead of `connect_microsoft` starts a loop that cannot
158
159
  // end. Those two branches come first and keep their own instruction.
159
- if (freshness.lastFailureReason === 'no_delegated_token') {
160
- return ('Rockhopper cannot see this user\'s workbooks: their Microsoft account ' +
161
- 'is not linked. Run `connect_microsoft` first — this list will be empty ' +
162
- 'until it is, which is not the same as having nothing to add.');
163
- }
160
+ //
161
+ // ENG-4311 — this used to compare `lastFailureReason === 'no_delegated_token'`
162
+ // against a producer that writes the SCREAMING_SNAKE `GraphLinkFailure` enum,
163
+ // so it never matched and this branch was dead: a user with no working link
164
+ // fell through to the never-refreshed message below and was told a scan had
165
+ // been started and to try again shortly. Neither was true. The four codes are
166
+ // kept APART rather than collapsed, because three of them name a different
167
+ // person who has to act — see `graph-link-failure.ts`.
168
+ const linkFailure = graphLinkFailureFrom(freshness.lastFailureReason);
169
+ if (linkFailure)
170
+ return GRAPH_LINK_FAILURE_TEXT[linkFailure];
164
171
  if (!freshness.asOf) {
165
172
  return ('No answer yet — the first scan of this user\'s drive has not finished. ' +
166
173
  `${freshness.refreshing ? 'One is running now.' : 'One has been started.'} ` +
@@ -1 +1 @@
1
- {"version":3,"file":"list-unenrolled-files.js","sourceRoot":"","sources":["../../src/tools/list-unenrolled-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-unenrolled-files.js","sourceRoot":"","sources":["../../src/tools/list-unenrolled-files.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockhopper-co/mcp-server",
3
- "version": "2.1.57-staging.4b5c02c",
3
+ "version": "2.1.59-staging.eb505a3",
4
4
  "description": "Rockhopper MCP server — expose file metadata, versions, reviews, and comments to AI tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",