@atlasauth/emulator-core 0.1.0 → 0.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.
Files changed (300) hide show
  1. package/dist/adopt.d.ts +50 -0
  2. package/dist/adopt.js +57 -0
  3. package/dist/adopt.js.map +1 -0
  4. package/dist/coverage.d.ts +15 -0
  5. package/dist/coverage.js +31 -0
  6. package/dist/coverage.js.map +1 -0
  7. package/dist/crypto-util.d.ts +10 -0
  8. package/dist/crypto-util.js +76 -0
  9. package/dist/crypto-util.js.map +1 -0
  10. package/dist/custom-html.d.ts +57 -0
  11. package/dist/custom-html.js +491 -0
  12. package/dist/custom-html.js.map +1 -0
  13. package/dist/engine.d.ts +34 -3
  14. package/dist/engine.js +57 -8
  15. package/dist/engine.js.map +1 -1
  16. package/dist/error-catalog.js +16 -0
  17. package/dist/error-catalog.js.map +1 -1
  18. package/dist/event-gate.d.ts +3 -0
  19. package/dist/event-gate.js +430 -0
  20. package/dist/event-gate.js.map +1 -0
  21. package/dist/generic.js +14 -2
  22. package/dist/generic.js.map +1 -1
  23. package/dist/handlers/access-signals.d.ts +48 -0
  24. package/dist/handlers/access-signals.js +76 -0
  25. package/dist/handlers/access-signals.js.map +1 -0
  26. package/dist/handlers/approvals.d.ts +2 -0
  27. package/dist/handlers/approvals.js +418 -0
  28. package/dist/handlers/approvals.js.map +1 -0
  29. package/dist/handlers/authz-data.d.ts +2 -0
  30. package/dist/handlers/authz-data.js +627 -0
  31. package/dist/handlers/authz-data.js.map +1 -0
  32. package/dist/handlers/authz-layers.d.ts +229 -0
  33. package/dist/handlers/authz-layers.js +786 -0
  34. package/dist/handlers/authz-layers.js.map +1 -0
  35. package/dist/handlers/authz-state.d.ts +80 -0
  36. package/dist/handlers/authz-state.js +175 -0
  37. package/dist/handlers/authz-state.js.map +1 -0
  38. package/dist/handlers/authz.d.ts +2 -0
  39. package/dist/handlers/authz.js +410 -0
  40. package/dist/handlers/authz.js.map +1 -0
  41. package/dist/handlers/billing.d.ts +100 -0
  42. package/dist/handlers/billing.js +877 -0
  43. package/dist/handlers/billing.js.map +1 -0
  44. package/dist/handlers/cedar-ext.d.ts +35 -0
  45. package/dist/handlers/cedar-ext.js +174 -0
  46. package/dist/handlers/cedar-ext.js.map +1 -0
  47. package/dist/handlers/cedar.d.ts +146 -0
  48. package/dist/handlers/cedar.js +689 -0
  49. package/dist/handlers/cedar.js.map +1 -0
  50. package/dist/handlers/connections.d.ts +5 -0
  51. package/dist/handlers/connections.js +561 -0
  52. package/dist/handlers/connections.js.map +1 -0
  53. package/dist/handlers/control.js +6 -1
  54. package/dist/handlers/control.js.map +1 -1
  55. package/dist/handlers/device.d.ts +47 -0
  56. package/dist/handlers/device.js +665 -0
  57. package/dist/handlers/device.js.map +1 -0
  58. package/dist/handlers/emu3-misc.d.ts +38 -0
  59. package/dist/handlers/emu3-misc.js +1056 -0
  60. package/dist/handlers/emu3-misc.js.map +1 -0
  61. package/dist/handlers/emu4-actions-access.d.ts +46 -0
  62. package/dist/handlers/emu4-actions-access.js +107 -0
  63. package/dist/handlers/emu4-actions-access.js.map +1 -0
  64. package/dist/handlers/emu4-actions-catalog-extra.d.ts +3 -0
  65. package/dist/handlers/emu4-actions-catalog-extra.js +204 -0
  66. package/dist/handlers/emu4-actions-catalog-extra.js.map +1 -0
  67. package/dist/handlers/emu4-actions-catalog.d.ts +3 -0
  68. package/dist/handlers/emu4-actions-catalog.js +143 -0
  69. package/dist/handlers/emu4-actions-catalog.js.map +1 -0
  70. package/dist/handlers/emu4-actions-def.d.ts +50 -0
  71. package/dist/handlers/emu4-actions-def.js +250 -0
  72. package/dist/handlers/emu4-actions-def.js.map +1 -0
  73. package/dist/handlers/emu4-actions-sandbox.d.ts +36 -0
  74. package/dist/handlers/emu4-actions-sandbox.js +318 -0
  75. package/dist/handlers/emu4-actions-sandbox.js.map +1 -0
  76. package/dist/handlers/emu4-actions-typegen.d.ts +5 -0
  77. package/dist/handlers/emu4-actions-typegen.js +73 -0
  78. package/dist/handlers/emu4-actions-typegen.js.map +1 -0
  79. package/dist/handlers/emu4-actions.d.ts +2 -0
  80. package/dist/handlers/emu4-actions.js +506 -0
  81. package/dist/handlers/emu4-actions.js.map +1 -0
  82. package/dist/handlers/emu4-authz-trust.d.ts +40 -0
  83. package/dist/handlers/emu4-authz-trust.js +488 -0
  84. package/dist/handlers/emu4-authz-trust.js.map +1 -0
  85. package/dist/handlers/emu4-authz.d.ts +2 -0
  86. package/dist/handlers/emu4-authz.js +752 -0
  87. package/dist/handlers/emu4-authz.js.map +1 -0
  88. package/dist/handlers/emu4-billing-core.d.ts +23 -0
  89. package/dist/handlers/emu4-billing-core.js +22 -0
  90. package/dist/handlers/emu4-billing-core.js.map +1 -0
  91. package/dist/handlers/emu4-billing-x.d.ts +2 -0
  92. package/dist/handlers/emu4-billing-x.js +489 -0
  93. package/dist/handlers/emu4-billing-x.js.map +1 -0
  94. package/dist/handlers/emu4-billing.d.ts +14 -0
  95. package/dist/handlers/emu4-billing.js +846 -0
  96. package/dist/handlers/emu4-billing.js.map +1 -0
  97. package/dist/handlers/emu4-clones.d.ts +2 -0
  98. package/dist/handlers/emu4-clones.js +322 -0
  99. package/dist/handlers/emu4-clones.js.map +1 -0
  100. package/dist/handlers/emu4-compliance.d.ts +8 -0
  101. package/dist/handlers/emu4-compliance.js +39 -0
  102. package/dist/handlers/emu4-compliance.js.map +1 -0
  103. package/dist/handlers/emu4-config.d.ts +14 -0
  104. package/dist/handlers/emu4-config.js +148 -0
  105. package/dist/handlers/emu4-config.js.map +1 -0
  106. package/dist/handlers/emu4-cookies.d.ts +8 -0
  107. package/dist/handlers/emu4-cookies.js +248 -0
  108. package/dist/handlers/emu4-cookies.js.map +1 -0
  109. package/dist/handlers/emu4-erasure.d.ts +2 -0
  110. package/dist/handlers/emu4-erasure.js +587 -0
  111. package/dist/handlers/emu4-erasure.js.map +1 -0
  112. package/dist/handlers/emu4-federation.d.ts +8 -0
  113. package/dist/handlers/emu4-federation.js +18 -0
  114. package/dist/handlers/emu4-federation.js.map +1 -0
  115. package/dist/handlers/emu4-journey-math.d.ts +42 -0
  116. package/dist/handlers/emu4-journey-math.js +99 -0
  117. package/dist/handlers/emu4-journey-math.js.map +1 -0
  118. package/dist/handlers/emu4-messaging.d.ts +21 -0
  119. package/dist/handlers/emu4-messaging.js +595 -0
  120. package/dist/handlers/emu4-messaging.js.map +1 -0
  121. package/dist/handlers/emu4-minors.d.ts +7 -0
  122. package/dist/handlers/emu4-minors.js +408 -0
  123. package/dist/handlers/emu4-minors.js.map +1 -0
  124. package/dist/handlers/emu4-oauth-audit.d.ts +5 -0
  125. package/dist/handlers/emu4-oauth-audit.js +17 -0
  126. package/dist/handlers/emu4-oauth-audit.js.map +1 -0
  127. package/dist/handlers/emu4-oauth-auth.d.ts +83 -0
  128. package/dist/handlers/emu4-oauth-auth.js +363 -0
  129. package/dist/handlers/emu4-oauth-auth.js.map +1 -0
  130. package/dist/handlers/emu4-oauth-delivery.d.ts +68 -0
  131. package/dist/handlers/emu4-oauth-delivery.js +207 -0
  132. package/dist/handlers/emu4-oauth-delivery.js.map +1 -0
  133. package/dist/handlers/emu4-oauth-keys.d.ts +11 -0
  134. package/dist/handlers/emu4-oauth-keys.js +268 -0
  135. package/dist/handlers/emu4-oauth-keys.js.map +1 -0
  136. package/dist/handlers/emu4-oauth-pub.d.ts +36 -0
  137. package/dist/handlers/emu4-oauth-pub.js +420 -0
  138. package/dist/handlers/emu4-oauth-pub.js.map +1 -0
  139. package/dist/handlers/emu4-oauth.d.ts +10 -0
  140. package/dist/handlers/emu4-oauth.js +23 -0
  141. package/dist/handlers/emu4-oauth.js.map +1 -0
  142. package/dist/handlers/emu4-policies.d.ts +2 -0
  143. package/dist/handlers/emu4-policies.js +408 -0
  144. package/dist/handlers/emu4-policies.js.map +1 -0
  145. package/dist/handlers/emu4-region.d.ts +2 -0
  146. package/dist/handlers/emu4-region.js +189 -0
  147. package/dist/handlers/emu4-region.js.map +1 -0
  148. package/dist/handlers/emu4-saml.d.ts +12 -0
  149. package/dist/handlers/emu4-saml.js +532 -0
  150. package/dist/handlers/emu4-saml.js.map +1 -0
  151. package/dist/handlers/emu4-shared.d.ts +44 -0
  152. package/dist/handlers/emu4-shared.js +90 -0
  153. package/dist/handlers/emu4-shared.js.map +1 -0
  154. package/dist/handlers/emu4-snapshots.d.ts +38 -0
  155. package/dist/handlers/emu4-snapshots.js +231 -0
  156. package/dist/handlers/emu4-snapshots.js.map +1 -0
  157. package/dist/handlers/emu4-sns.d.ts +9 -0
  158. package/dist/handlers/emu4-sns.js +21 -0
  159. package/dist/handlers/emu4-sns.js.map +1 -0
  160. package/dist/handlers/emu4-trust-binding.d.ts +27 -0
  161. package/dist/handlers/emu4-trust-binding.js +344 -0
  162. package/dist/handlers/emu4-trust-binding.js.map +1 -0
  163. package/dist/handlers/emu4-trust.d.ts +35 -0
  164. package/dist/handlers/emu4-trust.js +543 -0
  165. package/dist/handlers/emu4-trust.js.map +1 -0
  166. package/dist/handlers/federation.d.ts +2 -0
  167. package/dist/handlers/federation.js +481 -0
  168. package/dist/handlers/federation.js.map +1 -0
  169. package/dist/handlers/fga-engine.d.ts +78 -0
  170. package/dist/handlers/fga-engine.js +663 -0
  171. package/dist/handlers/fga-engine.js.map +1 -0
  172. package/dist/handlers/governance.d.ts +2 -0
  173. package/dist/handlers/governance.js +460 -0
  174. package/dist/handlers/governance.js.map +1 -0
  175. package/dist/handlers/hooks.js +17 -1
  176. package/dist/handlers/hooks.js.map +1 -1
  177. package/dist/handlers/index.d.ts +5 -1
  178. package/dist/handlers/index.js +45 -3
  179. package/dist/handlers/index.js.map +1 -1
  180. package/dist/handlers/keys.js +6 -1
  181. package/dist/handlers/keys.js.map +1 -1
  182. package/dist/handlers/machines.js +61 -8
  183. package/dist/handlers/machines.js.map +1 -1
  184. package/dist/handlers/messaging.d.ts +6 -0
  185. package/dist/handlers/messaging.js +893 -0
  186. package/dist/handlers/messaging.js.map +1 -0
  187. package/dist/handlers/oauth-adv.d.ts +191 -0
  188. package/dist/handlers/oauth-adv.js +1305 -0
  189. package/dist/handlers/oauth-adv.js.map +1 -0
  190. package/dist/handlers/oauth-flows.d.ts +52 -0
  191. package/dist/handlers/oauth-flows.js +480 -0
  192. package/dist/handlers/oauth-flows.js.map +1 -0
  193. package/dist/handlers/oauth.d.ts +96 -0
  194. package/dist/handlers/oauth.js +793 -0
  195. package/dist/handlers/oauth.js.map +1 -0
  196. package/dist/handlers/orgs.js +6 -0
  197. package/dist/handlers/orgs.js.map +1 -1
  198. package/dist/handlers/passkeys.d.ts +3 -0
  199. package/dist/handlers/passkeys.js +293 -0
  200. package/dist/handlers/passkeys.js.map +1 -0
  201. package/dist/handlers/platform.d.ts +20 -0
  202. package/dist/handlers/platform.js +472 -0
  203. package/dist/handlers/platform.js.map +1 -0
  204. package/dist/handlers/round2.d.ts +8 -0
  205. package/dist/handlers/round2.js +372 -0
  206. package/dist/handlers/round2.js.map +1 -0
  207. package/dist/handlers/scim.d.ts +4 -0
  208. package/dist/handlers/scim.js +595 -0
  209. package/dist/handlers/scim.js.map +1 -0
  210. package/dist/handlers/sessions.d.ts +9 -3
  211. package/dist/handlers/sessions.js +76 -38
  212. package/dist/handlers/sessions.js.map +1 -1
  213. package/dist/handlers/support.d.ts +20 -0
  214. package/dist/handlers/support.js +62 -0
  215. package/dist/handlers/support.js.map +1 -0
  216. package/dist/handlers/users.js +7 -0
  217. package/dist/handlers/users.js.map +1 -1
  218. package/dist/handlers/workflows.d.ts +2 -0
  219. package/dist/handlers/workflows.js +428 -0
  220. package/dist/handlers/workflows.js.map +1 -0
  221. package/dist/index.d.ts +8 -0
  222. package/dist/index.js +23 -1
  223. package/dist/index.js.map +1 -1
  224. package/dist/jwe.d.ts +18 -0
  225. package/dist/jwe.js +101 -0
  226. package/dist/jwe.js.map +1 -0
  227. package/dist/jws.d.ts +41 -0
  228. package/dist/jws.js +135 -0
  229. package/dist/jws.js.map +1 -0
  230. package/dist/messages.d.ts +7 -0
  231. package/dist/messages.js +8 -4
  232. package/dist/messages.js.map +1 -1
  233. package/dist/messaging-callbacks.d.ts +100 -0
  234. package/dist/messaging-callbacks.js +767 -0
  235. package/dist/messaging-callbacks.js.map +1 -0
  236. package/dist/openapi.js +41 -1
  237. package/dist/openapi.js.map +1 -1
  238. package/dist/parity-bin.js +3 -1
  239. package/dist/parity-bin.js.map +1 -1
  240. package/dist/parity-emu3-authz.d.ts +3 -0
  241. package/dist/parity-emu3-authz.js +61 -0
  242. package/dist/parity-emu3-authz.js.map +1 -0
  243. package/dist/parity-emu3-billing.d.ts +3 -0
  244. package/dist/parity-emu3-billing.js +25 -0
  245. package/dist/parity-emu3-billing.js.map +1 -0
  246. package/dist/parity-emu3-messaging.d.ts +3 -0
  247. package/dist/parity-emu3-messaging.js +27 -0
  248. package/dist/parity-emu3-messaging.js.map +1 -0
  249. package/dist/parity-emu3-misc.d.ts +2 -0
  250. package/dist/parity-emu3-misc.js +63 -0
  251. package/dist/parity-emu3-misc.js.map +1 -0
  252. package/dist/parity-emu3-oauth.d.ts +2 -0
  253. package/dist/parity-emu3-oauth.js +39 -0
  254. package/dist/parity-emu3-oauth.js.map +1 -0
  255. package/dist/parity-emu4-actions.d.ts +2 -0
  256. package/dist/parity-emu4-actions.js +38 -0
  257. package/dist/parity-emu4-actions.js.map +1 -0
  258. package/dist/parity-emu4-authz.d.ts +3 -0
  259. package/dist/parity-emu4-authz.js +68 -0
  260. package/dist/parity-emu4-authz.js.map +1 -0
  261. package/dist/parity-emu4-billing.d.ts +6 -0
  262. package/dist/parity-emu4-billing.js +44 -0
  263. package/dist/parity-emu4-billing.js.map +1 -0
  264. package/dist/parity-emu4-compliance.d.ts +2 -0
  265. package/dist/parity-emu4-compliance.js +92 -0
  266. package/dist/parity-emu4-compliance.js.map +1 -0
  267. package/dist/parity-emu4-federation.d.ts +2 -0
  268. package/dist/parity-emu4-federation.js +33 -0
  269. package/dist/parity-emu4-federation.js.map +1 -0
  270. package/dist/parity-emu4-messaging.d.ts +3 -0
  271. package/dist/parity-emu4-messaging.js +42 -0
  272. package/dist/parity-emu4-messaging.js.map +1 -0
  273. package/dist/parity-emu4-oauth.d.ts +2 -0
  274. package/dist/parity-emu4-oauth.js +55 -0
  275. package/dist/parity-emu4-oauth.js.map +1 -0
  276. package/dist/parity-emu4-trust.d.ts +2 -0
  277. package/dist/parity-emu4-trust.js +41 -0
  278. package/dist/parity-emu4-trust.js.map +1 -0
  279. package/dist/parity-routes.d.ts +14 -0
  280. package/dist/parity-routes.js +439 -0
  281. package/dist/parity-routes.js.map +1 -0
  282. package/dist/parity.d.ts +10 -3
  283. package/dist/parity.js +14 -5
  284. package/dist/parity.js.map +1 -1
  285. package/dist/sns-cert.d.ts +9 -0
  286. package/dist/sns-cert.js +101 -0
  287. package/dist/sns-cert.js.map +1 -0
  288. package/dist/tokens.d.ts +85 -3
  289. package/dist/tokens.js +196 -24
  290. package/dist/tokens.js.map +1 -1
  291. package/dist/webauthn-virtual.d.ts +70 -0
  292. package/dist/webauthn-virtual.js +186 -0
  293. package/dist/webauthn-virtual.js.map +1 -0
  294. package/dist/webhook-ext.d.ts +16 -0
  295. package/dist/webhook-ext.js +218 -0
  296. package/dist/webhook-ext.js.map +1 -0
  297. package/dist/webhooks.d.ts +3 -0
  298. package/dist/webhooks.js +37 -3
  299. package/dist/webhooks.js.map +1 -1
  300. package/package.json +2 -2
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.builtInFor = exports.BUILT_IN_ACTIONS = void 0;
4
+ const emu4_actions_def_1 = require("./emu4-actions-def");
5
+ const emu4_actions_catalog_extra_1 = require("./emu4-actions-catalog-extra");
6
+ /**
7
+ * First-party action packs. Each endpoint was read from the provider's own API reference:
8
+ * GitHub https://docs.github.com/en/rest/issues/issues
9
+ * Slack https://docs.slack.dev/reference/methods/chat.postMessage , .../conversations.list
10
+ * Notion https://developers.notion.com/reference/post-page
11
+ * HubSpot https://developers.hubspot.com/docs/api/crm/contacts
12
+ * Slack https://docs.slack.dev/reference/methods/conversations.history , .../users.list
13
+ * Google https://developers.google.com/workspace/calendar/api/v3/reference/events/insert , .../events/list ,
14
+ * https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/send , .../users.messages/list , .../users.messages/get
15
+ * Linear GraphQL at https://api.linear.app/graphql (https://linear.app/developers/graphql), schema:
16
+ * https://github.com/linear/linear/blob/master/packages/sdk/src/schema.graphql (Query.issues, Query.teams, Mutation.issueCreate)
17
+ * More providers come from custom definitions (PUT /v1/connection_actions/{provider}/{name}).
18
+ */
19
+ const str = (description, extra = {}) => ({ type: 'string', description, ...extra });
20
+ const obj = (properties, required = []) => ({ type: 'object', properties, required });
21
+ const GH = 'https://api.github.com';
22
+ const GH_H = { accept: 'application/vnd.github+json' };
23
+ const SLACK = 'https://slack.com/api';
24
+ const SLACK_OK = { ok_field: 'ok', error_field: 'error' };
25
+ const HUB = 'https://api.hubapi.com';
26
+ const RAW = [
27
+ ['github', 'list_issues', {
28
+ description: 'List the issues of a repository.',
29
+ input: obj({ owner: str('Repository owner.'), repo: str('Repository name.'), state: str('open, closed or all.', { enum: ['open', 'closed', 'all'] }), per_page: { type: 'integer', minimum: 1, maximum: 100 }, page: { type: 'integer', minimum: 1 } }, ['owner', 'repo']),
30
+ request: { method: 'GET', base_url: GH, path: '/repos/{owner}/{repo}/issues', query: { state: '{state}', per_page: '{per_page}', page: '{page}' }, headers: GH_H },
31
+ scopes: [], mutating: false,
32
+ }],
33
+ ['github', 'get_issue', {
34
+ description: 'Read one issue.',
35
+ input: obj({ owner: str('Repository owner.'), repo: str('Repository name.'), issue_number: { type: 'integer', minimum: 1 } }, ['owner', 'repo', 'issue_number']),
36
+ request: { method: 'GET', base_url: GH, path: '/repos/{owner}/{repo}/issues/{issue_number}', headers: GH_H },
37
+ mutating: false,
38
+ }],
39
+ ['github', 'create_issue', {
40
+ description: 'Open an issue in a repository.',
41
+ input: obj({ owner: str('Repository owner.'), repo: str('Repository name.'), title: str('Issue title.', { minLength: 1 }), body: str('Issue body.'), labels: { type: 'array', items: { type: 'string' } }, assignees: { type: 'array', items: { type: 'string' } } }, ['owner', 'repo', 'title']),
42
+ request: { method: 'POST', base_url: GH, path: '/repos/{owner}/{repo}/issues', body: { title: '{title}', body: '{body}', labels: '{labels}', assignees: '{assignees}' }, headers: GH_H },
43
+ mutating: true,
44
+ }],
45
+ ['slack_api', 'post_message', {
46
+ description: 'Post a message to a channel or conversation.',
47
+ input: obj({ channel: str('Channel id or name.'), text: str('Message text.', { minLength: 1 }), thread_ts: str('Reply in this thread.') }, ['channel', 'text']),
48
+ request: { method: 'POST', base_url: SLACK, path: '/chat.postMessage', body: { channel: '{channel}', text: '{text}', thread_ts: '{thread_ts}' }, headers: { 'content-type': 'application/json; charset=utf-8' } },
49
+ response: SLACK_OK, mutating: true,
50
+ }],
51
+ ['slack_api', 'list_channels', {
52
+ description: 'List channels the token can see.',
53
+ input: obj({ types: str('Comma-separated: public_channel, private_channel, mpim, im.'), limit: { type: 'integer', minimum: 1, maximum: 999 }, cursor: str('The next_cursor of a previous call.'), exclude_archived: { type: 'boolean' } }),
54
+ request: { method: 'GET', base_url: SLACK, path: '/conversations.list', query: { types: '{types}', limit: '{limit}', cursor: '{cursor}', exclude_archived: '{exclude_archived}' } },
55
+ response: SLACK_OK, mutating: false,
56
+ }],
57
+ ['slack_api', 'list_messages', {
58
+ description: 'Read the message history of a conversation, newest first.',
59
+ input: obj({ channel: str('Conversation id.'), limit: { type: 'integer', minimum: 1, maximum: 999 }, cursor: str('The next_cursor of a previous call.'), oldest: str('Only messages after this Unix timestamp.'), latest: str('Only messages before this Unix timestamp.') }, ['channel']),
60
+ request: { method: 'GET', base_url: SLACK, path: '/conversations.history', query: { channel: '{channel}', limit: '{limit}', cursor: '{cursor}', oldest: '{oldest}', latest: '{latest}' } },
61
+ response: SLACK_OK, paginate: { type: 'cursor', cursor_path: 'response_metadata.next_cursor', cursor_param: 'cursor', items_path: 'messages' }, mutating: false,
62
+ }],
63
+ ['slack_api', 'list_users', {
64
+ description: 'List the workspace\'s users.',
65
+ input: obj({ limit: { type: 'integer', minimum: 1, maximum: 999 }, cursor: str('The next_cursor of a previous call.') }),
66
+ request: { method: 'GET', base_url: SLACK, path: '/users.list', query: { limit: '{limit}', cursor: '{cursor}' } },
67
+ response: SLACK_OK, paginate: { type: 'cursor', cursor_path: 'response_metadata.next_cursor', cursor_param: 'cursor', items_path: 'members' }, mutating: false,
68
+ }],
69
+ ['google', 'list_gmail_messages', {
70
+ description: 'List message ids of the signed-in user\'s mailbox (use get_gmail_message for content).',
71
+ input: obj({ q: str('Gmail search query.'), maxResults: { type: 'integer', minimum: 1, maximum: 500 }, pageToken: str('nextPageToken of a previous call.'), includeSpamTrash: { type: 'boolean' } }),
72
+ request: { method: 'GET', base_url: 'https://gmail.googleapis.com', path: '/gmail/v1/users/me/messages', query: { q: '{q}', maxResults: '{maxResults}', pageToken: '{pageToken}', includeSpamTrash: '{includeSpamTrash}' } },
73
+ paginate: { type: 'cursor', cursor_path: 'nextPageToken', cursor_param: 'pageToken', items_path: 'messages' }, mutating: false,
74
+ }],
75
+ ['google', 'get_gmail_message', {
76
+ description: 'Read one Gmail message.',
77
+ input: obj({ id: str('Message id.'), format: str('minimal, full, raw or metadata.', { enum: ['minimal', 'full', 'raw', 'metadata'] }) }, ['id']),
78
+ request: { method: 'GET', base_url: 'https://gmail.googleapis.com', path: '/gmail/v1/users/me/messages/{id}', query: { format: '{format}' } },
79
+ mutating: false,
80
+ }],
81
+ ['google', 'list_calendar_events', {
82
+ description: 'List events of a calendar.',
83
+ input: obj({ calendar_id: str('Calendar id; "primary" for the signed-in user.'), timeMin: str('RFC3339 lower bound for an event\'s end.'), timeMax: str('RFC3339 exclusive upper bound for an event\'s start.'), maxResults: { type: 'integer', minimum: 1, maximum: 2500 }, pageToken: str('nextPageToken of a previous call.'), singleEvents: { type: 'boolean' }, orderBy: str('startTime (needs singleEvents) or updated.', { enum: ['startTime', 'updated'] }), q: str('Free-text search.') }, ['calendar_id']),
84
+ request: { method: 'GET', base_url: 'https://www.googleapis.com', path: '/calendar/v3/calendars/{calendar_id}/events', query: { timeMin: '{timeMin}', timeMax: '{timeMax}', maxResults: '{maxResults}', pageToken: '{pageToken}', singleEvents: '{singleEvents}', orderBy: '{orderBy}', q: '{q}' } },
85
+ paginate: { type: 'cursor', cursor_path: 'nextPageToken', cursor_param: 'pageToken', items_path: 'items' }, mutating: false,
86
+ }],
87
+ ['linear', 'list_issues', {
88
+ description: 'List issues (newest first by default). Pass `after` from pageInfo.endCursor for the next page.',
89
+ input: obj({ first: { type: 'integer', minimum: 1, maximum: 250 }, after: str('pageInfo.endCursor of a previous call.') }),
90
+ request: { method: 'POST', base_url: 'https://api.linear.app', path: '/graphql', body: { query: 'query($first: Int, $after: String) { issues(first: $first, after: $after) { nodes { id identifier title url state { name } } pageInfo { hasNextPage endCursor } } }', variables: { first: '{first}', after: '{after}' } } },
91
+ response: { path: 'data.issues' }, mutating: false,
92
+ }],
93
+ ['linear', 'list_teams', {
94
+ description: 'List teams.',
95
+ input: obj({ first: { type: 'integer', minimum: 1, maximum: 250 }, after: str('pageInfo.endCursor of a previous call.') }),
96
+ request: { method: 'POST', base_url: 'https://api.linear.app', path: '/graphql', body: { query: 'query($first: Int, $after: String) { teams(first: $first, after: $after) { nodes { id key name } pageInfo { hasNextPage endCursor } } }', variables: { first: '{first}', after: '{after}' } } },
97
+ response: { path: 'data.teams' }, mutating: false,
98
+ }],
99
+ ['linear', 'create_issue', {
100
+ description: 'Create an issue in a team. Linear reports failures in an `errors` array with HTTP 200, so check the result.',
101
+ input: obj({ teamId: str('Team id (see list_teams).'), title: str('Issue title.', { minLength: 1 }), description: str('Markdown description.') }, ['teamId', 'title']),
102
+ request: { method: 'POST', base_url: 'https://api.linear.app', path: '/graphql', body: { query: 'mutation($teamId: String!, $title: String, $description: String) { issueCreate(input: { teamId: $teamId, title: $title, description: $description }) { success issue { id identifier title url } } }', variables: { teamId: '{teamId}', title: '{title}', description: '{description}' } } },
103
+ response: { path: 'data.issueCreate' }, mutating: true,
104
+ }],
105
+ ['notion', 'create_page', {
106
+ description: 'Create a page under a page or a data source.',
107
+ input: obj({ parent: { type: 'object', description: 'One of { page_id } or { data_source_id }.' }, properties: { type: 'object', description: 'Property values keyed by name.' }, children: { type: 'array', maxItems: 100, items: { type: 'object' } } }, ['parent', 'properties']),
108
+ request: { method: 'POST', base_url: 'https://api.notion.com', path: '/v1/pages', body: { parent: '{parent}', properties: '{properties}', children: '{children}' }, headers: { 'notion-version': '2026-03-11' } },
109
+ mutating: true,
110
+ }],
111
+ ['hubspot', 'create_contact', {
112
+ description: 'Create a CRM contact.',
113
+ input: obj({ email: str('Email address.'), firstname: str('First name.'), lastname: str('Last name.') }, ['email']),
114
+ request: { method: 'POST', base_url: HUB, path: '/crm/v3/objects/contacts', body: { properties: { email: '{email}', firstname: '{firstname}', lastname: '{lastname}' } } },
115
+ mutating: true,
116
+ }],
117
+ ['hubspot', 'list_contacts', {
118
+ description: 'List CRM contacts (cursor `after` from the previous page).',
119
+ input: obj({ limit: { type: 'integer', minimum: 1, maximum: 100 }, after: str('Cursor from paging.next.after.'), properties: str('Comma-separated property names to return.') }),
120
+ request: { method: 'GET', base_url: HUB, path: '/crm/v3/objects/contacts', query: { limit: '{limit}', after: '{after}', properties: '{properties}' } },
121
+ paginate: { type: 'cursor', cursor_path: 'paging.next.after', cursor_param: 'after', items_path: 'results' }, mutating: false,
122
+ }],
123
+ ['google', 'create_calendar_event', {
124
+ description: 'Create a calendar event.',
125
+ input: obj({ calendar_id: str('Calendar id; "primary" for the signed-in user.'), summary: str('Event title.'), start: { type: 'object', description: '{ dateTime, timeZone } or { date }.' }, end: { type: 'object', description: '{ dateTime, timeZone } or { date }.' }, description: str('Event description.') }, ['calendar_id', 'start', 'end']),
126
+ request: { method: 'POST', base_url: 'https://www.googleapis.com', path: '/calendar/v3/calendars/{calendar_id}/events', body: { summary: '{summary}', description: '{description}', start: '{start}', end: '{end}' } },
127
+ scopes: [], mutating: true,
128
+ }],
129
+ ['google', 'send_gmail_message', {
130
+ description: 'Send an email from the signed-in user. `raw` is the RFC 2822 message, base64url-encoded.',
131
+ input: obj({ raw: str('Base64url RFC 2822 message.', { minLength: 1 }) }, ['raw']),
132
+ request: { method: 'POST', base_url: 'https://gmail.googleapis.com', path: '/gmail/v1/users/me/messages/send', body: { raw: '{raw}' } },
133
+ mutating: true,
134
+ }],
135
+ ];
136
+ exports.BUILT_IN_ACTIONS = [
137
+ // The original packs gain their declared outputs from catalog-extra; the newer packs carry their own.
138
+ ...RAW.map(([p, n, d]) => (0, emu4_actions_def_1.parseActionDef)(p, n, { ...d, ...(emu4_actions_catalog_extra_1.BUILT_IN_OUTPUTS[`${p}/${n}`] ? { output: emu4_actions_catalog_extra_1.BUILT_IN_OUTPUTS[`${p}/${n}`] } : {}) })),
139
+ ...emu4_actions_catalog_extra_1.EXTRA_ACTIONS.map(([p, n, d]) => (0, emu4_actions_def_1.parseActionDef)(p, n, d)),
140
+ ];
141
+ const builtInFor = (provider) => exports.BUILT_IN_ACTIONS.filter((a) => a.provider === provider);
142
+ exports.builtInFor = builtInFor;
143
+ //# sourceMappingURL=emu4-actions-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emu4-actions-catalog.js","sourceRoot":"","sources":["../../src/handlers/emu4-actions-catalog.ts"],"names":[],"mappings":";;;AACA,yDAAoD;AACpD,6EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,GAAG,GAAG,CAAC,WAAmB,EAAE,QAAiC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AACtH,MAAM,GAAG,GAAG,CAAC,UAAmC,EAAE,WAAqB,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEzH,MAAM,EAAE,GAAG,wBAAwB,CAAC;AACpC,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;AACvD,MAAM,KAAK,GAAG,uBAAuB,CAAC;AACtC,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAC1D,MAAM,GAAG,GAAG,wBAAwB,CAAC;AAErC,MAAM,GAAG,GAAgC;IACvC,CAAC,QAAQ,EAAE,aAAa,EAAE;YACxB,WAAW,EAAE,kCAAkC;YAC/C,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1Q,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YAClK,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK;SAC5B,CAAC;IACF,CAAC,QAAQ,EAAE,WAAW,EAAE;YACtB,WAAW,EAAE,iBAAiB;YAC9B,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YAChK,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,6CAA6C,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5G,QAAQ,EAAE,KAAK;SAChB,CAAC;IACF,CAAC,QAAQ,EAAE,cAAc,EAAE;YACzB,WAAW,EAAE,gCAAgC;YAC7C,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACjS,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACxL,QAAQ,EAAE,IAAI;SACf,CAAC;IACF,CAAC,WAAW,EAAE,cAAc,EAAE;YAC5B,WAAW,EAAE,8CAA8C;YAC3D,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC/J,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,EAAE;YACjN,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;SACnC,CAAC;IACF,CAAC,WAAW,EAAE,eAAe,EAAE;YAC7B,WAAW,EAAE,kCAAkC;YAC/C,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,6DAA6D,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,qCAAqC,CAAC,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;YAC1O,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,EAAE;YACnL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK;SACpC,CAAC;IACF,CAAC,WAAW,EAAE,eAAe,EAAE;YAC7B,WAAW,EAAE,2DAA2D;YACxE,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,qCAAqC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,0CAA0C,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,2CAA2C,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1R,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;YAC1L,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK;SAChK,CAAC;IACF,CAAC,WAAW,EAAE,YAAY,EAAE;YAC1B,WAAW,EAAE,8BAA8B;YAC3C,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,qCAAqC,CAAC,EAAE,CAAC;YACxH,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;YACjH,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK;SAC/J,CAAC;IACF,CAAC,QAAQ,EAAE,qBAAqB,EAAE;YAChC,WAAW,EAAE,wFAAwF;YACrG,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,mCAAmC,CAAC,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;YACpM,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAA8B,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,EAAE;YAC5N,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK;SAC/H,CAAC;IACF,CAAC,QAAQ,EAAE,mBAAmB,EAAE;YAC9B,WAAW,EAAE,yBAAyB;YACtC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAChJ,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAA8B,EAAE,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;YAC7I,QAAQ,EAAE,KAAK;SAChB,CAAC;IACF,CAAC,QAAQ,EAAE,sBAAsB,EAAE;YACjC,WAAW,EAAE,4BAA4B;YACzC,KAAK,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,gDAAgD,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,0CAA0C,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,sDAAsD,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,mCAAmC,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,4CAA4C,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;YACpf,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,4BAA4B,EAAE,IAAI,EAAE,6CAA6C,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACpS,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK;SAC5H,CAAC;IACF,CAAC,QAAQ,EAAE,aAAa,EAAE;YACxB,WAAW,EAAE,gGAAgG;YAC7G,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,wCAAwC,CAAC,EAAE,CAAC;YAC1H,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qKAAqK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5T,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,KAAK;SACnD,CAAC;IACF,CAAC,QAAQ,EAAE,YAAY,EAAE;YACvB,WAAW,EAAE,aAAa;YAC1B,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,wCAAwC,CAAC,EAAE,CAAC;YAC1H,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,yIAAyI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;YAChS,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK;SAClD,CAAC;IACF,CAAC,QAAQ,EAAE,cAAc,EAAE;YACzB,WAAW,EAAE,6GAA6G;YAC1H,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,2BAA2B,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtK,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,sMAAsM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE;YAC7X,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI;SACvD,CAAC;IACF,CAAC,QAAQ,EAAE,aAAa,EAAE;YACxB,WAAW,EAAE,8CAA8C;YAC3D,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACpR,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE;YACjN,QAAQ,EAAE,IAAI;SACf,CAAC;IACF,CAAC,SAAS,EAAE,gBAAgB,EAAE;YAC5B,WAAW,EAAE,uBAAuB;YACpC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACnH,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE;YAC1K,QAAQ,EAAE,IAAI;SACf,CAAC;IACF,CAAC,SAAS,EAAE,eAAe,EAAE;YAC3B,WAAW,EAAE,4DAA4D;YACzE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,gCAAgC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,2CAA2C,CAAC,EAAE,CAAC;YAChL,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;YACtJ,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK;SAC9H,CAAC;IACF,CAAC,QAAQ,EAAE,uBAAuB,EAAE;YAClC,WAAW,EAAE,0BAA0B;YACvC,KAAK,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,gDAAgD,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACrV,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,4BAA4B,EAAE,IAAI,EAAE,6CAA6C,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACtN,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;SAC3B,CAAC;IACF,CAAC,QAAQ,EAAE,oBAAoB,EAAE;YAC/B,WAAW,EAAE,0FAA0F;YACvG,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAClF,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,8BAA8B,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACvI,QAAQ,EAAE,IAAI;SACf,CAAC;CACH,CAAC;AAEW,QAAA,gBAAgB,GAAgB;IAC3C,sGAAsG;IACtG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iCAAc,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAI,CAAY,EAAE,GAAG,CAAC,6CAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,6CAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1J,GAAG,0CAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iCAAc,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7D,CAAC;AACK,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,wBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAA3F,QAAA,UAAU,cAAiF"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Declarative actions over a connection: a typed input, a request template and a response mapping. No code runs;
3
+ * the request goes out through the connection relay (host allow-list, credential, refresh-once, audit).
4
+ */
5
+ export interface ActionDef {
6
+ provider: string;
7
+ name: string;
8
+ description: string;
9
+ /** JSON Schema (object) of the input. Checked before anything is sent. */
10
+ input: Record<string, unknown>;
11
+ /**
12
+ * JSON Schema of what the action returns (after `response.path`). Published so callers get types, and checked against
13
+ * every successful answer: a mismatch is a provider change (the radar records it) and never fails the call.
14
+ */
15
+ output?: Record<string, unknown>;
16
+ request: {
17
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
18
+ /** https base, e.g. https://api.github.com. Must be a host of the connection's allowed_hosts. */
19
+ base_url: string;
20
+ /** `/repos/{owner}/{repo}/issues`: `{arg}` is replaced by the percent-encoded input value. */
21
+ path: string;
22
+ /** Query parameters; a value that is exactly `{arg}` is dropped when the input omits it. */
23
+ query?: Record<string, string>;
24
+ /** JSON body template: a string that is exactly `{arg}` becomes the input value (omitted when absent). */
25
+ body?: unknown;
26
+ headers?: Record<string, string>;
27
+ };
28
+ response?: {
29
+ /** Dot path to the part of the JSON answer to return. */
30
+ path?: string;
31
+ /** Providers that answer 200 with `{ok:false}` (Slack): the field to check and the one holding the error. */
32
+ ok_field?: string;
33
+ error_field?: string;
34
+ };
35
+ /** Provider scopes the connection must hold; checked before the call when the connection's granted scopes are known. */
36
+ scopes?: string[];
37
+ /** Cursor pagination hint passed to the relay's paginate when the caller asks for `all_pages`. */
38
+ paginate?: Record<string, unknown>;
39
+ /** True for actions that change data: surfaced as the MCP destructive hint. */
40
+ mutating: boolean;
41
+ }
42
+ export declare function parseActionDef(provider: string, name: string, raw: unknown): ActionDef;
43
+ export declare function validateInput(schema: Record<string, unknown>, value: unknown, path?: string): string | null;
44
+ export declare function buildActionRequest(def: ActionDef, input: Record<string, unknown>): {
45
+ method: string;
46
+ url: string;
47
+ headers: Record<string, string>;
48
+ body?: unknown;
49
+ };
50
+ export declare const pick: (v: unknown, path: string | undefined) => unknown;
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pick = void 0;
4
+ exports.parseActionDef = parseActionDef;
5
+ exports.validateInput = validateInput;
6
+ exports.buildActionRequest = buildActionRequest;
7
+ /* eslint-disable @typescript-eslint/no-explicit-any */
8
+ const errors_1 = require("../errors");
9
+ const ApiError = { validation: (message, param) => new errors_1.EmulatorError('VALIDATION_FAILED', message, param) };
10
+ const NAME = /^[a-z][a-z0-9_]{0,63}$/;
11
+ const PROVIDER = /^[a-z0-9][a-z0-9_.-]{0,63}$/;
12
+ const TEMPLATE_ARG = /\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
13
+ const MAX_BODY_DEPTH = 8;
14
+ const obj = (v, where) => {
15
+ if (typeof v !== 'object' || v === null || Array.isArray(v))
16
+ throw ApiError.validation(`${where} must be an object.`, 'definition');
17
+ return v;
18
+ };
19
+ function parseActionDef(provider, name, raw) {
20
+ if (!PROVIDER.test(provider))
21
+ throw ApiError.validation('provider must be a short lowercase key.', 'provider');
22
+ if (!NAME.test(name))
23
+ throw ApiError.validation('name must be lowercase letters, digits and underscores.', 'name');
24
+ const o = obj(raw, 'The definition');
25
+ if (typeof o.description !== 'string' || !o.description.trim() || o.description.length > 500)
26
+ throw ApiError.validation('description is required (up to 500 characters).', 'definition');
27
+ const input = o.input === undefined ? { type: 'object', properties: {} } : obj(o.input, 'input');
28
+ if (input.type !== 'object')
29
+ throw ApiError.validation('input must be a JSON Schema of type object.', 'definition');
30
+ if (JSON.stringify(input).length > 20_000)
31
+ throw ApiError.validation('input schema is too large.', 'definition');
32
+ let output;
33
+ if (o.output !== undefined) {
34
+ output = obj(o.output, 'output');
35
+ if (JSON.stringify(output).length > 20_000)
36
+ throw ApiError.validation('output schema is too large.', 'definition');
37
+ if (output.type !== undefined && !(typeof output.type === 'string' || (Array.isArray(output.type) && output.type.every((t) => typeof t === 'string'))))
38
+ throw ApiError.validation('output.type must be a JSON Schema type.', 'definition');
39
+ }
40
+ const r = obj(o.request, 'request');
41
+ const method = String(r.method ?? '').toUpperCase();
42
+ if (!['GET', 'POST', 'PUT', 'PATCH', 'DELETE'].includes(method))
43
+ throw ApiError.validation('request.method must be GET, POST, PUT, PATCH or DELETE.', 'definition');
44
+ let base;
45
+ try {
46
+ base = new URL(String(r.base_url));
47
+ }
48
+ catch {
49
+ throw ApiError.validation('request.base_url must be an https URL.', 'definition');
50
+ }
51
+ if (base.protocol !== 'https:' || base.username || base.password || base.search || base.hash)
52
+ throw ApiError.validation('request.base_url must be a plain https URL.', 'definition');
53
+ if (typeof r.path !== 'string' || !r.path.startsWith('/') || r.path.includes('..') || r.path.length > 500 || /[?#\s]/.test(r.path))
54
+ throw ApiError.validation('request.path must start with / and hold no query, fragment or "..".', 'definition');
55
+ const props = (input.properties ?? {});
56
+ const used = new Set();
57
+ for (const m of r.path.matchAll(TEMPLATE_ARG))
58
+ used.add(m[1]);
59
+ const query = r.query === undefined ? undefined : obj(r.query, 'request.query');
60
+ for (const [k, v] of Object.entries(query ?? {})) {
61
+ if (typeof v !== 'string' || !/^[A-Za-z0-9_.\-[\]]{1,64}$/.test(k))
62
+ throw ApiError.validation('request.query maps names to string templates.', 'definition');
63
+ for (const m of v.matchAll(TEMPLATE_ARG))
64
+ used.add(m[1]);
65
+ }
66
+ const walk = (v, depth) => {
67
+ if (depth > MAX_BODY_DEPTH)
68
+ throw ApiError.validation('request.body is nested too deeply.', 'definition');
69
+ if (typeof v === 'string')
70
+ for (const m of v.matchAll(TEMPLATE_ARG))
71
+ used.add(m[1]);
72
+ else if (Array.isArray(v))
73
+ v.forEach((x) => walk(x, depth + 1));
74
+ else if (typeof v === 'object' && v !== null)
75
+ Object.values(v).forEach((x) => walk(x, depth + 1));
76
+ };
77
+ walk(r.body, 0);
78
+ const headers = r.headers === undefined ? undefined : obj(r.headers, 'request.headers');
79
+ for (const [k, v] of Object.entries(headers ?? {})) {
80
+ if (typeof v !== 'string' || !/^[A-Za-z0-9-]{1,64}$/.test(k) || /^(authorization|cookie|host|proxy-authorization|content-length|x-api-key)$/i.test(k) || /[\r\n]/.test(v))
81
+ throw ApiError.validation('request.headers has a header Atlas sets itself or an invalid value.', 'definition');
82
+ }
83
+ for (const a of used)
84
+ if (!(a in props))
85
+ throw ApiError.validation(`The request uses {${a}}, which is not a property of input.`, 'definition');
86
+ for (const m of r.path.matchAll(TEMPLATE_ARG)) {
87
+ const req = (input.required ?? []);
88
+ if (!req.includes(m[1]))
89
+ throw ApiError.validation(`Path argument ${m[1]} must be in input.required.`, 'definition');
90
+ }
91
+ let response;
92
+ if (o.response !== undefined) {
93
+ const x = obj(o.response, 'response');
94
+ for (const k of ['path', 'ok_field', 'error_field'])
95
+ if (x[k] !== undefined && (typeof x[k] !== 'string' || !/^[A-Za-z0-9_$-]+(\.[A-Za-z0-9_$-]+){0,5}$/.test(x[k])))
96
+ throw ApiError.validation(`response.${k} must be a dot path.`, 'definition');
97
+ response = x;
98
+ }
99
+ const scopes = o.scopes === undefined ? undefined : o.scopes;
100
+ if (scopes !== undefined && (!Array.isArray(scopes) || scopes.length > 30 || scopes.some((s) => typeof s !== 'string' || s.length > 300)))
101
+ throw ApiError.validation('scopes must be a list of provider scopes.', 'definition');
102
+ return {
103
+ provider, name, description: o.description.trim(), input, ...(output ? { output } : {}),
104
+ request: { method: method, base_url: base.origin + (base.pathname === '/' ? '' : base.pathname.replace(/\/$/, '')), path: r.path, query, body: r.body, headers },
105
+ response, scopes: scopes,
106
+ paginate: o.paginate === undefined ? undefined : obj(o.paginate, 'paginate'),
107
+ mutating: typeof o.mutating === 'boolean' ? o.mutating : method !== 'GET',
108
+ };
109
+ }
110
+ // ---- input validation (the subset of JSON Schema inputs use) --------------------------
111
+ function validateInput(schema, value, path = 'input') {
112
+ let type = schema.type;
113
+ // A nullable type (`['string', 'null']`): null passes, anything else is checked against the one real type.
114
+ if (Array.isArray(type)) {
115
+ if (value === null && type.includes('null'))
116
+ return null;
117
+ const real = type.filter((t) => t !== 'null');
118
+ type = real.length === 1 ? real[0] : undefined;
119
+ }
120
+ if (Array.isArray(schema.enum) && !schema.enum.some((e) => JSON.stringify(e) === JSON.stringify(value)))
121
+ return `${path} must be one of ${JSON.stringify(schema.enum)}.`;
122
+ switch (type) {
123
+ case 'object': {
124
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
125
+ return `${path} must be an object.`;
126
+ const v = value;
127
+ const props = (schema.properties ?? {});
128
+ for (const r of (schema.required ?? []))
129
+ if (v[r] === undefined || v[r] === null)
130
+ return `${path}.${r} is required.`;
131
+ for (const [k, x] of Object.entries(v)) {
132
+ if (x === undefined)
133
+ continue;
134
+ if (!props[k]) {
135
+ if (schema.additionalProperties === false)
136
+ return `${path}.${k} is not allowed.`;
137
+ continue;
138
+ }
139
+ const e = validateInput(props[k], x, `${path}.${k}`);
140
+ if (e)
141
+ return e;
142
+ }
143
+ return null;
144
+ }
145
+ case 'array': {
146
+ if (!Array.isArray(value))
147
+ return `${path} must be an array.`;
148
+ if (typeof schema.maxItems === 'number' && value.length > schema.maxItems)
149
+ return `${path} has too many items.`;
150
+ const item = schema.items;
151
+ if (item)
152
+ for (let i = 0; i < value.length; i++) {
153
+ const e = validateInput(item, value[i], `${path}[${i}]`);
154
+ if (e)
155
+ return e;
156
+ }
157
+ return null;
158
+ }
159
+ case 'string':
160
+ if (typeof value !== 'string')
161
+ return `${path} must be a string.`;
162
+ if (typeof schema.maxLength === 'number' && value.length > schema.maxLength)
163
+ return `${path} is too long.`;
164
+ if (typeof schema.minLength === 'number' && value.length < schema.minLength)
165
+ return `${path} is too short.`;
166
+ return null;
167
+ case 'integer':
168
+ case 'number':
169
+ if (typeof value !== 'number' || !Number.isFinite(value) || (type === 'integer' && !Number.isInteger(value)))
170
+ return `${path} must be ${type === 'integer' ? 'an integer' : 'a number'}.`;
171
+ if (typeof schema.minimum === 'number' && value < schema.minimum)
172
+ return `${path} is below the minimum.`;
173
+ if (typeof schema.maximum === 'number' && value > schema.maximum)
174
+ return `${path} is above the maximum.`;
175
+ return null;
176
+ case 'boolean':
177
+ return typeof value === 'boolean' ? null : `${path} must be true or false.`;
178
+ default:
179
+ return null;
180
+ }
181
+ }
182
+ // ---- request building -------------------------------------------------------------------
183
+ const WHOLE = /^\{([A-Za-z_][A-Za-z0-9_]*)\}$/;
184
+ const interpolate = (s, input, encode) => s.replace(TEMPLATE_ARG, (_, a) => {
185
+ const v = input[a];
186
+ const str = v === undefined || v === null ? '' : typeof v === 'object' ? JSON.stringify(v) : String(v);
187
+ return encode ? encodeURIComponent(str) : str;
188
+ });
189
+ const fill = (t, input) => {
190
+ if (typeof t === 'string') {
191
+ const m = WHOLE.exec(t);
192
+ if (m)
193
+ return input[m[1]];
194
+ return interpolate(t, input, false);
195
+ }
196
+ if (Array.isArray(t))
197
+ return t.map((x) => fill(x, input)).filter((x) => x !== undefined);
198
+ if (typeof t === 'object' && t !== null) {
199
+ const out = {};
200
+ for (const [k, v] of Object.entries(t)) {
201
+ const x = fill(v, input);
202
+ if (x !== undefined)
203
+ out[k] = x;
204
+ }
205
+ return out;
206
+ }
207
+ return t;
208
+ };
209
+ function buildActionRequest(def, input) {
210
+ const path = def.request.path.replace(TEMPLATE_ARG, (_, a) => {
211
+ const v = input[a];
212
+ if (v === undefined || v === null || v === '')
213
+ throw ApiError.validation(`${a} is required.`, 'input');
214
+ // A dot segment would climb out of the templated path once the URL is normalised.
215
+ if (String(v) === '.' || String(v) === '..')
216
+ throw ApiError.validation(`${a} is not a valid value.`, 'input');
217
+ return encodeURIComponent(String(v));
218
+ });
219
+ const qs = new URLSearchParams();
220
+ for (const [k, t] of Object.entries(def.request.query ?? {})) {
221
+ const m = WHOLE.exec(t);
222
+ if (m) {
223
+ const v = input[m[1]];
224
+ if (v === undefined || v === null)
225
+ continue;
226
+ if (Array.isArray(v))
227
+ qs.set(k, v.join(','));
228
+ else
229
+ qs.set(k, String(v));
230
+ }
231
+ else
232
+ qs.set(k, interpolate(t, input, false));
233
+ }
234
+ const q = qs.toString();
235
+ const body = def.request.body === undefined ? undefined : fill(def.request.body, input);
236
+ return { method: def.request.method, url: `${def.request.base_url}${path}${q ? `?${q}` : ''}`, headers: { accept: 'application/json', ...(def.request.headers ?? {}) }, ...(body !== undefined ? { body } : {}) };
237
+ }
238
+ const pick = (v, path) => {
239
+ if (!path)
240
+ return v;
241
+ let cur = v;
242
+ for (const k of path.split('.')) {
243
+ if (typeof cur !== 'object' || cur === null)
244
+ return undefined;
245
+ cur = cur[k];
246
+ }
247
+ return cur;
248
+ };
249
+ exports.pick = pick;
250
+ //# sourceMappingURL=emu4-actions-def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emu4-actions-def.js","sourceRoot":"","sources":["../../src/handlers/emu4-actions-def.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Engine } from '../engine';
2
+ import type { Obj } from '../openapi';
3
+ import { Table } from '../store';
4
+ export interface ActionRunResult {
5
+ accessTokenClaims: Obj;
6
+ idTokenClaims: Obj;
7
+ appMetadata: Obj;
8
+ sessionData: Obj;
9
+ denied: boolean;
10
+ denyReason: string | null;
11
+ lockReason: string | null;
12
+ pauseReason: string | null;
13
+ suppressedAccessClaims: string[];
14
+ suppressedIdClaims: string[];
15
+ userEdits: Obj;
16
+ signUpPrefill: Obj;
17
+ signUpModify: Obj;
18
+ httpRequests: Obj[];
19
+ connectorCalls: Obj[];
20
+ logs: string[];
21
+ error: string | null;
22
+ }
23
+ /** Timeout of one Action run, in CPU milliseconds (the real service allows 2 s; the emulator keeps a test suite fast). */
24
+ export declare const ACTION_TIMEOUT_MS = 100;
25
+ /** True when the emulator can run Action code (Node 22+); false in a browser, where the declarative reader is used. */
26
+ export declare const sandboxAvailable: () => boolean;
27
+ /** Code written as a handler module (`exports.onExecute...`, `module.exports`) is not the runtime's form: the caller reads it declaratively. */
28
+ export declare const isRuntimeForm: (code: string) => boolean;
29
+ /**
30
+ * Run one Action's code. Never throws: a syntax error, a thrown exception, a timeout or a promise that never settles comes back
31
+ * as `error` (the caller fails closed or open by trigger, as the real flow does). Returns null when the code is not in the
32
+ * runtime's form or vm is not available, so the caller can read it declaratively instead.
33
+ */
34
+ export declare function runActionCode(event: Obj, code: string): ActionRunResult | null;
35
+ /** One row per Action run (what the emulator saw: outcome, deny reason, logs, the requests `api.http` queued), read at `/__emulator/actions/runs`. */
36
+ export declare const actionRuns: (e: Engine) => Table<import("../store").Row>;