funifier-mcp 0.2.25 → 0.2.27
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.
- package/.cursor/rules/funifier.mdc +38 -41
- package/.github/copilot-instructions.md +38 -41
- package/AGENTS.md +56 -49
- package/README.md +40 -22
- package/datasource-funifier-docs/.coverage.json +326 -0
- package/datasource-funifier-docs/.validation.json +593 -0
- package/datasource-funifier-docs/knowledge/guides/aggregates.md +182 -70
- package/datasource-funifier-docs/knowledge/guides/database-access.md +174 -88
- package/datasource-funifier-docs/knowledge/guides/java-entities.md +294 -204
- package/datasource-funifier-docs/knowledge/guides/java-libraries.md +202 -226
- package/datasource-funifier-docs/knowledge/guides/java-managers.md +343 -265
- package/datasource-funifier-docs/knowledge/guides/trigger-examples.md +180 -236
- package/datasource-funifier-docs/knowledge/guides/triggers-guide.md +273 -191
- package/datasource-funifier-docs/knowledge/index.md +5 -2
- package/datasource-funifier-docs/knowledge/modules/achievement.md +1126 -28
- package/datasource-funifier-docs/knowledge/modules/action-log.md +469 -62
- package/datasource-funifier-docs/knowledge/modules/action.md +522 -70
- package/datasource-funifier-docs/knowledge/modules/auth.md +718 -69
- package/datasource-funifier-docs/knowledge/modules/avatar.md +483 -18
- package/datasource-funifier-docs/knowledge/modules/backup.md +603 -25
- package/datasource-funifier-docs/knowledge/modules/challenge.md +1048 -220
- package/datasource-funifier-docs/knowledge/modules/compact.md +469 -26
- package/datasource-funifier-docs/knowledge/modules/competition.md +811 -109
- package/datasource-funifier-docs/knowledge/modules/crossword.md +504 -28
- package/datasource-funifier-docs/knowledge/modules/csv-data.md +645 -20
- package/datasource-funifier-docs/knowledge/modules/custom-object.md +701 -36
- package/datasource-funifier-docs/knowledge/modules/database.md +730 -164
- package/datasource-funifier-docs/knowledge/modules/folder.md +1011 -77
- package/datasource-funifier-docs/knowledge/modules/kpi-formulas.md +410 -15
- package/datasource-funifier-docs/knowledge/modules/lastmile.md +568 -29
- package/datasource-funifier-docs/knowledge/modules/leaderboard.md +595 -126
- package/datasource-funifier-docs/knowledge/modules/level.md +536 -54
- package/datasource-funifier-docs/knowledge/modules/lottery.md +809 -76
- package/datasource-funifier-docs/knowledge/modules/marketplace.md +688 -17
- package/datasource-funifier-docs/knowledge/modules/mystery.md +662 -52
- package/datasource-funifier-docs/knowledge/modules/notification.md +564 -26
- package/datasource-funifier-docs/knowledge/modules/patterns.md +519 -814
- package/datasource-funifier-docs/knowledge/modules/player.md +773 -73
- package/datasource-funifier-docs/knowledge/modules/point.md +380 -83
- package/datasource-funifier-docs/knowledge/modules/public.md +508 -178
- package/datasource-funifier-docs/knowledge/modules/question.md +619 -99
- package/datasource-funifier-docs/knowledge/modules/quiz.md +565 -120
- package/datasource-funifier-docs/knowledge/modules/scheduler.md +1092 -39
- package/datasource-funifier-docs/knowledge/modules/security.md +674 -112
- package/datasource-funifier-docs/knowledge/modules/staging.md +742 -19
- package/datasource-funifier-docs/knowledge/modules/story.md +565 -29
- package/datasource-funifier-docs/knowledge/modules/studio-page.md +470 -144
- package/datasource-funifier-docs/knowledge/modules/swap.md +552 -84
- package/datasource-funifier-docs/knowledge/modules/team.md +563 -45
- package/datasource-funifier-docs/knowledge/modules/trigger.md +876 -134
- package/datasource-funifier-docs/knowledge/modules/upload.md +468 -95
- package/datasource-funifier-docs/knowledge/modules/virtual-good.md +510 -63
- package/datasource-funifier-docs/knowledge/modules/webhook.md +375 -28
- package/datasource-funifier-docs/knowledge/modules/websocket.md +459 -26
- package/datasource-funifier-docs/knowledge/modules/widget.md +613 -27
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +42 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/init.test.js +74 -3
- package/dist/cli/init.test.js.map +1 -1
- package/dist/cli/persona.d.ts +3 -0
- package/dist/cli/persona.d.ts.map +1 -0
- package/dist/cli/persona.js +25 -0
- package/dist/cli/persona.js.map +1 -0
- package/dist/core/api-client.d.ts +21 -1
- package/dist/core/api-client.d.ts.map +1 -1
- package/dist/core/api-client.js +154 -1
- package/dist/core/api-client.js.map +1 -1
- package/dist/core/constants.d.ts +14 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +14 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/types/Folder.d.ts +16 -0
- package/dist/core/types/Folder.d.ts.map +1 -0
- package/dist/core/types/Folder.js +3 -0
- package/dist/core/types/Folder.js.map +1 -0
- package/dist/core/types/FolderContent.d.ts +10 -0
- package/dist/core/types/FolderContent.d.ts.map +1 -0
- package/dist/core/types/FolderContent.js +3 -0
- package/dist/core/types/FolderContent.js.map +1 -0
- package/dist/core/types/FolderContentType.d.ts +10 -0
- package/dist/core/types/FolderContentType.d.ts.map +1 -0
- package/dist/core/types/FolderContentType.js +3 -0
- package/dist/core/types/FolderContentType.js.map +1 -0
- package/dist/core/types/FolderLog.d.ts +11 -0
- package/dist/core/types/FolderLog.d.ts.map +1 -0
- package/dist/core/types/FolderLog.js +3 -0
- package/dist/core/types/FolderLog.js.map +1 -0
- package/dist/core/types/index.d.ts +4 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +4 -0
- package/dist/core/types/index.js.map +1 -1
- package/dist/mcp/bundle.js +121 -87
- package/dist/mcp/check-update.d.ts +2 -0
- package/dist/mcp/check-update.d.ts.map +1 -0
- package/dist/mcp/check-update.js +44 -0
- package/dist/mcp/check-update.js.map +1 -0
- package/dist/mcp/index.js +5 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/resources/documentation.d.ts +1 -1
- package/dist/mcp/resources/documentation.d.ts.map +1 -1
- package/dist/mcp/resources/documentation.js +39 -3
- package/dist/mcp/resources/documentation.js.map +1 -1
- package/dist/mcp/tools/_char-guard.js +1 -1
- package/dist/mcp/tools/_char-guard.js.map +1 -1
- package/dist/mcp/tools/_fetch-current.d.ts +1 -1
- package/dist/mcp/tools/_fetch-current.d.ts.map +1 -1
- package/dist/mcp/tools/_fetch-current.js +12 -0
- package/dist/mcp/tools/_fetch-current.js.map +1 -1
- package/dist/mcp/tools/connect.d.ts.map +1 -1
- package/dist/mcp/tools/connect.js +18 -8
- package/dist/mcp/tools/connect.js.map +1 -1
- package/dist/mcp/tools/database.d.ts.map +1 -1
- package/dist/mcp/tools/database.js +59 -47
- package/dist/mcp/tools/database.js.map +1 -1
- package/dist/mcp/tools/database.test.js +2 -2
- package/dist/mcp/tools/database.test.js.map +1 -1
- package/dist/mcp/tools/delete.d.ts.map +1 -1
- package/dist/mcp/tools/delete.js +33 -3
- package/dist/mcp/tools/delete.js.map +1 -1
- package/dist/mcp/tools/execute.d.ts.map +1 -1
- package/dist/mcp/tools/execute.js +20 -9
- package/dist/mcp/tools/execute.js.map +1 -1
- package/dist/mcp/tools/folder.d.ts +4 -0
- package/dist/mcp/tools/folder.d.ts.map +1 -0
- package/dist/mcp/tools/folder.js +68 -0
- package/dist/mcp/tools/folder.js.map +1 -0
- package/dist/mcp/tools/get.d.ts.map +1 -1
- package/dist/mcp/tools/get.js +16 -6
- package/dist/mcp/tools/get.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +1 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +5 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/list.d.ts.map +1 -1
- package/dist/mcp/tools/list.js +38 -14
- package/dist/mcp/tools/list.js.map +1 -1
- package/dist/mcp/tools/logs.d.ts.map +1 -1
- package/dist/mcp/tools/logs.js +15 -5
- package/dist/mcp/tools/logs.js.map +1 -1
- package/dist/mcp/tools/save.d.ts.map +1 -1
- package/dist/mcp/tools/save.js +26 -4
- package/dist/mcp/tools/save.js.map +1 -1
- package/dist/mcp/tools/save.test.js +192 -1
- package/dist/mcp/tools/save.test.js.map +1 -1
- package/dist/mcp/tools/search-docs.d.ts +3 -0
- package/dist/mcp/tools/search-docs.d.ts.map +1 -0
- package/dist/mcp/tools/search-docs.js +102 -0
- package/dist/mcp/tools/search-docs.js.map +1 -0
- package/package.json +6 -2
- package/skills/acquire-funifier-knowledge/SKILL.md +132 -0
- package/skills/acquire-funifier-knowledge/assets/templates/CONCERNS.md +25 -0
- package/skills/acquire-funifier-knowledge/assets/templates/CUSTOM_ENDPOINTS.md +24 -0
- package/skills/acquire-funifier-knowledge/assets/templates/CUSTOM_PAGES.md +24 -0
- package/skills/acquire-funifier-knowledge/assets/templates/GAME_MECHANICS.md +35 -0
- package/skills/acquire-funifier-knowledge/assets/templates/INTEGRATIONS.md +35 -0
- package/skills/acquire-funifier-knowledge/assets/templates/LEADERBOARDS.md +24 -0
- package/skills/acquire-funifier-knowledge/assets/templates/OVERVIEW.md +47 -0
- package/skills/acquire-funifier-knowledge/assets/templates/PLAYER_MODEL.md +31 -0
- package/skills/acquire-funifier-knowledge/assets/templates/SCHEDULERS.md +25 -0
- package/skills/acquire-funifier-knowledge/assets/templates/TECHNIQUES_AND_PATTERNS.md +26 -0
- package/skills/acquire-funifier-knowledge/assets/templates/TRIGGERS.md +27 -0
- package/skills/acquire-funifier-knowledge/references/funifier-inventory-checklist.md +81 -0
- package/skills/acquire-funifier-knowledge/references/game-techniques-taxonomy.md +62 -0
- package/skills/acquire-funifier-knowledge/references/mcp-call-patterns.md +118 -0
- package/skills/funifier/SKILL.md +88 -0
- package/skills/funifier/references/configure-security.md +96 -0
- package/skills/{funifier-create-action/SKILL.md → funifier/references/create-action.md} +0 -33
- package/skills/funifier/references/create-aggregate.md +144 -0
- package/skills/funifier/references/create-challenge.md +116 -0
- package/skills/funifier/references/create-competition.md +98 -0
- package/skills/funifier/references/create-crossword.md +574 -0
- package/skills/funifier/references/create-custom-object.md +91 -0
- package/skills/funifier/references/create-custom-page.md +135 -0
- package/skills/funifier/references/create-folder.md +104 -0
- package/skills/funifier/references/create-lastmile.md +643 -0
- package/skills/{funifier-create-leaderboard/SKILL.md → funifier/references/create-leaderboard.md} +0 -33
- package/skills/funifier/references/create-level.md +94 -0
- package/skills/funifier/references/create-lottery.md +913 -0
- package/skills/funifier/references/create-mystery.md +769 -0
- package/skills/funifier/references/create-notification.md +75 -0
- package/skills/{funifier-create-point/SKILL.md → funifier/references/create-point.md} +0 -33
- package/skills/funifier/references/create-quiz.md +98 -0
- package/skills/funifier/references/create-scheduler.md +141 -0
- package/skills/funifier/references/create-story.md +636 -0
- package/skills/funifier/references/create-swap.md +95 -0
- package/skills/{funifier-create-trigger/SKILL.md → funifier/references/create-trigger.md} +0 -33
- package/skills/funifier/references/create-virtual-good.md +96 -0
- package/skills/funifier/references/create-webhook.md +72 -0
- package/skills/funifier/references/create-websocket.md +71 -0
- package/skills/funifier/references/create-widget.md +76 -0
- package/skills/funifier/references/debug.md +87 -0
- package/skills/funifier/references/help.md +81 -0
- package/skills/funifier/references/implement-frontend.md +106 -0
- package/skills/funifier/references/import-csv.md +75 -0
- package/skills/funifier/references/manage-player.md +82 -0
- package/skills/funifier/references/manage-team.md +76 -0
- package/skills/funifier/references/upload-file.md +91 -0
- package/datasource-funifier-docs/.search-index.json +0 -17318
- package/datasource-funifier-docs/.skills-map.json +0 -73
- package/skills/funifier-create-aggregate/SKILL.md +0 -127
- package/skills/funifier-create-challenge/SKILL.md +0 -88
- package/skills/funifier-create-custom-page/SKILL.md +0 -127
- package/skills/funifier-create-level/SKILL.md +0 -87
- package/skills/funifier-create-quiz/SKILL.md +0 -87
- package/skills/funifier-create-scheduler/SKILL.md +0 -127
- package/skills/funifier-create-virtual-good/SKILL.md +0 -87
- package/skills/funifier-debug/SKILL.md +0 -92
- package/skills/funifier-help/SKILL.md +0 -86
- package/skills/funifier-implement-frontend/SKILL.md +0 -90
- package/skills/funifier-index/SKILL.md +0 -58
package/dist/cli/init.js
CHANGED
|
@@ -40,6 +40,7 @@ const child_process_1 = require("child_process");
|
|
|
40
40
|
const paths_1 = require("./paths");
|
|
41
41
|
const copy_1 = require("./copy");
|
|
42
42
|
const prompts_1 = require("./prompts");
|
|
43
|
+
const persona_1 = require("./persona");
|
|
43
44
|
const PLACEHOLDER_CREDS = {
|
|
44
45
|
apiKey: "your-api-key",
|
|
45
46
|
secretKey: "your-secret-key",
|
|
@@ -99,6 +100,33 @@ function ensureGitignoreEntry(projectDir) {
|
|
|
99
100
|
fs.appendFileSync(gitignore, `${prefix}${entry}\n`);
|
|
100
101
|
console.log(` ✓ Added funifier.json to .gitignore`);
|
|
101
102
|
}
|
|
103
|
+
const PERSONA_HEADINGS = ["## Persona e Qualidade de Código", "## Qualidade de Código"];
|
|
104
|
+
function hasPersonaSection(content) {
|
|
105
|
+
return content.includes(persona_1.PERSONA_SENTINEL) || PERSONA_HEADINGS.some((h) => content.includes(h));
|
|
106
|
+
}
|
|
107
|
+
function ensurePersonaInFile(filePath, createIfMissing) {
|
|
108
|
+
const name = path.basename(filePath);
|
|
109
|
+
if (fs.existsSync(filePath)) {
|
|
110
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
111
|
+
if (hasPersonaSection(content))
|
|
112
|
+
return;
|
|
113
|
+
const prefix = content.endsWith("\n") ? "\n" : "\n\n";
|
|
114
|
+
fs.appendFileSync(filePath, `${prefix}${persona_1.PERSONA_SECTION}\n`);
|
|
115
|
+
console.log(` ✓ Persona section added to ${name}`);
|
|
116
|
+
}
|
|
117
|
+
else if (createIfMissing) {
|
|
118
|
+
fs.writeFileSync(filePath, `${persona_1.PERSONA_SECTION}\n`);
|
|
119
|
+
console.log(` ✓ ${name} created with persona section`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function ensurePersonaSection(projectDir, platforms) {
|
|
123
|
+
// AGENTS.md is always copied above; only top it up if the user skipped overwrite.
|
|
124
|
+
ensurePersonaInFile(path.join(projectDir, "AGENTS.md"), false);
|
|
125
|
+
// CLAUDE.md is Claude Code's instruction file — only touch it when selected.
|
|
126
|
+
if (platforms.some((p) => p.key === "claude-code")) {
|
|
127
|
+
ensurePersonaInFile(path.join(projectDir, "CLAUDE.md"), true);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
102
130
|
async function copyDocs(pkgRoot, projectDir, resolver) {
|
|
103
131
|
const src = path.join(pkgRoot, "datasource-funifier-docs");
|
|
104
132
|
const dst = path.join(projectDir, "datasource-funifier-docs");
|
|
@@ -123,6 +151,8 @@ async function copyPlatformFiles(pkgRoot, projectDir, platforms, resolver) {
|
|
|
123
151
|
continue;
|
|
124
152
|
}
|
|
125
153
|
if (entry.isDir) {
|
|
154
|
+
if (entry.src === "skills")
|
|
155
|
+
removeLegacyFunifierSkills(dst);
|
|
126
156
|
await (0, copy_1.copyDir)(src, dst, resolver);
|
|
127
157
|
console.log(` ✓ ${entry.dest}/`);
|
|
128
158
|
}
|
|
@@ -146,6 +176,16 @@ function writePlatformConfigs(pkgRoot, projectDir, platforms, creds) {
|
|
|
146
176
|
console.log(` ✓ ${platform.configFile.dest}`);
|
|
147
177
|
}
|
|
148
178
|
}
|
|
179
|
+
function removeLegacyFunifierSkills(skillsDir) {
|
|
180
|
+
if (!fs.existsSync(skillsDir))
|
|
181
|
+
return;
|
|
182
|
+
for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
|
|
183
|
+
if (entry.isDirectory() && entry.name.startsWith("funifier-")) {
|
|
184
|
+
fs.rmSync(path.join(skillsDir, entry.name), { recursive: true, force: true });
|
|
185
|
+
console.log(` ✗ removed legacy ${entry.name}/`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
149
189
|
function installFunifierMcp(projectDir) {
|
|
150
190
|
console.log("📥 Installing funifier-mcp locally...");
|
|
151
191
|
try {
|
|
@@ -179,13 +219,14 @@ async function main(targetDir, devPkgRoot) {
|
|
|
179
219
|
const resolver = makeConflictResolver();
|
|
180
220
|
await copyDocs(pkgRoot, projectDir, resolver);
|
|
181
221
|
await copyPlatformFiles(pkgRoot, projectDir, platforms, resolver);
|
|
222
|
+
ensurePersonaSection(projectDir, platforms);
|
|
182
223
|
writeFunifierJson(projectDir, creds);
|
|
183
224
|
if (creds)
|
|
184
225
|
ensureGitignoreEntry(projectDir);
|
|
185
226
|
writePlatformConfigs(pkgRoot, projectDir, platforms, creds ?? PLACEHOLDER_CREDS);
|
|
186
227
|
console.log("\n✅ Setup complete.");
|
|
187
228
|
if (platforms.some((p) => p.key === "claude-code")) {
|
|
188
|
-
console.log(" Claude Code: type /funifier
|
|
229
|
+
console.log(" Claude Code: type /funifier to start.");
|
|
189
230
|
}
|
|
190
231
|
if (platforms.some((p) => p.key === "antigravity")) {
|
|
191
232
|
const homeDir = process.env.USERPROFILE || process.env.HOME || "~";
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.test.js
CHANGED
|
@@ -55,6 +55,19 @@ vitest_1.vi.mock("child_process", () => ({
|
|
|
55
55
|
const init_1 = __importDefault(require("./init"));
|
|
56
56
|
const prompts_1 = require("./prompts");
|
|
57
57
|
const paths_1 = require("./paths");
|
|
58
|
+
const persona_1 = require("./persona");
|
|
59
|
+
const PERSONA_HEADING = "## Persona e Qualidade de Código";
|
|
60
|
+
function countOccurrences(haystack, needle) {
|
|
61
|
+
return haystack.split(needle).length - 1;
|
|
62
|
+
}
|
|
63
|
+
const CLAUDE_CODE_PLATFORM = {
|
|
64
|
+
key: "claude-code",
|
|
65
|
+
name: "Claude Code",
|
|
66
|
+
copies: [
|
|
67
|
+
{ src: "skills", dest: ".claude/skills", isDir: true },
|
|
68
|
+
{ src: "AGENTS.md", dest: "AGENTS.md" },
|
|
69
|
+
],
|
|
70
|
+
};
|
|
58
71
|
let projectDir;
|
|
59
72
|
let pkgRoot;
|
|
60
73
|
const originalCwd = process.cwd;
|
|
@@ -71,7 +84,8 @@ const originalExit = process.exit;
|
|
|
71
84
|
fs.writeFileSync(path.join(pkgRoot, "datasource-funifier-docs", ".search-index.json"), JSON.stringify({ version: 1, files: [] }));
|
|
72
85
|
fs.mkdirSync(path.join(pkgRoot, "skills"), { recursive: true });
|
|
73
86
|
fs.writeFileSync(path.join(pkgRoot, "skills", "test-skill.md"), "# Skill\n");
|
|
74
|
-
|
|
87
|
+
// Mirror the real generated AGENTS.md, which embeds the persona section.
|
|
88
|
+
fs.writeFileSync(path.join(pkgRoot, "AGENTS.md"), `# Agents\n\n${persona_1.PERSONA_SECTION}\n`);
|
|
75
89
|
// Mock process.cwd to return projectDir
|
|
76
90
|
process.cwd = vitest_1.vi.fn(() => projectDir);
|
|
77
91
|
// Mock process.exit so tests don't terminate
|
|
@@ -185,7 +199,10 @@ const originalExit = process.exit;
|
|
|
185
199
|
await (0, init_1.default)();
|
|
186
200
|
(0, vitest_1.expect)(prompts_1.askConflict).toHaveBeenCalledWith(path.join(projectDir, "AGENTS.md"));
|
|
187
201
|
const content = fs.readFileSync(path.join(projectDir, "AGENTS.md"), "utf-8");
|
|
188
|
-
(0, vitest_1.expect)(content).
|
|
202
|
+
(0, vitest_1.expect)(content).toContain("# Agents"); // Should be overwritten with package source
|
|
203
|
+
(0, vitest_1.expect)(content).not.toContain("# Existing");
|
|
204
|
+
// Source already carries the persona block; the ensure step must not duplicate it.
|
|
205
|
+
(0, vitest_1.expect)(countOccurrences(content, PERSONA_HEADING)).toBe(1);
|
|
189
206
|
});
|
|
190
207
|
(0, vitest_1.it)("skips existing files when user chooses skip", async () => {
|
|
191
208
|
fs.writeFileSync(path.join(projectDir, "AGENTS.md"), "# Existing\n");
|
|
@@ -193,7 +210,61 @@ const originalExit = process.exit;
|
|
|
193
210
|
vitest_1.vi.mocked(prompts_1.askConflict).mockResolvedValue("skip");
|
|
194
211
|
await (0, init_1.default)();
|
|
195
212
|
const content = fs.readFileSync(path.join(projectDir, "AGENTS.md"), "utf-8");
|
|
196
|
-
(0, vitest_1.expect)(content).
|
|
213
|
+
(0, vitest_1.expect)(content).toContain("# Existing"); // User content preserved (not overwritten)
|
|
214
|
+
// But the persona section is still ensured (appended) on the skipped file.
|
|
215
|
+
(0, vitest_1.expect)(content).toContain(PERSONA_HEADING);
|
|
216
|
+
(0, vitest_1.expect)(countOccurrences(content, PERSONA_HEADING)).toBe(1);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
(0, vitest_1.describe)("ensurePersonaSection", () => {
|
|
220
|
+
(0, vitest_1.it)("does not create CLAUDE.md when Claude Code is not selected", async () => {
|
|
221
|
+
vitest_1.vi.mocked(prompts_1.askCredentials).mockResolvedValue(null);
|
|
222
|
+
vitest_1.vi.mocked(prompts_1.askConflict).mockResolvedValue("overwrite");
|
|
223
|
+
await (0, init_1.default)(); // default mock = opencode
|
|
224
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(projectDir, "CLAUDE.md"))).toBe(false);
|
|
225
|
+
});
|
|
226
|
+
(0, vitest_1.it)("creates CLAUDE.md with the persona section when Claude Code is selected", async () => {
|
|
227
|
+
vitest_1.vi.mocked(prompts_1.selectPlatforms).mockResolvedValue([CLAUDE_CODE_PLATFORM]);
|
|
228
|
+
vitest_1.vi.mocked(prompts_1.askCredentials).mockResolvedValue(null);
|
|
229
|
+
vitest_1.vi.mocked(prompts_1.askConflict).mockResolvedValue("overwrite");
|
|
230
|
+
await (0, init_1.default)();
|
|
231
|
+
const claudePath = path.join(projectDir, "CLAUDE.md");
|
|
232
|
+
(0, vitest_1.expect)(fs.existsSync(claudePath)).toBe(true);
|
|
233
|
+
const content = fs.readFileSync(claudePath, "utf-8");
|
|
234
|
+
(0, vitest_1.expect)(content).toContain(persona_1.PERSONA_SENTINEL);
|
|
235
|
+
(0, vitest_1.expect)(content).toContain(PERSONA_HEADING);
|
|
236
|
+
});
|
|
237
|
+
(0, vitest_1.it)("appends the persona section to an existing CLAUDE.md that lacks it", async () => {
|
|
238
|
+
fs.writeFileSync(path.join(projectDir, "CLAUDE.md"), "# Project rules\n");
|
|
239
|
+
vitest_1.vi.mocked(prompts_1.selectPlatforms).mockResolvedValue([CLAUDE_CODE_PLATFORM]);
|
|
240
|
+
vitest_1.vi.mocked(prompts_1.askCredentials).mockResolvedValue(null);
|
|
241
|
+
vitest_1.vi.mocked(prompts_1.askConflict).mockResolvedValue("overwrite");
|
|
242
|
+
await (0, init_1.default)();
|
|
243
|
+
const content = fs.readFileSync(path.join(projectDir, "CLAUDE.md"), "utf-8");
|
|
244
|
+
(0, vitest_1.expect)(content).toContain("# Project rules"); // existing content preserved
|
|
245
|
+
(0, vitest_1.expect)(content).toContain(PERSONA_HEADING);
|
|
246
|
+
});
|
|
247
|
+
(0, vitest_1.it)("does not touch a CLAUDE.md that already has a hand-written quality section", async () => {
|
|
248
|
+
const existing = "# Rules\n\n## Qualidade de Código\n\nMinhas próprias regras.\n";
|
|
249
|
+
fs.writeFileSync(path.join(projectDir, "CLAUDE.md"), existing);
|
|
250
|
+
vitest_1.vi.mocked(prompts_1.selectPlatforms).mockResolvedValue([CLAUDE_CODE_PLATFORM]);
|
|
251
|
+
vitest_1.vi.mocked(prompts_1.askCredentials).mockResolvedValue(null);
|
|
252
|
+
vitest_1.vi.mocked(prompts_1.askConflict).mockResolvedValue("overwrite");
|
|
253
|
+
await (0, init_1.default)();
|
|
254
|
+
const content = fs.readFileSync(path.join(projectDir, "CLAUDE.md"), "utf-8");
|
|
255
|
+
(0, vitest_1.expect)(content).toBe(existing); // unchanged — heading match prevents duplication
|
|
256
|
+
(0, vitest_1.expect)(content).not.toContain(persona_1.PERSONA_SENTINEL);
|
|
257
|
+
});
|
|
258
|
+
(0, vitest_1.it)("is idempotent across repeated runs", async () => {
|
|
259
|
+
vitest_1.vi.mocked(prompts_1.selectPlatforms).mockResolvedValue([CLAUDE_CODE_PLATFORM]);
|
|
260
|
+
vitest_1.vi.mocked(prompts_1.askCredentials).mockResolvedValue(null);
|
|
261
|
+
vitest_1.vi.mocked(prompts_1.askConflict).mockResolvedValue("overwrite");
|
|
262
|
+
await (0, init_1.default)();
|
|
263
|
+
await (0, init_1.default)();
|
|
264
|
+
const agents = fs.readFileSync(path.join(projectDir, "AGENTS.md"), "utf-8");
|
|
265
|
+
const claude = fs.readFileSync(path.join(projectDir, "CLAUDE.md"), "utf-8");
|
|
266
|
+
(0, vitest_1.expect)(countOccurrences(agents, PERSONA_HEADING)).toBe(1);
|
|
267
|
+
(0, vitest_1.expect)(countOccurrences(claude, PERSONA_HEADING)).toBe(1);
|
|
197
268
|
});
|
|
198
269
|
});
|
|
199
270
|
//# sourceMappingURL=init.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/cli/init.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/cli/init.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const PERSONA_SENTINEL = "<!-- funifier-persona:start -->";
|
|
2
|
+
export declare const PERSONA_SECTION = "<!-- funifier-persona:start -->\n## Persona e Qualidade de C\u00F3digo\n\nAtue como um **desenvolvedor de software s\u00EAnior**, especializado em **c\u00F3digo limpo, leg\u00EDvel e de f\u00E1cil manuten\u00E7\u00E3o**, seguindo boas pr\u00E1ticas da ind\u00FAstria e **evitando overengineering**.\n\nAo refatorar ou criar c\u00F3digo:\n\n1. Analise o problema ou o c\u00F3digo existente.\n2. Raciocine passo a passo antes de escrever qualquer linha.\n3. Identifique problemas (refatora\u00E7\u00E3o) ou requisitos (c\u00F3digo novo).\n4. Defina prioridades com base em **SOLID**, **DRY**, **KISS** e **YAGNI**.\n5. Justifique tecnicamente cada decis\u00E3o.\n\n> **IMPORTANTE:** os exemplos da documenta\u00E7\u00E3o Funifier s\u00E3o ilustrativos \u2014 podem usar nomes gen\u00E9ricos ou scripts monol\u00EDticos. Sempre melhore-os: use nomes descritivos, extraia m\u00E9todos especializados e mantenha cada fun\u00E7\u00E3o com responsabilidade \u00FAnica.\n<!-- funifier-persona:end -->";
|
|
3
|
+
//# sourceMappingURL=persona.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/cli/persona.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE,eAAO,MAAM,eAAe,q+BAcE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Single source of truth for the "Persona e Qualidade de Código" directive.
|
|
3
|
+
// Imported by scripts/lib/template.ts (build-time, embeds it into the generated
|
|
4
|
+
// AGENTS.md) and by src/cli/init.ts (runtime, injects it into the destination's
|
|
5
|
+
// AGENTS.md / CLAUDE.md). Keep it data-only.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PERSONA_SECTION = exports.PERSONA_SENTINEL = void 0;
|
|
8
|
+
// HTML-comment marker used to detect the block idempotently (invisible when rendered).
|
|
9
|
+
exports.PERSONA_SENTINEL = "<!-- funifier-persona:start -->";
|
|
10
|
+
exports.PERSONA_SECTION = `${exports.PERSONA_SENTINEL}
|
|
11
|
+
## Persona e Qualidade de Código
|
|
12
|
+
|
|
13
|
+
Atue como um **desenvolvedor de software sênior**, especializado em **código limpo, legível e de fácil manutenção**, seguindo boas práticas da indústria e **evitando overengineering**.
|
|
14
|
+
|
|
15
|
+
Ao refatorar ou criar código:
|
|
16
|
+
|
|
17
|
+
1. Analise o problema ou o código existente.
|
|
18
|
+
2. Raciocine passo a passo antes de escrever qualquer linha.
|
|
19
|
+
3. Identifique problemas (refatoração) ou requisitos (código novo).
|
|
20
|
+
4. Defina prioridades com base em **SOLID**, **DRY**, **KISS** e **YAGNI**.
|
|
21
|
+
5. Justifique tecnicamente cada decisão.
|
|
22
|
+
|
|
23
|
+
> **IMPORTANTE:** os exemplos da documentação Funifier são ilustrativos — podem usar nomes genéricos ou scripts monolíticos. Sempre melhore-os: use nomes descritivos, extraia métodos especializados e mantenha cada função com responsabilidade única.
|
|
24
|
+
<!-- funifier-persona:end -->`;
|
|
25
|
+
//# sourceMappingURL=persona.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.js","sourceRoot":"","sources":["../../src/cli/persona.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,6CAA6C;;;AAE7C,uFAAuF;AAC1E,QAAA,gBAAgB,GAAG,iCAAiC,CAAC;AAErD,QAAA,eAAe,GAAG,GAAG,wBAAgB;;;;;;;;;;;;;;8BAcpB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FunifierConfig } from "./config";
|
|
2
|
-
import { Trigger, Scheduler, Aggregate, Widget, CustomPage, PublicEndpoint, ChallengeAggregate, AiKnowledge, AuthModule, Websocket, Action, Challenge, Point, Level, LevelConfig, Leaderboard, LeaderboardEntry, Quiz, Question, VirtualGoodCatalog, VirtualGoodItem } from "./types";
|
|
2
|
+
import { Trigger, Scheduler, Aggregate, Widget, CustomPage, PublicEndpoint, ChallengeAggregate, AiKnowledge, AuthModule, Websocket, Action, Challenge, Point, Level, LevelConfig, Leaderboard, LeaderboardEntry, Quiz, Question, VirtualGoodCatalog, VirtualGoodItem, Folder, FolderContent, FolderContentType, FolderLog } from "./types";
|
|
3
3
|
export declare function serializeToFunifierQuery(filter: Record<string, any>): string;
|
|
4
4
|
export declare function createAPIClient(config: FunifierConfig): {
|
|
5
5
|
listTriggers: () => Promise<Trigger[]>;
|
|
@@ -63,6 +63,20 @@ export declare function createAPIClient(config: FunifierConfig): {
|
|
|
63
63
|
_id: string;
|
|
64
64
|
title: string;
|
|
65
65
|
}[]>;
|
|
66
|
+
listFolders: () => Promise<Folder[]>;
|
|
67
|
+
saveFolder: (payload: Folder) => Promise<Folder>;
|
|
68
|
+
deleteFolder: (id: string) => Promise<any>;
|
|
69
|
+
listFolderContents: () => Promise<FolderContent[]>;
|
|
70
|
+
saveFolderContent: (payload: FolderContent) => Promise<FolderContent>;
|
|
71
|
+
deleteFolderContent: (id: string) => Promise<any>;
|
|
72
|
+
listFolderContentTypes: () => Promise<FolderContentType[]>;
|
|
73
|
+
saveFolderContentType: (payload: FolderContentType) => Promise<FolderContentType>;
|
|
74
|
+
listFolderLogs: () => Promise<FolderLog[]>;
|
|
75
|
+
saveFolderLog: (payload: FolderLog) => Promise<FolderLog>;
|
|
76
|
+
deleteFolderLog: (id: string) => Promise<any>;
|
|
77
|
+
folderInside: (folderId: string) => Promise<any>;
|
|
78
|
+
folderProgress: (folderId: string, playerId: string) => Promise<any>;
|
|
79
|
+
folderBreadcrumb: (folderId: string) => Promise<any>;
|
|
66
80
|
evaluateCron: (expression: string) => Promise<{
|
|
67
81
|
valid: boolean;
|
|
68
82
|
expression: string;
|
|
@@ -106,6 +120,12 @@ export declare function createAPIClient(config: FunifierConfig): {
|
|
|
106
120
|
saveVirtualGoodCatalog: (payload: VirtualGoodCatalog) => Promise<VirtualGoodCatalog>;
|
|
107
121
|
listVirtualGoodItems: () => Promise<VirtualGoodItem[]>;
|
|
108
122
|
saveVirtualGoodItem: (payload: VirtualGoodItem) => Promise<VirtualGoodItem>;
|
|
123
|
+
deleteVirtualGoodCatalog: (id: string) => Promise<{
|
|
124
|
+
success: boolean;
|
|
125
|
+
}>;
|
|
126
|
+
deleteVirtualGoodItem: (id: string) => Promise<{
|
|
127
|
+
success: boolean;
|
|
128
|
+
}>;
|
|
109
129
|
getGamification: (apiKey: string) => Promise<{
|
|
110
130
|
_id: string;
|
|
111
131
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/core/api-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,MAAM,EACN,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,eAAe,
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/core/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/api-client.js
CHANGED
|
@@ -405,7 +405,7 @@ function createAPIClient(config) {
|
|
|
405
405
|
return { success: true };
|
|
406
406
|
}
|
|
407
407
|
catch (e) {
|
|
408
|
-
throw new Error("Failed to
|
|
408
|
+
throw new Error("Failed to delete auth module: " + extractErrorMessage(e));
|
|
409
409
|
}
|
|
410
410
|
},
|
|
411
411
|
// --- AI Knowledge ---
|
|
@@ -453,6 +453,141 @@ function createAPIClient(config) {
|
|
|
453
453
|
return [];
|
|
454
454
|
}
|
|
455
455
|
},
|
|
456
|
+
// --- Folder ---
|
|
457
|
+
listFolders: async () => {
|
|
458
|
+
try {
|
|
459
|
+
const response = await axiosClient.get("/database/folder");
|
|
460
|
+
return response.data;
|
|
461
|
+
}
|
|
462
|
+
catch (e) {
|
|
463
|
+
console.error(e);
|
|
464
|
+
return [];
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
saveFolder: async (payload) => {
|
|
468
|
+
try {
|
|
469
|
+
const response = await axiosClient.post(constants_1.Endpoints.FOLDER, payload);
|
|
470
|
+
return response.data;
|
|
471
|
+
}
|
|
472
|
+
catch (e) {
|
|
473
|
+
throw new Error("Failed to save folder: " + extractErrorMessage(e));
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
deleteFolder: async (id) => {
|
|
477
|
+
try {
|
|
478
|
+
const response = await axiosClient.delete(constants_1.Endpoints.FOLDER_BY_ID(id));
|
|
479
|
+
return response.data;
|
|
480
|
+
}
|
|
481
|
+
catch (e) {
|
|
482
|
+
throw new Error("Failed to delete folder: " + extractErrorMessage(e));
|
|
483
|
+
}
|
|
484
|
+
},
|
|
485
|
+
// --- Folder Content ---
|
|
486
|
+
listFolderContents: async () => {
|
|
487
|
+
try {
|
|
488
|
+
const response = await axiosClient.get("/database/folder_content");
|
|
489
|
+
return response.data;
|
|
490
|
+
}
|
|
491
|
+
catch (e) {
|
|
492
|
+
console.error(e);
|
|
493
|
+
return [];
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
saveFolderContent: async (payload) => {
|
|
497
|
+
try {
|
|
498
|
+
const response = await axiosClient.post(constants_1.Endpoints.FOLDER_CONTENT, payload);
|
|
499
|
+
return response.data;
|
|
500
|
+
}
|
|
501
|
+
catch (e) {
|
|
502
|
+
throw new Error("Failed to save folder content: " + extractErrorMessage(e));
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
deleteFolderContent: async (id) => {
|
|
506
|
+
try {
|
|
507
|
+
const response = await axiosClient.delete(constants_1.Endpoints.FOLDER_CONTENT_BY_ID(id));
|
|
508
|
+
return response.data;
|
|
509
|
+
}
|
|
510
|
+
catch (e) {
|
|
511
|
+
throw new Error("Failed to delete folder content: " + extractErrorMessage(e));
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
// --- Folder Content Type ---
|
|
515
|
+
listFolderContentTypes: async () => {
|
|
516
|
+
try {
|
|
517
|
+
const response = await axiosClient.get(constants_1.Endpoints.FOLDER_CONTENT_TYPE);
|
|
518
|
+
return response.data;
|
|
519
|
+
}
|
|
520
|
+
catch (e) {
|
|
521
|
+
console.error(e);
|
|
522
|
+
return [];
|
|
523
|
+
}
|
|
524
|
+
},
|
|
525
|
+
saveFolderContentType: async (payload) => {
|
|
526
|
+
try {
|
|
527
|
+
const response = await axiosClient.put(constants_1.Endpoints.FOLDER_CONTENT_TYPE, payload);
|
|
528
|
+
return response.data;
|
|
529
|
+
}
|
|
530
|
+
catch (e) {
|
|
531
|
+
throw new Error("Failed to save folder content type: " + extractErrorMessage(e));
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
// --- Folder Log ---
|
|
535
|
+
listFolderLogs: async () => {
|
|
536
|
+
try {
|
|
537
|
+
const response = await axiosClient.get("/database/folder_log");
|
|
538
|
+
return response.data;
|
|
539
|
+
}
|
|
540
|
+
catch (e) {
|
|
541
|
+
console.error(e);
|
|
542
|
+
return [];
|
|
543
|
+
}
|
|
544
|
+
},
|
|
545
|
+
saveFolderLog: async (payload) => {
|
|
546
|
+
try {
|
|
547
|
+
const response = await axiosClient.post(constants_1.Endpoints.FOLDER_LOG, payload);
|
|
548
|
+
return response.data;
|
|
549
|
+
}
|
|
550
|
+
catch (e) {
|
|
551
|
+
throw new Error("Failed to save folder log: " + extractErrorMessage(e));
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
deleteFolderLog: async (id) => {
|
|
555
|
+
try {
|
|
556
|
+
const response = await axiosClient.delete(constants_1.Endpoints.FOLDER_LOG_BY_ID(id));
|
|
557
|
+
return response.data;
|
|
558
|
+
}
|
|
559
|
+
catch (e) {
|
|
560
|
+
throw new Error("Failed to delete folder log: " + extractErrorMessage(e));
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
// --- Folder Operations (business logic endpoints) ---
|
|
564
|
+
folderInside: async (folderId) => {
|
|
565
|
+
try {
|
|
566
|
+
const response = await axiosClient.post(constants_1.Endpoints.FOLDER_INSIDE, { folder: folderId });
|
|
567
|
+
return response.data;
|
|
568
|
+
}
|
|
569
|
+
catch (e) {
|
|
570
|
+
throw new Error("Failed to get folder inside: " + extractErrorMessage(e));
|
|
571
|
+
}
|
|
572
|
+
},
|
|
573
|
+
folderProgress: async (folderId, playerId) => {
|
|
574
|
+
try {
|
|
575
|
+
const response = await axiosClient.post(constants_1.Endpoints.FOLDER_PROGRESS, { folder: folderId, player: playerId });
|
|
576
|
+
return response.data;
|
|
577
|
+
}
|
|
578
|
+
catch (e) {
|
|
579
|
+
throw new Error("Failed to get folder progress: " + extractErrorMessage(e));
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
folderBreadcrumb: async (folderId) => {
|
|
583
|
+
try {
|
|
584
|
+
const response = await axiosClient.post(constants_1.Endpoints.FOLDER_BREADCRUMB, { folder: folderId });
|
|
585
|
+
return response.data;
|
|
586
|
+
}
|
|
587
|
+
catch (e) {
|
|
588
|
+
throw new Error("Failed to get folder breadcrumb: " + extractErrorMessage(e));
|
|
589
|
+
}
|
|
590
|
+
},
|
|
456
591
|
// --- Utility ---
|
|
457
592
|
evaluateCron: async (expression) => {
|
|
458
593
|
try {
|
|
@@ -802,6 +937,24 @@ function createAPIClient(config) {
|
|
|
802
937
|
throw new Error("Failed to save virtual good item: " + extractErrorMessage(e));
|
|
803
938
|
}
|
|
804
939
|
},
|
|
940
|
+
deleteVirtualGoodCatalog: async (id) => {
|
|
941
|
+
try {
|
|
942
|
+
await axiosClient.delete(`${constants_1.Endpoints.VIRTUAL_GOOD_CATALOG}/${id}`);
|
|
943
|
+
return { success: true };
|
|
944
|
+
}
|
|
945
|
+
catch (e) {
|
|
946
|
+
throw new Error("Failed to delete virtual good catalog: " + extractErrorMessage(e));
|
|
947
|
+
}
|
|
948
|
+
},
|
|
949
|
+
deleteVirtualGoodItem: async (id) => {
|
|
950
|
+
try {
|
|
951
|
+
await axiosClient.delete(`${constants_1.Endpoints.VIRTUAL_GOOD_ITEM}/${id}`);
|
|
952
|
+
return { success: true };
|
|
953
|
+
}
|
|
954
|
+
catch (e) {
|
|
955
|
+
throw new Error("Failed to delete virtual good item: " + extractErrorMessage(e));
|
|
956
|
+
}
|
|
957
|
+
},
|
|
805
958
|
getGamification: async (apiKey) => {
|
|
806
959
|
try {
|
|
807
960
|
const response = await axiosClient.get(constants_1.Endpoints.GAMIFICATION(apiKey));
|