@ratio-mcp/dev-server 1.2.0 → 1.3.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/dist/data/scope-webhook-map.d.ts +26 -0
- package/dist/data/scope-webhook-map.d.ts.map +1 -0
- package/dist/data/scope-webhook-map.js +117 -0
- package/dist/data/scope-webhook-map.js.map +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -13
- package/dist/index.js.map +1 -1
- package/dist/orchestrated-index.d.ts +4 -9
- package/dist/orchestrated-index.d.ts.map +1 -1
- package/dist/orchestrated-index.js +6 -14
- package/dist/orchestrated-index.js.map +1 -1
- package/dist/orchestrated-server.d.ts +14 -9
- package/dist/orchestrated-server.d.ts.map +1 -1
- package/dist/orchestrated-server.js +86 -48
- package/dist/orchestrated-server.js.map +1 -1
- package/dist/services/session-state.d.ts +36 -16
- package/dist/services/session-state.d.ts.map +1 -1
- package/dist/services/session-state.js +175 -140
- package/dist/services/session-state.js.map +1 -1
- package/dist/services/tool-guard.d.ts +29 -9
- package/dist/services/tool-guard.d.ts.map +1 -1
- package/dist/services/tool-guard.js +76 -50
- package/dist/services/tool-guard.js.map +1 -1
- package/dist/templates/frontend/.env.example +1 -1
- package/dist/templates/frontend/src/pages/Login.tsx +1 -1
- package/dist/tools/codegen.d.ts.map +1 -1
- package/dist/tools/codegen.js +206 -10
- package/dist/tools/codegen.js.map +1 -1
- package/dist/tools/get-status.d.ts +3 -0
- package/dist/tools/get-status.d.ts.map +1 -0
- package/dist/tools/get-status.js +127 -0
- package/dist/tools/get-status.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lifecycle.js +1 -1
- package/dist/tools/lifecycle.js.map +1 -1
- package/dist/tools/requirements.d.ts.map +1 -1
- package/dist/tools/requirements.js +41 -4
- package/dist/tools/requirements.js.map +1 -1
- package/dist/tools/scaffold.d.ts.map +1 -1
- package/dist/tools/scaffold.js +10 -5
- package/dist/tools/scaffold.js.map +1 -1
- package/dist/tools/webhooks.d.ts +25 -0
- package/dist/tools/webhooks.d.ts.map +1 -1
- package/dist/tools/webhooks.js +115 -89
- package/dist/tools/webhooks.js.map +1 -1
- package/dist/utils/logger.js +17 -17
- package/dist/utils/logger.js.map +1 -1
- package/package.json +16 -15
|
@@ -2,126 +2,127 @@ import { getSession, hasCompleted, hasCompletedAny } from './session-state.js';
|
|
|
2
2
|
import { logger } from '../utils/logger.js';
|
|
3
3
|
// ── Prerequisite rules ──────────────────────────────────────────────────
|
|
4
4
|
const TOOL_PREREQUISITES = {
|
|
5
|
-
// ──
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
// ── Auth (entry points — no prerequisites) ────────────────────────────
|
|
6
|
+
// developer_login, developer_signup: no entry needed (always allowed)
|
|
7
|
+
developer_verify_otp: () => {
|
|
8
|
+
if (!hasCompleted('developer_signup')) {
|
|
9
|
+
return blocked('You must sign up first before verifying OTP.', ['developer_signup'], ['developer_signup', 'developer_verify_otp']);
|
|
9
10
|
}
|
|
10
11
|
return allowed();
|
|
11
12
|
},
|
|
13
|
+
// ── Read-only tools (no auth needed) ──────────────────────────────────
|
|
14
|
+
// get_categories: no entry needed (always allowed — read-only, anyone can browse)
|
|
15
|
+
// get_status: no entry needed (always allowed)
|
|
16
|
+
// get_app_lifecycle: no entry needed (always allowed)
|
|
17
|
+
// ── App Setup (needs auth) ────────────────────────────────────────────
|
|
12
18
|
create_app: () => {
|
|
13
19
|
if (!isAuthenticated()) {
|
|
14
|
-
return blocked('You must authenticate first. Call developer_login.', ['developer_login']);
|
|
15
|
-
}
|
|
16
|
-
if (!hasCompleted('get_categories')) {
|
|
17
|
-
return blocked('You must call get_categories first so the developer can choose app categories.', ['get_categories']);
|
|
20
|
+
return blocked('You must authenticate first. Call developer_login.', ['developer_login'], ['developer_login', 'create_app']);
|
|
18
21
|
}
|
|
19
22
|
return allowed();
|
|
20
23
|
},
|
|
21
|
-
// ──
|
|
24
|
+
// ── Requirements (needs app) ──────────────────────────────────────────
|
|
22
25
|
gather_requirements: () => {
|
|
23
26
|
if (!getSession().context.appId) {
|
|
24
|
-
return blocked('You must create an app first
|
|
27
|
+
return blocked('You must create an app first before gathering requirements.', ['create_app'], ['developer_login', 'create_app', 'gather_requirements']);
|
|
25
28
|
}
|
|
26
29
|
return allowed();
|
|
27
30
|
},
|
|
28
31
|
define_app_requirements: () => {
|
|
29
|
-
if (!getSession().context.appId) {
|
|
30
|
-
return blocked('You must create an app first (create_app) before defining scopes.', ['get_categories', 'create_app']);
|
|
31
|
-
}
|
|
32
32
|
if (!hasCompleted('gather_requirements')) {
|
|
33
33
|
return blocked('You must call gather_requirements first to analyze what the developer wants to build, ' +
|
|
34
|
-
'then use the recommended scopes with define_app_requirements.', ['gather_requirements']);
|
|
34
|
+
'then use the recommended scopes with define_app_requirements.', ['gather_requirements'], ['gather_requirements', 'define_app_requirements']);
|
|
35
35
|
}
|
|
36
36
|
return allowed();
|
|
37
37
|
},
|
|
38
|
-
// ──
|
|
38
|
+
// ── Webhooks (needs scopes confirmed) ─────────────────────────────────
|
|
39
39
|
get_webhook_topics: () => {
|
|
40
|
-
|
|
41
|
-
return blocked('You must authenticate first.', ['developer_login']);
|
|
42
|
-
}
|
|
43
|
-
if (!getSession().context.scopesConfirmed) {
|
|
44
|
-
return blocked('You must confirm scopes first (define_app_requirements) before configuring webhooks. ' +
|
|
45
|
-
'Webhook events are suggested based on the selected scopes.', ['define_app_requirements']);
|
|
46
|
-
}
|
|
40
|
+
// Read-only browsing of webhook topics — no prerequisites
|
|
47
41
|
return allowed();
|
|
48
42
|
},
|
|
49
43
|
create_webhooks: () => {
|
|
50
44
|
if (!getSession().context.appId) {
|
|
51
|
-
return blocked('You must create an app first before configuring webhooks.', ['create_app']);
|
|
45
|
+
return blocked('You must create an app first before configuring webhooks.', ['create_app'], ['developer_login', 'create_app', 'create_webhooks']);
|
|
52
46
|
}
|
|
53
47
|
if (!getSession().context.scopesConfirmed) {
|
|
54
|
-
return blocked('You must confirm scopes first
|
|
48
|
+
return blocked('You must confirm scopes first (define_app_requirements) before configuring webhooks. ' +
|
|
49
|
+
'Webhook events should be based on the selected scopes.', ['define_app_requirements'], ['gather_requirements', 'define_app_requirements', 'create_webhooks']);
|
|
55
50
|
}
|
|
56
51
|
return allowed();
|
|
57
52
|
},
|
|
58
|
-
// ──
|
|
53
|
+
// ── Frontend Build Pipeline (needs scopes confirmed) ──────────────────
|
|
59
54
|
scaffold_frontend: () => {
|
|
60
|
-
if (!getSession().context.appId) {
|
|
61
|
-
return blocked('You must create an app first before scaffolding.', ['create_app']);
|
|
62
|
-
}
|
|
63
55
|
if (!getSession().context.scopesConfirmed) {
|
|
64
|
-
return blocked('You must define and confirm app scopes before scaffolding.', ['define_app_requirements']);
|
|
56
|
+
return blocked('You must define and confirm app scopes (define_app_requirements) before scaffolding the frontend.', ['define_app_requirements'], ['gather_requirements', 'define_app_requirements', 'scaffold_frontend']);
|
|
65
57
|
}
|
|
66
58
|
return allowed();
|
|
67
59
|
},
|
|
68
60
|
build_frontend: () => {
|
|
69
61
|
if (!hasCompleted('scaffold_frontend')) {
|
|
70
|
-
return blocked('You must scaffold the frontend first before building.', ['scaffold_frontend']);
|
|
62
|
+
return blocked('You must scaffold the frontend first before building.', ['scaffold_frontend'], ['scaffold_frontend', 'build_frontend']);
|
|
71
63
|
}
|
|
72
64
|
return allowed();
|
|
73
65
|
},
|
|
74
|
-
|
|
66
|
+
validate_build: () => {
|
|
75
67
|
if (!hasCompleted('build_frontend')) {
|
|
76
|
-
return blocked('You must build the frontend first before
|
|
68
|
+
return blocked('You must build the frontend first before validating.', ['build_frontend'], ['scaffold_frontend', 'build_frontend', 'validate_build']);
|
|
69
|
+
}
|
|
70
|
+
return allowed();
|
|
71
|
+
},
|
|
72
|
+
create_submission_zip: () => {
|
|
73
|
+
if (!hasCompleted('validate_build')) {
|
|
74
|
+
return blocked('You must validate the build first before creating a submission zip.', ['validate_build'], ['scaffold_frontend', 'build_frontend', 'validate_build', 'create_submission_zip']);
|
|
77
75
|
}
|
|
78
76
|
return allowed();
|
|
79
77
|
},
|
|
80
78
|
upload_build: () => {
|
|
81
|
-
if (!hasCompleted('
|
|
82
|
-
return blocked('You must
|
|
79
|
+
if (!hasCompleted('create_submission_zip')) {
|
|
80
|
+
return blocked('You must create a submission zip first before uploading.', ['create_submission_zip'], ['scaffold_frontend', 'build_frontend', 'validate_build', 'create_submission_zip', 'upload_build']);
|
|
83
81
|
}
|
|
84
82
|
return allowed();
|
|
85
83
|
},
|
|
86
84
|
submit_for_review: () => {
|
|
87
|
-
if (!
|
|
88
|
-
return blocked('You must upload the build first before submitting for review.', ['upload_build']);
|
|
85
|
+
if (!hasCompleted('upload_build')) {
|
|
86
|
+
return blocked('You must upload the build first before submitting for review.', ['upload_build'], ['upload_build', 'submit_for_review']);
|
|
89
87
|
}
|
|
90
88
|
return allowed();
|
|
91
89
|
},
|
|
92
|
-
// ──
|
|
90
|
+
// ── Review & Publish ──────────────────────────────────────────────────
|
|
91
|
+
get_app_status: () => requireAuth(),
|
|
93
92
|
publish_app: () => {
|
|
94
93
|
if (!getSession().context.appApproved) {
|
|
95
|
-
return blocked('The app must be approved by admin before publishing. Call get_app_status to check.', ['get_app_status']);
|
|
94
|
+
return blocked('The app must be approved by admin before publishing. Call get_app_status to check review status.', ['get_app_status'], ['submit_for_review', 'get_app_status', 'publish_app']);
|
|
96
95
|
}
|
|
97
96
|
return allowed();
|
|
98
97
|
},
|
|
98
|
+
// ── OAuth Flow (needs published app) ──────────────────────────────────
|
|
99
99
|
request_auth_code: () => {
|
|
100
100
|
if (!getSession().context.appPublished && !hasCompleted('publish_app')) {
|
|
101
|
-
return blocked('You must publish the app first before starting the OAuth flow.', ['publish_app']);
|
|
101
|
+
return blocked('You must publish the app first before starting the OAuth flow.', ['publish_app'], ['publish_app', 'request_auth_code']);
|
|
102
102
|
}
|
|
103
103
|
return allowed();
|
|
104
104
|
},
|
|
105
105
|
get_access_token: () => {
|
|
106
106
|
if (!hasCompleted('request_auth_code')) {
|
|
107
|
-
return blocked('You must request an authorization code first.', ['request_auth_code']);
|
|
107
|
+
return blocked('You must request an authorization code first.', ['request_auth_code'], ['request_auth_code', 'get_access_token']);
|
|
108
108
|
}
|
|
109
109
|
return allowed();
|
|
110
110
|
},
|
|
111
|
-
// ──
|
|
111
|
+
// ── Backend Codegen (needs OAuth completed) ───────────────────────────
|
|
112
112
|
scaffold_backend: () => {
|
|
113
113
|
if (!getSession().context.oauthCompleted) {
|
|
114
|
-
return blocked('You must complete the OAuth flow (get_access_token) before scaffolding the backend.'
|
|
114
|
+
return blocked('You must complete the OAuth flow (get_access_token) before scaffolding the backend. ' +
|
|
115
|
+
'The backend needs OAuth tokens to call merchant APIs.', ['get_access_token'], ['publish_app', 'request_auth_code', 'get_access_token', 'scaffold_backend']);
|
|
115
116
|
}
|
|
116
117
|
return allowed();
|
|
117
118
|
},
|
|
118
119
|
generate_api_routes: () => {
|
|
119
120
|
if (!hasCompleted('scaffold_backend')) {
|
|
120
|
-
return blocked('You must scaffold the backend first before generating API routes.', ['scaffold_backend']);
|
|
121
|
+
return blocked('You must scaffold the backend first before generating API routes.', ['scaffold_backend'], ['scaffold_backend', 'generate_api_routes']);
|
|
121
122
|
}
|
|
122
123
|
return allowed();
|
|
123
124
|
},
|
|
124
|
-
// ── Management tools (auth only)
|
|
125
|
+
// ── Management tools (auth only) ──────────────────────────────────────
|
|
125
126
|
update_app: () => requireAuth(),
|
|
126
127
|
delete_app: () => requireAuth(),
|
|
127
128
|
list_apps: () => requireAuth(),
|
|
@@ -129,36 +130,61 @@ const TOOL_PREREQUISITES = {
|
|
|
129
130
|
list_webhooks: () => requireAuth(),
|
|
130
131
|
toggle_webhook: () => requireAuth(),
|
|
131
132
|
delete_webhook: () => requireAuth(),
|
|
132
|
-
get_app_status: () => requireAuth(),
|
|
133
133
|
refresh_access_token: () => requireAuth(),
|
|
134
134
|
check_token_status: () => requireAuth(),
|
|
135
|
-
validate_build: () => requireAuth(),
|
|
136
135
|
};
|
|
137
136
|
// ── Helpers ─────────────────────────────────────────────────────────────
|
|
138
137
|
function allowed() {
|
|
139
138
|
return { allowed: true };
|
|
140
139
|
}
|
|
141
|
-
function blocked(message, requiredTools) {
|
|
142
|
-
return {
|
|
140
|
+
function blocked(message, requiredTools, chain) {
|
|
141
|
+
return {
|
|
142
|
+
allowed: false,
|
|
143
|
+
message,
|
|
144
|
+
requiredTools,
|
|
145
|
+
chain,
|
|
146
|
+
hint: `Please call ${requiredTools.join(' → ')} first, then retry.`,
|
|
147
|
+
};
|
|
143
148
|
}
|
|
144
149
|
function isAuthenticated() {
|
|
145
150
|
return hasCompletedAny(['developer_login', 'developer_verify_otp']);
|
|
146
151
|
}
|
|
147
152
|
function requireAuth() {
|
|
148
153
|
if (!isAuthenticated()) {
|
|
149
|
-
return blocked('You must authenticate first. Call developer_login or developer_signup.', ['developer_login']);
|
|
154
|
+
return blocked('You must authenticate first. Call developer_login or developer_signup + developer_verify_otp.', ['developer_login'], ['developer_login']);
|
|
150
155
|
}
|
|
151
156
|
return allowed();
|
|
152
157
|
}
|
|
153
158
|
// ── Public API ──────────────────────────────────────────────────────────
|
|
159
|
+
/**
|
|
160
|
+
* Check whether a tool's prerequisites are met.
|
|
161
|
+
* Returns structured result with error details if blocked.
|
|
162
|
+
*/
|
|
154
163
|
export function checkToolPrerequisites(toolName) {
|
|
155
164
|
const check = TOOL_PREREQUISITES[toolName];
|
|
156
165
|
if (!check)
|
|
157
|
-
return allowed();
|
|
166
|
+
return allowed(); // No prerequisites defined → always allowed
|
|
158
167
|
const result = check();
|
|
159
168
|
if (!result.allowed) {
|
|
160
169
|
logger.info(`GUARD BLOCKED: ${toolName} — ${result.message} (need: [${result.requiredTools?.join(', ')}])`);
|
|
161
170
|
}
|
|
162
171
|
return result;
|
|
163
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Get the full prerequisite chain for a tool (for status display).
|
|
175
|
+
* Returns tool names that must be completed before this tool can run.
|
|
176
|
+
*/
|
|
177
|
+
export function getToolPrerequisiteNames(toolName) {
|
|
178
|
+
const check = TOOL_PREREQUISITES[toolName];
|
|
179
|
+
if (!check)
|
|
180
|
+
return [];
|
|
181
|
+
const result = check();
|
|
182
|
+
return result.chain || result.requiredTools || [];
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get all tool names that have prerequisites defined.
|
|
186
|
+
*/
|
|
187
|
+
export function getGuardedToolNames() {
|
|
188
|
+
return Object.keys(TOOL_PREREQUISITES);
|
|
189
|
+
}
|
|
164
190
|
//# sourceMappingURL=tool-guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-guard.js","sourceRoot":"","sources":["../../src/services/tool-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-guard.js","sourceRoot":"","sources":["../../src/services/tool-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA6B5C,2EAA2E;AAE3E,MAAM,kBAAkB,GAAsC;IAE5D,yEAAyE;IACzE,sEAAsE;IAEtE,oBAAoB,EAAE,GAAG,EAAE;QACzB,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO,CACZ,8CAA8C,EAC9C,CAAC,kBAAkB,CAAC,EACpB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAC7C,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,kFAAkF;IAClF,+CAA+C;IAC/C,sDAAsD;IAEtD,yEAAyE;IACzE,UAAU,EAAE,GAAG,EAAE;QACf,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACvB,OAAO,OAAO,CACZ,oDAAoD,EACpD,CAAC,iBAAiB,CAAC,EACnB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAClC,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,mBAAmB,EAAE,GAAG,EAAE;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,OAAO,CACZ,6DAA6D,EAC7D,CAAC,YAAY,CAAC,EACd,CAAC,iBAAiB,EAAE,YAAY,EAAE,qBAAqB,CAAC,CACzD,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,uBAAuB,EAAE,GAAG,EAAE;QAC5B,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACzC,OAAO,OAAO,CACZ,wFAAwF;gBACxF,+DAA+D,EAC/D,CAAC,qBAAqB,CAAC,EACvB,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CACnD,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,kBAAkB,EAAE,GAAG,EAAE;QACvB,0DAA0D;QAC1D,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,EAAE,GAAG,EAAE;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,OAAO,CACZ,2DAA2D,EAC3D,CAAC,YAAY,CAAC,EACd,CAAC,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,CAAC,CACrD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1C,OAAO,OAAO,CACZ,uFAAuF;gBACvF,wDAAwD,EACxD,CAAC,yBAAyB,CAAC,EAC3B,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,CAAC,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,iBAAiB,EAAE,GAAG,EAAE;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1C,OAAO,OAAO,CACZ,mGAAmG,EACnG,CAAC,yBAAyB,CAAC,EAC3B,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,mBAAmB,CAAC,CACxE,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,cAAc,EAAE,GAAG,EAAE;QACnB,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,OAAO,OAAO,CACZ,uDAAuD,EACvD,CAAC,mBAAmB,CAAC,EACrB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CACxC,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,cAAc,EAAE,GAAG,EAAE;QACnB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CACZ,sDAAsD,EACtD,CAAC,gBAAgB,CAAC,EAClB,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,qBAAqB,EAAE,GAAG,EAAE;QAC1B,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CACZ,qEAAqE,EACrE,CAAC,gBAAgB,CAAC,EAClB,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,YAAY,EAAE,GAAG,EAAE;QACjB,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC3C,OAAO,OAAO,CACZ,0DAA0D,EAC1D,CAAC,uBAAuB,CAAC,EACzB,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,cAAc,CAAC,CACnG,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,iBAAiB,EAAE,GAAG,EAAE;QACtB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,OAAO,OAAO,CACZ,+DAA+D,EAC/D,CAAC,cAAc,CAAC,EAChB,CAAC,cAAc,EAAE,mBAAmB,CAAC,CACtC,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAEnC,WAAW,EAAE,GAAG,EAAE;QAChB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACtC,OAAO,OAAO,CACZ,kGAAkG,EAClG,CAAC,gBAAgB,CAAC,EAClB,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,iBAAiB,EAAE,GAAG,EAAE;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;YACvE,OAAO,OAAO,CACZ,gEAAgE,EAChE,CAAC,aAAa,CAAC,EACf,CAAC,aAAa,EAAE,mBAAmB,CAAC,CACrC,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,gBAAgB,EAAE,GAAG,EAAE;QACrB,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,OAAO,OAAO,CACZ,+CAA+C,EAC/C,CAAC,mBAAmB,CAAC,EACrB,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAC1C,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,gBAAgB,EAAE,GAAG,EAAE;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YACzC,OAAO,OAAO,CACZ,sFAAsF;gBACtF,uDAAuD,EACvD,CAAC,kBAAkB,CAAC,EACpB,CAAC,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAC7E,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,mBAAmB,EAAE,GAAG,EAAE;QACxB,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO,CACZ,mEAAmE,EACnE,CAAC,kBAAkB,CAAC,EACpB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAC5C,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAC/B,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAC5B,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAClC,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IACnC,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IACnC,oBAAoB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,kBAAkB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;CACxC,CAAC;AAEF,2EAA2E;AAE3E,SAAS,OAAO;IACd,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,aAAuB,EAAE,KAAgB;IACzE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO;QACP,aAAa;QACb,KAAK;QACL,IAAI,EAAE,eAAe,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,eAAe,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,OAAO,OAAO,CACZ,+FAA+F,EAC/F,CAAC,iBAAiB,CAAC,EACnB,CAAC,iBAAiB,CAAC,CACpB,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,2EAA2E;AAE3E;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,EAAE,CAAC,CAAC,4CAA4C;IAE1E,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CACT,kBAAkB,QAAQ,MAAM,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default function Login() {
|
|
2
2
|
const clientId = import.meta.env.VITE_RATIO_CLIENT_ID || '';
|
|
3
3
|
const redirectUri = import.meta.env.VITE_RATIO_REDIRECT_URI || `${window.location.origin}/callback`;
|
|
4
|
-
const dashboardUrl = import.meta.env.VITE_RATIO_DASHBOARD_URL || 'https://
|
|
4
|
+
const dashboardUrl = import.meta.env.VITE_RATIO_DASHBOARD_URL || 'https://dev-developers.dev.gokwik.in';
|
|
5
5
|
|
|
6
6
|
const handleLogin = () => {
|
|
7
7
|
// Redirect to Ratio OAuth consent screen
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/tools/codegen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/tools/codegen.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkbjD,eAAO,MAAM,YAAY,EAAE,cAAc,EAkKxC,CAAC"}
|
package/dist/tools/codegen.js
CHANGED
|
@@ -4,6 +4,7 @@ import { mkdir, writeFile, readFile } from 'fs/promises';
|
|
|
4
4
|
import { join } from 'path';
|
|
5
5
|
import { homedir } from 'os';
|
|
6
6
|
import { getRequirements } from '../store/requirements-store.js';
|
|
7
|
+
import { getSession } from '../services/session-state.js';
|
|
7
8
|
import { logger } from '../utils/logger.js';
|
|
8
9
|
import { ToolExecutionError } from '../utils/errors.js';
|
|
9
10
|
// Import schemas directly — in a real setup these come from the docs-server
|
|
@@ -226,6 +227,183 @@ function getCommonBasePath(paths) {
|
|
|
226
227
|
}
|
|
227
228
|
return common.replace(/^\//, '');
|
|
228
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Generate webhook receiver code: controller + service + module.
|
|
232
|
+
* Includes HMAC-SHA256 signature verification and per-event handler stubs.
|
|
233
|
+
*/
|
|
234
|
+
function generateWebhookServiceCode() {
|
|
235
|
+
return `import { Injectable, Logger } from '@nestjs/common';
|
|
236
|
+
import { ConfigService } from '@nestjs/config';
|
|
237
|
+
import * as crypto from 'crypto';
|
|
238
|
+
|
|
239
|
+
@Injectable()
|
|
240
|
+
export class WebhookService {
|
|
241
|
+
private readonly logger = new Logger(WebhookService.name);
|
|
242
|
+
private readonly webhookSecret: string;
|
|
243
|
+
|
|
244
|
+
constructor(private configService: ConfigService) {
|
|
245
|
+
this.webhookSecret = this.configService.get<string>('RATIO_APP_SECRET', '');
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Verify webhook signature using HMAC-SHA256.
|
|
250
|
+
* The signature is sent in the X-Ratio-Hmac-SHA256 header.
|
|
251
|
+
*/
|
|
252
|
+
verifySignature(rawBody: string, signature: string): boolean {
|
|
253
|
+
const computed = crypto
|
|
254
|
+
.createHmac('sha256', this.webhookSecret)
|
|
255
|
+
.update(rawBody, 'utf8')
|
|
256
|
+
.digest('base64');
|
|
257
|
+
|
|
258
|
+
try {
|
|
259
|
+
return crypto.timingSafeEqual(
|
|
260
|
+
Buffer.from(signature),
|
|
261
|
+
Buffer.from(computed),
|
|
262
|
+
);
|
|
263
|
+
} catch {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Route webhook event to the appropriate handler.
|
|
270
|
+
*/
|
|
271
|
+
async handleEvent(topic: string, payload: Record<string, unknown>): Promise<void> {
|
|
272
|
+
this.logger.log(\`Received webhook: \${topic}\`);
|
|
273
|
+
|
|
274
|
+
switch (topic) {
|
|
275
|
+
case 'orders/create':
|
|
276
|
+
await this.onOrderCreated(payload);
|
|
277
|
+
break;
|
|
278
|
+
case 'orders/updated':
|
|
279
|
+
await this.onOrderUpdated(payload);
|
|
280
|
+
break;
|
|
281
|
+
case 'orders/cancelled':
|
|
282
|
+
await this.onOrderCancelled(payload);
|
|
283
|
+
break;
|
|
284
|
+
case 'orders/fulfilled':
|
|
285
|
+
await this.onOrderFulfilled(payload);
|
|
286
|
+
break;
|
|
287
|
+
case 'orders/paid':
|
|
288
|
+
await this.onOrderPaid(payload);
|
|
289
|
+
break;
|
|
290
|
+
case 'products/create':
|
|
291
|
+
await this.onProductCreated(payload);
|
|
292
|
+
break;
|
|
293
|
+
case 'products/update':
|
|
294
|
+
await this.onProductUpdated(payload);
|
|
295
|
+
break;
|
|
296
|
+
case 'products/delete':
|
|
297
|
+
await this.onProductDeleted(payload);
|
|
298
|
+
break;
|
|
299
|
+
case 'app/uninstalled':
|
|
300
|
+
await this.onAppUninstalled(payload);
|
|
301
|
+
break;
|
|
302
|
+
default:
|
|
303
|
+
this.logger.warn(\`Unhandled webhook topic: \${topic}\`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// ── Event Handlers (implement your business logic here) ──────────
|
|
308
|
+
|
|
309
|
+
private async onOrderCreated(payload: Record<string, unknown>): Promise<void> {
|
|
310
|
+
this.logger.log('Order created', payload);
|
|
311
|
+
// TODO: Implement order creation handling
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
private async onOrderUpdated(payload: Record<string, unknown>): Promise<void> {
|
|
315
|
+
this.logger.log('Order updated', payload);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
private async onOrderCancelled(payload: Record<string, unknown>): Promise<void> {
|
|
319
|
+
this.logger.log('Order cancelled', payload);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
private async onOrderFulfilled(payload: Record<string, unknown>): Promise<void> {
|
|
323
|
+
this.logger.log('Order fulfilled', payload);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
private async onOrderPaid(payload: Record<string, unknown>): Promise<void> {
|
|
327
|
+
this.logger.log('Order paid', payload);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
private async onProductCreated(payload: Record<string, unknown>): Promise<void> {
|
|
331
|
+
this.logger.log('Product created', payload);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
private async onProductUpdated(payload: Record<string, unknown>): Promise<void> {
|
|
335
|
+
this.logger.log('Product updated', payload);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
private async onProductDeleted(payload: Record<string, unknown>): Promise<void> {
|
|
339
|
+
this.logger.log('Product deleted', payload);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
private async onAppUninstalled(payload: Record<string, unknown>): Promise<void> {
|
|
343
|
+
this.logger.warn('App uninstalled by merchant', payload);
|
|
344
|
+
// TODO: Clean up merchant data, revoke tokens
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
`;
|
|
348
|
+
}
|
|
349
|
+
function generateWebhookControllerCode() {
|
|
350
|
+
return `import { Controller, Post, Headers, Body, Req, HttpCode, HttpStatus, Logger, RawBodyRequest } from '@nestjs/common';
|
|
351
|
+
import { WebhookService } from './webhook.service';
|
|
352
|
+
import { Request } from 'express';
|
|
353
|
+
|
|
354
|
+
@Controller('webhooks')
|
|
355
|
+
export class WebhookController {
|
|
356
|
+
private readonly logger = new Logger(WebhookController.name);
|
|
357
|
+
|
|
358
|
+
constructor(private readonly webhookService: WebhookService) {}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Webhook receiver endpoint.
|
|
362
|
+
* Verifies HMAC-SHA256 signature and routes to event handlers.
|
|
363
|
+
*/
|
|
364
|
+
@Post('incoming')
|
|
365
|
+
@HttpCode(HttpStatus.OK)
|
|
366
|
+
async handleWebhook(
|
|
367
|
+
@Headers('x-ratio-hmac-sha256') signature: string,
|
|
368
|
+
@Body() body: Record<string, unknown>,
|
|
369
|
+
@Req() req: RawBodyRequest<Request>,
|
|
370
|
+
) {
|
|
371
|
+
// Get raw body for signature verification
|
|
372
|
+
const rawBody = req.rawBody?.toString('utf8') || JSON.stringify(body);
|
|
373
|
+
|
|
374
|
+
// Verify signature
|
|
375
|
+
if (!signature || !this.webhookService.verifySignature(rawBody, signature)) {
|
|
376
|
+
this.logger.warn('Webhook signature verification failed');
|
|
377
|
+
return { status: 'error', message: 'Invalid signature' };
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
const topic = body['topic'] as string;
|
|
381
|
+
if (!topic) {
|
|
382
|
+
this.logger.warn('Webhook received without topic');
|
|
383
|
+
return { status: 'error', message: 'Missing topic' };
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// Process the event asynchronously
|
|
387
|
+
await this.webhookService.handleEvent(topic, body);
|
|
388
|
+
|
|
389
|
+
return { status: 'ok' };
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
`;
|
|
393
|
+
}
|
|
394
|
+
function generateWebhookModuleCode() {
|
|
395
|
+
return `import { Module } from '@nestjs/common';
|
|
396
|
+
import { WebhookController } from './webhook.controller';
|
|
397
|
+
import { WebhookService } from './webhook.service';
|
|
398
|
+
|
|
399
|
+
@Module({
|
|
400
|
+
controllers: [WebhookController],
|
|
401
|
+
providers: [WebhookService],
|
|
402
|
+
exports: [WebhookService],
|
|
403
|
+
})
|
|
404
|
+
export class WebhookModule {}
|
|
405
|
+
`;
|
|
406
|
+
}
|
|
229
407
|
export const codegenTools = [
|
|
230
408
|
{
|
|
231
409
|
name: 'generate_api_routes',
|
|
@@ -304,6 +482,24 @@ export const codegenTools = [
|
|
|
304
482
|
generatedModules.push(dataNeed);
|
|
305
483
|
logger.info(`Generated ${dataNeed} module with ${endpoints.length} endpoints`);
|
|
306
484
|
}
|
|
485
|
+
// ── Generate webhook handlers if webhooks were registered ──
|
|
486
|
+
let webhookGenerated = false;
|
|
487
|
+
const session = getSession();
|
|
488
|
+
const appId = session.context.activeAppId || app_id;
|
|
489
|
+
const appState = session.apps[appId];
|
|
490
|
+
const webhooksConfigured = appState?.context.webhooksConfigured || session.context.webhooksConfigured;
|
|
491
|
+
if (webhooksConfigured) {
|
|
492
|
+
logger.info(`[generate_api_routes] Webhooks are configured — generating webhook handler code`);
|
|
493
|
+
const webhookDir = join(backendSrcDir, 'webhook');
|
|
494
|
+
if (!existsSync(webhookDir))
|
|
495
|
+
await mkdir(webhookDir, { recursive: true });
|
|
496
|
+
await writeFile(join(webhookDir, 'webhook.service.ts'), generateWebhookServiceCode());
|
|
497
|
+
await writeFile(join(webhookDir, 'webhook.controller.ts'), generateWebhookControllerCode());
|
|
498
|
+
await writeFile(join(webhookDir, 'webhook.module.ts'), generateWebhookModuleCode());
|
|
499
|
+
generatedModules.push('webhook');
|
|
500
|
+
webhookGenerated = true;
|
|
501
|
+
logger.info(`[generate_api_routes] Webhook handler module generated at ${webhookDir}`);
|
|
502
|
+
}
|
|
307
503
|
// Update app.module.ts
|
|
308
504
|
if (generatedModules.length > 0) {
|
|
309
505
|
const appModulePath = join(backendSrcDir, 'app.module.ts');
|
|
@@ -313,9 +509,7 @@ export const codegenTools = [
|
|
|
313
509
|
const moduleName = `${capitalize(mod)}Module`;
|
|
314
510
|
const importPath = `./${mod}/${mod}.module`;
|
|
315
511
|
if (!appModule.includes(moduleName)) {
|
|
316
|
-
// Add import statement
|
|
317
512
|
appModule = `import { ${moduleName} } from '${importPath}';\n${appModule}`;
|
|
318
|
-
// Add to imports array
|
|
319
513
|
appModule = appModule.replace(/imports:\s*\[/, `imports: [\n ${moduleName},`);
|
|
320
514
|
}
|
|
321
515
|
}
|
|
@@ -326,21 +520,23 @@ export const codegenTools = [
|
|
|
326
520
|
logger.info(`[generate_api_routes] ══ DONE ══ Generated ${generatedModules.length} modules: [${generatedModules.join(', ')}], errors: ${allErrors.length > 0 ? JSON.stringify(allErrors) : 'none'}`);
|
|
327
521
|
return {
|
|
328
522
|
success: true,
|
|
329
|
-
message: `Generated ${generatedModules.length} resource module(s)
|
|
523
|
+
message: `Generated ${generatedModules.length} resource module(s)` +
|
|
524
|
+
(webhookGenerated ? ' (including webhook handler with HMAC-SHA256 verification)' : ''),
|
|
330
525
|
generated_modules: generatedModules.map((mod) => ({
|
|
331
526
|
resource: mod,
|
|
332
|
-
files:
|
|
333
|
-
|
|
334
|
-
`${mod}/${mod}.controller.ts`,
|
|
335
|
-
`${mod}/${mod}.module.ts`,
|
|
336
|
-
],
|
|
527
|
+
files: mod === 'webhook'
|
|
528
|
+
? ['webhook/webhook.service.ts', 'webhook/webhook.controller.ts', 'webhook/webhook.module.ts']
|
|
529
|
+
: [`${mod}/${mod}.service.ts`, `${mod}/${mod}.controller.ts`, `${mod}/${mod}.module.ts`],
|
|
337
530
|
})),
|
|
531
|
+
webhook_handler_generated: webhookGenerated,
|
|
338
532
|
errors: allErrors.length > 0 ? allErrors : undefined,
|
|
533
|
+
warning: 'DO NOT modify the generated code. Use validate_api_code (docs-server) to verify correctness before making any changes.',
|
|
534
|
+
doc_hint: 'Call validate_api_code to check the generated code against the actual API schema.',
|
|
339
535
|
next_steps: [
|
|
340
536
|
`1. cd ${projectPath}/backend && npm install && npm run start:dev`,
|
|
341
537
|
'2. Test endpoints with curl or Postman',
|
|
342
|
-
'3.
|
|
343
|
-
],
|
|
538
|
+
webhookGenerated ? '3. Configure your webhook URL in the app dashboard to point to POST /webhooks/incoming' : '',
|
|
539
|
+
].filter(Boolean),
|
|
344
540
|
};
|
|
345
541
|
},
|
|
346
542
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/tools/codegen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/tools/codegen.ts"],"names":[],"mappings":"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"}
|