funifier-mcp 0.2.24 → 0.2.25
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 +1 -0
- package/.github/copilot-instructions.md +1 -0
- package/AGENTS.md +1 -0
- package/datasource-funifier-docs/.search-index.json +5588 -4475
- package/datasource-funifier-docs/.skills-map.json +3 -1
- package/datasource-funifier-docs/knowledge/guides/trigger-examples.md +511 -0
- package/datasource-funifier-docs/knowledge/guides/triggers-guide.md +1 -1
- package/datasource-funifier-docs/knowledge/modules/action.md +96 -39
- package/datasource-funifier-docs/knowledge/modules/challenge.md +285 -48
- package/datasource-funifier-docs/knowledge/modules/leaderboard.md +173 -71
- package/datasource-funifier-docs/knowledge/modules/point.md +108 -37
- package/datasource-funifier-docs/knowledge/modules/trigger.md +1 -1
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +11 -4
- package/dist/cli/init.js.map +1 -1
- package/dist/core/api-client.d.ts.map +1 -1
- package/dist/core/api-client.js +1 -1
- package/dist/core/api-client.js.map +1 -1
- package/dist/core/constants.d.ts +1 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +1 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/mcp/bundle.js +68 -67
- package/dist/mcp/index.js +2 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/tools/get.d.ts.map +1 -1
- package/dist/mcp/tools/get.js +22 -8
- package/dist/mcp/tools/get.js.map +1 -1
- package/dist/mcp/tools/list.d.ts.map +1 -1
- package/dist/mcp/tools/list.js +9 -2
- package/dist/mcp/tools/list.js.map +1 -1
- package/dist/mcp/tools/save.d.ts.map +1 -1
- package/dist/mcp/tools/save.js +88 -7
- package/dist/mcp/tools/save.js.map +1 -1
- package/package.json +3 -2
- package/skills/funifier-create-action/SKILL.md +58 -18
- package/skills/funifier-create-aggregate/SKILL.md +1 -0
- package/skills/funifier-create-challenge/SKILL.md +1 -0
- package/skills/funifier-create-custom-page/SKILL.md +1 -0
- package/skills/funifier-create-leaderboard/SKILL.md +90 -18
- package/skills/funifier-create-level/SKILL.md +1 -0
- package/skills/funifier-create-point/SKILL.md +60 -18
- package/skills/funifier-create-quiz/SKILL.md +1 -0
- package/skills/funifier-create-scheduler/SKILL.md +1 -0
- package/skills/funifier-create-trigger/SKILL.md +110 -19
- package/skills/funifier-create-virtual-good/SKILL.md +1 -0
- package/skills/funifier-debug/SKILL.md +2 -0
- package/skills/funifier-help/SKILL.md +1 -0
- package/skills/funifier-implement-frontend/SKILL.md +1 -0
- package/skills/funifier-index/SKILL.md +9 -1
package/dist/mcp/index.js
CHANGED
|
@@ -11,7 +11,8 @@ async function main() {
|
|
|
11
11
|
const subcommand = process.argv[2];
|
|
12
12
|
if (subcommand === "init") {
|
|
13
13
|
const { default: runInit } = require("../cli/init");
|
|
14
|
-
|
|
14
|
+
const devPkgRoot = process.env.FUNIFIER_DEV_ROOT;
|
|
15
|
+
await runInit(process.argv[3], devPkgRoot);
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
18
|
if (subcommand === "search") {
|
package/dist/mcp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;AAEA,oEAAoE;AACpE,wEAAiF;AACjF,6CAAyC;AACzC,mCAAwC;AACxC,6DAA8D;AAC9D,mDAAsD;AAEtD,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;AAEA,oEAAoE;AACpE,wEAAiF;AACjF,6CAAyC;AACzC,mCAAwC;AACxC,6DAA8D;AAC9D,mDAAsD;AAEtD,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACjD,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IACD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QACxD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACtD,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IACD,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,GAAG,IAAI,sBAAS,EAAE,CAAC;IAElC,oEAAoE;IACpE,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IAEjD,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,6CAA6C;IAC7C,IAAA,qBAAa,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,IAAA,iCAAiB,EAAC,MAAM,CAAC,CAAC;IAC1B,IAAA,2BAAe,EAAC,MAAM,CAAC,CAAC;IAExB,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CACX,wFAAwF,CACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAsF1C,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAsItE"}
|
package/dist/mcp/tools/get.js
CHANGED
|
@@ -87,14 +87,28 @@ const RESOURCE_TYPES = [
|
|
|
87
87
|
"virtual-good-catalog",
|
|
88
88
|
"virtual-good-item",
|
|
89
89
|
];
|
|
90
|
-
function findItems(items, idOrName, limit) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
function findItems(items, idOrName, type, limit) {
|
|
91
|
+
// 1. Exact _id match
|
|
92
|
+
const byIdExact = items.filter((i) => i._id === idOrName);
|
|
93
|
+
if (byIdExact.length > 0)
|
|
94
|
+
return byIdExact.slice(0, limit);
|
|
95
|
+
// 2. Case-insensitive _id match
|
|
96
|
+
const q = idOrName.toLowerCase();
|
|
97
|
+
const byIdCI = items.filter((i) => typeof i._id === "string" && i._id.toLowerCase() === q);
|
|
98
|
+
if (byIdCI.length > 0)
|
|
99
|
+
return byIdCI.slice(0, limit);
|
|
100
|
+
// 3. Name/title match — includes type-specific name fields
|
|
95
101
|
const byName = items.filter((i) => {
|
|
96
|
-
const
|
|
97
|
-
|
|
102
|
+
const candidates = [
|
|
103
|
+
i.name,
|
|
104
|
+
i.title,
|
|
105
|
+
i.action, // action type
|
|
106
|
+
i.challenge, // challenge type
|
|
107
|
+
i.level, // level type
|
|
108
|
+
i.catalog, // virtual-good-catalog type
|
|
109
|
+
i.category, // point type
|
|
110
|
+
].filter(Boolean).map((s) => s.toLowerCase());
|
|
111
|
+
return candidates.some((c) => c === q || c.includes(q));
|
|
98
112
|
});
|
|
99
113
|
return byName.slice(0, limit);
|
|
100
114
|
}
|
|
@@ -170,7 +184,7 @@ function registerGetTool(server, apiHolder) {
|
|
|
170
184
|
isError: true,
|
|
171
185
|
};
|
|
172
186
|
}
|
|
173
|
-
const found = findItems(items, id, limit ?? 1);
|
|
187
|
+
const found = findItems(items, id, type, limit ?? 1);
|
|
174
188
|
if (found.length === 0) {
|
|
175
189
|
return {
|
|
176
190
|
content: [{ type: "text", text: `Resource not found: ${type} with id or name "${id}"` }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/mcp/tools/get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/mcp/tools/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AA6K1C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAuGvE"}
|
package/dist/mcp/tools/list.js
CHANGED
|
@@ -146,7 +146,8 @@ function summarizeItems(items, type) {
|
|
|
146
146
|
* entity, event, collection, and _id fields (case-insensitive).
|
|
147
147
|
*/
|
|
148
148
|
function filterItems(items, query) {
|
|
149
|
-
|
|
149
|
+
// Support comma-separated OR terms: "watch video, login" matches either
|
|
150
|
+
const terms = query.split(",").map((t) => t.trim().toLowerCase()).filter(Boolean);
|
|
150
151
|
return items.filter((item) => {
|
|
151
152
|
const searchable = [
|
|
152
153
|
item._id,
|
|
@@ -156,11 +157,17 @@ function filterItems(items, query) {
|
|
|
156
157
|
item.entity,
|
|
157
158
|
item.event,
|
|
158
159
|
item.collection,
|
|
160
|
+
item.action,
|
|
161
|
+
item.challenge,
|
|
162
|
+
item.category,
|
|
163
|
+
item.shortName,
|
|
164
|
+
item.level,
|
|
165
|
+
item.catalog,
|
|
159
166
|
]
|
|
160
167
|
.filter(Boolean)
|
|
161
168
|
.join(" ")
|
|
162
169
|
.toLowerCase();
|
|
163
|
-
return searchable.includes(
|
|
170
|
+
return terms.some((t) => searchable.includes(t));
|
|
164
171
|
});
|
|
165
172
|
}
|
|
166
173
|
function registerListTool(server, apiHolder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/save.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/save.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AA6K1C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA4DvE"}
|
package/dist/mcp/tools/save.js
CHANGED
|
@@ -78,6 +78,86 @@ function mergeCompanions(jsonPath, type, doc) {
|
|
|
78
78
|
}
|
|
79
79
|
return merged;
|
|
80
80
|
}
|
|
81
|
+
// Operator/enum maps for challenge fields
|
|
82
|
+
const RULE_OPERATORS = { ">=": 5, "gte": 5, "=": 1, "eq": 1, "%": 40, "percent": 40 };
|
|
83
|
+
const FILTER_OPERATORS = {
|
|
84
|
+
"is": 1, "equals": 1, "contains": 3, "greater_than": 4, ">": 4,
|
|
85
|
+
"greater_than_equal": 5, ">=": 5, "less_than": 6, "<": 6,
|
|
86
|
+
"less_than_equal": 7, "<=": 7, "is_not": 8, "!=": 8,
|
|
87
|
+
"exists": 9, "does_not_exist": 10, "near_in_meters": 20,
|
|
88
|
+
};
|
|
89
|
+
const RANGE_VALUES = {
|
|
90
|
+
"complete_all": 0, "complete all": 0, "complete_any": 1, "complete any": 1,
|
|
91
|
+
"complete_all_in_order": 2, "complete all in order": 2,
|
|
92
|
+
};
|
|
93
|
+
const POINT_OPERATIONS = {
|
|
94
|
+
"none": 0, "multiply_by": 1, "multiply by": 1, "divide_by": 2, "divide by": 2,
|
|
95
|
+
};
|
|
96
|
+
const LIMIT_PER_TYPES = { "player": 0, "team": 1, "gamification": 2 };
|
|
97
|
+
const TIME_SCALES = {
|
|
98
|
+
"none": 0, "second": 2, "seconds": 2, "minute": 3, "minutes": 3,
|
|
99
|
+
"hour": 4, "hours": 4, "day": 5, "days": 5, "week": 6, "weeks": 6,
|
|
100
|
+
"month": 7, "months": 7, "year": 8, "years": 8,
|
|
101
|
+
};
|
|
102
|
+
const NOTIFICATION_EVENTS = { "on_win": 0, "on win": 0, "on_create": 1, "on create": 1, "on_change": 2, "on change": 2 };
|
|
103
|
+
const NOTIFICATION_SCOPES = { "private": 0, "newsfeed": 1, "custom": 99 };
|
|
104
|
+
function coerceEnum(value, map) {
|
|
105
|
+
if (typeof value === "number")
|
|
106
|
+
return value;
|
|
107
|
+
if (typeof value === "string") {
|
|
108
|
+
const key = value.toLowerCase().trim();
|
|
109
|
+
if (key in map)
|
|
110
|
+
return map[key];
|
|
111
|
+
}
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
function sanitizeChallenge(data) {
|
|
115
|
+
const d = { ...data };
|
|
116
|
+
if (typeof d.range !== "undefined") {
|
|
117
|
+
const v = coerceEnum(d.range, RANGE_VALUES);
|
|
118
|
+
if (v !== undefined)
|
|
119
|
+
d.range = v;
|
|
120
|
+
}
|
|
121
|
+
if (typeof d.limitPerType !== "undefined") {
|
|
122
|
+
const v = coerceEnum(d.limitPerType, LIMIT_PER_TYPES);
|
|
123
|
+
if (v !== undefined)
|
|
124
|
+
d.limitPerType = v;
|
|
125
|
+
}
|
|
126
|
+
if (typeof d.limitTimeScale !== "undefined") {
|
|
127
|
+
const v = coerceEnum(d.limitTimeScale, TIME_SCALES);
|
|
128
|
+
if (v !== undefined)
|
|
129
|
+
d.limitTimeScale = v;
|
|
130
|
+
}
|
|
131
|
+
if (Array.isArray(d.rules)) {
|
|
132
|
+
d.rules = d.rules.map((rule) => {
|
|
133
|
+
const r = { ...rule };
|
|
134
|
+
const op = coerceEnum(r.operator, RULE_OPERATORS);
|
|
135
|
+
if (op !== undefined)
|
|
136
|
+
r.operator = op;
|
|
137
|
+
if (Array.isArray(r.filters)) {
|
|
138
|
+
r.filters = r.filters.map((f) => {
|
|
139
|
+
const fo = coerceEnum(f.operator, FILTER_OPERATORS);
|
|
140
|
+
return fo !== undefined ? { ...f, operator: fo } : f;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return r;
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
if (Array.isArray(d.points)) {
|
|
147
|
+
d.points = d.points.map((p) => {
|
|
148
|
+
const op = coerceEnum(p.operation, POINT_OPERATIONS);
|
|
149
|
+
return op !== undefined ? { ...p, operation: op } : p;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (Array.isArray(d.notifications)) {
|
|
153
|
+
d.notifications = d.notifications.map((n) => {
|
|
154
|
+
const ev = coerceEnum(n.event, NOTIFICATION_EVENTS);
|
|
155
|
+
const sc = coerceEnum(n.scope, NOTIFICATION_SCOPES);
|
|
156
|
+
return { ...n, ...(ev !== undefined && { event: ev }), ...(sc !== undefined && { scope: sc }) };
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return d;
|
|
160
|
+
}
|
|
81
161
|
async function dispatchSave(api, type, data) {
|
|
82
162
|
switch (type) {
|
|
83
163
|
case "trigger":
|
|
@@ -139,18 +219,19 @@ function registerSaveTool(server, apiHolder) {
|
|
|
139
219
|
// funifier_get saves an array; unwrap if needed
|
|
140
220
|
const unwrapped = Array.isArray(parsed) ? parsed[0] : parsed;
|
|
141
221
|
const data = file ? mergeCompanions(file, type, unwrapped) : unwrapped;
|
|
142
|
-
let toSave = data;
|
|
143
|
-
if (
|
|
144
|
-
const current = await (0, _fetch_current_1.fetchCurrentById)(api, type,
|
|
222
|
+
let toSave = type === "challenge" ? sanitizeChallenge(data) : data;
|
|
223
|
+
if (toSave._id) {
|
|
224
|
+
const current = await (0, _fetch_current_1.fetchCurrentById)(api, type, toSave._id);
|
|
145
225
|
if (current) {
|
|
146
|
-
toSave = (0, _merge_1.mergeResource)(current,
|
|
226
|
+
toSave = (0, _merge_1.mergeResource)(current, toSave);
|
|
147
227
|
}
|
|
148
228
|
// if current is null: _id is user-defined for a new resource — create as-is
|
|
149
229
|
}
|
|
150
230
|
const result = await dispatchSave(api, type, toSave);
|
|
151
|
-
// Funifier sometimes returns 200/201 with
|
|
152
|
-
if (result?.status === "ERROR" || result?.status === "error"
|
|
153
|
-
|
|
231
|
+
// Funifier sometimes returns 200/201 with an error body
|
|
232
|
+
if (result?.status === "ERROR" || result?.status === "error" ||
|
|
233
|
+
result?.errorCode != null || result?.errorMessage != null) {
|
|
234
|
+
const errorMsg = result?.errorMessage || result?.message || result?.error || JSON.stringify(result);
|
|
154
235
|
return {
|
|
155
236
|
content: [{ type: "text", text: `Error saving ${type}: ${errorMsg}` }],
|
|
156
237
|
isError: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/mcp/tools/save.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/mcp/tools/save.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "funifier-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.25",
|
|
4
4
|
"description": "Funifier AI toolkit — MCP server, API client, and Claude Code skills for the Funifier gamification platform",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
"test:watch": "vitest watch",
|
|
40
40
|
"build:skills": "tsx scripts/build-skills.ts",
|
|
41
41
|
"build:skills:force": "tsx scripts/build-skills.ts --force",
|
|
42
|
-
"search:docs": "tsx scripts/search-docs.ts"
|
|
42
|
+
"search:docs": "tsx scripts/search-docs.ts",
|
|
43
|
+
"dev:init": "npm run build && node scripts/dev-init.js"
|
|
43
44
|
},
|
|
44
45
|
"keywords": [
|
|
45
46
|
"funifier",
|
|
@@ -48,35 +48,74 @@ If search returns insufficient results, read directly:
|
|
|
48
48
|
|
|
49
49
|
## Steps
|
|
50
50
|
|
|
51
|
-
###
|
|
51
|
+
### Rules — follow exactly, no exceptions
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
- Any specific configuration or constraints
|
|
53
|
+
**_id format:** lowercase, no spaces, no accents — use `_` as separator.
|
|
54
|
+
- ✓ `watch_video`, `login`, `acessar_feed`
|
|
55
|
+
- ✗ `Watch Video`, `assistir vídeo`, `WatchVideo`
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
**When to add attributes:** only if a challenge will need to filter or sum values from this action.
|
|
58
|
+
- Simple action (no attributes needed): `login`, `watch_video`, `acessar_feed`, `jogar_mini`
|
|
59
|
+
- Action with attributes: `sell` needs `product` (String) and `price` (Number) so challenges can filter "sell books" or sum revenue
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
**Attribute types:** `String`, `Number`, `Boolean` — nothing else.
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
**Upsert behavior:** POST with an existing `_id` updates the action. It never errors on duplicate.
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### 1. Collect what you need
|
|
68
|
+
|
|
69
|
+
Ask (or infer from context):
|
|
70
|
+
- Name/title of the action (human-readable, e.g. "Watch Video")
|
|
71
|
+
- Whether any challenge will filter or aggregate values from this action → if yes, what attributes
|
|
72
|
+
|
|
73
|
+
### 2. Check if it already exists
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
funifier_list type=action search=<name or _id>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
If it exists and looks correct, stop — no need to recreate.
|
|
66
80
|
|
|
67
|
-
###
|
|
81
|
+
### 3. Build the payload
|
|
68
82
|
|
|
69
|
-
|
|
83
|
+
Simple action (most cases):
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"_id": "watch_video",
|
|
87
|
+
"action": "Watch Video",
|
|
88
|
+
"active": true,
|
|
89
|
+
"attributes": []
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Action with attributes:
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"_id": "sell",
|
|
97
|
+
"action": "Sell",
|
|
98
|
+
"active": true,
|
|
99
|
+
"attributes": [
|
|
100
|
+
{ "name": "product", "type": "String" },
|
|
101
|
+
{ "name": "price", "type": "Number" }
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 4. Save
|
|
70
107
|
|
|
71
|
-
|
|
108
|
+
```
|
|
109
|
+
funifier_save type=action payload=<json>
|
|
110
|
+
```
|
|
72
111
|
|
|
73
|
-
|
|
74
|
-
update the resource. If MCP is unavailable, show the complete JSON for manual use.
|
|
112
|
+
### 5. Validate
|
|
75
113
|
|
|
76
|
-
|
|
114
|
+
```
|
|
115
|
+
funifier_list type=action search=<_id>
|
|
116
|
+
```
|
|
77
117
|
|
|
78
|
-
|
|
79
|
-
the resource was saved correctly and executed without errors.
|
|
118
|
+
Do NOT use `funifier_logs` — that is only for triggers and schedulers.
|
|
80
119
|
|
|
81
120
|
## MCP
|
|
82
121
|
|
|
@@ -84,3 +123,4 @@ If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier
|
|
|
84
123
|
- Use MCP for live server data
|
|
85
124
|
- Use docs for correct patterns and syntax
|
|
86
125
|
- Never learn patterns from existing live resources — docs are authoritative
|
|
126
|
+
- **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
|
|
@@ -124,3 +124,4 @@ If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier
|
|
|
124
124
|
- Use MCP for live server data
|
|
125
125
|
- Use docs for correct patterns and syntax
|
|
126
126
|
- Never learn patterns from existing live resources — docs are authoritative
|
|
127
|
+
- **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
|
|
@@ -85,3 +85,4 @@ If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier
|
|
|
85
85
|
- Use MCP for live server data
|
|
86
86
|
- Use docs for correct patterns and syntax
|
|
87
87
|
- Never learn patterns from existing live resources — docs are authoritative
|
|
88
|
+
- **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
|
|
@@ -124,3 +124,4 @@ If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier
|
|
|
124
124
|
- Use MCP for live server data
|
|
125
125
|
- Use docs for correct patterns and syntax
|
|
126
126
|
- Never learn patterns from existing live resources — docs are authoritative
|
|
127
|
+
- **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
|
|
@@ -49,35 +49,106 @@ If search returns insufficient results, read directly:
|
|
|
49
49
|
|
|
50
50
|
## Steps
|
|
51
51
|
|
|
52
|
-
###
|
|
52
|
+
### Rules — follow exactly, no exceptions
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
- The name/title
|
|
56
|
-
- The purpose and behavior
|
|
57
|
-
- Any specific configuration or constraints
|
|
54
|
+
**`techniques`** is always `["GT03"]` — the only valid value, always required.
|
|
58
55
|
|
|
59
|
-
|
|
56
|
+
**`principalType`:** `0` = Player, `1` = Team
|
|
60
57
|
|
|
61
|
-
|
|
58
|
+
**`operation.type` — how to calculate the score:**
|
|
62
59
|
|
|
63
|
-
|
|
60
|
+
| Value | Meaning | Use when |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| `1` | Count Actions | rank by how many times an action was done |
|
|
63
|
+
| `2` | Sum of attributes | rank by sum of a numeric action attribute |
|
|
64
|
+
| `3` | Sum achievements | rank by accumulated points/challenges (**most common**) |
|
|
65
|
+
| `4` | Average of attributes | rank by average of a numeric action attribute |
|
|
66
|
+
| `10` | Prepared KPI | rank by a pre-configured KPI |
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
**`operation.achievement_type`** (only when `operation.type = 3`):
|
|
69
|
+
`0` = Point, `1` = Challenge, `2` = Catalog Item, `3` = Level, `5` = Lottery, `9` = Competition
|
|
67
70
|
|
|
68
|
-
|
|
71
|
+
**`operation.item`:** always the `_id` of the point or action — never the category name or title.
|
|
69
72
|
|
|
70
|
-
|
|
73
|
+
**`operation.sort`:** `-1` = highest first (default), `1` = lowest first
|
|
71
74
|
|
|
72
|
-
|
|
75
|
+
**`operation.sub`:** `false` = gross total (default), `true` = net balance (deducts debits)
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
update the resource. If MCP is unavailable, show the complete JSON for manual use.
|
|
77
|
+
**`period.timeScale`:** `4`=Hour, `5`=Day, `6`=Week, `7`=Month, `8`=Year
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
**`period.type`:** `0` = Variable (last N periods), `1` = Fixed (date range)
|
|
78
80
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### 1. Gather requirements
|
|
84
|
+
|
|
85
|
+
Ask (or infer):
|
|
86
|
+
- Rank players or teams? → `principalType`
|
|
87
|
+
- By points, action count, or attribute sum? → `operation.type`
|
|
88
|
+
- Which point/action? → `operation.item` (need its `_id`)
|
|
89
|
+
- What period? (weekly, monthly, daily…) → `period.timeScale`
|
|
90
|
+
|
|
91
|
+
Check the point/action `_id` with:
|
|
92
|
+
```
|
|
93
|
+
funifier_list type=point search=<name>
|
|
94
|
+
funifier_list type=action search=<name>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 2. Check if it already exists
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
funifier_list type=leaderboard search=<title>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3. Build the payload
|
|
104
|
+
|
|
105
|
+
Most common — ranking by points (weekly):
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"title": "Top Players",
|
|
109
|
+
"principalType": 0,
|
|
110
|
+
"operation": {
|
|
111
|
+
"type": 3,
|
|
112
|
+
"achievement_type": 0,
|
|
113
|
+
"item": "<point _id>",
|
|
114
|
+
"sort": -1,
|
|
115
|
+
"sub": false,
|
|
116
|
+
"filters": []
|
|
117
|
+
},
|
|
118
|
+
"period": { "type": 0, "timeAmount": 1, "timeScale": 6 },
|
|
119
|
+
"techniques": ["GT03"]
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Ranking by action count (daily):
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"title": "Most Active",
|
|
127
|
+
"principalType": 0,
|
|
128
|
+
"operation": {
|
|
129
|
+
"type": 1,
|
|
130
|
+
"item": "<action _id>",
|
|
131
|
+
"sort": -1,
|
|
132
|
+
"filters": []
|
|
133
|
+
},
|
|
134
|
+
"period": { "type": 0, "timeAmount": 1, "timeScale": 5 },
|
|
135
|
+
"techniques": ["GT03"]
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 4. Save
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
funifier_save type=leaderboard payload=<json>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 5. Validate
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
funifier_list type=leaderboard search=<title>
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
If scores look wrong, reset cache: `GET /v3/leaderboard/reset`
|
|
81
152
|
|
|
82
153
|
## MCP
|
|
83
154
|
|
|
@@ -85,3 +156,4 @@ If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier
|
|
|
85
156
|
- Use MCP for live server data
|
|
86
157
|
- Use docs for correct patterns and syntax
|
|
87
158
|
- Never learn patterns from existing live resources — docs are authoritative
|
|
159
|
+
- **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
|
|
@@ -84,3 +84,4 @@ If Funifier MCP tools are available (`funifier_list`, `funifier_save`, `funifier
|
|
|
84
84
|
- Use MCP for live server data
|
|
85
85
|
- Use docs for correct patterns and syntax
|
|
86
86
|
- Never learn patterns from existing live resources — docs are authoritative
|
|
87
|
+
- **For any new Funifier task, check `/funifier-index` first** — there may be a skill with the correct enums, examples, and workflow already defined
|