@ratio-mcp/dev-server 1.5.0 → 1.6.0
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/README.md +118 -0
- package/dist/schemas/app-distribution.json +36 -0
- package/dist/schemas/customers.json +26 -0
- package/dist/schemas/discounts.json +81 -0
- package/dist/schemas/draft_orders.json +112 -0
- package/dist/schemas/loyalty.json +147 -0
- package/dist/schemas/oauth.json +71 -0
- package/dist/schemas/orders.json +597 -102
- package/dist/schemas/product_reviews.json +45 -0
- package/dist/schemas/products.json +401 -118
- package/dist/schemas/tags.json +98 -0
- package/dist/schemas/variants.json +112 -0
- package/dist/schemas/webhooks.json +148 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +39 -5
- package/dist/server.js.map +1 -1
- package/dist/services/app-state-sync.d.ts +34 -0
- package/dist/services/app-state-sync.d.ts.map +1 -0
- package/dist/services/app-state-sync.js +85 -0
- package/dist/services/app-state-sync.js.map +1 -0
- package/dist/services/elicitation.d.ts +25 -0
- package/dist/services/elicitation.d.ts.map +1 -0
- package/dist/services/elicitation.js +101 -0
- package/dist/services/elicitation.js.map +1 -0
- package/dist/services/flow-profiles.d.ts +46 -0
- package/dist/services/flow-profiles.d.ts.map +1 -0
- package/dist/services/flow-profiles.js +100 -0
- package/dist/services/flow-profiles.js.map +1 -0
- package/dist/services/questionnaire.d.ts +89 -0
- package/dist/services/questionnaire.d.ts.map +1 -0
- package/dist/services/questionnaire.js +167 -0
- package/dist/services/questionnaire.js.map +1 -0
- package/dist/services/session-state.d.ts +17 -0
- package/dist/services/session-state.d.ts.map +1 -1
- package/dist/services/session-state.js +26 -1
- package/dist/services/session-state.js.map +1 -1
- package/dist/services/tool-guard.d.ts +15 -18
- package/dist/services/tool-guard.d.ts.map +1 -1
- package/dist/services/tool-guard.js +150 -97
- package/dist/services/tool-guard.js.map +1 -1
- package/dist/tools/app-management.d.ts.map +1 -1
- package/dist/tools/app-management.js +181 -33
- package/dist/tools/app-management.js.map +1 -1
- package/dist/tools/codegen.d.ts.map +1 -1
- package/dist/tools/codegen.js +21 -0
- package/dist/tools/codegen.js.map +1 -1
- package/dist/tools/gather-requirements.d.ts.map +1 -1
- package/dist/tools/gather-requirements.js +5 -3
- package/dist/tools/gather-requirements.js.map +1 -1
- package/dist/tools/get-status.d.ts.map +1 -1
- package/dist/tools/get-status.js +45 -34
- package/dist/tools/get-status.js.map +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lifecycle.d.ts.map +1 -1
- package/dist/tools/lifecycle.js +6 -3
- package/dist/tools/lifecycle.js.map +1 -1
- package/dist/tools/reference-data.d.ts +16 -0
- package/dist/tools/reference-data.d.ts.map +1 -1
- package/dist/tools/reference-data.js +12 -8
- package/dist/tools/reference-data.js.map +1 -1
- package/dist/tools/requirements.d.ts.map +1 -1
- package/dist/tools/requirements.js +17 -9
- package/dist/tools/requirements.js.map +1 -1
- package/dist/tools/submission.d.ts.map +1 -1
- package/dist/tools/submission.js +50 -13
- package/dist/tools/submission.js.map +1 -1
- package/dist/tools/webhooks.d.ts.map +1 -1
- package/dist/tools/webhooks.js +3 -1
- package/dist/tools/webhooks.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +19 -10
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/schema-resources.d.ts +8 -0
- package/dist/utils/schema-resources.d.ts.map +1 -0
- package/dist/utils/schema-resources.js +25 -0
- package/dist/utils/schema-resources.js.map +1 -0
- package/package.json +3 -3
- package/dist/orchestrated-index.d.ts +0 -11
- package/dist/orchestrated-index.d.ts.map +0 -1
- package/dist/orchestrated-index.js +0 -33
- package/dist/orchestrated-index.js.map +0 -1
- package/dist/orchestrated-server.d.ts +0 -21
- package/dist/orchestrated-server.d.ts.map +0 -1
- package/dist/orchestrated-server.js +0 -101
- package/dist/orchestrated-server.js.map +0 -1
- package/dist/services/orchestrator.d.ts +0 -63
- package/dist/services/orchestrator.d.ts.map +0 -1
- package/dist/services/orchestrator.js +0 -845
- package/dist/services/orchestrator.js.map +0 -1
- package/dist/services/response-formatter.d.ts +0 -24
- package/dist/services/response-formatter.d.ts.map +0 -1
- package/dist/services/response-formatter.js +0 -311
- package/dist/services/response-formatter.js.map +0 -1
- package/dist/tools/agent-chat.d.ts +0 -9
- package/dist/tools/agent-chat.d.ts.map +0 -1
- package/dist/tools/agent-chat.js +0 -465
- package/dist/tools/agent-chat.js.map +0 -1
package/dist/tools/get-status.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { getSession, getAppState, getActiveAppId, getAllCompletedTools } from '../services/session-state.js';
|
|
3
3
|
import { checkToolPrerequisites } from '../services/tool-guard.js';
|
|
4
|
+
import { getAppFacts, effectiveStatus } from '../services/app-state-sync.js';
|
|
5
|
+
import { getFlowProfile, isKindFullySupported } from '../services/flow-profiles.js';
|
|
4
6
|
import { logger } from '../utils/logger.js';
|
|
5
7
|
/**
|
|
6
8
|
* All tools in the system, grouped by purpose.
|
|
@@ -25,43 +27,30 @@ const ALL_TOOLS = [
|
|
|
25
27
|
// Backend
|
|
26
28
|
'scaffold_backend', 'generate_api_routes',
|
|
27
29
|
];
|
|
30
|
+
/** Setup steps common to every profile (before the pipeline begins) */
|
|
31
|
+
const SETUP_STEPS = ['developer_login', 'create_app', 'gather_requirements', 'define_app_requirements'];
|
|
28
32
|
/**
|
|
29
|
-
* Compute suggested next tool
|
|
30
|
-
*
|
|
33
|
+
* Compute suggested next tool: setup steps first, then the app's profile pipeline.
|
|
34
|
+
* Skipped steps (not applicable for the profile) are passed over silently.
|
|
31
35
|
*/
|
|
32
|
-
function computeSuggestedNext(completed) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
'
|
|
40
|
-
'build_frontend',
|
|
41
|
-
'validate_build',
|
|
42
|
-
'create_submission_zip',
|
|
43
|
-
'upload_build',
|
|
44
|
-
'submit_for_review',
|
|
45
|
-
'get_app_status',
|
|
46
|
-
'publish_app',
|
|
47
|
-
'scaffold_backend',
|
|
48
|
-
'generate_api_routes',
|
|
49
|
-
];
|
|
50
|
-
for (const tool of HAPPY_PATH) {
|
|
51
|
-
if (!completed.has(tool)) {
|
|
52
|
-
const guard = checkToolPrerequisites(tool);
|
|
53
|
-
if (guard.allowed)
|
|
54
|
-
return tool;
|
|
55
|
-
}
|
|
36
|
+
async function computeSuggestedNext(completed, pipelineSteps) {
|
|
37
|
+
for (const tool of [...SETUP_STEPS, ...pipelineSteps]) {
|
|
38
|
+
if (completed.has(tool))
|
|
39
|
+
continue;
|
|
40
|
+
const guard = await checkToolPrerequisites(tool);
|
|
41
|
+
if (guard.allowed)
|
|
42
|
+
return tool;
|
|
43
|
+
// skipped steps don't count as pending work — keep scanning
|
|
56
44
|
}
|
|
57
45
|
return undefined;
|
|
58
46
|
}
|
|
59
47
|
export const statusTools = [
|
|
60
48
|
{
|
|
61
49
|
name: 'get_status',
|
|
62
|
-
description: 'Returns the current session status: authenticated developer, active app
|
|
63
|
-
'
|
|
64
|
-
'
|
|
50
|
+
description: 'Returns the current session status: authenticated developer, active app (with its LIVE platform status, ' +
|
|
51
|
+
'app_type and app_kind), the flow pipeline for this app, completed tools, available tools, ' +
|
|
52
|
+
'blocked tools (with reasons), skipped tools (not applicable for this app kind/type), and a suggested next step. ' +
|
|
53
|
+
'Call this tool to orient yourself before taking any action, or when resuming a conversation. ' +
|
|
65
54
|
'This is a read-only tool with no prerequisites — it can be called at any time.',
|
|
66
55
|
inputSchema: z.object({
|
|
67
56
|
app_id: z.string().optional().describe('Optional app ID to check status for. If omitted, uses the currently active app.'),
|
|
@@ -71,26 +60,35 @@ export const statusTools = [
|
|
|
71
60
|
const session = getSession();
|
|
72
61
|
const targetAppId = app_id || getActiveAppId();
|
|
73
62
|
logger.info(`[get_status] Checking status for app_id=${targetAppId || 'none'}`);
|
|
63
|
+
// Hydrate live app facts from the platform (survives MCP restarts,
|
|
64
|
+
// catches private auto-publish and admin approvals done outside this session)
|
|
65
|
+
const facts = targetAppId ? await getAppFacts(targetAppId) : undefined;
|
|
66
|
+
const profile = facts ? getFlowProfile(facts.appType, facts.appKind) : undefined;
|
|
74
67
|
// Build completed set (global + app-specific)
|
|
75
68
|
const completedGlobal = new Set(session.completedTools);
|
|
76
69
|
const appState = targetAppId ? getAppState(targetAppId) : undefined;
|
|
77
70
|
const completedAll = new Set(getAllCompletedTools());
|
|
78
|
-
// Compute available
|
|
71
|
+
// Compute available / blocked / skipped tools
|
|
79
72
|
const available = [];
|
|
80
73
|
const blocked = {};
|
|
74
|
+
const skippedTools = {};
|
|
81
75
|
for (const tool of ALL_TOOLS) {
|
|
82
76
|
if (completedAll.has(tool))
|
|
83
77
|
continue; // Already done
|
|
84
|
-
const guard = checkToolPrerequisites(tool);
|
|
78
|
+
const guard = await checkToolPrerequisites(tool);
|
|
85
79
|
if (guard.allowed) {
|
|
86
80
|
available.push(tool);
|
|
87
81
|
}
|
|
82
|
+
else if (guard.skipped) {
|
|
83
|
+
skippedTools[tool] = guard.message || 'Not applicable for this app';
|
|
84
|
+
}
|
|
88
85
|
else {
|
|
89
86
|
blocked[tool] = guard.hint || guard.message || 'Prerequisites not met';
|
|
90
87
|
}
|
|
91
88
|
}
|
|
92
|
-
const suggestedNext = computeSuggestedNext(completedAll);
|
|
89
|
+
const suggestedNext = await computeSuggestedNext(completedAll, profile ? [...profile.steps] : []);
|
|
93
90
|
const confirmedScopes = appState?.context.confirmedScopes || session.context.confirmedScopes;
|
|
91
|
+
const liveStatus = facts ? effectiveStatus(facts) : undefined;
|
|
94
92
|
return {
|
|
95
93
|
authenticated: completedGlobal.has('developer_login') || completedGlobal.has('developer_verify_otp'),
|
|
96
94
|
developer_id: session.context.developerId || null,
|
|
@@ -98,17 +96,30 @@ export const statusTools = [
|
|
|
98
96
|
app_id: targetAppId,
|
|
99
97
|
name: appState?.context.appName || session.context.appName || null,
|
|
100
98
|
client_id: appState?.context.clientId || session.context.clientId || null,
|
|
99
|
+
app_type: facts?.appType || appState?.context.appType || null,
|
|
100
|
+
app_kind: facts?.appKind || appState?.context.appKind || null,
|
|
101
|
+
platform_status: liveStatus || null,
|
|
102
|
+
status_source: facts?.source || null,
|
|
101
103
|
scopes_confirmed: appState?.context.scopesConfirmed || false,
|
|
102
104
|
confirmed_scopes: appState?.context.confirmedScopes || [],
|
|
103
105
|
webhooks_configured: appState?.context.webhooksConfigured || false,
|
|
104
|
-
app_approved: appState?.context.appApproved || false,
|
|
105
|
-
app_published: appState?.context.appPublished || false,
|
|
106
|
+
app_approved: liveStatus === 'approved' || liveStatus === 'published' || appState?.context.appApproved || false,
|
|
107
|
+
app_published: liveStatus === 'published' || appState?.context.appPublished || false,
|
|
106
108
|
project_path: appState?.context.projectPath || session.context.projectPath || null,
|
|
107
109
|
completed_tools: appState ? [...appState.completedTools] : [],
|
|
108
110
|
} : null,
|
|
111
|
+
flow: profile ? {
|
|
112
|
+
summary: profile.summary,
|
|
113
|
+
pipeline: profile.steps.map((step) => ({
|
|
114
|
+
step,
|
|
115
|
+
done: completedAll.has(step),
|
|
116
|
+
})),
|
|
117
|
+
kind_fully_supported: isKindFullySupported(facts?.appKind),
|
|
118
|
+
} : null,
|
|
109
119
|
completed: [...completedAll],
|
|
110
120
|
available_now: available,
|
|
111
121
|
blocked,
|
|
122
|
+
skipped: Object.keys(skippedTools).length > 0 ? skippedTools : undefined,
|
|
112
123
|
suggested_next: suggestedNext || null,
|
|
113
124
|
// Hint for webhook setup if scopes confirmed but webhooks not configured
|
|
114
125
|
webhook_hint: (confirmedScopes && confirmedScopes.length > 0 && !appState?.context.webhooksConfigured)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-status.js","sourceRoot":"","sources":["../../src/tools/get-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;;GAGG;AACH,MAAM,SAAS,GAAG;IAChB,OAAO;IACP,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB;IAC7D,YAAY;IACZ,gBAAgB,EAAE,oBAAoB;IACtC,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,qBAAqB,EAAE,yBAAyB;IAChD,WAAW;IACX,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB;IACvD,uBAAuB,EAAE,cAAc,EAAE,mBAAmB;IAC5D,mBAAmB;IACnB,gBAAgB,EAAE,aAAa;IAC/B,UAAU;IACV,kBAAkB,EAAE,qBAAqB;CAC1C,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"get-status.js","sourceRoot":"","sources":["../../src/tools/get-status.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -21,7 +21,7 @@ export const allDevTools = [
|
|
|
21
21
|
...developerAuthTools, // 3 tools
|
|
22
22
|
...referenceDataTools, // 1 tool (get_categories — call before create_app)
|
|
23
23
|
...hookdeckTools, // 1 tool (setup_hookdeck — optional, before create_app)
|
|
24
|
-
...appManagementTools, //
|
|
24
|
+
...appManagementTools, // 6 tools (incl. manage_private_merchants)
|
|
25
25
|
...gatherRequirementsTools, // 1 tool (gather_requirements — NL → scope recommendations)
|
|
26
26
|
...requirementsTools, // 2 tools (define_app_requirements, validate_scopes)
|
|
27
27
|
...scaffoldTools, // 2 tools
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAYA,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,GAAG,kBAAkB,EAAK,UAAU;IACpC,GAAG,kBAAkB,EAAK,oDAAoD;IAC9E,GAAG,aAAa,EAAU,yDAAyD;IACnF,GAAG,kBAAkB,EAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAYA,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,GAAG,kBAAkB,EAAK,UAAU;IACpC,GAAG,kBAAkB,EAAK,oDAAoD;IAC9E,GAAG,aAAa,EAAU,yDAAyD;IACnF,GAAG,kBAAkB,EAAK,2CAA2C;IACrE,GAAG,uBAAuB,EAAE,6DAA6D;IACzF,GAAG,iBAAiB,EAAM,qDAAqD;IAC/E,GAAG,aAAa,EAAU,UAAU;IACpC,GAAG,SAAS,EAAc,mJAAmJ;IAC7K,GAAG,YAAY,EAAW,SAAS;IACnC,GAAG,UAAU,EAAa,UAAU;IACpC,GAAG,eAAe,EAAQ,UAAU;IACpC,GAAG,YAAY,EAAW,+FAA+F;IACzH,GAAG,cAAc,EAAS,SAAS;IACnC,GAAG,WAAW,EAAY,4DAA4D;CACvF,CAAC;AACF,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/tools/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/tools/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA+FjD,eAAO,MAAM,cAAc,EAAE,cAAc,EA4B1C,CAAC"}
|
package/dist/tools/lifecycle.js
CHANGED
|
@@ -21,8 +21,11 @@ const LIFECYCLE_PHASES = [
|
|
|
21
21
|
'2) Ask the developer: "Do you have a callback URL for OAuth, or should we set one up for you?" ' +
|
|
22
22
|
' - If NO: Call setup_hookdeck to provision a persistent public URL (tunnels to their localhost). ' +
|
|
23
23
|
' - If YES: Use their URL directly, skip setup_hookdeck. ' +
|
|
24
|
-
'3) Call create_app with name, description, categories, and callback URL (auto-filled from Hookdeck if set up).'
|
|
25
|
-
|
|
24
|
+
'3) Call create_app with name, description, categories, and callback URL (auto-filled from Hookdeck if set up). ' +
|
|
25
|
+
'4) Choose a distribution type via app_type: "public" (default — listed in the marketplace, any merchant can install, requires admin review) ' +
|
|
26
|
+
'or "private" (installable only by whitelisted merchant_ids, skips human review and auto-publishes). ' +
|
|
27
|
+
'For private apps, pass merchant_ids (at least one) and manage the whitelist later with manage_private_merchants.',
|
|
28
|
+
tools: ['get_categories', 'setup_hookdeck', 'create_app', 'manage_private_merchants'],
|
|
26
29
|
},
|
|
27
30
|
{
|
|
28
31
|
phase: 3,
|
|
@@ -102,7 +105,7 @@ export const lifecycleTools = [
|
|
|
102
105
|
'Scope selection is critical — it drives backend code generation AND webhook suggestions',
|
|
103
106
|
'Always call define_app_requirements with confirmed=false first to preview scopes',
|
|
104
107
|
'Phase 4 (Webhooks) is optional — ask the developer if they need event notifications',
|
|
105
|
-
'Backend code generation
|
|
108
|
+
'Backend code generation works for any resource that has an endpoint schema (codegen_ready=true in gather_requirements / define_app_requirements) — check there rather than assuming',
|
|
106
109
|
'generate_api_routes auto-starts the backend + Hookdeck tunnel — developer never runs npm run dev manually',
|
|
107
110
|
'OAuth happens automatically when merchants install the app — the backend /callback handler exchanges the code for a token and displays it in the console',
|
|
108
111
|
'No need to call request_auth_code or get_access_token manually — the callback flow handles it',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tools/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG;IACvB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,oDAAoD;QACjE,KAAK,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,CAAC;KACvE;IACD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,yBAAyB;YACzB,gEAAgE;YAChE,iGAAiG;YACjG,qGAAqG;YACrG,4DAA4D;YAC5D,
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tools/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import type { ToolDefinition } from './index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reference data tools — fetch platform metadata (categories, tags, etc.)
|
|
4
|
+
* that mirrors what the developer dashboard UI shows.
|
|
5
|
+
*
|
|
6
|
+
* These tools should be called BEFORE create_app / update_app so the developer
|
|
7
|
+
* can make informed selections, just like they would on the dashboard.
|
|
8
|
+
*/
|
|
9
|
+
export interface CategoryItem {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
slug: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
icon?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Fetch all platform categories (cached for the session). */
|
|
17
|
+
export declare function listCategories(): Promise<CategoryItem[]>;
|
|
2
18
|
/**
|
|
3
19
|
* Resolve an array of category identifiers (slugs or UUIDs) to UUIDs.
|
|
4
20
|
* Fetches categories from the API if not cached.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-data.d.ts","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"reference-data.d.ts","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD,8DAA8D;AAC9D,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAU9D;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BxF;AAED,eAAO,MAAM,kBAAkB,EAAE,cAAc,EA2C9C,CAAC"}
|
|
@@ -6,17 +6,21 @@ import { logger } from '../utils/logger.js';
|
|
|
6
6
|
* Populated by get_categories, used by other tools to resolve slugs to UUIDs.
|
|
7
7
|
*/
|
|
8
8
|
let categoriesCache = null;
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
* Fetches categories from the API if not cached.
|
|
12
|
-
*/
|
|
13
|
-
export async function resolveCategoryIdsToUUIDs(categoryIds) {
|
|
14
|
-
// Fetch categories if not cached
|
|
9
|
+
/** Fetch all platform categories (cached for the session). */
|
|
10
|
+
export async function listCategories() {
|
|
15
11
|
if (!categoriesCache) {
|
|
16
12
|
logger.info('Categories not cached — fetching from platform');
|
|
17
13
|
const response = await developerApiRequest('GET', '/categories');
|
|
18
14
|
categoriesCache = response.data;
|
|
19
15
|
}
|
|
16
|
+
return categoriesCache;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve an array of category identifiers (slugs or UUIDs) to UUIDs.
|
|
20
|
+
* Fetches categories from the API if not cached.
|
|
21
|
+
*/
|
|
22
|
+
export async function resolveCategoryIdsToUUIDs(categoryIds) {
|
|
23
|
+
const categories = await listCategories();
|
|
20
24
|
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
21
25
|
const resolved = [];
|
|
22
26
|
const notFound = [];
|
|
@@ -27,7 +31,7 @@ export async function resolveCategoryIdsToUUIDs(categoryIds) {
|
|
|
27
31
|
}
|
|
28
32
|
else {
|
|
29
33
|
// It's a slug — resolve to UUID
|
|
30
|
-
const match =
|
|
34
|
+
const match = categories.find((cat) => cat.slug.toLowerCase() === id.toLowerCase() || cat.name.toLowerCase() === id.toLowerCase());
|
|
31
35
|
if (match) {
|
|
32
36
|
resolved.push(match.id);
|
|
33
37
|
logger.info(`Resolved category slug "${id}" → UUID "${match.id}"`);
|
|
@@ -38,7 +42,7 @@ export async function resolveCategoryIdsToUUIDs(categoryIds) {
|
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
44
|
if (notFound.length > 0) {
|
|
41
|
-
const validSlugs =
|
|
45
|
+
const validSlugs = categories.map((c) => c.slug).join(', ');
|
|
42
46
|
logger.warn(`Categories not found: [${notFound.join(', ')}]. Valid slugs: ${validSlugs}`);
|
|
43
47
|
}
|
|
44
48
|
return resolved;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-data.js","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmB5C;;;GAGG;AACH,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"reference-data.js","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/tools/requirements.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/tools/requirements.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD,eAAO,MAAM,iBAAiB,EAAE,cAAc,EAkR7C,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { ALL_SCOPE_CODES, getResourceForScope,
|
|
3
|
-
import { saveRequirements } from '../store/requirements-store.js';
|
|
2
|
+
import { ALL_SCOPE_CODES, getResourceForScope, SCOPES_BY_RESOURCE } from '@ratio-mcp/shared';
|
|
3
|
+
import { saveRequirements, getRequirements } from '../store/requirements-store.js';
|
|
4
|
+
import { getCodegenReadyResources } from '../utils/schema-resources.js';
|
|
4
5
|
import { getRecommendedWebhookEvents } from './webhooks.js';
|
|
5
6
|
import { developerApiRequest } from '../api/developer.js';
|
|
6
7
|
import { logger } from '../utils/logger.js';
|
|
@@ -67,9 +68,10 @@ export const requirementsTools = [
|
|
|
67
68
|
dataNeedsSet.add(resource);
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
|
-
// Build per-resource breakdown for the preview
|
|
71
|
+
// Build per-resource breakdown for the preview.
|
|
72
|
+
// codegen_ready is DERIVED from schema presence (single source of truth), not a flag.
|
|
73
|
+
const codegenReady = getCodegenReadyResources();
|
|
71
74
|
const resourceBreakdown = [...dataNeedsSet].map((resource) => {
|
|
72
|
-
const meta = RESOURCE_METADATA[resource];
|
|
73
75
|
const resourceScopes = validScopes.filter((s) => getResourceForScope(s) === resource);
|
|
74
76
|
// Get scope details for richer display
|
|
75
77
|
const allResourceScopes = SCOPES_BY_RESOURCE[resource] || [];
|
|
@@ -83,9 +85,9 @@ export const requirementsTools = [
|
|
|
83
85
|
});
|
|
84
86
|
return {
|
|
85
87
|
resource,
|
|
86
|
-
codegen_ready:
|
|
88
|
+
codegen_ready: codegenReady.has(resource),
|
|
87
89
|
scopes: scopeDetails,
|
|
88
|
-
note:
|
|
90
|
+
note: codegenReady.has(resource)
|
|
89
91
|
? 'Backend code will be auto-generated for this resource'
|
|
90
92
|
: 'No API schema available yet — scopes will be registered but code generation will skip this resource',
|
|
91
93
|
};
|
|
@@ -142,13 +144,19 @@ export const requirementsTools = [
|
|
|
142
144
|
};
|
|
143
145
|
}
|
|
144
146
|
// ── If confirmed: save requirements locally + update backend ──
|
|
147
|
+
// Preserve fields set earlier by create_app (app_type/app_kind/client_id/project_path)
|
|
148
|
+
const existing = getRequirements(app_id);
|
|
145
149
|
const requirements = {
|
|
146
150
|
app_id,
|
|
147
|
-
app_name,
|
|
151
|
+
app_name: app_name ?? existing?.app_name,
|
|
152
|
+
client_id: existing?.client_id,
|
|
153
|
+
project_path: existing?.project_path,
|
|
154
|
+
app_type: existing?.app_type,
|
|
155
|
+
app_kind: existing?.app_kind,
|
|
148
156
|
scopes: validScopes,
|
|
149
157
|
data_needs: [...dataNeedsSet],
|
|
150
158
|
features,
|
|
151
|
-
created_at: new Date().toISOString(),
|
|
159
|
+
created_at: existing?.created_at ?? new Date().toISOString(),
|
|
152
160
|
updated_at: new Date().toISOString(),
|
|
153
161
|
};
|
|
154
162
|
saveRequirements(app_id, requirements);
|
|
@@ -182,7 +190,7 @@ export const requirementsTools = [
|
|
|
182
190
|
app_id,
|
|
183
191
|
scopes: validScopes,
|
|
184
192
|
resources: [...dataNeedsSet],
|
|
185
|
-
codegen_resources: [...dataNeedsSet].filter((r) =>
|
|
193
|
+
codegen_resources: [...dataNeedsSet].filter((r) => codegenReady.has(r)),
|
|
186
194
|
features,
|
|
187
195
|
},
|
|
188
196
|
backend_sync: backendSyncResult,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/tools/requirements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/tools/requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/tools/submission.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/tools/submission.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAcjD,eAAO,MAAM,eAAe,EAAE,cAAc,EA6Q3C,CAAC"}
|
package/dist/tools/submission.js
CHANGED
|
@@ -2,6 +2,8 @@ import { z } from 'zod';
|
|
|
2
2
|
import { existsSync, createReadStream, statSync } from 'fs';
|
|
3
3
|
import { homedir } from 'os';
|
|
4
4
|
import { developerApiRequest } from '../api/developer.js';
|
|
5
|
+
import { getAppFacts, invalidateAppFacts } from '../services/app-state-sync.js';
|
|
6
|
+
import { getFlowProfile } from '../services/flow-profiles.js';
|
|
5
7
|
import { logger } from '../utils/logger.js';
|
|
6
8
|
import { ToolExecutionError } from '../utils/errors.js';
|
|
7
9
|
import { resolveCategoryIdsToUUIDs } from './reference-data.js';
|
|
@@ -19,25 +21,37 @@ const STATUS_EXPLANATIONS = {
|
|
|
19
21
|
export const submissionTools = [
|
|
20
22
|
{
|
|
21
23
|
name: 'upload_build',
|
|
22
|
-
description: '
|
|
23
|
-
'
|
|
24
|
+
description: 'Create a new app version on the Ratio Developer Dashboard. ' +
|
|
25
|
+
'For "embedded" apps this uploads the frontend ZIP (use create_submission_zip first). ' +
|
|
26
|
+
'For "no_ui" apps call it WITHOUT zip_path — the version is created file-less (backend-only apps have no frontend). ' +
|
|
27
|
+
'PRIVATE apps AUTO-PUBLISH on upload — no submit_for_review / publish_app needed afterwards.',
|
|
24
28
|
inputSchema: z.object({
|
|
25
29
|
app_id: z.string().min(1).describe('Application ID'),
|
|
26
|
-
zip_path: z.string().
|
|
30
|
+
zip_path: z.string().optional().describe('Absolute path to the zip file. REQUIRED for embedded apps; OMIT for no_ui apps (file-less version).'),
|
|
27
31
|
version: z.string().optional().describe('Version string (e.g. "1.0.0")'),
|
|
28
32
|
changelog: z.string().optional().describe('Changelog for this version'),
|
|
29
33
|
}),
|
|
30
34
|
handler: async (input) => {
|
|
31
35
|
const { app_id, zip_path: rawPath, version, changelog } = input;
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
throw new ToolExecutionError('upload_build', `Zip file not found: ${zipPath}`);
|
|
35
|
-
}
|
|
36
|
-
const zipSize = statSync(zipPath).size;
|
|
37
|
-
logger.info(`Uploading build: ${zipPath} (${(zipSize / 1024 / 1024).toFixed(2)}MB)`);
|
|
38
|
-
// Create FormData — note: we import from 'form-data' (node)
|
|
36
|
+
const facts = await getAppFacts(app_id);
|
|
37
|
+
const profile = getFlowProfile(facts.appType, facts.appKind);
|
|
39
38
|
const formData = new FormData();
|
|
40
|
-
|
|
39
|
+
if (profile.uploadNeedsZip) {
|
|
40
|
+
if (!rawPath) {
|
|
41
|
+
throw new ToolExecutionError('upload_build', `zip_path is required for ${facts.appKind ?? 'embedded'} apps. Call create_submission_zip first.`);
|
|
42
|
+
}
|
|
43
|
+
const zipPath = rawPath.startsWith('~') ? rawPath.replace('~', homedir()) : rawPath;
|
|
44
|
+
if (!existsSync(zipPath)) {
|
|
45
|
+
throw new ToolExecutionError('upload_build', `Zip file not found: ${zipPath}`);
|
|
46
|
+
}
|
|
47
|
+
const zipSize = statSync(zipPath).size;
|
|
48
|
+
logger.info(`Uploading build: ${zipPath} (${(zipSize / 1024 / 1024).toFixed(2)}MB)`);
|
|
49
|
+
formData.append('buildZip', createReadStream(zipPath));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// no_ui: file-less upload — the backend creates the version without a build zip.
|
|
53
|
+
logger.info(`[upload_build] File-less version creation for ${facts.appKind} app ${app_id}`);
|
|
54
|
+
}
|
|
41
55
|
if (version)
|
|
42
56
|
formData.append('version', version);
|
|
43
57
|
if (changelog)
|
|
@@ -49,11 +63,32 @@ export const submissionTools = [
|
|
|
49
63
|
maxBodyLength: Infinity,
|
|
50
64
|
},
|
|
51
65
|
});
|
|
66
|
+
// Platform state changed — refetch on next guard check
|
|
67
|
+
invalidateAppFacts(app_id);
|
|
68
|
+
// Private apps auto-publish inside the upload transaction — detect it from
|
|
69
|
+
// the returned version status so the LLM doesn't try submit/publish.
|
|
70
|
+
const versionData = (response?.['data'] ?? response);
|
|
71
|
+
const versionStatus = versionData?.['status']?.toLowerCase();
|
|
72
|
+
const autoPublished = versionStatus === 'published';
|
|
52
73
|
return {
|
|
53
74
|
success: true,
|
|
54
|
-
message:
|
|
75
|
+
message: autoPublished
|
|
76
|
+
? 'Build uploaded — the app auto-published (private app). No review or publish step needed.'
|
|
77
|
+
: profile.uploadNeedsZip
|
|
78
|
+
? 'Build uploaded successfully'
|
|
79
|
+
: 'Version created successfully (file-less — no_ui app)',
|
|
80
|
+
version_status: versionStatus,
|
|
81
|
+
auto_published: autoPublished,
|
|
55
82
|
response,
|
|
56
|
-
next_steps:
|
|
83
|
+
next_steps: autoPublished
|
|
84
|
+
? [
|
|
85
|
+
'1. The app is PUBLISHED — whitelisted merchants can install it now',
|
|
86
|
+
'2. Call scaffold_backend to generate the backend with the OAuth callback handler',
|
|
87
|
+
'3. Then generate_api_routes for scope-filtered API routes',
|
|
88
|
+
]
|
|
89
|
+
: profile.appType === 'private'
|
|
90
|
+
? ['1. Check get_app_status — private apps normally auto-publish on upload']
|
|
91
|
+
: ['1. Call submit_for_review to submit for admin review'],
|
|
57
92
|
};
|
|
58
93
|
},
|
|
59
94
|
},
|
|
@@ -89,6 +124,7 @@ export const submissionTools = [
|
|
|
89
124
|
if (tags)
|
|
90
125
|
body['tags'] = tags;
|
|
91
126
|
const response = await developerApiRequest('POST', `/applications/submit`, body);
|
|
127
|
+
invalidateAppFacts(app_id);
|
|
92
128
|
return {
|
|
93
129
|
success: true,
|
|
94
130
|
message: 'Application submitted for review',
|
|
@@ -180,6 +216,7 @@ export const submissionTools = [
|
|
|
180
216
|
logger.info(`[publish_app] Publishing app_id=${app_id}, version_id=${versionId}`);
|
|
181
217
|
try {
|
|
182
218
|
const response = await developerApiRequest('POST', `/developer/apps/${app_id}/versions/${versionId}/publish`);
|
|
219
|
+
invalidateAppFacts(app_id);
|
|
183
220
|
// Build the published frontend URL (QA environment)
|
|
184
221
|
const PROD_BASE = 'https://prodecosystem.gokwik.co';
|
|
185
222
|
const frontendUrl = developerId && versionNumber
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/tools/submission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,mBAAmB,GAA2B;IAClD,KAAK,EAAE,8DAA8D;IACrE,SAAS,EAAE,uDAAuD;IAClE,SAAS,EAAE,2CAA2C;IACtD,QAAQ,EAAE,wDAAwD;IAClE,QAAQ,EAAE,wDAAwD;IAClE,SAAS,EAAE,8CAA8C;IACzD,SAAS,EAAE,kCAAkC;IAC7C,QAAQ,EAAE,wBAAwB;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/tools/submission.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8GjD;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3E,WAAW,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/H,KAAK,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,kBAAkB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChH,CAAC,CAqED;AAID,eAAO,MAAM,YAAY,EAAE,cAAc,EA+SxC,CAAC"}
|
package/dist/tools/webhooks.js
CHANGED
|
@@ -10,9 +10,11 @@ import { getSession } from '../services/session-state.js';
|
|
|
10
10
|
// This is intentionally loose — we match category names that contain the resource.
|
|
11
11
|
//
|
|
12
12
|
const SCOPE_RESOURCE_TO_CATEGORIES = {
|
|
13
|
+
// read_products also gates collections/* and reviews/* webhooks (see backend TOPIC_SCOPE_MAP)
|
|
13
14
|
orders: ['orders'],
|
|
14
|
-
products: ['products', 'app.ecosystem.products'],
|
|
15
|
+
products: ['products', 'app.ecosystem.products', 'collections', 'reviews'],
|
|
15
16
|
customers: ['customers'],
|
|
17
|
+
loyalty: ['loyalty'],
|
|
16
18
|
inventory: ['inventory', 'inventory_levels', 'inventory_items'],
|
|
17
19
|
fulfillments: ['fulfillments'],
|
|
18
20
|
collections: ['collections'],
|