frontier-os-app-builder 1.0.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 +92 -0
- package/agents/fos-executor.md +460 -0
- package/agents/fos-plan-checker.md +386 -0
- package/agents/fos-planner.md +416 -0
- package/agents/fos-researcher.md +358 -0
- package/agents/fos-verifier.md +491 -0
- package/bin/fos-tools.cjs +794 -0
- package/bin/install.js +234 -0
- package/commands/fos/add-feature.md +29 -0
- package/commands/fos/discuss.md +31 -0
- package/commands/fos/execute.md +35 -0
- package/commands/fos/new-app.md +39 -0
- package/commands/fos/new-milestone.md +28 -0
- package/commands/fos/next.md +29 -0
- package/commands/fos/plan.md +37 -0
- package/commands/fos/ship.md +29 -0
- package/commands/fos/status.md +22 -0
- package/package.json +30 -0
- package/references/app-patterns.md +501 -0
- package/references/deployment.md +395 -0
- package/references/module-inference.md +349 -0
- package/references/sdk-surface.md +1622 -0
- package/references/verification-rules.md +404 -0
- package/templates/app/gitignore +25 -0
- package/templates/app/index.css +111 -0
- package/templates/app/index.html +19 -0
- package/templates/app/layout.tsx +45 -0
- package/templates/app/main-router.tsx +17 -0
- package/templates/app/main-simple.tsx +19 -0
- package/templates/app/package.json +36 -0
- package/templates/app/postcss.config.js +5 -0
- package/templates/app/router.tsx +22 -0
- package/templates/app/sdk-context.tsx +33 -0
- package/templates/app/test-setup.ts +19 -0
- package/templates/app/tsconfig.json +22 -0
- package/templates/app/vercel.json +127 -0
- package/templates/app/vite.config.ts +15 -0
- package/templates/state/context.md +248 -0
- package/templates/state/manifest.json +11 -0
- package/templates/state/plan.md +187 -0
- package/templates/state/project.md +118 -0
- package/templates/state/requirements.md +133 -0
- package/templates/state/roadmap.md +129 -0
- package/templates/state/state.md +131 -0
- package/templates/state/summary.md +273 -0
- package/workflows/add-feature.md +234 -0
- package/workflows/discuss.md +310 -0
- package/workflows/execute-plan.md +222 -0
- package/workflows/execute.md +338 -0
- package/workflows/new-app.md +331 -0
- package/workflows/new-milestone.md +258 -0
- package/workflows/next.md +157 -0
- package/workflows/plan.md +310 -0
- package/workflows/ship.md +296 -0
- package/workflows/status.md +145 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# SDK Module Inference
|
|
2
|
+
|
|
3
|
+
Maps business descriptions to Frontier SDK modules, methods, and permissions.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Inference Algorithm
|
|
8
|
+
|
|
9
|
+
Given a natural-language business description of an app:
|
|
10
|
+
|
|
11
|
+
1. **Tokenize** -- lowercase the description and split into words. Remove stop words.
|
|
12
|
+
2. **Match against keyword patterns** -- for each SDK module, check if any of its trigger keywords appear in the token set.
|
|
13
|
+
3. **Always include baseline modules:**
|
|
14
|
+
- **Storage** -- every app needs at least `storage:get` and `storage:set` for user preferences and local state.
|
|
15
|
+
- **Chain** -- every app needs `chain:getCurrentNetwork` and `chain:getContractAddresses` for environment context.
|
|
16
|
+
4. **Include User if any user-facing features** -- if the app has any interactive UI (not purely informational), include `user:getDetails` and `user:getProfile`.
|
|
17
|
+
5. **Present inferred modules to user for confirmation** -- show the matched modules, the keywords that triggered them, and the permissions that would be requested. Let the user add or remove modules before proceeding.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Module Reference
|
|
22
|
+
|
|
23
|
+
### Wallet
|
|
24
|
+
|
|
25
|
+
**Trigger keywords:** payment, pay, checkout, transfer, send, receive, money, balance, wallet, token, swap, deposit, withdraw, bank, fiat, dollar, FND, iFND, ERC20, purchase, buy, sell, fund, currency, on-ramp, off-ramp, tip, donate, subscription (when involving recurring payments)
|
|
26
|
+
|
|
27
|
+
**Most commonly used methods:**
|
|
28
|
+
- `getBalance()` / `getBalanceFormatted()` -- read wallet balance
|
|
29
|
+
- `getAddress()` -- get user's wallet address
|
|
30
|
+
- `transferFrontierDollar(to, amount)` -- send FND to another address
|
|
31
|
+
- `transferInternalFrontierDollar(to, amount)` -- send iFND
|
|
32
|
+
- `transferOverallFrontierDollar(to, amount)` -- send FND, preferring iFND first
|
|
33
|
+
- `payWithFrontierDollar(paymentRefId)` -- pay via PaymentRouter with a reference ID
|
|
34
|
+
- `swap(params)` / `quoteSwap(params)` -- token swap operations
|
|
35
|
+
- `getUsdDepositInstructions()` / `getEurDepositInstructions()` -- fiat on-ramp
|
|
36
|
+
- `getLinkedBanks()` / `linkUsBankAccount()` / `linkEuroAccount()` -- fiat off-ramp
|
|
37
|
+
|
|
38
|
+
**Permissions:**
|
|
39
|
+
|
|
40
|
+
| Permission | Description |
|
|
41
|
+
| --------------------------------------- | --------------------------------------------- |
|
|
42
|
+
| `wallet:getBalance` | Access wallet balance |
|
|
43
|
+
| `wallet:getBalanceFormatted` | Access formatted wallet balance |
|
|
44
|
+
| `wallet:getAddress` | Access wallet address |
|
|
45
|
+
| `wallet:getSmartAccount` | Access smart account details |
|
|
46
|
+
| `wallet:transferERC20` | Transfer ERC20 tokens |
|
|
47
|
+
| `wallet:approveERC20` | Approve ERC20 token spending |
|
|
48
|
+
| `wallet:transferNative` | Transfer native currency (ETH) |
|
|
49
|
+
| `wallet:transferFrontierDollar` | Transfer Frontier Dollars |
|
|
50
|
+
| `wallet:transferInternalFrontierDollar`| Transfer Internal Frontier Dollars |
|
|
51
|
+
| `wallet:transferOverallFrontierDollar` | Transfer FND with iFND preferred |
|
|
52
|
+
| `wallet:executeCall` | Execute arbitrary contract calls |
|
|
53
|
+
| `wallet:executeBatchCall` | Execute multiple contract calls atomically |
|
|
54
|
+
| `wallet:getSupportedTokens` | Get list of supported tokens for swaps |
|
|
55
|
+
| `wallet:swap` | Execute token swaps |
|
|
56
|
+
| `wallet:quoteSwap` | Get quotes for token swaps |
|
|
57
|
+
| `wallet:getUsdDepositInstructions` | Get USD bank deposit instructions |
|
|
58
|
+
| `wallet:getEurDepositInstructions` | Get EUR (SEPA) deposit instructions |
|
|
59
|
+
| `wallet:getLinkedBanks` | Get linked bank accounts |
|
|
60
|
+
| `wallet:linkUsBankAccount` | Link a US bank account |
|
|
61
|
+
| `wallet:linkEuroAccount` | Link a EUR/IBAN bank account |
|
|
62
|
+
| `wallet:deleteLinkedBank` | Delete a linked bank account |
|
|
63
|
+
| `wallet:getDeprecatedSmartAccounts` | Get deprecated smart accounts |
|
|
64
|
+
| `wallet:payWithFrontierDollar` | Pay via PaymentRouter with reference ID |
|
|
65
|
+
|
|
66
|
+
**Example business descriptions:**
|
|
67
|
+
- "A tipping app where users can send FND to content creators"
|
|
68
|
+
- "A checkout widget for purchasing physical goods with Frontier Dollars"
|
|
69
|
+
- "A savings dashboard showing the user's balance and deposit history"
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### Storage
|
|
74
|
+
|
|
75
|
+
**Trigger keywords:** save, store, persist, preferences, settings, cache, remember, bookmark, favorite, history, draft, note, data, local
|
|
76
|
+
|
|
77
|
+
**Always included.** Every app needs storage for user preferences at minimum.
|
|
78
|
+
|
|
79
|
+
**Most commonly used methods:**
|
|
80
|
+
- `get(key)` -- read a value
|
|
81
|
+
- `set(key, value)` -- write a value
|
|
82
|
+
- `remove(key)` -- delete a value
|
|
83
|
+
|
|
84
|
+
**Permissions:**
|
|
85
|
+
|
|
86
|
+
| Permission | Description |
|
|
87
|
+
| ----------------- | --------------------- |
|
|
88
|
+
| `storage:get` | Read from storage |
|
|
89
|
+
| `storage:set` | Write to storage |
|
|
90
|
+
| `storage:remove` | Remove from storage |
|
|
91
|
+
| `storage:clear` | Clear all storage |
|
|
92
|
+
|
|
93
|
+
**Example business descriptions:**
|
|
94
|
+
- "An app that remembers the user's preferred language and notification settings"
|
|
95
|
+
- "A note-taking app that saves drafts locally"
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### Chain
|
|
100
|
+
|
|
101
|
+
**Trigger keywords:** network, chain, contract, blockchain, onchain, smart contract, address, deploy, testnet, mainnet
|
|
102
|
+
|
|
103
|
+
**Always included.** Every app needs chain context for environment detection and contract addresses.
|
|
104
|
+
|
|
105
|
+
**Most commonly used methods:**
|
|
106
|
+
- `getCurrentNetwork()` -- get current network name
|
|
107
|
+
- `getContractAddresses()` -- get FND, iFND, PaymentRouter, SubscriptionManager addresses
|
|
108
|
+
- `getCurrentChainConfig()` -- full chain configuration
|
|
109
|
+
|
|
110
|
+
**Permissions:**
|
|
111
|
+
|
|
112
|
+
| Permission | Description |
|
|
113
|
+
| ------------------------------ | --------------------------------------- |
|
|
114
|
+
| `chain:getCurrentNetwork` | Get current network name |
|
|
115
|
+
| `chain:getAvailableNetworks` | Get list of available networks |
|
|
116
|
+
| `chain:switchNetwork` | Switch to a different network |
|
|
117
|
+
| `chain:getCurrentChainConfig` | Get full chain configuration |
|
|
118
|
+
| `chain:getContractAddresses` | Get contract addresses |
|
|
119
|
+
|
|
120
|
+
**Example business descriptions:**
|
|
121
|
+
- "A dashboard showing contract deployment status across networks"
|
|
122
|
+
- "An app that reads on-chain data from the SubscriptionManager"
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### User
|
|
127
|
+
|
|
128
|
+
**Trigger keywords:** user, profile, account, member, membership, signup, register, login, identity, referral, invite, KYC, verification, contact, email, subscription status, access control
|
|
129
|
+
|
|
130
|
+
**Include if any user-facing features.** Most apps need at minimum `user:getDetails`.
|
|
131
|
+
|
|
132
|
+
**Most commonly used methods:**
|
|
133
|
+
- `getDetails()` -- current user details
|
|
134
|
+
- `getProfile()` -- user profile information
|
|
135
|
+
- `getVerifiedAccessControls()` -- cryptographically verified access controls (always use for gating)
|
|
136
|
+
- `createSignupRequest(params)` -- submit membership signup with crypto payment
|
|
137
|
+
- `getReferralOverview()` -- referral statistics
|
|
138
|
+
|
|
139
|
+
**Permissions:**
|
|
140
|
+
|
|
141
|
+
| Permission | Description |
|
|
142
|
+
| -------------------------------- | -------------------------------------------------- |
|
|
143
|
+
| `user:getDetails` | Access current user details |
|
|
144
|
+
| `user:getProfile` | Access current user profile information |
|
|
145
|
+
| `user:getReferralOverview` | Access referral statistics |
|
|
146
|
+
| `user:getReferralDetails` | Access detailed referral information |
|
|
147
|
+
| `user:addUserContact` | Add user contact information |
|
|
148
|
+
| `user:getOrCreateKyc` | Get or create KYC verification status |
|
|
149
|
+
| `user:createSignupRequest` | Submit a new membership signup request |
|
|
150
|
+
| `user:getVerifiedAccessControls` | Get cryptographically verified access controls |
|
|
151
|
+
|
|
152
|
+
**Important:** Always use `getVerifiedAccessControls()` when making access decisions -- never trust unsigned user data from other SDK methods for gating features, content, or permissions. The method returns a cryptographically signed payload verified against hardcoded per-environment public keys inside the iframe.
|
|
153
|
+
|
|
154
|
+
**Example business descriptions:**
|
|
155
|
+
- "A membership signup form with KYC verification"
|
|
156
|
+
- "A referral tracking dashboard showing invite statistics"
|
|
157
|
+
- "An app that shows different content based on subscription plan"
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
### Communities
|
|
162
|
+
|
|
163
|
+
**Trigger keywords:** community, communities, group, team, internship, intern, member management, reassign, transfer member, pass, organization
|
|
164
|
+
|
|
165
|
+
**Most commonly used methods:**
|
|
166
|
+
- `listCommunities()` -- list all visible communities (paginated)
|
|
167
|
+
- `getCommunity(id)` -- get a community by ID or slug
|
|
168
|
+
- `createInternshipPass(params)` -- create an internship pass
|
|
169
|
+
- `listInternshipPasses()` -- list internship passes (paginated)
|
|
170
|
+
|
|
171
|
+
**Permissions:**
|
|
172
|
+
|
|
173
|
+
| Permission | Description |
|
|
174
|
+
| ------------------------------------- | -------------------------------------------- |
|
|
175
|
+
| `communities:listCommunities` | List all visible communities |
|
|
176
|
+
| `communities:getCommunity` | Get a community by ID or slug |
|
|
177
|
+
| `communities:createInternshipPass` | Create an internship pass |
|
|
178
|
+
| `communities:listInternshipPasses` | List internship passes |
|
|
179
|
+
| `communities:getInternshipPass` | Retrieve an internship pass by ID |
|
|
180
|
+
| `communities:revokeInternshipPass` | Revoke an internship pass |
|
|
181
|
+
| `communities:createReassignRequest` | Create a member reassignment request |
|
|
182
|
+
| `communities:listReassignRequests` | List pending reassignment requests |
|
|
183
|
+
| `communities:getReassignRequest` | Retrieve a reassignment request by ID |
|
|
184
|
+
| `communities:acceptReassignRequest` | Accept a reassignment request |
|
|
185
|
+
| `communities:rejectReassignRequest` | Reject a reassignment request |
|
|
186
|
+
|
|
187
|
+
**Example business descriptions:**
|
|
188
|
+
- "An internship management tool for community leaders"
|
|
189
|
+
- "A community directory app"
|
|
190
|
+
- "A tool to manage member transfers between communities"
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### Partnerships
|
|
195
|
+
|
|
196
|
+
**Trigger keywords:** sponsor, sponsorship, partner, partnership, brand, advertiser, promotion, pass, voucher, coupon
|
|
197
|
+
|
|
198
|
+
**Most commonly used methods:**
|
|
199
|
+
- `listSponsors()` -- list sponsors you manage (paginated)
|
|
200
|
+
- `createSponsorPass(params)` -- create a sponsor pass
|
|
201
|
+
- `listActiveSponsorPasses()` -- list active passes (paginated)
|
|
202
|
+
|
|
203
|
+
**Permissions:**
|
|
204
|
+
|
|
205
|
+
| Permission | Description |
|
|
206
|
+
| --------------------------------------- | ---------------------------------------- |
|
|
207
|
+
| `partnerships:listSponsors` | List sponsors you manage |
|
|
208
|
+
| `partnerships:getSponsor` | Retrieve a Sponsor by ID |
|
|
209
|
+
| `partnerships:createSponsorPass` | Create a SponsorPass |
|
|
210
|
+
| `partnerships:listActiveSponsorPasses` | List active SponsorPasses |
|
|
211
|
+
| `partnerships:listAllSponsorPasses` | List all SponsorPasses |
|
|
212
|
+
| `partnerships:getSponsorPass` | Retrieve a SponsorPass by ID |
|
|
213
|
+
| `partnerships:revokeSponsorPass` | Revoke a SponsorPass by ID |
|
|
214
|
+
|
|
215
|
+
**Example business descriptions:**
|
|
216
|
+
- "A sponsor management dashboard for partnership managers"
|
|
217
|
+
- "A tool for creating and distributing sponsor passes at events"
|
|
218
|
+
- "A brand promotion platform within the Frontier network"
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
### Events
|
|
223
|
+
|
|
224
|
+
**Trigger keywords:** event, events, calendar, meetup, gathering, conference, workshop, hackathon, location, venue, room, booking, schedule, RSVP, host
|
|
225
|
+
|
|
226
|
+
**Most commonly used methods:**
|
|
227
|
+
- `listEvents(filters)` -- list events with optional filters (paginated)
|
|
228
|
+
- `createEvent(params)` -- create a new event
|
|
229
|
+
- `listLocations()` -- list available locations
|
|
230
|
+
- `createRoomBooking(params)` -- create a room booking
|
|
231
|
+
|
|
232
|
+
**Permissions:**
|
|
233
|
+
|
|
234
|
+
| Permission | Description |
|
|
235
|
+
| ----------------------------- | ---------------------------------------- |
|
|
236
|
+
| `events:listEvents` | List events with optional filters |
|
|
237
|
+
| `events:createEvent` | Create a new event |
|
|
238
|
+
| `events:addEventHost` | Add a co-host to an event |
|
|
239
|
+
| `events:listLocations` | List available locations |
|
|
240
|
+
| `events:listRoomBookings` | List room bookings |
|
|
241
|
+
| `events:createRoomBooking` | Create a room booking |
|
|
242
|
+
|
|
243
|
+
**Example business descriptions:**
|
|
244
|
+
- "A room booking app for co-working spaces"
|
|
245
|
+
- "An event calendar with RSVP functionality"
|
|
246
|
+
- "A venue management tool for event organizers"
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
### Offices
|
|
251
|
+
|
|
252
|
+
**Trigger keywords:** office, access pass, access control, building, door, entry, coworking, membership contract, check-in, keycard
|
|
253
|
+
|
|
254
|
+
**Most commonly used methods:**
|
|
255
|
+
- `createAccessPass(params)` -- create an access pass for a membership contract
|
|
256
|
+
- `listAccessPasses()` -- list access passes (paginated)
|
|
257
|
+
|
|
258
|
+
**Permissions:**
|
|
259
|
+
|
|
260
|
+
| Permission | Description |
|
|
261
|
+
| ----------------------------- | -------------------------------------------------- |
|
|
262
|
+
| `offices:createAccessPass` | Create an access pass for a membership contract |
|
|
263
|
+
| `offices:listAccessPasses` | List access passes for managed contracts |
|
|
264
|
+
| `offices:getAccessPass` | Retrieve an access pass by ID |
|
|
265
|
+
| `offices:revokeAccessPass` | Revoke an access pass |
|
|
266
|
+
|
|
267
|
+
**Example business descriptions:**
|
|
268
|
+
- "A digital access pass manager for co-working spaces"
|
|
269
|
+
- "A building entry system for office members"
|
|
270
|
+
- "A tool for managing physical access to Frontier offices"
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
### ThirdParty
|
|
275
|
+
|
|
276
|
+
**Trigger keywords:** developer, API, webhook, app registration, integrate, third-party, 3rd party, platform, marketplace, SDK, developer portal
|
|
277
|
+
|
|
278
|
+
**Most commonly used methods:**
|
|
279
|
+
- `listDevelopers()` -- list developer accounts
|
|
280
|
+
- `createApp(params)` -- register a new app
|
|
281
|
+
- `createWebhook(params)` -- create a webhook
|
|
282
|
+
- `rotateWebhookSigningKey(webhookId)` -- rotate webhook signing key
|
|
283
|
+
|
|
284
|
+
**Permissions:**
|
|
285
|
+
|
|
286
|
+
| Permission | Description |
|
|
287
|
+
| ------------------------------------- | ---------------------------------------- |
|
|
288
|
+
| `thirdParty:listDevelopers` | List developer accounts |
|
|
289
|
+
| `thirdParty:getDeveloper` | Get developer details by ID |
|
|
290
|
+
| `thirdParty:updateDeveloper` | Update developer information |
|
|
291
|
+
| `thirdParty:rotateDeveloperApiKey` | Rotate developer API key |
|
|
292
|
+
| `thirdParty:listApps` | List registered apps |
|
|
293
|
+
| `thirdParty:createApp` | Register a new app |
|
|
294
|
+
| `thirdParty:getApp` | Get app details by ID |
|
|
295
|
+
| `thirdParty:updateApp` | Update an app |
|
|
296
|
+
| `thirdParty:deleteApp` | Request app deactivation |
|
|
297
|
+
| `thirdParty:listWebhooks` | List webhooks |
|
|
298
|
+
| `thirdParty:createWebhook` | Create a new webhook |
|
|
299
|
+
| `thirdParty:getWebhook` | Get webhook details by ID |
|
|
300
|
+
| `thirdParty:updateWebhook` | Update a webhook |
|
|
301
|
+
| `thirdParty:deleteWebhook` | Delete a webhook |
|
|
302
|
+
| `thirdParty:rotateWebhookSigningKey` | Rotate webhook signing key |
|
|
303
|
+
|
|
304
|
+
**Example business descriptions:**
|
|
305
|
+
- "A developer portal for managing apps and API keys"
|
|
306
|
+
- "A webhook configuration dashboard"
|
|
307
|
+
- "A tool for registering and monitoring third-party integrations"
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Inference Examples
|
|
312
|
+
|
|
313
|
+
### Example 1: "A hotel booking app where users can browse rooms and pay with FND"
|
|
314
|
+
|
|
315
|
+
| Module | Matched keywords | Permissions |
|
|
316
|
+
| ----------- | --------------------------- | ------------------------------------------------ |
|
|
317
|
+
| Wallet | pay, FND | `wallet:getBalance`, `wallet:transferFrontierDollar` or `wallet:payWithFrontierDollar` |
|
|
318
|
+
| Storage | (always) | `storage:get`, `storage:set` |
|
|
319
|
+
| Chain | (always) | `chain:getCurrentNetwork`, `chain:getContractAddresses` |
|
|
320
|
+
| User | users, booking | `user:getDetails`, `user:getProfile` |
|
|
321
|
+
| Events | booking, rooms | `events:listLocations`, `events:createRoomBooking` |
|
|
322
|
+
|
|
323
|
+
### Example 2: "A community directory showing all communities and their members"
|
|
324
|
+
|
|
325
|
+
| Module | Matched keywords | Permissions |
|
|
326
|
+
| ----------- | --------------------------- | ------------------------------------------------ |
|
|
327
|
+
| Communities | community, communities, members | `communities:listCommunities`, `communities:getCommunity` |
|
|
328
|
+
| Storage | (always) | `storage:get`, `storage:set` |
|
|
329
|
+
| Chain | (always) | `chain:getCurrentNetwork`, `chain:getContractAddresses` |
|
|
330
|
+
| User | members | `user:getDetails`, `user:getProfile` |
|
|
331
|
+
|
|
332
|
+
### Example 3: "A subscription management tool for signing up and managing membership plans"
|
|
333
|
+
|
|
334
|
+
| Module | Matched keywords | Permissions |
|
|
335
|
+
| ----------- | --------------------------- | ------------------------------------------------ |
|
|
336
|
+
| Wallet | subscription (payments) | `wallet:getBalance`, `wallet:payWithFrontierDollar` |
|
|
337
|
+
| User | signup, membership, managing | `user:getDetails`, `user:getVerifiedAccessControls`, `user:createSignupRequest` |
|
|
338
|
+
| Storage | (always) | `storage:get`, `storage:set` |
|
|
339
|
+
| Chain | (always) | `chain:getCurrentNetwork`, `chain:getContractAddresses` |
|
|
340
|
+
|
|
341
|
+
### Example 4: "A sponsor pass distribution tool for event organizers"
|
|
342
|
+
|
|
343
|
+
| Module | Matched keywords | Permissions |
|
|
344
|
+
| ------------ | --------------------------- | ------------------------------------------------ |
|
|
345
|
+
| Partnerships | sponsor, pass | `partnerships:listSponsors`, `partnerships:createSponsorPass` |
|
|
346
|
+
| Events | event | `events:listEvents` |
|
|
347
|
+
| Storage | (always) | `storage:get`, `storage:set` |
|
|
348
|
+
| Chain | (always) | `chain:getCurrentNetwork`, `chain:getContractAddresses` |
|
|
349
|
+
| User | organizers | `user:getDetails`, `user:getProfile` |
|