funifier-mcp 0.1.0 → 0.2.3

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 (114) hide show
  1. package/.cursor/rules/funifier.mdc +91 -0
  2. package/.github/copilot-instructions.md +83 -0
  3. package/AGENTS.md +97 -0
  4. package/README.md +351 -351
  5. package/datasource-funifier-docs/knowledge/guides/aggregates.md +152 -0
  6. package/datasource-funifier-docs/knowledge/guides/database-access.md +132 -0
  7. package/datasource-funifier-docs/knowledge/guides/java-entities.md +373 -0
  8. package/datasource-funifier-docs/knowledge/guides/java-libraries.md +330 -0
  9. package/datasource-funifier-docs/knowledge/guides/java-managers.md +509 -0
  10. package/datasource-funifier-docs/knowledge/guides/triggers-guide.md +271 -0
  11. package/datasource-funifier-docs/knowledge/index.md +121 -0
  12. package/datasource-funifier-docs/knowledge/modules/achievement.md +46 -0
  13. package/datasource-funifier-docs/knowledge/modules/action-log.md +88 -0
  14. package/datasource-funifier-docs/knowledge/modules/action.md +80 -0
  15. package/datasource-funifier-docs/knowledge/modules/auth.md +104 -0
  16. package/datasource-funifier-docs/knowledge/modules/avatar.md +28 -0
  17. package/datasource-funifier-docs/knowledge/modules/backup.md +40 -0
  18. package/datasource-funifier-docs/knowledge/modules/challenge.md +91 -0
  19. package/datasource-funifier-docs/knowledge/modules/compact.md +40 -0
  20. package/datasource-funifier-docs/knowledge/modules/competition.md +149 -0
  21. package/datasource-funifier-docs/knowledge/modules/crossword.md +41 -0
  22. package/datasource-funifier-docs/knowledge/modules/csv-data.md +30 -0
  23. package/datasource-funifier-docs/knowledge/modules/custom-object.md +53 -0
  24. package/datasource-funifier-docs/knowledge/modules/database.md +241 -0
  25. package/datasource-funifier-docs/knowledge/modules/folder.md +111 -0
  26. package/datasource-funifier-docs/knowledge/modules/kpi-formulas.md +23 -0
  27. package/datasource-funifier-docs/knowledge/modules/lastmile.md +45 -0
  28. package/datasource-funifier-docs/knowledge/modules/leaderboard.md +98 -0
  29. package/datasource-funifier-docs/knowledge/modules/level.md +83 -0
  30. package/datasource-funifier-docs/knowledge/modules/lottery.md +112 -0
  31. package/datasource-funifier-docs/knowledge/modules/marketplace.md +27 -0
  32. package/datasource-funifier-docs/knowledge/modules/mystery.md +82 -0
  33. package/datasource-funifier-docs/knowledge/modules/notification.md +40 -0
  34. package/datasource-funifier-docs/knowledge/modules/patterns.md +1096 -0
  35. package/datasource-funifier-docs/knowledge/modules/player.md +101 -0
  36. package/datasource-funifier-docs/knowledge/modules/point.md +67 -0
  37. package/datasource-funifier-docs/knowledge/modules/public.md +253 -0
  38. package/datasource-funifier-docs/knowledge/modules/question.md +136 -0
  39. package/datasource-funifier-docs/knowledge/modules/quiz.md +163 -0
  40. package/datasource-funifier-docs/knowledge/modules/scheduler.md +58 -0
  41. package/datasource-funifier-docs/knowledge/modules/security.md +169 -0
  42. package/datasource-funifier-docs/knowledge/modules/staging.md +28 -0
  43. package/datasource-funifier-docs/knowledge/modules/static-repo.md +41 -0
  44. package/datasource-funifier-docs/knowledge/modules/story.md +42 -0
  45. package/datasource-funifier-docs/knowledge/modules/studio-page.md +180 -0
  46. package/datasource-funifier-docs/knowledge/modules/swap.md +132 -0
  47. package/datasource-funifier-docs/knowledge/modules/team.md +75 -0
  48. package/datasource-funifier-docs/knowledge/modules/trigger.md +189 -0
  49. package/datasource-funifier-docs/knowledge/modules/upload.md +155 -0
  50. package/datasource-funifier-docs/knowledge/modules/virtual-good.md +99 -0
  51. package/datasource-funifier-docs/knowledge/modules/webhook.md +41 -0
  52. package/datasource-funifier-docs/knowledge/modules/websocket.md +41 -0
  53. package/datasource-funifier-docs/knowledge/modules/widget.md +42 -0
  54. package/datasource-funifier-docs/process-gtm-saas.md +143 -0
  55. package/datasource-funifier-docs/process-instagram.md +88 -0
  56. package/datasource-funifier-docs/process.md +1826 -0
  57. package/datasource-funifier-docs/readme.md +132 -0
  58. package/dist/cli/config-writers.d.ts +15 -0
  59. package/dist/cli/config-writers.d.ts.map +1 -0
  60. package/dist/cli/config-writers.js +55 -0
  61. package/dist/cli/config-writers.js.map +1 -0
  62. package/dist/cli/config-writers.test.d.ts +2 -0
  63. package/dist/cli/config-writers.test.d.ts.map +1 -0
  64. package/dist/cli/config-writers.test.js +55 -0
  65. package/dist/cli/config-writers.test.js.map +1 -0
  66. package/dist/cli/copy.d.ts +6 -0
  67. package/dist/cli/copy.d.ts.map +1 -0
  68. package/dist/cli/copy.js +63 -0
  69. package/dist/cli/copy.js.map +1 -0
  70. package/dist/cli/copy.test.d.ts +2 -0
  71. package/dist/cli/copy.test.d.ts.map +1 -0
  72. package/dist/cli/copy.test.js +94 -0
  73. package/dist/cli/copy.test.js.map +1 -0
  74. package/dist/cli/init.d.ts +2 -0
  75. package/dist/cli/init.d.ts.map +1 -0
  76. package/dist/cli/init.js +167 -0
  77. package/dist/cli/init.js.map +1 -0
  78. package/dist/cli/paths.d.ts +7 -0
  79. package/dist/cli/paths.d.ts.map +1 -0
  80. package/dist/cli/paths.js +62 -0
  81. package/dist/cli/paths.js.map +1 -0
  82. package/dist/cli/paths.test.d.ts +2 -0
  83. package/dist/cli/paths.test.d.ts.map +1 -0
  84. package/dist/cli/paths.test.js +50 -0
  85. package/dist/cli/paths.test.js.map +1 -0
  86. package/dist/cli/platforms.d.ts +22 -0
  87. package/dist/cli/platforms.d.ts.map +1 -0
  88. package/dist/cli/platforms.js +50 -0
  89. package/dist/cli/platforms.js.map +1 -0
  90. package/dist/cli/prompts.d.ts +7 -0
  91. package/dist/cli/prompts.d.ts.map +1 -0
  92. package/dist/cli/prompts.js +49 -0
  93. package/dist/cli/prompts.js.map +1 -0
  94. package/dist/index.js +1 -1
  95. package/dist/index.js.map +1 -1
  96. package/dist/mcp/bundle.js +98 -50
  97. package/dist/mcp/index.js +18 -1
  98. package/dist/mcp/index.js.map +1 -1
  99. package/package.json +70 -65
  100. package/skills/funifier-create-action/SKILL.md +86 -86
  101. package/skills/funifier-create-aggregate/SKILL.md +126 -87
  102. package/skills/funifier-create-challenge/SKILL.md +87 -87
  103. package/skills/funifier-create-custom-page/SKILL.md +126 -87
  104. package/skills/funifier-create-leaderboard/SKILL.md +87 -87
  105. package/skills/funifier-create-level/SKILL.md +86 -86
  106. package/skills/funifier-create-point/SKILL.md +86 -86
  107. package/skills/funifier-create-quiz/SKILL.md +86 -86
  108. package/skills/funifier-create-scheduler/SKILL.md +126 -87
  109. package/skills/funifier-create-trigger/SKILL.md +127 -88
  110. package/skills/funifier-create-virtual-good/SKILL.md +86 -86
  111. package/skills/funifier-debug/SKILL.md +90 -90
  112. package/skills/funifier-help/SKILL.md +85 -85
  113. package/skills/funifier-implement-frontend/SKILL.md +89 -89
  114. package/skills/funifier-index/SKILL.md +50 -50
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns the absolute path to the funifier-mcp package root (the directory
3
+ * containing package.json). Works whether running from source (via tsx), from
4
+ * dist/ after build, or from node_modules after `npm i funifier-mcp`.
5
+ */
6
+ export declare function resolvePackageRoot(): string;
7
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/cli/paths.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAe3C"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.resolvePackageRoot = resolvePackageRoot;
37
+ const path = __importStar(require("path"));
38
+ const module_1 = require("module");
39
+ const requireFromHere = (0, module_1.createRequire)(__filename);
40
+ /**
41
+ * Returns the absolute path to the funifier-mcp package root (the directory
42
+ * containing package.json). Works whether running from source (via tsx), from
43
+ * dist/ after build, or from node_modules after `npm i funifier-mcp`.
44
+ */
45
+ function resolvePackageRoot() {
46
+ try {
47
+ return path.dirname(requireFromHere.resolve("funifier-mcp/package.json"));
48
+ }
49
+ catch {
50
+ // Running from source in this repo: walk up from src/cli/ → repo root.
51
+ // dist/cli/paths.js → dist/ → repo root.
52
+ let dir = __dirname;
53
+ while (dir !== path.dirname(dir)) {
54
+ if (path.basename(dir) === "dist" || path.basename(dir) === "src") {
55
+ return path.dirname(dir);
56
+ }
57
+ dir = path.dirname(dir);
58
+ }
59
+ throw new Error("Could not resolve funifier-mcp package root");
60
+ }
61
+ }
62
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/cli/paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,gDAeC;AAzBD,2CAA6B;AAC7B,mCAAuC;AAEvC,MAAM,eAAe,GAAG,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC;AAElD;;;;GAIG;AACH,SAAgB,kBAAkB;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,yCAAyC;QACzC,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBAClE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=paths.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.test.d.ts","sourceRoot":"","sources":["../../src/cli/paths.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const vitest_1 = require("vitest");
37
+ const paths_1 = require("./paths");
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ (0, vitest_1.describe)("resolvePackageRoot", () => {
41
+ (0, vitest_1.it)("returns the directory containing funifier-mcp's package.json", () => {
42
+ const root = (0, paths_1.resolvePackageRoot)();
43
+ const pkg = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf-8"));
44
+ (0, vitest_1.expect)(pkg.name).toBe("funifier-mcp");
45
+ });
46
+ (0, vitest_1.it)("returns an absolute path", () => {
47
+ (0, vitest_1.expect)(path.isAbsolute((0, paths_1.resolvePackageRoot)())).toBe(true);
48
+ });
49
+ });
50
+ //# sourceMappingURL=paths.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../src/cli/paths.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAA8C;AAC9C,mCAA6C;AAC7C,2CAA6B;AAC7B,uCAAyB;AAEzB,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAA,WAAE,EAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,IAAA,0BAAkB,GAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAClF,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,IAAA,0BAAkB,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { ConfigInput } from "./config-writers";
2
+ export type ConfigRenderer = (input: ConfigInput) => string;
3
+ export interface CopyEntry {
4
+ /** Path relative to package root (source). */
5
+ src: string;
6
+ /** Path relative to project directory (destination). */
7
+ dest: string;
8
+ isDir?: boolean;
9
+ }
10
+ export interface PlatformConfigFile {
11
+ /** Path relative to project directory. */
12
+ dest: string;
13
+ render: ConfigRenderer;
14
+ }
15
+ export interface Platform {
16
+ key: string;
17
+ name: string;
18
+ copies: CopyEntry[];
19
+ configFile?: PlatformConfigFile;
20
+ }
21
+ export declare const PLATFORMS: Platform[];
22
+ //# sourceMappingURL=platforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platforms.d.ts","sourceRoot":"","sources":["../../src/cli/platforms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,eAAO,MAAM,SAAS,EAAE,QAAQ,EA4C/B,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PLATFORMS = void 0;
4
+ const config_writers_1 = require("./config-writers");
5
+ exports.PLATFORMS = [
6
+ {
7
+ key: "claude-code",
8
+ name: "Claude Code",
9
+ copies: [
10
+ { src: "skills", dest: ".claude/skills", isDir: true },
11
+ { src: "AGENTS.md", dest: "AGENTS.md" },
12
+ ],
13
+ configFile: { dest: ".mcp.json", render: config_writers_1.renderCursorConfig },
14
+ },
15
+ {
16
+ key: "codex",
17
+ name: "Codex CLI",
18
+ copies: [{ src: "AGENTS.md", dest: "AGENTS.md" }],
19
+ configFile: { dest: ".codex/config.toml", render: config_writers_1.renderCodexConfig },
20
+ },
21
+ {
22
+ key: "opencode",
23
+ name: "OpenCode",
24
+ copies: [
25
+ { src: "skills", dest: ".agents/skills", isDir: true },
26
+ { src: "AGENTS.md", dest: "AGENTS.md" },
27
+ ],
28
+ configFile: { dest: "opencode.json", render: config_writers_1.renderOpencodeConfig },
29
+ },
30
+ {
31
+ key: "cursor",
32
+ name: "Cursor IDE",
33
+ copies: [{ src: ".cursor/rules/funifier.mdc", dest: ".cursor/rules/funifier.mdc" }],
34
+ configFile: { dest: ".cursor/mcp.json", render: config_writers_1.renderCursorConfig },
35
+ },
36
+ {
37
+ key: "copilot",
38
+ name: "GitHub Copilot",
39
+ copies: [
40
+ { src: ".github/copilot-instructions.md", dest: ".github/copilot-instructions.md" },
41
+ ],
42
+ },
43
+ {
44
+ key: "antigravity",
45
+ name: "Google Antigravity",
46
+ copies: [{ src: "AGENTS.md", dest: "AGENTS.md" }],
47
+ configFile: { dest: ".antigravity/mcp_config.json", render: config_writers_1.renderCursorConfig },
48
+ },
49
+ ];
50
+ //# sourceMappingURL=platforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../src/cli/platforms.ts"],"names":[],"mappings":";;;AACA,qDAI0B;AAyBb,QAAA,SAAS,GAAe;IACnC;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE;YACtD,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;SACxC;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,mCAAkB,EAAE;KAC9D;IACD;QACE,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,UAAU,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,kCAAiB,EAAE;KACtE;IACD;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE;YACtD,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;SACxC;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,qCAAoB,EAAE;KACpE;IACD;QACE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;QACnF,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,mCAAkB,EAAE;KACrE;IACD;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,iCAAiC,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACpF;KACF;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,UAAU,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,mCAAkB,EAAE;KACjF;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Platform } from "./platforms";
2
+ import type { Credentials } from "./config-writers";
3
+ export declare function selectPlatforms(): Promise<Platform[]>;
4
+ export declare function askCredentials(): Promise<Credentials | null>;
5
+ export type ConflictPromptResult = "overwrite" | "skip" | "overwrite-all";
6
+ export declare function askConflict(destPath: string): Promise<ConflictPromptResult>;
7
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD,wBAAsB,eAAe,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAQ3D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgBlE;AAED,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,MAAM,GAAG,eAAe,CAAC;AAE1E,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAWjF"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectPlatforms = selectPlatforms;
4
+ exports.askCredentials = askCredentials;
5
+ exports.askConflict = askConflict;
6
+ const platforms_1 = require("./platforms");
7
+ // @inquirer/prompts is ESM-only; use dynamic import from this CJS module.
8
+ async function getInquirer() {
9
+ return import("@inquirer/prompts");
10
+ }
11
+ async function selectPlatforms() {
12
+ const { checkbox } = await getInquirer();
13
+ const keys = await checkbox({
14
+ message: "Which platforms will use Funifier MCP?",
15
+ choices: platforms_1.PLATFORMS.map((p) => ({ name: p.name, value: p.key, checked: p.key === "claude-code" })),
16
+ required: true,
17
+ });
18
+ return platforms_1.PLATFORMS.filter((p) => keys.includes(p.key));
19
+ }
20
+ async function askCredentials() {
21
+ const { confirm, input, password } = await getInquirer();
22
+ const configure = await confirm({
23
+ message: "Configure Funifier credentials now?",
24
+ default: true,
25
+ });
26
+ if (!configure)
27
+ return null;
28
+ const apiKey = await input({ message: "API Key:", required: true });
29
+ const secretKey = await password({ message: "Secret Key:", mask: "*" });
30
+ const serverUrl = await input({
31
+ message: "Server URL (e.g. https://acme.funifier.com):",
32
+ required: true,
33
+ validate: (v) => /^https?:\/\//.test(v) || "Must start with http:// or https://",
34
+ });
35
+ return { apiKey, secretKey, serverUrl };
36
+ }
37
+ async function askConflict(destPath) {
38
+ const { select } = await getInquirer();
39
+ return select({
40
+ message: `${destPath} already exists.`,
41
+ choices: [
42
+ { name: "Skip", value: "skip" },
43
+ { name: "Overwrite", value: "overwrite" },
44
+ { name: "Overwrite all remaining", value: "overwrite-all" },
45
+ ],
46
+ default: "skip",
47
+ });
48
+ }
49
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":";;AAQA,0CAQC;AAED,wCAgBC;AAID,kCAWC;AAjDD,2CAAkD;AAGlD,0EAA0E;AAC1E,KAAK,UAAU,WAAW;IACxB,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,eAAe;IACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAS;QAClC,OAAO,EAAE,wCAAwC;QACjD,OAAO,EAAE,qBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC,CAAC;QACjG,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,OAAO,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAEM,KAAK,UAAU,cAAc;IAClC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;QAC9B,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC;QAC5B,OAAO,EAAE,8CAA8C;QACvD,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,qCAAqC;KACjF,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1C,CAAC;AAIM,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACvC,OAAO,MAAM,CAAuB;QAClC,OAAO,EAAE,GAAG,QAAQ,kBAAkB;QACtC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;YACzC,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,EAAE;SAC5D;QACD,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;AACL,CAAC"}
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.Endpoints = exports.API = exports.resolveConfig = exports.createAPIClient = void 0;
18
- // Public API — use this when importing @funifier-ai as a library
18
+ // Public API — use this when importing @funifier-ai/mcp as a library
19
19
  var api_client_1 = require("./core/api-client");
20
20
  Object.defineProperty(exports, "createAPIClient", { enumerable: true, get: function () { return api_client_1.createAPIClient; } });
21
21
  var config_1 = require("./core/config");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,gDAAoD;AAA3C,6GAAA,eAAe,OAAA;AAExB,wCAA8C;AAArC,uGAAA,aAAa,OAAA;AAEtB,8CAAkD;AAAzC,gGAAA,GAAG,OAAA;AAAE,sGAAA,SAAS,OAAA;AACvB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qEAAqE;AACrE,gDAAoD;AAA3C,6GAAA,eAAe,OAAA;AAExB,wCAA8C;AAArC,uGAAA,aAAa,OAAA;AAEtB,8CAAkD;AAAzC,gGAAA,GAAG,OAAA;AAAE,sGAAA,SAAS,OAAA;AACvB,+CAA6B"}