@rockhopper-co/mcp-server 2.1.68-staging.e2ad38d → 2.1.69-staging.4a88e63

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.
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ENG-1748 — "this source cannot answer for this file" is a different answer
3
+ * from "this cell has no history", and the tool used to print the second when
4
+ * it meant the first: the backend served `[]` with HTTP 200 for a file whose
5
+ * history it could not see, and an assistant reported "this cell never changed"
6
+ * to a customer as fact. A plausible zero is the most dangerous thing a tool can
7
+ * return, because — unlike a refusal — it does not look like a non-answer.
8
+ *
9
+ * The discriminator is NOT the empty array. The backend now refuses such a read
10
+ * outright with `422` and the machine-readable `CELL_HISTORY_UNAVAILABLE` code;
11
+ * this module recognises that code and renders it as a refusal. A zero-length
12
+ * result that arrives with HTTP 200 is still a real, trustworthy zero and is
13
+ * still rendered as one.
14
+ *
15
+ * Deliberately NOT part of `not-ready.ts`: that vocabulary is "come back
16
+ * later", and every field of its payload (`retryAfterSeconds`) is wrong here.
17
+ * Retrying cannot make this file's history reconstructible.
18
+ */
19
+ /** The backend's refusal code, matched structurally so no import cycle forms. */
20
+ export declare const CELL_HISTORY_UNAVAILABLE_CODE = "CELL_HISTORY_UNAVAILABLE";
21
+ /** Grep marker; also the first token of the refusal an assistant sees. */
22
+ export declare const UNAVAILABLE_MARKER = "CELL_HISTORY_UNAVAILABLE";
23
+ /** Matches the backend's coded refusal, and any error carrying one as `cause`. */
24
+ export declare function isCellHistoryUnavailable(err: unknown): boolean;
25
+ export interface UnavailableToolResult {
26
+ /** The SDK's `CallToolResult` carries an index signature; mirror it. */
27
+ [key: string]: unknown;
28
+ content: Array<{
29
+ type: 'text';
30
+ text: string;
31
+ }>;
32
+ isError: true;
33
+ }
34
+ /**
35
+ * The tool answer for an unanswerable read. Three defences, the same three
36
+ * `notReadyToolResult` uses, because one is not enough against a model that
37
+ * wants to be helpful: `isError`, prose that names the wrong inference
38
+ * explicitly, and a JSON object to branch on.
39
+ */
40
+ export declare function cellHistoryUnavailableToolResult(cell: string, sheetName: string): UnavailableToolResult;
41
+ //# sourceMappingURL=cell-history-unavailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-history-unavailable.d.ts","sourceRoot":"","sources":["../src/cell-history-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AAExE,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,6BAAgC,CAAC;AAEhE,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM9D;AAED,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,qBAAqB,CAuBvB"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * ENG-1748 — "this source cannot answer for this file" is a different answer
3
+ * from "this cell has no history", and the tool used to print the second when
4
+ * it meant the first: the backend served `[]` with HTTP 200 for a file whose
5
+ * history it could not see, and an assistant reported "this cell never changed"
6
+ * to a customer as fact. A plausible zero is the most dangerous thing a tool can
7
+ * return, because — unlike a refusal — it does not look like a non-answer.
8
+ *
9
+ * The discriminator is NOT the empty array. The backend now refuses such a read
10
+ * outright with `422` and the machine-readable `CELL_HISTORY_UNAVAILABLE` code;
11
+ * this module recognises that code and renders it as a refusal. A zero-length
12
+ * result that arrives with HTTP 200 is still a real, trustworthy zero and is
13
+ * still rendered as one.
14
+ *
15
+ * Deliberately NOT part of `not-ready.ts`: that vocabulary is "come back
16
+ * later", and every field of its payload (`retryAfterSeconds`) is wrong here.
17
+ * Retrying cannot make this file's history reconstructible.
18
+ */
19
+ /** The backend's refusal code, matched structurally so no import cycle forms. */
20
+ export const CELL_HISTORY_UNAVAILABLE_CODE = 'CELL_HISTORY_UNAVAILABLE';
21
+ /** Grep marker; also the first token of the refusal an assistant sees. */
22
+ export const UNAVAILABLE_MARKER = CELL_HISTORY_UNAVAILABLE_CODE;
23
+ /** Matches the backend's coded refusal, and any error carrying one as `cause`. */
24
+ export function isCellHistoryUnavailable(err) {
25
+ const code = err?.code;
26
+ if (code === CELL_HISTORY_UNAVAILABLE_CODE)
27
+ return true;
28
+ const cause = err
29
+ ?.cause;
30
+ return cause?.code === CELL_HISTORY_UNAVAILABLE_CODE;
31
+ }
32
+ /**
33
+ * The tool answer for an unanswerable read. Three defences, the same three
34
+ * `notReadyToolResult` uses, because one is not enough against a model that
35
+ * wants to be helpful: `isError`, prose that names the wrong inference
36
+ * explicitly, and a JSON object to branch on.
37
+ */
38
+ export function cellHistoryUnavailableToolResult(cell, sheetName) {
39
+ const payload = {
40
+ status: 'unavailable',
41
+ code: CELL_HISTORY_UNAVAILABLE_CODE,
42
+ cell,
43
+ sheetName,
44
+ };
45
+ return {
46
+ content: [
47
+ {
48
+ type: 'text',
49
+ text: `${UNAVAILABLE_MARKER} — this is NOT a result and NOT an empty result.\n` +
50
+ `Rockhopper cannot report the change history of ${cell} on ` +
51
+ `"${sheetName}" for this file.\n` +
52
+ `Do NOT say the cell has no history, that nothing changed, or that ` +
53
+ `the history is empty — none of that is known.\n` +
54
+ `Retrying will not change this answer.\n` +
55
+ JSON.stringify(payload),
56
+ },
57
+ ],
58
+ isError: true,
59
+ };
60
+ }
61
+ //# sourceMappingURL=cell-history-unavailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-history-unavailable.js","sourceRoot":"","sources":["../src/cell-history-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AAExE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAEhE,kFAAkF;AAClF,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,MAAM,IAAI,GAAI,GAA6C,EAAE,IAAI,CAAC;IAClE,IAAI,IAAI,KAAK,6BAA6B;QAAE,OAAO,IAAI,CAAC;IACxD,MAAM,KAAK,GAAI,GAAyD;QACtE,EAAE,KAAK,CAAC;IACV,OAAO,KAAK,EAAE,IAAI,KAAK,6BAA6B,CAAC;AACvD,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAAY,EACZ,SAAiB;IAEjB,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,6BAA6B;QACnC,IAAI;QACJ,SAAS;KACV,CAAC;IACF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,GAAG,kBAAkB,oDAAoD;oBACzE,kDAAkD,IAAI,MAAM;oBAC5D,IAAI,SAAS,oBAAoB;oBACjC,oEAAoE;oBACpE,iDAAiD;oBACjD,yCAAyC;oBACzC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC1B;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -171,7 +171,7 @@ Rockhopper supports both Microsoft Excel files (M365 / OneDrive) and Google Shee
171
171
 
172
172
  | Field | Microsoft Excel | Google Sheets |
173
173
  |-------|------------------|----------------|
174
- | `fileType` | `microsoft_xlsx` | `google_sheets` |
174
+ | `fileType` | `microsoft_xlsx`, `microsoft_xlsm` | `gdrive_xlsx` (a workbook stored in Drive), `gsheet_native` (a Google Sheet) |
175
175
  | `driveMsId` | OneDrive / SharePoint drive ID | Google Drive file ID (yes, the field name is misleading for the Google case) |
176
176
  | `platformId` (= `fileMsId`) | Microsoft graph file ID | Google Drive file ID |
177
177
 
@@ -185,6 +185,7 @@ Tool failures return structured responses with `isError: true` and a human-reada
185
185
  - **409 / "conflict"** — state-machine violation (e.g. approving an already-approved review).
186
186
  - **403 / "forbidden"** — permission error (e.g. non-reviewer calling `approve_review`).
187
187
  - **5xx** — server-side error. Retry once; if it persists, surface the error to the user — don't loop.
188
+ - **`CELL_HISTORY_UNAVAILABLE`** — `get_cell_history` cannot report that cell's history for that file. It is NOT an empty history and NOT a failure to retry: say the history is unavailable, and never report that the cell has no changes.
188
189
 
189
190
  When a tool returns `isError: true`, do not silently retry with the same arguments. Either correct the arguments based on the error message or surface the failure.
190
191
 
@@ -1 +1 @@
1
- {"version":3,"file":"get-cell-history.d.ts","sourceRoot":"","sources":["../../src/tools/get-cell-history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQlD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,SAAS,GACb,IAAI,CAwHN"}
1
+ {"version":3,"file":"get-cell-history.d.ts","sourceRoot":"","sources":["../../src/tools/get-cell-history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAYlD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,SAAS,GACb,IAAI,CAyIN"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { cellHistoryUnavailableToolResult, isCellHistoryUnavailable, } from '../cell-history-unavailable.js';
2
3
  import { assertChangeHistoryComplete, isNotReady, notReadyToolResult, } from '../not-ready.js';
3
4
  import { parseCellAddress, sheetNamesAgree } from './cell-address.js';
4
5
  export function registerGetCellHistoryTool(server, api) {
@@ -12,7 +13,16 @@ export function registerGetCellHistoryTool(server, api) {
12
13
  'Answers CHANGE_HISTORY_NOT_READY (isError) while Rockhopper is still ' +
13
14
  'computing this history. That is NOT an empty history — nothing is ' +
14
15
  'known yet; retry after the stated interval and never report an ' +
15
- 'absence of changes from it.',
16
+ 'absence of changes from it. ' +
17
+ // ENG-1748 — same reasoning one case over: a history this tool cannot
18
+ // report is a refusal, and the model must know that before it calls,
19
+ // because the alternative it used to get was a confident zero.
20
+ 'Answers CELL_HISTORY_UNAVAILABLE (isError) when Rockhopper cannot ' +
21
+ 'report this cell\'s history for this file. That is NOT an empty ' +
22
+ 'history either — retrying will not change it, and nothing about ' +
23
+ 'whether the cell changed may be inferred from it. An empty result ' +
24
+ 'WITHOUT one of those two answers means the cell has no recorded ' +
25
+ 'changes.',
16
26
  inputSchema: z.object({
17
27
  fileMsId: z.string().describe('Platform ID of the enrolled file'),
18
28
  sheetName: z.string().describe('Name of the worksheet'),
@@ -97,6 +107,14 @@ export function registerGetCellHistoryTool(server, api) {
97
107
  // broken, answer from what I already have".
98
108
  if (isNotReady(error))
99
109
  return notReadyToolResult(error);
110
+ // ENG-1748 — the backend refused because it cannot reconstruct this
111
+ // file's history. Rendering it through the generic branch below would
112
+ // hand the model prose it may read as "the tool is broken, answer from
113
+ // what I already have" — the same wrong turn the not-ready branch above
114
+ // exists to prevent.
115
+ if (isCellHistoryUnavailable(error)) {
116
+ return cellHistoryUnavailableToolResult(cell, sheetName);
117
+ }
100
118
  return {
101
119
  content: [
102
120
  {
@@ -1 +1 @@
1
- {"version":3,"file":"get-cell-history.js","sourceRoot":"","sources":["../../src/tools/get-cell-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-cell-history.js","sourceRoot":"","sources":["../../src/tools/get-cell-history.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.68-staging.e2ad38d",
3
+ "version": "2.1.69-staging.4a88e63",
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",