funifier-mcp 0.3.17 → 0.3.19

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 (169) hide show
  1. package/.cursor/rules/funifier.mdc +3 -1
  2. package/.github/copilot-instructions.md +3 -1
  3. package/AGENTS.md +3 -1
  4. package/CHANGELOG.md +59 -0
  5. package/README.md +1 -1
  6. package/datasource-funifier-docs/.coverage.json +15 -5
  7. package/datasource-funifier-docs/.validation.json +77 -36
  8. package/datasource-funifier-docs/knowledge/guides/aggregates.md +13 -6
  9. package/datasource-funifier-docs/knowledge/guides/permission-audit.md +229 -0
  10. package/datasource-funifier-docs/knowledge/index.md +3 -2
  11. package/dist/cli/init.d.ts.map +1 -1
  12. package/dist/cli/init.js +3 -1
  13. package/dist/cli/init.js.map +1 -1
  14. package/dist/core/api-client.d.ts +2 -0
  15. package/dist/core/api-client.d.ts.map +1 -1
  16. package/dist/core/api-client.js +98 -47
  17. package/dist/core/api-client.js.map +1 -1
  18. package/dist/core/api-client.test.js +27 -0
  19. package/dist/core/api-client.test.js.map +1 -1
  20. package/dist/core/constants.d.ts +4 -0
  21. package/dist/core/constants.d.ts.map +1 -1
  22. package/dist/core/constants.js +8 -0
  23. package/dist/core/constants.js.map +1 -1
  24. package/dist/core/logger.d.ts +9 -0
  25. package/dist/core/logger.d.ts.map +1 -0
  26. package/dist/core/logger.js +50 -0
  27. package/dist/core/logger.js.map +1 -0
  28. package/dist/mcp/api-holder.test.d.ts +2 -0
  29. package/dist/mcp/api-holder.test.d.ts.map +1 -0
  30. package/dist/mcp/api-holder.test.js +45 -0
  31. package/dist/mcp/api-holder.test.js.map +1 -0
  32. package/dist/mcp/bundle.js +108 -105
  33. package/dist/mcp/check-update.d.ts +9 -0
  34. package/dist/mcp/check-update.d.ts.map +1 -1
  35. package/dist/mcp/check-update.js +35 -9
  36. package/dist/mcp/check-update.js.map +1 -1
  37. package/dist/mcp/check-update.test.js +36 -6
  38. package/dist/mcp/check-update.test.js.map +1 -1
  39. package/dist/mcp/doc-path.d.ts +11 -0
  40. package/dist/mcp/doc-path.d.ts.map +1 -0
  41. package/dist/mcp/doc-path.js +66 -0
  42. package/dist/mcp/doc-path.js.map +1 -0
  43. package/dist/mcp/doc-path.test.d.ts +2 -0
  44. package/dist/mcp/doc-path.test.d.ts.map +1 -0
  45. package/dist/mcp/doc-path.test.js +77 -0
  46. package/dist/mcp/doc-path.test.js.map +1 -0
  47. package/dist/mcp/index.js +19 -0
  48. package/dist/mcp/index.js.map +1 -1
  49. package/dist/mcp/resources/documentation.d.ts.map +1 -1
  50. package/dist/mcp/resources/documentation.js +7 -3
  51. package/dist/mcp/resources/documentation.js.map +1 -1
  52. package/dist/mcp/tools/_audit.d.ts +103 -0
  53. package/dist/mcp/tools/_audit.d.ts.map +1 -0
  54. package/dist/mcp/tools/_audit.js +241 -0
  55. package/dist/mcp/tools/_audit.js.map +1 -0
  56. package/dist/mcp/tools/_audit.test.d.ts +2 -0
  57. package/dist/mcp/tools/_audit.test.d.ts.map +1 -0
  58. package/dist/mcp/tools/_audit.test.js +412 -0
  59. package/dist/mcp/tools/_audit.test.js.map +1 -0
  60. package/dist/mcp/tools/_backup.d.ts +37 -3
  61. package/dist/mcp/tools/_backup.d.ts.map +1 -1
  62. package/dist/mcp/tools/_backup.js +142 -11
  63. package/dist/mcp/tools/_backup.js.map +1 -1
  64. package/dist/mcp/tools/_backup.test.js +195 -0
  65. package/dist/mcp/tools/_backup.test.js.map +1 -1
  66. package/dist/mcp/tools/_char-guard.d.ts +2 -1
  67. package/dist/mcp/tools/_char-guard.d.ts.map +1 -1
  68. package/dist/mcp/tools/_char-guard.js +10 -3
  69. package/dist/mcp/tools/_char-guard.js.map +1 -1
  70. package/dist/mcp/tools/_fetch-current.d.ts +2 -1
  71. package/dist/mcp/tools/_fetch-current.d.ts.map +1 -1
  72. package/dist/mcp/tools/_fetch-current.js +2 -74
  73. package/dist/mcp/tools/_fetch-current.js.map +1 -1
  74. package/dist/mcp/tools/_registry.d.ts +183 -0
  75. package/dist/mcp/tools/_registry.d.ts.map +1 -0
  76. package/dist/mcp/tools/_registry.js +88 -0
  77. package/dist/mcp/tools/_registry.js.map +1 -0
  78. package/dist/mcp/tools/_registry.test.d.ts +2 -0
  79. package/dist/mcp/tools/_registry.test.d.ts.map +1 -0
  80. package/dist/mcp/tools/_registry.test.js +103 -0
  81. package/dist/mcp/tools/_registry.test.js.map +1 -0
  82. package/dist/mcp/tools/_scope-engine.d.ts +40 -0
  83. package/dist/mcp/tools/_scope-engine.d.ts.map +1 -0
  84. package/dist/mcp/tools/_scope-engine.js +197 -0
  85. package/dist/mcp/tools/_scope-engine.js.map +1 -0
  86. package/dist/mcp/tools/_scope-engine.test.d.ts +2 -0
  87. package/dist/mcp/tools/_scope-engine.test.d.ts.map +1 -0
  88. package/dist/mcp/tools/_scope-engine.test.js +241 -0
  89. package/dist/mcp/tools/_scope-engine.test.js.map +1 -0
  90. package/dist/mcp/tools/database.d.ts +4 -0
  91. package/dist/mcp/tools/database.d.ts.map +1 -1
  92. package/dist/mcp/tools/database.js +23 -4
  93. package/dist/mcp/tools/database.js.map +1 -1
  94. package/dist/mcp/tools/database.test.js +19 -0
  95. package/dist/mcp/tools/database.test.js.map +1 -1
  96. package/dist/mcp/tools/delete.d.ts.map +1 -1
  97. package/dist/mcp/tools/delete.js +3 -98
  98. package/dist/mcp/tools/delete.js.map +1 -1
  99. package/dist/mcp/tools/execute.d.ts.map +1 -1
  100. package/dist/mcp/tools/execute.js +36 -4
  101. package/dist/mcp/tools/execute.js.map +1 -1
  102. package/dist/mcp/tools/execute.test.d.ts +2 -0
  103. package/dist/mcp/tools/execute.test.d.ts.map +1 -0
  104. package/dist/mcp/tools/execute.test.js +87 -0
  105. package/dist/mcp/tools/execute.test.js.map +1 -0
  106. package/dist/mcp/tools/get.d.ts.map +1 -1
  107. package/dist/mcp/tools/get.js +4 -93
  108. package/dist/mcp/tools/get.js.map +1 -1
  109. package/dist/mcp/tools/index.d.ts.map +1 -1
  110. package/dist/mcp/tools/index.js +42 -1
  111. package/dist/mcp/tools/index.js.map +1 -1
  112. package/dist/mcp/tools/list.d.ts.map +1 -1
  113. package/dist/mcp/tools/list.js +3 -91
  114. package/dist/mcp/tools/list.js.map +1 -1
  115. package/dist/mcp/tools/logs.d.ts.map +1 -1
  116. package/dist/mcp/tools/logs.js +5 -3
  117. package/dist/mcp/tools/logs.js.map +1 -1
  118. package/dist/mcp/tools/permissions.d.ts.map +1 -1
  119. package/dist/mcp/tools/permissions.js +68 -11
  120. package/dist/mcp/tools/permissions.js.map +1 -1
  121. package/dist/mcp/tools/permissions.test.js +268 -4
  122. package/dist/mcp/tools/permissions.test.js.map +1 -1
  123. package/dist/mcp/tools/read-doc.d.ts.map +1 -1
  124. package/dist/mcp/tools/read-doc.js +10 -28
  125. package/dist/mcp/tools/read-doc.js.map +1 -1
  126. package/dist/mcp/tools/save.d.ts.map +1 -1
  127. package/dist/mcp/tools/save.js +4 -81
  128. package/dist/mcp/tools/save.js.map +1 -1
  129. package/package.json +3 -2
  130. package/skills/funifier/SKILL.md +3 -1
  131. package/skills/funifier/references/audit-permissions.md +97 -0
  132. package/skills/funifier/references/configure-security.md +6 -0
  133. package/skills/funifier/references/create-action.md +7 -0
  134. package/skills/funifier/references/create-aggregate.md +99 -79
  135. package/skills/funifier/references/create-audit.md +8 -0
  136. package/skills/funifier/references/create-challenge.md +7 -0
  137. package/skills/funifier/references/create-competition.md +7 -0
  138. package/skills/funifier/references/create-crossword.md +6 -0
  139. package/skills/funifier/references/create-custom-object.md +6 -0
  140. package/skills/funifier/references/create-custom-page.md +6 -0
  141. package/skills/funifier/references/create-folder.md +7 -0
  142. package/skills/funifier/references/create-lastmile.md +6 -0
  143. package/skills/funifier/references/create-leaderboard.md +6 -0
  144. package/skills/funifier/references/create-level.md +7 -0
  145. package/skills/funifier/references/create-lottery.md +7 -0
  146. package/skills/funifier/references/create-mystery.md +6 -0
  147. package/skills/funifier/references/create-notification.md +6 -0
  148. package/skills/funifier/references/create-point.md +7 -0
  149. package/skills/funifier/references/create-quiz.md +7 -0
  150. package/skills/funifier/references/create-scheduler.md +6 -0
  151. package/skills/funifier/references/create-story.md +6 -0
  152. package/skills/funifier/references/create-swap.md +6 -0
  153. package/skills/funifier/references/create-trigger.md +8 -0
  154. package/skills/funifier/references/create-virtual-good.md +6 -0
  155. package/skills/funifier/references/create-webhook.md +6 -0
  156. package/skills/funifier/references/create-websocket.md +6 -0
  157. package/skills/funifier/references/create-widget.md +6 -0
  158. package/skills/funifier/references/date-handling.md +6 -0
  159. package/skills/funifier/references/debug.md +6 -0
  160. package/skills/funifier/references/help.md +6 -0
  161. package/skills/funifier/references/implement-frontend.md +7 -0
  162. package/skills/funifier/references/import-csv.md +6 -0
  163. package/skills/funifier/references/manage-indexes.md +6 -0
  164. package/skills/funifier/references/manage-player.md +7 -0
  165. package/skills/funifier/references/manage-team.md +6 -0
  166. package/skills/funifier/references/query-aggregate.md +111 -0
  167. package/skills/funifier/references/upload-file.md +6 -0
  168. package/datasource-funifier-docs/.search-index.json +0 -58758
  169. package/datasource-funifier-docs/.skills-map.json +0 -141
@@ -77,6 +77,33 @@ function extractErrorMessage(e) {
77
77
  (0, vitest_1.expect)(() => (0, api_client_1.serializeToFunifierQuery)({ status: ["active", "inactive"] })).toThrow('Array value for field "status" not supported in action=query');
78
78
  });
79
79
  });
80
+ (0, vitest_1.describe)("shouldRetryRequest", () => {
81
+ const getErr = (over = {}) => ({ config: { method: "get" }, ...over });
82
+ (0, vitest_1.it)("retries a GET on a network error (no response)", () => {
83
+ (0, vitest_1.expect)((0, api_client_1.shouldRetryRequest)(getErr(), 0)).toBe(true);
84
+ });
85
+ (0, vitest_1.it)("retries a GET on a 5xx response", () => {
86
+ (0, vitest_1.expect)((0, api_client_1.shouldRetryRequest)(getErr({ response: { status: 503 } }), 0)).toBe(true);
87
+ });
88
+ (0, vitest_1.it)("retries a GET on a timeout (ECONNABORTED)", () => {
89
+ (0, vitest_1.expect)((0, api_client_1.shouldRetryRequest)(getErr({ code: "ECONNABORTED", response: undefined }), 1)).toBe(true);
90
+ });
91
+ (0, vitest_1.it)("does not retry a 4xx response", () => {
92
+ (0, vitest_1.expect)((0, api_client_1.shouldRetryRequest)(getErr({ response: { status: 404 } }), 0)).toBe(false);
93
+ });
94
+ (0, vitest_1.it)("never retries a non-GET (write) request", () => {
95
+ (0, vitest_1.expect)((0, api_client_1.shouldRetryRequest)({ config: { method: "post" } }, 0)).toBe(false);
96
+ });
97
+ (0, vitest_1.it)("stops once the retry cap is reached", () => {
98
+ (0, vitest_1.expect)((0, api_client_1.shouldRetryRequest)(getErr(), 2)).toBe(false);
99
+ });
100
+ });
101
+ (0, vitest_1.describe)("retryDelayMs", () => {
102
+ (0, vitest_1.it)("backs off exponentially from the base delay", () => {
103
+ (0, vitest_1.expect)((0, api_client_1.retryDelayMs)(1)).toBe(300);
104
+ (0, vitest_1.expect)((0, api_client_1.retryDelayMs)(2)).toBe(600);
105
+ });
106
+ });
80
107
  (0, vitest_1.describe)("queryCollection operator error propagation", () => {
81
108
  (0, vitest_1.it)("propagates operator errors instead of swallowing them as []", async () => {
82
109
  const client = (0, api_client_1.createAPIClient)({
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../../src/core/api-client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../../src/core/api-client.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  export declare const API: {
2
2
  readonly RANGE_HEADER: "items=0-1000";
3
3
  readonly BASE_PATH: "/v3";
4
+ readonly REQUEST_TIMEOUT_MS: 30000;
5
+ readonly MAX_RETRIES: 2;
6
+ readonly RETRY_BASE_DELAY_MS: 300;
7
+ readonly DEFAULT_AGGREGATE_LIMIT: 1000;
4
8
  };
5
9
  export declare const Endpoints: {
6
10
  readonly TRIGGER: "/trigger";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,GAAG;;;CAGN,CAAC;AAGX,eAAO,MAAM,SAAS;;;;;;;mCAOE,MAAM;oCACL,MAAM;kCACR,MAAM;qCACH,MAAM;;;yCAGF,MAAM;;;;;;;;;;;;oCAYX,MAAM;;;;;;;;;;uCAcH,MAAM;;;;;yCAKJ,MAAM;;;;;;;;gCAQf,MAAM;;;;+BAIP,MAAM;;wCAEG,MAAM;uCACP,MAAM;;uCAEN,MAAM;;oCAET,MAAM;;;8BAKZ,MAAM;;;;;iCAOH,MAAM;yCACE,MAAM,QAAQ,MAAM;CACxC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,GAAG;;;;;;;CAWN,CAAC;AAGX,eAAO,MAAM,SAAS;;;;;;;mCAOE,MAAM;oCACL,MAAM;kCACR,MAAM;qCACH,MAAM;;;yCAGF,MAAM;;;;;;;;;;;;oCAYX,MAAM;;;;;;;;;;uCAcH,MAAM;;;;;yCAKJ,MAAM;;;;;;;;gCAQf,MAAM;;;;+BAIP,MAAM;;wCAEG,MAAM;uCACP,MAAM;;uCAEN,MAAM;;oCAET,MAAM;;;8BAKZ,MAAM;;;;;iCAOH,MAAM;yCACE,MAAM,QAAQ,MAAM;CACxC,CAAC"}
@@ -5,6 +5,14 @@ exports.Endpoints = exports.API = void 0;
5
5
  exports.API = {
6
6
  RANGE_HEADER: "items=0-1000",
7
7
  BASE_PATH: "/v3",
8
+ // Abort any request that hangs longer than this so a stuck call never freezes a tool.
9
+ REQUEST_TIMEOUT_MS: 30000,
10
+ // Transient-failure retry policy for idempotent (GET) requests only.
11
+ MAX_RETRIES: 2,
12
+ RETRY_BASE_DELAY_MS: 300,
13
+ // Safety backstop appended to ad-hoc aggregate pipelines that lack an explicit
14
+ // $limit, so a missing limit can't pull an unbounded result set over the wire.
15
+ DEFAULT_AGGREGATE_LIMIT: 1000,
8
16
  };
9
17
  // API Endpoints
10
18
  exports.Endpoints = {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACP,QAAA,GAAG,GAAG;IACjB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,KAAK;IAChB,sFAAsF;IACtF,kBAAkB,EAAE,KAAM;IAC1B,qEAAqE;IACrE,WAAW,EAAE,CAAC;IACd,mBAAmB,EAAE,GAAG;IACxB,+EAA+E;IAC/E,+EAA+E;IAC/E,uBAAuB,EAAE,IAAI;CACrB,CAAC;AAEX,gBAAgB;AACH,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,qBAAqB;IACtC,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,uBAAuB;IACpC,SAAS,EAAE,8BAA8B;IACzC,eAAe,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,uBAAuB,EAAE,EAAE;IAC5D,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS;IACtD,cAAc,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE;IAC7C,iBAAiB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,uBAAuB,EAAE,UAAU;IACtE,eAAe,EAAE,2BAA2B;IAC5C,sBAAsB,EAAE,SAAS;IACjC,qBAAqB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE;IACtD,mBAAmB,EAAE,mCAAmC;IACxD,WAAW,EAAE,uBAAuB;IACpC,kBAAkB,EAAE,cAAc;IAClC,SAAS,EAAE,qBAAqB;IAChC,gBAAgB,EAAE,YAAY;IAC9B,YAAY,EAAE,sBAAsB;IACpC,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,iCAAiC;IAC9C,aAAa,EAAE,qBAAqB;IACpC,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,iBAAiB,MAAM,EAAE;IAE3D,QAAQ;IACR,KAAK,EAAE,QAAQ;IAEf,yBAAyB;IACzB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,qBAAqB;IACtC,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,wBAAwB;IACtC,cAAc,EAAE,iBAAiB;IACjC,WAAW,EAAE,cAAc;IAC3B,mBAAmB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,gBAAgB,EAAE,mBAAmB;IAC1E,iBAAiB,EAAE,oBAAoB;IACvC,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,WAAW;IAC1B,qBAAqB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW;IAC7D,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,uBAAuB;IAC7C,iBAAiB,EAAE,oBAAoB;IACvC,qBAAqB,EAAE,wBAAwB;IAC/C,MAAM,EAAE,SAAS;IACjB,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE;IAC7C,aAAa,EAAE,gBAAgB;IAC/B,eAAe,EAAE,kBAAkB;IACnC,iBAAiB,EAAE,oBAAoB;IACvC,WAAW,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,WAAW,EAAE,OAAO;IACjD,cAAc,EAAE,iBAAiB;IACjC,oBAAoB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,mBAAmB,EAAE,EAAE;IAC7D,mBAAmB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,mBAAmB,EAAE,OAAO;IACjE,wBAAwB,EAAE,2BAA2B;IACrD,mBAAmB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,mBAAmB,EAAE,OAAO;IACjE,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,eAAe,EAAE,EAAE;IACrD,mBAAmB,EAAE,+BAA+B;IAEpD,sBAAsB;IACtB,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE;IAChD,cAAc,EAAE,wBAAwB;IACxC,WAAW,EAAE,qBAAqB;IAClC,qBAAqB,EAAE,+BAA+B;IACtD,SAAS,EAAE,mBAAmB;IAE9B,mBAAmB;IACnB,KAAK,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,aAAa,UAAU,QAAQ;IAC9D,aAAa,EAAE,CAAC,UAAkB,EAAE,IAAY,EAAE,EAAE,CAAC,aAAa,UAAU,UAAU,kBAAkB,CAAC,IAAI,CAAC,EAAE;CACxG,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type LogLevel = "debug" | "info" | "warn" | "error";
2
+ export declare function log(level: LogLevel, message: string, fields?: Record<string, unknown>): void;
3
+ export declare const logger: {
4
+ debug: (message: string, fields?: Record<string, unknown>) => void;
5
+ info: (message: string, fields?: Record<string, unknown>) => void;
6
+ warn: (message: string, fields?: Record<string, unknown>) => void;
7
+ error: (message: string, fields?: Record<string, unknown>) => void;
8
+ };
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAc3D,wBAAgB,GAAG,CACjB,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,IAAI,CAgBN;AAED,eAAO,MAAM,MAAM;qBACA,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBACzC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBACxC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qBACvC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1D,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ // Minimal structured logger emitting JSON lines to stderr.
3
+ //
4
+ // Why stderr: this package powers a stdio MCP server where stdout is reserved
5
+ // for the protocol. Logging to stdout would corrupt the MCP stream, so every
6
+ // diagnostic line goes to stderr, which MCP clients surface in their logs.
7
+ //
8
+ // Why structured: a single JSON object per line is greppable and lets clients
9
+ // answer "which tool failed?" / "how slow was it?" without parsing prose.
10
+ //
11
+ // Security: callers MUST pass already-sanitized values. The logger never
12
+ // inspects axios errors itself, so it cannot accidentally serialize an
13
+ // `Authorization` header or request body.
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.logger = void 0;
16
+ exports.log = log;
17
+ const LEVEL_ORDER = {
18
+ debug: 0,
19
+ info: 1,
20
+ warn: 2,
21
+ error: 3,
22
+ };
23
+ function configuredLevel() {
24
+ const raw = (process.env.FUNIFIER_LOG_LEVEL ?? "info").toLowerCase();
25
+ return raw in LEVEL_ORDER ? raw : "info";
26
+ }
27
+ function log(level, message, fields = {}) {
28
+ if (LEVEL_ORDER[level] < LEVEL_ORDER[configuredLevel()])
29
+ return;
30
+ const entry = {
31
+ ts: new Date().toISOString(),
32
+ level,
33
+ msg: message,
34
+ ...fields,
35
+ };
36
+ // Logging must never throw — swallow serialization or write failures.
37
+ try {
38
+ process.stderr.write(`${JSON.stringify(entry)}\n`);
39
+ }
40
+ catch {
41
+ /* ignore */
42
+ }
43
+ }
44
+ exports.logger = {
45
+ debug: (message, fields) => log("debug", message, fields),
46
+ info: (message, fields) => log("info", message, fields),
47
+ warn: (message, fields) => log("warn", message, fields),
48
+ error: (message, fields) => log("error", message, fields),
49
+ };
50
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":";AAAA,2DAA2D;AAC3D,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,0CAA0C;;;AAgB1C,kBAoBC;AAhCD,MAAM,WAAW,GAA6B;IAC5C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,SAAS,eAAe;IACtB,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAE,GAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,SAAgB,GAAG,CACjB,KAAe,EACf,OAAe,EACf,SAAkC,EAAE;IAEpC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;QAAE,OAAO;IAEhE,MAAM,KAAK,GAAG;QACZ,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,KAAK;QACL,GAAG,EAAE,OAAO;QACZ,GAAG,MAAM;KACV,CAAC;IAEF,sEAAsE;IACtE,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAEY,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IAC3F,IAAI,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IACzF,IAAI,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IACzF,KAAK,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;CAC5F,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=api-holder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-holder.test.d.ts","sourceRoot":"","sources":["../../src/mcp/api-holder.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const api_holder_1 = require("./api-holder");
5
+ const CONFIG = { apiKey: "k", secretKey: "s", serverUrl: "https://x.example" };
6
+ (0, vitest_1.describe)("ApiHolder", () => {
7
+ (0, vitest_1.it)("starts disconnected and requireClient throws a helpful error", () => {
8
+ const holder = new api_holder_1.ApiHolder();
9
+ (0, vitest_1.expect)(holder.getClient()).toBeNull();
10
+ (0, vitest_1.expect)(() => holder.requireClient()).toThrow(/funifier_connect/);
11
+ (0, vitest_1.expect)(holder.getConnectionInfo()).toEqual({ connected: false, serverUrl: null, name: null });
12
+ });
13
+ (0, vitest_1.it)("connect makes a client available and records connection info", () => {
14
+ const holder = new api_holder_1.ApiHolder();
15
+ holder.connect(CONFIG, "prod");
16
+ (0, vitest_1.expect)(holder.getClient()).not.toBeNull();
17
+ (0, vitest_1.expect)(holder.requireClient()).toBe(holder.getClient());
18
+ (0, vitest_1.expect)(holder.getConnectionInfo()).toEqual({
19
+ connected: true,
20
+ serverUrl: "https://x.example",
21
+ name: "prod",
22
+ });
23
+ });
24
+ (0, vitest_1.it)("defaults the connection name to the server url", () => {
25
+ const holder = new api_holder_1.ApiHolder();
26
+ holder.connect(CONFIG);
27
+ (0, vitest_1.expect)(holder.getConnectionInfo().name).toBe("https://x.example");
28
+ });
29
+ (0, vitest_1.it)("disconnect clears all state", () => {
30
+ const holder = new api_holder_1.ApiHolder();
31
+ holder.connect(CONFIG);
32
+ holder.disconnect();
33
+ (0, vitest_1.expect)(holder.getClient()).toBeNull();
34
+ (0, vitest_1.expect)(holder.getConnectionInfo().connected).toBe(false);
35
+ });
36
+ (0, vitest_1.it)("switching instances replaces the active client", () => {
37
+ const holder = new api_holder_1.ApiHolder();
38
+ holder.connect(CONFIG, "a");
39
+ const first = holder.getClient();
40
+ holder.connect({ ...CONFIG, serverUrl: "https://y.example" }, "b");
41
+ (0, vitest_1.expect)(holder.getClient()).not.toBe(first);
42
+ (0, vitest_1.expect)(holder.getConnectionInfo().serverUrl).toBe("https://y.example");
43
+ });
44
+ });
45
+ //# sourceMappingURL=api-holder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-holder.test.js","sourceRoot":"","sources":["../../src/mcp/api-holder.test.ts"],"names":[],"mappings":"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"}