@sundaeswap/sprinkles 0.6.1 → 0.8.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 (197) hide show
  1. package/README.md +178 -181
  2. package/dist/cjs/Sprinkle/__tests__/action-integration.test.js +590 -0
  3. package/dist/cjs/Sprinkle/__tests__/action-integration.test.js.map +1 -0
  4. package/dist/cjs/Sprinkle/__tests__/action-registry.test.js +193 -0
  5. package/dist/cjs/Sprinkle/__tests__/action-registry.test.js.map +1 -0
  6. package/dist/cjs/Sprinkle/__tests__/action-runner.test.js +304 -0
  7. package/dist/cjs/Sprinkle/__tests__/action-runner.test.js.map +1 -0
  8. package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js +1110 -0
  9. package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js.map +1 -0
  10. package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js +744 -0
  11. package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js.map +1 -0
  12. package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
  13. package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
  14. package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js +711 -0
  15. package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -0
  16. package/dist/cjs/Sprinkle/__tests__/native-script.test.js +390 -0
  17. package/dist/cjs/Sprinkle/__tests__/native-script.test.js.map +1 -0
  18. package/dist/cjs/Sprinkle/__tests__/tui-helpers.test.js +334 -0
  19. package/dist/cjs/Sprinkle/__tests__/tui-helpers.test.js.map +1 -0
  20. package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js +367 -0
  21. package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
  22. package/dist/cjs/Sprinkle/__tests__/wallet-transaction-actions.test.js +749 -0
  23. package/dist/cjs/Sprinkle/__tests__/wallet-transaction-actions.test.js.map +1 -0
  24. package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js +164 -0
  25. package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
  26. package/dist/cjs/Sprinkle/actions/builtin/blaze-helper.js +61 -0
  27. package/dist/cjs/Sprinkle/actions/builtin/blaze-helper.js.map +1 -0
  28. package/dist/cjs/Sprinkle/actions/builtin/index.js +174 -0
  29. package/dist/cjs/Sprinkle/actions/builtin/index.js.map +1 -0
  30. package/dist/cjs/Sprinkle/actions/builtin/native-script.js +139 -0
  31. package/dist/cjs/Sprinkle/actions/builtin/native-script.js.map +1 -0
  32. package/dist/cjs/Sprinkle/actions/builtin/profile-actions.js +202 -0
  33. package/dist/cjs/Sprinkle/actions/builtin/profile-actions.js.map +1 -0
  34. package/dist/cjs/Sprinkle/actions/builtin/settings-actions.js +87 -0
  35. package/dist/cjs/Sprinkle/actions/builtin/settings-actions.js.map +1 -0
  36. package/dist/cjs/Sprinkle/actions/builtin/transaction-actions.js +345 -0
  37. package/dist/cjs/Sprinkle/actions/builtin/transaction-actions.js.map +1 -0
  38. package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js +218 -0
  39. package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
  40. package/dist/cjs/Sprinkle/actions/builtin/wallet-actions.js +212 -0
  41. package/dist/cjs/Sprinkle/actions/builtin/wallet-actions.js.map +1 -0
  42. package/dist/cjs/Sprinkle/actions/cli-adapter.js +390 -0
  43. package/dist/cjs/Sprinkle/actions/cli-adapter.js.map +1 -0
  44. package/dist/cjs/Sprinkle/actions/index.js +139 -0
  45. package/dist/cjs/Sprinkle/actions/index.js.map +1 -0
  46. package/dist/cjs/Sprinkle/actions/mcp-adapter.js +557 -0
  47. package/dist/cjs/Sprinkle/actions/mcp-adapter.js.map +1 -0
  48. package/dist/cjs/Sprinkle/actions/registry.js +92 -0
  49. package/dist/cjs/Sprinkle/actions/registry.js.map +1 -0
  50. package/dist/cjs/Sprinkle/actions/runner.js +190 -0
  51. package/dist/cjs/Sprinkle/actions/runner.js.map +1 -0
  52. package/dist/cjs/Sprinkle/actions/tui-helpers.js +96 -0
  53. package/dist/cjs/Sprinkle/actions/tui-helpers.js.map +1 -0
  54. package/dist/cjs/Sprinkle/actions/types.js +68 -0
  55. package/dist/cjs/Sprinkle/actions/types.js.map +1 -0
  56. package/dist/cjs/Sprinkle/index.js +678 -5
  57. package/dist/cjs/Sprinkle/index.js.map +1 -1
  58. package/dist/cjs/Sprinkle/prompts.js +12 -7
  59. package/dist/cjs/Sprinkle/prompts.js.map +1 -1
  60. package/dist/cjs/Sprinkle/schemas.js +17 -1
  61. package/dist/cjs/Sprinkle/schemas.js.map +1 -1
  62. package/dist/cjs/Sprinkle/type-guards.js +7 -1
  63. package/dist/cjs/Sprinkle/type-guards.js.map +1 -1
  64. package/dist/esm/Sprinkle/__tests__/action-integration.test.js +588 -0
  65. package/dist/esm/Sprinkle/__tests__/action-integration.test.js.map +1 -0
  66. package/dist/esm/Sprinkle/__tests__/action-registry.test.js +192 -0
  67. package/dist/esm/Sprinkle/__tests__/action-registry.test.js.map +1 -0
  68. package/dist/esm/Sprinkle/__tests__/action-runner.test.js +302 -0
  69. package/dist/esm/Sprinkle/__tests__/action-runner.test.js.map +1 -0
  70. package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js +1107 -0
  71. package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js.map +1 -0
  72. package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js +742 -0
  73. package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js.map +1 -0
  74. package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
  75. package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
  76. package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js +710 -0
  77. package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -0
  78. package/dist/esm/Sprinkle/__tests__/native-script.test.js +388 -0
  79. package/dist/esm/Sprinkle/__tests__/native-script.test.js.map +1 -0
  80. package/dist/esm/Sprinkle/__tests__/tui-helpers.test.js +332 -0
  81. package/dist/esm/Sprinkle/__tests__/tui-helpers.test.js.map +1 -0
  82. package/dist/esm/Sprinkle/__tests__/utility-actions.test.js +365 -0
  83. package/dist/esm/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
  84. package/dist/esm/Sprinkle/__tests__/wallet-transaction-actions.test.js +747 -0
  85. package/dist/esm/Sprinkle/__tests__/wallet-transaction-actions.test.js.map +1 -0
  86. package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js +159 -0
  87. package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
  88. package/dist/esm/Sprinkle/actions/builtin/blaze-helper.js +55 -0
  89. package/dist/esm/Sprinkle/actions/builtin/blaze-helper.js.map +1 -0
  90. package/dist/esm/Sprinkle/actions/builtin/index.js +37 -0
  91. package/dist/esm/Sprinkle/actions/builtin/index.js.map +1 -0
  92. package/dist/esm/Sprinkle/actions/builtin/native-script.js +133 -0
  93. package/dist/esm/Sprinkle/actions/builtin/native-script.js.map +1 -0
  94. package/dist/esm/Sprinkle/actions/builtin/profile-actions.js +197 -0
  95. package/dist/esm/Sprinkle/actions/builtin/profile-actions.js.map +1 -0
  96. package/dist/esm/Sprinkle/actions/builtin/settings-actions.js +81 -0
  97. package/dist/esm/Sprinkle/actions/builtin/settings-actions.js.map +1 -0
  98. package/dist/esm/Sprinkle/actions/builtin/transaction-actions.js +340 -0
  99. package/dist/esm/Sprinkle/actions/builtin/transaction-actions.js.map +1 -0
  100. package/dist/esm/Sprinkle/actions/builtin/utility-actions.js +213 -0
  101. package/dist/esm/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
  102. package/dist/esm/Sprinkle/actions/builtin/wallet-actions.js +207 -0
  103. package/dist/esm/Sprinkle/actions/builtin/wallet-actions.js.map +1 -0
  104. package/dist/esm/Sprinkle/actions/cli-adapter.js +379 -0
  105. package/dist/esm/Sprinkle/actions/cli-adapter.js.map +1 -0
  106. package/dist/esm/Sprinkle/actions/index.js +12 -0
  107. package/dist/esm/Sprinkle/actions/index.js.map +1 -0
  108. package/dist/esm/Sprinkle/actions/mcp-adapter.js +547 -0
  109. package/dist/esm/Sprinkle/actions/mcp-adapter.js.map +1 -0
  110. package/dist/esm/Sprinkle/actions/registry.js +85 -0
  111. package/dist/esm/Sprinkle/actions/registry.js.map +1 -0
  112. package/dist/esm/Sprinkle/actions/runner.js +182 -0
  113. package/dist/esm/Sprinkle/actions/runner.js.map +1 -0
  114. package/dist/esm/Sprinkle/actions/tui-helpers.js +91 -0
  115. package/dist/esm/Sprinkle/actions/tui-helpers.js.map +1 -0
  116. package/dist/esm/Sprinkle/actions/types.js +61 -0
  117. package/dist/esm/Sprinkle/actions/types.js.map +1 -0
  118. package/dist/esm/Sprinkle/index.js +517 -7
  119. package/dist/esm/Sprinkle/index.js.map +1 -1
  120. package/dist/esm/Sprinkle/prompts.js +12 -7
  121. package/dist/esm/Sprinkle/prompts.js.map +1 -1
  122. package/dist/esm/Sprinkle/schemas.js +16 -0
  123. package/dist/esm/Sprinkle/schemas.js.map +1 -1
  124. package/dist/esm/Sprinkle/type-guards.js +3 -0
  125. package/dist/esm/Sprinkle/type-guards.js.map +1 -1
  126. package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts +50 -0
  127. package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts.map +1 -0
  128. package/dist/types/Sprinkle/actions/builtin/blaze-helper.d.ts +39 -0
  129. package/dist/types/Sprinkle/actions/builtin/blaze-helper.d.ts.map +1 -0
  130. package/dist/types/Sprinkle/actions/builtin/index.d.ts +30 -0
  131. package/dist/types/Sprinkle/actions/builtin/index.d.ts.map +1 -0
  132. package/dist/types/Sprinkle/actions/builtin/native-script.d.ts +27 -0
  133. package/dist/types/Sprinkle/actions/builtin/native-script.d.ts.map +1 -0
  134. package/dist/types/Sprinkle/actions/builtin/profile-actions.d.ts +55 -0
  135. package/dist/types/Sprinkle/actions/builtin/profile-actions.d.ts.map +1 -0
  136. package/dist/types/Sprinkle/actions/builtin/settings-actions.d.ts +32 -0
  137. package/dist/types/Sprinkle/actions/builtin/settings-actions.d.ts.map +1 -0
  138. package/dist/types/Sprinkle/actions/builtin/transaction-actions.d.ts +70 -0
  139. package/dist/types/Sprinkle/actions/builtin/transaction-actions.d.ts.map +1 -0
  140. package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts +48 -0
  141. package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts.map +1 -0
  142. package/dist/types/Sprinkle/actions/builtin/wallet-actions.d.ts +50 -0
  143. package/dist/types/Sprinkle/actions/builtin/wallet-actions.d.ts.map +1 -0
  144. package/dist/types/Sprinkle/actions/cli-adapter.d.ts +104 -0
  145. package/dist/types/Sprinkle/actions/cli-adapter.d.ts.map +1 -0
  146. package/dist/types/Sprinkle/actions/index.d.ts +13 -0
  147. package/dist/types/Sprinkle/actions/index.d.ts.map +1 -0
  148. package/dist/types/Sprinkle/actions/mcp-adapter.d.ts +116 -0
  149. package/dist/types/Sprinkle/actions/mcp-adapter.d.ts.map +1 -0
  150. package/dist/types/Sprinkle/actions/registry.d.ts +42 -0
  151. package/dist/types/Sprinkle/actions/registry.d.ts.map +1 -0
  152. package/dist/types/Sprinkle/actions/runner.d.ts +45 -0
  153. package/dist/types/Sprinkle/actions/runner.d.ts.map +1 -0
  154. package/dist/types/Sprinkle/actions/tui-helpers.d.ts +53 -0
  155. package/dist/types/Sprinkle/actions/tui-helpers.d.ts.map +1 -0
  156. package/dist/types/Sprinkle/actions/types.d.ts +76 -0
  157. package/dist/types/Sprinkle/actions/types.d.ts.map +1 -0
  158. package/dist/types/Sprinkle/index.d.ts +84 -2
  159. package/dist/types/Sprinkle/index.d.ts.map +1 -1
  160. package/dist/types/Sprinkle/prompts.d.ts.map +1 -1
  161. package/dist/types/Sprinkle/schemas.d.ts +72 -0
  162. package/dist/types/Sprinkle/schemas.d.ts.map +1 -1
  163. package/dist/types/Sprinkle/type-guards.d.ts +4 -1
  164. package/dist/types/Sprinkle/type-guards.d.ts.map +1 -1
  165. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  166. package/package.json +9 -2
  167. package/src/Sprinkle/__tests__/action-integration.test.ts +558 -0
  168. package/src/Sprinkle/__tests__/action-registry.test.ts +187 -0
  169. package/src/Sprinkle/__tests__/action-runner.test.ts +324 -0
  170. package/src/Sprinkle/__tests__/builtin-actions.test.ts +1022 -0
  171. package/src/Sprinkle/__tests__/cli-adapter.test.ts +736 -0
  172. package/src/Sprinkle/__tests__/fill-in-struct.test.ts +23 -1
  173. package/src/Sprinkle/__tests__/mcp-adapter.test.ts +720 -0
  174. package/src/Sprinkle/__tests__/native-script.test.ts +341 -0
  175. package/src/Sprinkle/__tests__/tui-helpers.test.ts +325 -0
  176. package/src/Sprinkle/__tests__/utility-actions.test.ts +348 -0
  177. package/src/Sprinkle/__tests__/wallet-transaction-actions.test.ts +695 -0
  178. package/src/Sprinkle/actions/builtin/addressbook-actions.ts +168 -0
  179. package/src/Sprinkle/actions/builtin/blaze-helper.ts +89 -0
  180. package/src/Sprinkle/actions/builtin/index.ts +125 -0
  181. package/src/Sprinkle/actions/builtin/native-script.ts +165 -0
  182. package/src/Sprinkle/actions/builtin/profile-actions.ts +229 -0
  183. package/src/Sprinkle/actions/builtin/settings-actions.ts +99 -0
  184. package/src/Sprinkle/actions/builtin/transaction-actions.ts +381 -0
  185. package/src/Sprinkle/actions/builtin/utility-actions.ts +285 -0
  186. package/src/Sprinkle/actions/builtin/wallet-actions.ts +233 -0
  187. package/src/Sprinkle/actions/cli-adapter.ts +446 -0
  188. package/src/Sprinkle/actions/index.ts +33 -0
  189. package/src/Sprinkle/actions/mcp-adapter.ts +638 -0
  190. package/src/Sprinkle/actions/registry.ts +97 -0
  191. package/src/Sprinkle/actions/runner.ts +200 -0
  192. package/src/Sprinkle/actions/tui-helpers.ts +114 -0
  193. package/src/Sprinkle/actions/types.ts +91 -0
  194. package/src/Sprinkle/index.ts +612 -3
  195. package/src/Sprinkle/prompts.ts +118 -72
  196. package/src/Sprinkle/schemas.ts +20 -0
  197. package/src/Sprinkle/type-guards.ts +9 -0
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Built-in utility actions for the Sprinkle action system.
3
+ * These actions provide common Cardano operations: minting tokens,
4
+ * sending ADA/tokens, and registering stake scripts.
5
+ */
6
+ import type { TSchema } from "@sinclair/typebox";
7
+ import type { IAction } from "../types.js";
8
+ import type { NativeScriptInput } from "./native-script.js";
9
+ /**
10
+ * `mint-token` -- Mint native tokens using a native script derived from the wallet's payment key.
11
+ * The policy is a simple ScriptPubkey requiring the wallet's payment credential to sign.
12
+ * Requires a hot wallet.
13
+ */
14
+ export declare const mintToken: IAction<{
15
+ tokenName: string;
16
+ amount: string;
17
+ nativeScripts?: NativeScriptInput[];
18
+ }, {
19
+ policyId: string;
20
+ tokenName: string;
21
+ amount: string;
22
+ txCbor: string;
23
+ }, TSchema>;
24
+ /**
25
+ * `simple-send` -- Send ADA or a native token to a recipient address.
26
+ * Builds an unsigned transaction that can be signed via TxDialog or sign-transaction.
27
+ */
28
+ export declare const simpleSend: IAction<{
29
+ recipientAddress: string;
30
+ lovelace?: string;
31
+ policyId?: string;
32
+ assetName?: string;
33
+ tokenAmount?: string;
34
+ nativeScripts?: NativeScriptInput[];
35
+ }, {
36
+ txCbor: string;
37
+ }, TSchema>;
38
+ /**
39
+ * `register-stake-script` -- Register a stake script credential on-chain.
40
+ * Takes a script hash and builds a stake registration transaction.
41
+ */
42
+ export declare const registerStakeScript: IAction<{
43
+ scriptHash: string;
44
+ nativeScripts?: NativeScriptInput[];
45
+ }, {
46
+ txCbor: string;
47
+ }, TSchema>;
48
+ //# sourceMappingURL=utility-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-actions.d.ts","sourceRoot":"","sources":["../../../../../src/Sprinkle/actions/builtin/utility-actions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAC7B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAAE,EAC1E;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvE,OAAO,CAiGR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,OAAO,CAC9B;IACE,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACrC,EACD;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAClB,OAAO,CAuFR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CACvC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAAE,EAC3D;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAClB,OAAO,CAmDR,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Built-in wallet query actions for the Sprinkle action system.
3
+ * These actions expose wallet address, balance, and UTxO queries as
4
+ * non-interactive actions available in CLI and MCP modes.
5
+ *
6
+ * All actions use category "wallet".
7
+ */
8
+ import type { TSchema } from "@sinclair/typebox";
9
+ import type { IAction } from "../types.js";
10
+ /**
11
+ * `get-wallet-address` -- Returns the primary change address of the configured wallet.
12
+ */
13
+ export declare const getWalletAddress: IAction<Record<string, never>, {
14
+ address: string;
15
+ network: string;
16
+ }, TSchema>;
17
+ /**
18
+ * `get-wallet-balance` -- Returns the ADA and token balance of the configured wallet.
19
+ * Aggregates lovelace and multi-asset amounts from all UTxOs.
20
+ * All quantities are returned as strings for BigInt-safe JSON serialization.
21
+ */
22
+ export declare const getWalletBalance: IAction<Record<string, never>, {
23
+ lovelace: string;
24
+ ada: string;
25
+ tokens: Array<{
26
+ policyId: string;
27
+ assetName: string;
28
+ quantity: string;
29
+ }>;
30
+ }, TSchema>;
31
+ /**
32
+ * `get-wallet-utxos` -- Returns raw UTxO set for the configured wallet.
33
+ * Accepts an optional limit (default 100). Returns UTxOs and the total count.
34
+ */
35
+ export declare const getWalletUtxos: IAction<{
36
+ limit?: number;
37
+ }, {
38
+ utxos: Array<{
39
+ txHash: string;
40
+ outputIndex: number;
41
+ lovelace: string;
42
+ tokens: Array<{
43
+ policyId: string;
44
+ assetName: string;
45
+ quantity: string;
46
+ }>;
47
+ }>;
48
+ total: number;
49
+ }, TSchema>;
50
+ //# sourceMappingURL=wallet-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-actions.d.ts","sourceRoot":"","sources":["../../../../../src/Sprinkle/actions/builtin/wallet-actions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAU3C;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,CACpC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACpC,OAAO,CAuCR,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,CACpC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E,EACD,OAAO,CAoER,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAClC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAClB;IACE,KAAK,EAAE,KAAK,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC1E,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACf,EACD,OAAO,CAkER,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * CLI adapter for Sprinkles actions.
3
+ *
4
+ * Provides:
5
+ * - Case-conversion helpers (camelToKebab / kebabToCamel)
6
+ * - Schema-driven type coercion (coerceValue / parseArgvWithSchema)
7
+ * - Help text generation (generateActionHelp / generateAppHelp)
8
+ * - CLI orchestrator (runCli)
9
+ */
10
+ import type { TSchema } from "@sinclair/typebox";
11
+ import type { AnyAction, IActionContext } from "./types.js";
12
+ import type { Sprinkle } from "../index.js";
13
+ /**
14
+ * Convert a camelCase string to kebab-case.
15
+ * Examples:
16
+ * "myFlagName" -> "my-flag-name"
17
+ * "getBalance" -> "get-balance"
18
+ * "URL" -> "u-r-l" (each uppercase letter gets a dash)
19
+ */
20
+ export declare function camelToKebab(str: string): string;
21
+ /**
22
+ * Convert a kebab-case string to camelCase.
23
+ * Examples:
24
+ * "my-flag-name" -> "myFlagName"
25
+ * "get-balance" -> "getBalance"
26
+ */
27
+ export declare function kebabToCamel(str: string): string;
28
+ /**
29
+ * Coerce a raw CLI string value to the type expected by a TypeBox schema.
30
+ *
31
+ * Handles:
32
+ * - Number / Integer: parseFloat / parseInt
33
+ * - Boolean: "true"/"false" strings, or passthrough if already boolean
34
+ * - BigInt: BigInt() constructor
35
+ * - Array: already-array passthrough; single value wrapped in array
36
+ * - Object: JSON string parse
37
+ * - String: passthrough
38
+ * - Optional: unwrap and recurse on inner schema
39
+ * - Union: passthrough (caller should supply JSON; no schema-level heuristics)
40
+ */
41
+ export declare function coerceValue(raw: unknown, schema: TSchema): unknown;
42
+ /**
43
+ * Walk a TypeBox object schema and coerce each property value from raw CLI args.
44
+ *
45
+ * - Handles kebab-case -> camelCase property name mapping
46
+ * - Applies coerceValue for each property
47
+ * - Applies TypeBox defaults for omitted optional fields
48
+ *
49
+ * @param rawArgs - Key/value record from parseCliArgs (keys may be kebab-case)
50
+ * @param schema - A TypeBox TObject schema
51
+ * @returns A new record with coerced values
52
+ */
53
+ export declare function parseArgvWithSchema(rawArgs: Record<string, unknown>, schema: TSchema): Record<string, unknown>;
54
+ /**
55
+ * Generate action-specific help text.
56
+ *
57
+ * Format:
58
+ * ```
59
+ * Usage: <appName> <action-name> [options]
60
+ *
61
+ * Description
62
+ *
63
+ * Options:
64
+ * --flag-name <type> Description [default: x] (required/optional)
65
+ * ...
66
+ * ```
67
+ */
68
+ export declare function generateActionHelp(action: AnyAction<any>, appName?: string): string;
69
+ /**
70
+ * Generate application-level help listing all registered actions.
71
+ *
72
+ * Format:
73
+ * ```
74
+ * Usage: <appName> <action> [options]
75
+ *
76
+ * Available actions:
77
+ *
78
+ * category:
79
+ * action-name Description
80
+ *
81
+ * Global options:
82
+ * --help Show this help message
83
+ * --profile <n> Use profile by name
84
+ * ```
85
+ */
86
+ export declare function generateAppHelp(actions: AnyAction<any>[], appName?: string): string;
87
+ /**
88
+ * Run an action from CLI arguments, writing JSON output to stdout/stderr.
89
+ *
90
+ * Handles:
91
+ * - Action not found: JSON error to stderr, process.exit(1)
92
+ * - Action help (`--help` in rawArgs): prints action help to stdout
93
+ * - Schema-driven argument coercion via parseArgvWithSchema
94
+ * - Success: `{"success":true,"data":...}` JSON to stdout
95
+ * - Failure: `{"success":false,"error":...}` JSON to stderr, process.exit(1)
96
+ *
97
+ * @param sprinkle - Fully-initialized Sprinkle instance
98
+ * @param actionName - The action to invoke
99
+ * @param rawArgs - Pre-parsed key/value args from parseCliArgs (profile already removed)
100
+ * @param context - The action execution context
101
+ * @param appName - Optional app name for help text
102
+ */
103
+ export declare function runCli<S extends TSchema>(sprinkle: Sprinkle<S>, actionName: string, rawArgs: Record<string, unknown>, context: IActionContext<S>, appName?: string): Promise<void>;
104
+ //# sourceMappingURL=cli-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-adapter.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/actions/cli-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAcjD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM5C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGhD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CA+FlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB;AA2BD;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAqCR;AAED;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAgB,eAAe,CAE7B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EACzB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAuCR;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS,OAAO,EAC5C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAoDf"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Barrel export for the actions subsystem.
3
+ */
4
+ export type { IAction, IActionContext, IActionResult, IActionSuccess, IActionFailure, AnyAction } from "./types.js";
5
+ export { ActionError } from "./types.js";
6
+ export { ActionRegistry } from "./registry.js";
7
+ export { executeAction, detectMode, parseCliArgs } from "./runner.js";
8
+ export { camelToKebab, kebabToCamel, coerceValue, parseArgvWithSchema, generateActionHelp, generateAppHelp, runCli, } from "./cli-adapter.js";
9
+ export { typeboxToJsonSchema, coerceMcpInput, getMcpSdk, createMcpServer, runMcp, } from "./mcp-adapter.js";
10
+ export { getBuiltinActions, toNativeScript, completeWithScripts } from "./builtin/index.js";
11
+ export type { NativeScriptInput } from "./builtin/index.js";
12
+ export { promptAndExecute } from "./tui-helpers.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/actions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,MAAM,GACP,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,eAAe,EACf,MAAM,GACP,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * MCP adapter for Sprinkles actions.
3
+ *
4
+ * Provides:
5
+ * - TypeBox to JSON Schema conversion (typeboxToJsonSchema)
6
+ * - TypeBox to Zod conversion for MCP SDK compatibility (typeboxToZod)
7
+ * - BigInt string coercion for MCP input (coerceMcpInput)
8
+ * - Lazy MCP SDK import with graceful error (getMcpSdk)
9
+ * - MCP server creation from registered actions (createMcpServer)
10
+ * - MCP orchestrator that starts a stdio server (runMcp)
11
+ */
12
+ import type { TSchema } from "@sinclair/typebox";
13
+ import type { Sprinkle } from "../index.js";
14
+ /**
15
+ * Convert a TypeBox schema to a plain JSON Schema object.
16
+ *
17
+ * Strips TypeBox-internal symbols and properties (Kind, OptionalKind, $id)
18
+ * and maps TypeBox-specific types to their JSON Schema equivalents:
19
+ * - BigInt -> { type: "string", pattern: "^-?[0-9]+$" } (JSON has no BigInt)
20
+ * - Sensitive string fields -> add writeOnly: true
21
+ * - Optional -> recurse on inner schema (Optional does not change Kind)
22
+ * - Union -> { anyOf: [...] }
23
+ * - Literal -> { type, const }
24
+ * - Null -> { type: "null" }
25
+ * - Unknown/unsupported -> {} (accepts anything)
26
+ */
27
+ export declare function typeboxToJsonSchema(schema: TSchema): Record<string, unknown>;
28
+ /**
29
+ * Coerce MCP JSON input values to the types expected by a TypeBox schema.
30
+ *
31
+ * MCP transmits all values as JSON, which has no BigInt type. When the schema
32
+ * expects a BigInt, the value arrives as a numeric string (e.g. "12345678").
33
+ * This function recursively walks the schema and input, converting BigInt
34
+ * string values to actual BigInt where needed.
35
+ *
36
+ * For all other types the value is passed through unchanged.
37
+ */
38
+ export declare function coerceMcpInput(input: unknown, schema: TSchema): unknown;
39
+ /**
40
+ * Zod module shape (the parts we use from zod).
41
+ * Typed loosely since zod is a transitive dependency of @modelcontextprotocol/sdk,
42
+ * not a direct dependency of Sprinkles.
43
+ */
44
+ type ZodType = any;
45
+ /**
46
+ * Convert a TypeBox schema to a Zod schema for MCP SDK compatibility.
47
+ *
48
+ * The MCP SDK (v1.27+) expects Zod schemas for tool input validation,
49
+ * not plain JSON Schema objects. This function converts TypeBox schemas
50
+ * to their Zod equivalents so the SDK correctly registers tool parameters.
51
+ *
52
+ * BigInt fields are represented as z.string() with a regex pattern since
53
+ * JSON (and thus MCP) has no BigInt type. The coerceMcpInput function
54
+ * handles converting these string values back to BigInt at call time.
55
+ */
56
+ export declare function typeboxToZod(schema: TSchema): Promise<ZodType>;
57
+ /**
58
+ * Convert a TypeBox object schema to a Zod "raw shape" (Record<string, ZodType>).
59
+ * This is the format expected by the MCP SDK's tool() API.
60
+ */
61
+ export declare function typeboxToZodShape(schema: TSchema): Promise<Record<string, ZodType>>;
62
+ /**
63
+ * MCP SDK module shape (the parts we use from @modelcontextprotocol/sdk).
64
+ * Typed loosely to avoid a hard dependency at compile time.
65
+ */
66
+ interface IMcpSdkModule {
67
+ McpServer: new (opts: {
68
+ name: string;
69
+ version: string;
70
+ }) => any;
71
+ }
72
+ /**
73
+ * Lazily import the MCP SDK server module.
74
+ *
75
+ * Throws a clear, actionable error if the SDK is not installed, rather than
76
+ * a cryptic "Cannot find module" Node error.
77
+ */
78
+ export declare function getMcpSdk(): Promise<IMcpSdkModule>;
79
+ /**
80
+ * Create an MCP server and register all actions from a Sprinkle instance as
81
+ * MCP tools.
82
+ *
83
+ * Each action becomes a tool with:
84
+ * - name: action.name
85
+ * - description: action.description
86
+ * - input schema: typeboxToJsonSchema(action.inputSchema)
87
+ * - handler: coerces input, executes action, returns JSON result
88
+ *
89
+ * The Sprinkle instance must already be initialized with a profile before
90
+ * this function is called.
91
+ *
92
+ * @param sprinkle - Fully-initialized Sprinkle instance
93
+ * @param serverName - Name to use for the MCP server
94
+ * @returns The configured McpServer instance (not yet connected)
95
+ */
96
+ export declare function createMcpServer<S extends TSchema>(sprinkle: Sprinkle<S>, serverName: string): Promise<any>;
97
+ /**
98
+ * Start an MCP server on stdio transport.
99
+ *
100
+ * This function:
101
+ * 1. Creates the MCP server and registers all actions as tools
102
+ * 2. Creates a StdioServerTransport
103
+ * 3. Connects the server to the transport
104
+ *
105
+ * IMPORTANT: All logging in this function goes to stderr. stdout is reserved
106
+ * for the MCP protocol messages.
107
+ *
108
+ * The Sprinkle instance must already be initialized with a profile. Profile
109
+ * initialization is the responsibility of the caller (Sprinkle.Run()).
110
+ *
111
+ * @param sprinkle - Fully-initialized Sprinkle instance
112
+ * @param serverName - Name to use for the MCP server
113
+ */
114
+ export declare function runMcp<S extends TSchema>(sprinkle: Sprinkle<S>, serverName: string): Promise<void>;
115
+ export {};
116
+ //# sourceMappingURL=mcp-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/actions/mcp-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAoBjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiC5C;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2H5E;AAMD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CA4DvE;AAMD;;;;GAIG;AAEH,KAAK,OAAO,GAAG,GAAG,CAAC;AAmDnB;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpE;AAuED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoBlC;AAMD;;;GAGG;AACH,UAAU,aAAa;IAErB,SAAS,EAAE,KAAK,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC;CACjE;AAOD;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAUxD;AAqBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,CAAC,SAAS,OAAO,EACrD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,GAEjB,OAAO,CAAC,GAAG,CAAC,CAgEd;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS,OAAO,EAC5C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Action registry for storing and retrieving registered actions.
3
+ */
4
+ import type { TSchema } from "@sinclair/typebox";
5
+ import type { AnyAction } from "./types.js";
6
+ /**
7
+ * Registry for managing actions registered on a Sprinkle app.
8
+ * Enforces name uniqueness and schema validation at registration time.
9
+ */
10
+ export declare class ActionRegistry<S extends TSchema> {
11
+ private actions;
12
+ /**
13
+ * Register an action with the registry.
14
+ *
15
+ * Validates:
16
+ * - Name is kebab-case (lowercase letters, digits, hyphens)
17
+ * - Name is unique within this registry
18
+ * - inputSchema and outputSchema are present
19
+ *
20
+ * @throws Error if validation fails
21
+ */
22
+ register(action: AnyAction<S>): void;
23
+ /**
24
+ * Retrieve an action by name.
25
+ * @returns The action, or undefined if not registered
26
+ */
27
+ get(name: string): AnyAction<S> | undefined;
28
+ /**
29
+ * Check if an action with the given name is registered.
30
+ */
31
+ has(name: string): boolean;
32
+ /**
33
+ * List all registered actions.
34
+ */
35
+ list(): AnyAction<S>[];
36
+ /**
37
+ * Group all registered actions by their category.
38
+ * Actions without a category are placed under "default".
39
+ */
40
+ listByCategory(): Map<string, AnyAction<S>[]>;
41
+ }
42
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/actions/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,OAAO;IAC3C,OAAO,CAAC,OAAO,CAAwC;IAEvD;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IA4BpC;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS;IAI3C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;IAItB;;;OAGG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;CAe9C"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Action runner utilities: input validation, execution, mode detection, and CLI arg parsing.
3
+ */
4
+ import type { TSchema } from "@sinclair/typebox";
5
+ import type { IAction, IActionContext, IActionResult } from "./types.js";
6
+ /**
7
+ * Execute an action with raw (unvalidated) input.
8
+ *
9
+ * - Validates rawInput against action.inputSchema using Value.Check
10
+ * - Applies defaults and transforms via Value.Decode
11
+ * - Calls action.execute with decoded input
12
+ * - Wraps all errors in ActionError for consistent error handling
13
+ *
14
+ * @returns A discriminated IActionResult -- never throws
15
+ */
16
+ export declare function executeAction<TInput, TOutput, S extends TSchema>(action: IAction<TInput, TOutput, S>, rawInput: unknown, context: IActionContext<S>): Promise<IActionResult<TOutput>>;
17
+ /**
18
+ * Detect the intended run mode from process argv.
19
+ *
20
+ * - No args or --interactive: "tui"
21
+ * - --mcp: "mcp"
22
+ * - --help or -h (with no positional arg): "help"
23
+ * - First positional arg (not starting with --): "cli"
24
+ * - Default fallback: "tui"
25
+ */
26
+ export declare function detectMode(argv: string[]): "tui" | "cli" | "mcp" | "help";
27
+ /**
28
+ * Parse CLI argv into an action name and key-value argument record.
29
+ *
30
+ * Expects:
31
+ * - First positional arg as the action name
32
+ * - Subsequent --flag value or --flag=value pairs as arguments
33
+ * - --no-flag for boolean negation
34
+ * - Values starting with { or [ are parsed as JSON
35
+ *
36
+ * Note: This is a preliminary implementation. Complex nested inputs
37
+ * should be provided as JSON strings (e.g. --input '{"key":"value"}').
38
+ *
39
+ * @throws Error if no action name is found in argv
40
+ */
41
+ export declare function parseCliArgs(argv: string[]): {
42
+ actionName: string;
43
+ args: Record<string, unknown>;
44
+ };
45
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/actions/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,SAAS,OAAO,EACpE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EACnC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CA+CjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EAAE,GACb,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAehC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,GACb;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAmEvD"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * TUI helper utilities for integrating the action system with interactive prompts.
3
+ *
4
+ * Provides:
5
+ * - promptAndExecute: gather input via FillInStruct then run executeAction
6
+ *
7
+ * @remarks
8
+ * Functions in this module require a fully initialized Sprinkle instance with
9
+ * terminal access. They are intended for TUI mode only; in CLI or MCP mode use
10
+ * executeAction directly.
11
+ */
12
+ import type { TSchema } from "@sinclair/typebox";
13
+ import type { IAction, IActionResult } from "./types.js";
14
+ import type { Sprinkle } from "../index.js";
15
+ /**
16
+ * Interactively gather input for an action using FillInStruct, then execute
17
+ * the action and return the result.
18
+ *
19
+ * The function:
20
+ * 1. Calls `sprinkle.FillInStruct(action.inputSchema, defaults)` to collect
21
+ * input from the user via TUI prompts.
22
+ * 2. Builds an `IActionContext` from the sprinkle instance.
23
+ * 3. Calls `executeAction(action, input, context)` and returns the result.
24
+ *
25
+ * If the user cancels the prompt (`UserCancelledError` is thrown), the function
26
+ * returns an `IActionFailure` with code `USER_CANCELLED` rather than throwing.
27
+ *
28
+ * Two separate schema type parameters are used:
29
+ * - `S` is the concrete settings schema of the `Sprinkle` instance.
30
+ * - `SA` is the settings schema the action was typed against (often `TSchema`).
31
+ *
32
+ * This allows a `Sprinkle<TObject<...>>` to be passed alongside an action
33
+ * typed with the base `TSchema` constraint (the same pattern used by all
34
+ * built-in actions), while still preserving full type safety for TInput/TOutput.
35
+ *
36
+ * @param sprinkle - An initialized Sprinkle instance (TUI mode).
37
+ * @param action - The action to prompt for and execute.
38
+ * @param defaults - Optional partial defaults pre-filled in the prompt.
39
+ * @returns An `IActionResult` discriminated union (never throws).
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const result = await promptAndExecute(sprinkle, greetAction);
44
+ * if (result.success) {
45
+ * console.log(result.data.greeting);
46
+ * } else {
47
+ * if (result.error.code === "USER_CANCELLED") return; // user backed out
48
+ * console.error(result.error.message);
49
+ * }
50
+ * ```
51
+ */
52
+ export declare function promptAndExecute<TInput, TOutput, S extends TSchema, SA extends TSchema>(sprinkle: Sprinkle<S>, action: IAction<TInput, TOutput, SA>, defaults?: Partial<TInput>): Promise<IActionResult<TOutput>>;
53
+ //# sourceMappingURL=tui-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-helpers.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/actions/tui-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAIzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EACN,OAAO,EACP,CAAC,SAAS,OAAO,EACjB,EAAE,SAAS,OAAO,EAElB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,EAIpC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GACzB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAyCjC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Core action types for the action-centric architecture.
3
+ * Actions are pure functions that receive validated typed input
4
+ * and return typed output, with no interactive prompts.
5
+ */
6
+ import type { TSchema, Static } from "@sinclair/typebox";
7
+ import type { Sprinkle } from "../index.js";
8
+ /**
9
+ * Utility type to extract the static type from a TypeBox schema.
10
+ */
11
+ type TExact<T> = T extends TSchema ? Static<T> : T;
12
+ /**
13
+ * Context passed to action execute functions.
14
+ * Provides access to the Sprinkle instance and typed settings shorthand.
15
+ */
16
+ export interface IActionContext<S extends TSchema> {
17
+ /** The full Sprinkle instance (settings, wallet, provider helpers) */
18
+ sprinkle: Sprinkle<S>;
19
+ /** Typed shorthand for sprinkle.settings */
20
+ settings: TExact<S>;
21
+ }
22
+ /**
23
+ * Successful action result.
24
+ */
25
+ export interface IActionSuccess<T> {
26
+ success: true;
27
+ data: T;
28
+ }
29
+ /**
30
+ * Failed action result.
31
+ */
32
+ export interface IActionFailure {
33
+ success: false;
34
+ error: ActionError;
35
+ }
36
+ /**
37
+ * Discriminated union result type for actions.
38
+ */
39
+ export type IActionResult<T> = IActionSuccess<T> | IActionFailure;
40
+ /**
41
+ * Structured error type for action failures.
42
+ * Carries a machine-readable code and optional details.
43
+ */
44
+ export declare class ActionError extends Error {
45
+ code: string;
46
+ details: unknown;
47
+ constructor(message: string, code: string, details?: unknown);
48
+ }
49
+ /**
50
+ * A typed action with input/output schemas and an execute function.
51
+ *
52
+ * @template TInput - The static input type (derived from inputSchema)
53
+ * @template TOutput - The static output type (derived from outputSchema)
54
+ * @template S - The Sprinkle settings schema type
55
+ */
56
+ export interface IAction<TInput, TOutput, S extends TSchema> {
57
+ /** Unique kebab-case identifier for this action */
58
+ name: string;
59
+ /** Human-readable description of what this action does */
60
+ description: string;
61
+ /** Optional grouping category for display/help */
62
+ category?: string;
63
+ /** TypeBox schema for validating and decoding input */
64
+ inputSchema: TSchema;
65
+ /** TypeBox schema describing the output shape */
66
+ outputSchema: TSchema;
67
+ /** Pure execution function -- no interactive prompts allowed */
68
+ execute: (input: TInput, context: IActionContext<S>) => Promise<TOutput>;
69
+ }
70
+ /**
71
+ * Convenience alias for an action with any input/output types.
72
+ * Used for registry storage where exact types are not required.
73
+ */
74
+ export type AnyAction<S extends TSchema> = IAction<any, any, S>;
75
+ export {};
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/actions/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,OAAO;IAC/C,sEAAsE;IACtE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;AAElE;;;GAGG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;gBAEL,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAM7D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,SAAS,OAAO;IACzD,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,YAAY,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED;;;GAGG;AAEH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC"}