@kashdao/cli 0.1.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 (85) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/CONTRIBUTING.md +159 -0
  3. package/LICENSE +21 -0
  4. package/README.md +868 -0
  5. package/SECURITY.md +110 -0
  6. package/dist/account-AVFLEM5D.js +90 -0
  7. package/dist/account-AVFLEM5D.js.map +1 -0
  8. package/dist/auth-GUJCVKTD.js +239 -0
  9. package/dist/auth-GUJCVKTD.js.map +1 -0
  10. package/dist/chunk-BN2CUM42.js +9 -0
  11. package/dist/chunk-BN2CUM42.js.map +1 -0
  12. package/dist/chunk-BRK7KJ4O.js +154 -0
  13. package/dist/chunk-BRK7KJ4O.js.map +1 -0
  14. package/dist/chunk-KMBMQIZ7.js +393 -0
  15. package/dist/chunk-KMBMQIZ7.js.map +1 -0
  16. package/dist/chunk-LBIRQHX5.js +133 -0
  17. package/dist/chunk-LBIRQHX5.js.map +1 -0
  18. package/dist/chunk-MIXOZU2S.js +366 -0
  19. package/dist/chunk-MIXOZU2S.js.map +1 -0
  20. package/dist/chunk-QJMF73M5.js +129 -0
  21. package/dist/chunk-QJMF73M5.js.map +1 -0
  22. package/dist/chunk-UZNSYATZ.js +680 -0
  23. package/dist/chunk-UZNSYATZ.js.map +1 -0
  24. package/dist/chunk-VIADBYFY.js +94 -0
  25. package/dist/chunk-VIADBYFY.js.map +1 -0
  26. package/dist/chunk-YHCG2SUC.js +159 -0
  27. package/dist/chunk-YHCG2SUC.js.map +1 -0
  28. package/dist/chunk-YJX3JJ4M.js +174 -0
  29. package/dist/chunk-YJX3JJ4M.js.map +1 -0
  30. package/dist/client-IOM55ZCS.js +14 -0
  31. package/dist/client-IOM55ZCS.js.map +1 -0
  32. package/dist/completion-ZZGX5BQC.js +100 -0
  33. package/dist/completion-ZZGX5BQC.js.map +1 -0
  34. package/dist/config-XJL5TSYK.js +690 -0
  35. package/dist/config-XJL5TSYK.js.map +1 -0
  36. package/dist/config-store-3ZSYGXMQ.js +44 -0
  37. package/dist/config-store-3ZSYGXMQ.js.map +1 -0
  38. package/dist/docs-MDKKSJDC.js +102 -0
  39. package/dist/docs-MDKKSJDC.js.map +1 -0
  40. package/dist/eoa-IQ72EIHR.js +551 -0
  41. package/dist/eoa-IQ72EIHR.js.map +1 -0
  42. package/dist/errors-WMZIEGQI.js +18 -0
  43. package/dist/errors-WMZIEGQI.js.map +1 -0
  44. package/dist/explain-H4EH3KH3.js +165 -0
  45. package/dist/explain-H4EH3KH3.js.map +1 -0
  46. package/dist/global-options-XOLJUPTT.js +18 -0
  47. package/dist/global-options-XOLJUPTT.js.map +1 -0
  48. package/dist/health-VZEIII74.js +98 -0
  49. package/dist/health-VZEIII74.js.map +1 -0
  50. package/dist/help-footer-GTANVDNP.js +43 -0
  51. package/dist/help-footer-GTANVDNP.js.map +1 -0
  52. package/dist/index.d.ts +2 -0
  53. package/dist/index.js +251 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/intro-PQQTYWR7.js +41 -0
  56. package/dist/intro-PQQTYWR7.js.map +1 -0
  57. package/dist/markets-C37JZDPE.js +295 -0
  58. package/dist/markets-C37JZDPE.js.map +1 -0
  59. package/dist/output-VCBZ3FM7.js +22 -0
  60. package/dist/output-VCBZ3FM7.js.map +1 -0
  61. package/dist/portfolio-2AEPIJIG.js +115 -0
  62. package/dist/portfolio-2AEPIJIG.js.map +1 -0
  63. package/dist/protocol-XEQXF2GW.js +1572 -0
  64. package/dist/protocol-XEQXF2GW.js.map +1 -0
  65. package/dist/quote-I4DVJ7ZB.js +144 -0
  66. package/dist/quote-I4DVJ7ZB.js.map +1 -0
  67. package/dist/schema-PIFQ65TS.js +410 -0
  68. package/dist/schema-PIFQ65TS.js.map +1 -0
  69. package/dist/setup-USZ6IODD.js +260 -0
  70. package/dist/setup-USZ6IODD.js.map +1 -0
  71. package/dist/stdin-YW2CEQXU.js +28 -0
  72. package/dist/stdin-YW2CEQXU.js.map +1 -0
  73. package/dist/trace-IZBYTUFO.js +103 -0
  74. package/dist/trace-IZBYTUFO.js.map +1 -0
  75. package/dist/trade-IIZSEXEI.js +586 -0
  76. package/dist/trade-IIZSEXEI.js.map +1 -0
  77. package/dist/version-JDK3PEP5.js +117 -0
  78. package/dist/version-JDK3PEP5.js.map +1 -0
  79. package/dist/version-check-TDCION37.js +138 -0
  80. package/dist/version-check-TDCION37.js.map +1 -0
  81. package/dist/webhooks-PTVRKICZ.js +680 -0
  82. package/dist/webhooks-PTVRKICZ.js.map +1 -0
  83. package/dist/with-retry-4FIZG3A7.js +223 -0
  84. package/dist/with-retry-4FIZG3A7.js.map +1 -0
  85. package/package.json +99 -0
@@ -0,0 +1,410 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ BIGINT_STRING_REGEX,
4
+ HEX_ADDRESS_REGEX,
5
+ USDC_DECIMAL_REGEX
6
+ } from "./chunk-YHCG2SUC.js";
7
+ import {
8
+ readGlobals
9
+ } from "./chunk-LBIRQHX5.js";
10
+ import {
11
+ print,
12
+ printJson,
13
+ style
14
+ } from "./chunk-VIADBYFY.js";
15
+ import "./chunk-MIXOZU2S.js";
16
+ import {
17
+ CliError
18
+ } from "./chunk-UZNSYATZ.js";
19
+
20
+ // src/commands/schema.ts
21
+ import {
22
+ ConfirmTradeBodySchema,
23
+ ConfirmTradeResponseSchema,
24
+ CreateTradeAcceptedResponseSchema,
25
+ CreateTradeBodySchema,
26
+ GetMarketResponseSchema,
27
+ GetTraceResponseSchema,
28
+ GetTradeResponseSchema,
29
+ ListMarketsResponseSchema,
30
+ ListTradesResponseSchema,
31
+ ListWebhookEventsResponseSchema,
32
+ MarketResourceSchema,
33
+ PaginationSchema,
34
+ PortfolioSummarySchema,
35
+ PositionResourceSchema,
36
+ PositionsResponseSchema,
37
+ ProblemDetailsSchema,
38
+ QuoteBuyDetailSchema,
39
+ QuoteMarketSummarySchema,
40
+ QuoteResponseSchema,
41
+ QuoteSellDetailSchema,
42
+ RedeliverWebhookEventSchema,
43
+ RedeliverWebhookResponseSchema,
44
+ RotateWebhookSecretResponseSchema,
45
+ TraceEventDataSchema,
46
+ TraceEventSchema,
47
+ TraceResourceSchema,
48
+ TradeResourceSchema,
49
+ WebhookEventResourceSchema
50
+ } from "@kashdao/sdk";
51
+ import { Command } from "commander";
52
+
53
+ // src/cli-schemas.ts
54
+ import { z } from "zod";
55
+ var cliErrorActionSchema = z.discriminatedUnion("type", [
56
+ z.object({
57
+ type: z.literal("run_command"),
58
+ command: z.string(),
59
+ description: z.string(),
60
+ /**
61
+ * `true` when `command` contains `<placeholder>` tokens the
62
+ * caller must substitute. Absent / `false` means concrete and
63
+ * safe to auto-execute. Agents that auto-shell `run_command`
64
+ * actions MUST honour this flag — otherwise the literal
65
+ * "<id>" / "<command>" reaches the shell and fails.
66
+ */
67
+ template: z.boolean().optional()
68
+ }),
69
+ z.object({
70
+ type: z.literal("set_env"),
71
+ variable: z.string(),
72
+ description: z.string()
73
+ }),
74
+ z.object({
75
+ type: z.literal("wait_and_retry"),
76
+ delayMs: z.number().int().nonnegative(),
77
+ description: z.string()
78
+ }),
79
+ z.object({
80
+ type: z.literal("open_url"),
81
+ url: z.string().url(),
82
+ description: z.string()
83
+ }),
84
+ z.object({
85
+ type: z.literal("check_input"),
86
+ field: z.string(),
87
+ description: z.string()
88
+ })
89
+ ]);
90
+ var CliErrorActionSchema = cliErrorActionSchema;
91
+ var CliErrorEnvelopeSchema = z.object({
92
+ ok: z.literal(false),
93
+ error: z.object({
94
+ code: z.string(),
95
+ message: z.string(),
96
+ recoverable: z.boolean(),
97
+ suggestion: z.string().optional(),
98
+ retryAfterMs: z.number().int().nonnegative().optional(),
99
+ docsUrl: z.string().url().optional(),
100
+ requestId: z.string().optional(),
101
+ actions: z.array(cliErrorActionSchema)
102
+ })
103
+ });
104
+ var CliCapabilitySchema = z.enum([
105
+ // Output / agent surface
106
+ "json-envelope",
107
+ // every command emits a stable `--json` shape
108
+ "json-quiet",
109
+ // `--json --quiet` for compact NDJSON-style stdout
110
+ "fields-projection",
111
+ // `--fields a,b,c` projection on JSON output
112
+ "filter-dsl",
113
+ // `--filter` boolean DSL on JSON output
114
+ "ndjson-streaming",
115
+ // `--ndjson` flag on list / streaming commands
116
+ // Error surface
117
+ "kash-explain",
118
+ // `kash explain CODE` recovery catalog
119
+ "structured-actions",
120
+ // typed `actions[]` on every error envelope
121
+ // Trade modes
122
+ "trade-place",
123
+ // public-API hosted-trade flow (`kash trade buy/sell`)
124
+ "protocol-trade",
125
+ // SA-mode direct UserOp execution
126
+ "eoa-trade",
127
+ // EOA-mode vanilla EIP-1559 trade execution
128
+ "protocol-userop",
129
+ // offline UserOp sign/submit lifecycle
130
+ "protocol-watch",
131
+ // NDJSON event subscription
132
+ "partial-completion-records",
133
+ // `{partial: true}` records on submit-then-wait failure
134
+ // Webhooks
135
+ "webhooks-replay",
136
+ // `kash webhooks replay` with HMAC re-signing
137
+ "webhooks-replay-dry-run",
138
+ // `--dry-run` for inspect-without-send
139
+ "webhooks-replay-refuse-private",
140
+ // `--refuse-private-addresses` hard-fail
141
+ // Discovery
142
+ "mcp-server"
143
+ // `kash mcp serve` (Model Context Protocol)
144
+ ]);
145
+ var VersionManifestSchema = z.object({
146
+ cli: z.string(),
147
+ sdk: z.string(),
148
+ node: z.string(),
149
+ platform: z.string(),
150
+ release: z.string(),
151
+ arch: z.string(),
152
+ /**
153
+ * Feature-detection tokens — listed iff this release implements the
154
+ * named capability. Additive across releases; removing a token is
155
+ * a breaking change.
156
+ */
157
+ capabilities: z.array(CliCapabilitySchema).optional()
158
+ });
159
+ var HealthResultSchema = z.object({
160
+ ok: z.boolean(),
161
+ latencyMs: z.number().nonnegative(),
162
+ status: z.string().optional(),
163
+ version: z.string().optional(),
164
+ requestId: z.string().optional()
165
+ });
166
+ var ProtocolBalanceEnvelopeSchema = z.object({
167
+ account: z.string().regex(HEX_ADDRESS_REGEX),
168
+ chainId: z.number().int().positive(),
169
+ /** USDC balance in atomic units (6 decimals). Stringified bigint. */
170
+ usdcAtomic: z.string().regex(BIGINT_STRING_REGEX),
171
+ /** Native ETH balance in wei. Stringified bigint. */
172
+ gasWei: z.string().regex(BIGINT_STRING_REGEX)
173
+ });
174
+ var ProtocolMarketEnvelopeSchema = z.object({
175
+ marketAddress: z.string().regex(HEX_ADDRESS_REGEX),
176
+ chainId: z.number().int().positive(),
177
+ status: z.enum(["unseeded", "active", "frozen", "resolved"]),
178
+ /** block.timestamp at read time (seconds), stringified bigint. */
179
+ readAt: z.string().regex(BIGINT_STRING_REGEX),
180
+ /** Reserve in WAD-18, stringified bigint. */
181
+ reserveWad: z.string().regex(BIGINT_STRING_REGEX),
182
+ outcomes: z.array(
183
+ z.object({
184
+ index: z.number().int().nonnegative(),
185
+ outstandingTokensWad: z.string().regex(BIGINT_STRING_REGEX),
186
+ weightWad: z.string().regex(BIGINT_STRING_REGEX),
187
+ probability: z.number().min(0).max(1)
188
+ })
189
+ )
190
+ });
191
+ var ProtocolQuoteEnvelopeSchema = z.object({
192
+ side: z.enum(["BUY", "SELL"]),
193
+ outcomeIndex: z.number().int().nonnegative(),
194
+ /** Atomic units: USDC (6dp) on BUY, outcome tokens (18dp) on SELL. */
195
+ amountIn: z.string().regex(BIGINT_STRING_REGEX),
196
+ /** Atomic units: outcome tokens (18dp) on BUY, USDC (6dp) on SELL. */
197
+ amountOut: z.string().regex(BIGINT_STRING_REGEX),
198
+ reserveAfterWad: z.string().regex(BIGINT_STRING_REGEX),
199
+ pricesAfterWad: z.array(z.string().regex(BIGINT_STRING_REGEX))
200
+ });
201
+ var TradeDryRunEnvelopeSchema = z.object({
202
+ wouldSend: z.object({
203
+ marketId: z.string().uuid(),
204
+ outcomeIndex: z.number().int().nonnegative(),
205
+ amount: z.string().regex(USDC_DECIMAL_REGEX),
206
+ side: z.enum(["buy", "sell"]),
207
+ clientRequestId: z.string().optional()
208
+ }),
209
+ idempotencyKey: z.string().nullable(),
210
+ endpoint: z.object({
211
+ method: z.literal("POST"),
212
+ path: z.literal("/v1/trades")
213
+ })
214
+ });
215
+ var CliConfigEnvelopeSchema = z.object({
216
+ profile: z.string(),
217
+ authenticated: z.boolean(),
218
+ apiKey: z.string().nullable(),
219
+ baseUrl: z.string().url(),
220
+ defaultChainId: z.number().int().positive(),
221
+ // Direct-mode fields. Always present (`null` when unset) so the
222
+ // shape is uniform across Kash-orchestrated-only and self-orchestrated
223
+ // profiles — agents pinning to this schema can read every field without
224
+ // optionality branches. The `signerKeyRef` is a reference shape
225
+ // (`file:<path>` / `env:<NAME>`); the raw private key is never
226
+ // emitted (the CLI never persists keys, even redacted).
227
+ rpcUrl: z.string().url().nullable(),
228
+ smartAccount: z.string().regex(HEX_ADDRESS_REGEX).nullable(),
229
+ bundlerUrl: z.string().url().nullable(),
230
+ bundlerProvider: z.enum(["flashbots", "pimlico", "alchemy", "generic"]).nullable(),
231
+ signerKeyRef: z.string().nullable(),
232
+ /**
233
+ * Custom-chain block — `null` when the profile uses the static
234
+ * registry (the typical Base mainnet / Sepolia case). Required for
235
+ * any chain the registry doesn't cover (Anvil / forks / sidechains).
236
+ * `smartAccount` (the inner factory + EntryPoint addresses) is only
237
+ * required when running SA mode on the custom chain — EOA mode
238
+ * ignores it.
239
+ */
240
+ customChain: z.object({
241
+ // All fields are optional in the persisted schema (so `kash
242
+ // config set customChain.<leaf>` writes one leaf at a time);
243
+ // completeness is enforced at use time in `resolveCliCustomChain`.
244
+ // The JSON envelope mirrors that: half-built customChain blocks
245
+ // are emitted faithfully so `kash config show --json` matches
246
+ // what's on disk.
247
+ name: z.string().min(1).optional(),
248
+ factoryAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),
249
+ usdcAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),
250
+ oracleAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),
251
+ vaultAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),
252
+ tokens1155Address: z.string().regex(HEX_ADDRESS_REGEX).optional(),
253
+ paramRegistryAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),
254
+ smartAccount: z.object({
255
+ factoryAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),
256
+ implementationAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),
257
+ entryPointAddress: z.string().regex(HEX_ADDRESS_REGEX).optional()
258
+ }).optional()
259
+ }).nullable(),
260
+ sources: z.object({
261
+ apiKey: z.enum(["env", "file", "unset"]),
262
+ baseUrl: z.enum(["env", "file", "default"]),
263
+ defaultChainId: z.enum(["env", "file", "default"]),
264
+ profile: z.enum(["flag", "env", "file", "default"]),
265
+ rpcUrl: z.enum(["env", "file", "unset"]),
266
+ smartAccount: z.enum(["env", "file", "unset"]),
267
+ bundlerUrl: z.enum(["env", "file", "unset"]),
268
+ bundlerProvider: z.enum(["env", "file", "unset"]),
269
+ signerKeyRef: z.enum(["env", "file", "unset"]),
270
+ customChain: z.enum(["file", "unset"])
271
+ })
272
+ });
273
+
274
+ // src/commands/schema.ts
275
+ var SCHEMA_MAP = {
276
+ // CLI-owned contracts
277
+ CliErrorEnvelope: CliErrorEnvelopeSchema,
278
+ CliErrorAction: CliErrorActionSchema,
279
+ CliConfigEnvelope: CliConfigEnvelopeSchema,
280
+ VersionManifest: VersionManifestSchema,
281
+ HealthResult: HealthResultSchema,
282
+ // Direct-mode CLI-owned envelopes
283
+ ProtocolBalanceEnvelope: ProtocolBalanceEnvelopeSchema,
284
+ ProtocolMarketEnvelope: ProtocolMarketEnvelopeSchema,
285
+ ProtocolQuoteEnvelope: ProtocolQuoteEnvelopeSchema,
286
+ // Common (wire-format)
287
+ Pagination: PaginationSchema,
288
+ ProblemDetails: ProblemDetailsSchema,
289
+ // Markets
290
+ MarketResource: MarketResourceSchema,
291
+ GetMarketResponse: GetMarketResponseSchema,
292
+ ListMarketsResponse: ListMarketsResponseSchema,
293
+ // Quotes
294
+ QuoteResponse: QuoteResponseSchema,
295
+ QuoteBuyDetail: QuoteBuyDetailSchema,
296
+ QuoteSellDetail: QuoteSellDetailSchema,
297
+ QuoteMarketSummary: QuoteMarketSummarySchema,
298
+ // Trades — request bodies
299
+ CreateTradeBody: CreateTradeBodySchema,
300
+ ConfirmTradeBody: ConfirmTradeBodySchema,
301
+ // Trades — dry-run envelope (CLI-owned)
302
+ TradeDryRunEnvelope: TradeDryRunEnvelopeSchema,
303
+ // Trades — responses
304
+ TradeResource: TradeResourceSchema,
305
+ CreateTradeAcceptedResponse: CreateTradeAcceptedResponseSchema,
306
+ ConfirmTradeResponse: ConfirmTradeResponseSchema,
307
+ GetTradeResponse: GetTradeResponseSchema,
308
+ ListTradesResponse: ListTradesResponseSchema,
309
+ // Portfolio
310
+ PortfolioSummary: PortfolioSummarySchema,
311
+ PositionResource: PositionResourceSchema,
312
+ PositionsResponse: PositionsResponseSchema,
313
+ // Webhooks
314
+ WebhookEventResource: WebhookEventResourceSchema,
315
+ ListWebhookEventsResponse: ListWebhookEventsResponseSchema,
316
+ RedeliverWebhookEvent: RedeliverWebhookEventSchema,
317
+ RedeliverWebhookResponse: RedeliverWebhookResponseSchema,
318
+ RotateWebhookSecretResponse: RotateWebhookSecretResponseSchema,
319
+ // Traces (correlation timeline)
320
+ TraceEventData: TraceEventDataSchema,
321
+ TraceEvent: TraceEventSchema,
322
+ TraceResource: TraceResourceSchema,
323
+ GetTraceResponse: GetTraceResponseSchema
324
+ };
325
+ var SCHEMA_NAMES = Object.keys(SCHEMA_MAP).sort();
326
+ var zodToJsonSchemaImpl;
327
+ async function loadZodToJsonSchema() {
328
+ if (zodToJsonSchemaImpl !== void 0) return zodToJsonSchemaImpl;
329
+ const mod = await import("zod-to-json-schema");
330
+ zodToJsonSchemaImpl = mod.zodToJsonSchema;
331
+ return zodToJsonSchemaImpl;
332
+ }
333
+ function toJsonSchema(impl, schema) {
334
+ return impl(schema);
335
+ }
336
+ var schemaCommand = new Command("schema").description("Emit JSON Schema for the SDK request/response shapes.").argument(
337
+ "[name]",
338
+ `optional schema name; omit to list every available schema (one of: ${SCHEMA_NAMES.join(", ")})`
339
+ ).option(
340
+ "--list",
341
+ "emit only the schema names (cheap probe: skips the zod-to-json-schema conversion that the full --json catalog needs)"
342
+ ).addHelpText(
343
+ "after",
344
+ `
345
+ Examples:
346
+ $ kash schema # list available schema names (human)
347
+ $ kash schema --list --json --quiet # cheap agent probe: just the names
348
+ $ kash schema CreateTradeBody --json # JSON Schema for the trade request
349
+ $ kash schema TradeResource --json # JSON Schema for the trade response
350
+
351
+ Notes:
352
+ Bare \`kash schema --json\` converts every Zod schema (~36 entries)
353
+ to JSON Schema \u2014 that's ~tens-of-KB and ~360ms of CPU. AI agents
354
+ doing capability probes should use \`kash schema --list --json\`
355
+ to fetch just the catalog of names, then drill into the specific
356
+ schema they actually need.
357
+ `
358
+ ).action(async (name, options, cmd) => {
359
+ const globals = readGlobals(cmd);
360
+ if (options.list === true) {
361
+ if (globals.json) {
362
+ printJson({ schemas: SCHEMA_NAMES });
363
+ return;
364
+ }
365
+ print("");
366
+ print(style.bold("Available schemas:"));
367
+ for (const n of SCHEMA_NAMES) {
368
+ print(` - ${n}`);
369
+ }
370
+ print("");
371
+ return;
372
+ }
373
+ if (name === void 0 && !globals.json) {
374
+ print("");
375
+ print(style.bold("Available schemas:"));
376
+ for (const n of SCHEMA_NAMES) {
377
+ print(` - ${n}`);
378
+ }
379
+ print("");
380
+ print(style.dim("Run `kash schema <name> --json` for the full JSON Schema."));
381
+ return;
382
+ }
383
+ const impl = await loadZodToJsonSchema();
384
+ if (name === void 0) {
385
+ const catalog = {};
386
+ for (const [key, schema2] of Object.entries(SCHEMA_MAP)) {
387
+ catalog[key] = toJsonSchema(impl, schema2);
388
+ }
389
+ printJson({ schemas: catalog });
390
+ return;
391
+ }
392
+ const schema = SCHEMA_MAP[name];
393
+ if (!schema) {
394
+ throw new CliError(`Unknown schema: ${name}`, {
395
+ code: "INVALID_INPUT",
396
+ recoverable: true,
397
+ suggestion: `Run \`kash schema\` (no argument) to list every available schema name.`
398
+ });
399
+ }
400
+ const json = toJsonSchema(impl, schema);
401
+ if (globals.json) {
402
+ printJson(json);
403
+ return;
404
+ }
405
+ print(JSON.stringify(json, null, 2));
406
+ });
407
+ export {
408
+ schemaCommand
409
+ };
410
+ //# sourceMappingURL=schema-PIFQ65TS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/schema.ts","../src/cli-schemas.ts"],"sourcesContent":["/**\n * `kash schema [<resource>]` — emit JSON Schema for the SDK's\n * request/response shapes.\n *\n * AI agents call this to understand the wire format without scraping\n * the OpenAPI spec or reading TypeScript types. The schemas come\n * straight from `@kashdao/sdk`'s Zod exports — so they always match\n * what the CLI actually sends and receives.\n *\n * Agents typically want one of two things:\n *\n * 1. `kash schema` — full catalog so they can index every shape\n * up front (returns `{ <name>: <jsonSchema>, … }`).\n * 2. `kash schema <name>` — one schema, e.g. `CreateTradeBody`,\n * to validate a request body locally before submitting.\n */\n\nimport {\n ConfirmTradeBodySchema,\n ConfirmTradeResponseSchema,\n CreateTradeAcceptedResponseSchema,\n CreateTradeBodySchema,\n GetMarketResponseSchema,\n GetTraceResponseSchema,\n GetTradeResponseSchema,\n ListMarketsResponseSchema,\n ListTradesResponseSchema,\n ListWebhookEventsResponseSchema,\n MarketResourceSchema,\n PaginationSchema,\n PortfolioSummarySchema,\n PositionResourceSchema,\n PositionsResponseSchema,\n ProblemDetailsSchema,\n QuoteBuyDetailSchema,\n QuoteMarketSummarySchema,\n QuoteResponseSchema,\n QuoteSellDetailSchema,\n RedeliverWebhookEventSchema,\n RedeliverWebhookResponseSchema,\n RotateWebhookSecretResponseSchema,\n TraceEventDataSchema,\n TraceEventSchema,\n TraceResourceSchema,\n TradeResourceSchema,\n WebhookEventResourceSchema,\n} from '@kashdao/sdk';\nimport { Command } from 'commander';\n\nimport {\n CliConfigEnvelopeSchema,\n CliErrorActionSchema,\n CliErrorEnvelopeSchema,\n HealthResultSchema,\n ProtocolBalanceEnvelopeSchema,\n ProtocolMarketEnvelopeSchema,\n ProtocolQuoteEnvelopeSchema,\n TradeDryRunEnvelopeSchema,\n VersionManifestSchema,\n} from '../cli-schemas.js';\nimport { CliError } from '../errors.js';\nimport { readGlobals } from '../utils/global-options.js';\nimport { print, printJson, style } from '../utils/output.js';\n\nimport type { ZodTypeAny } from 'zod';\nimport type { zodToJsonSchema as ZodToJsonSchemaFn } from 'zod-to-json-schema';\n\n/**\n * Stable name → Zod schema map. Adding entries is a minor bump;\n * removing/renaming is a major bump.\n *\n * Names are PascalCase to match the TypeScript types consumers see in\n * `@kashdao/sdk` — keeps documentation, code, and CLI output in sync.\n *\n * Two groups:\n * - **CLI-owned contracts** (`Cli*`, `VersionManifest`) — the\n * shapes the CLI itself emits. Pinning to these is the\n * recommended path for agents that consume `kash <cmd> --json`.\n * - **SDK request/response shapes** — the wire formats the CLI\n * forwards. Mirror what the public API produces.\n */\nconst SCHEMA_MAP: Record<string, ZodTypeAny> = {\n // CLI-owned contracts\n CliErrorEnvelope: CliErrorEnvelopeSchema,\n CliErrorAction: CliErrorActionSchema,\n CliConfigEnvelope: CliConfigEnvelopeSchema,\n VersionManifest: VersionManifestSchema,\n HealthResult: HealthResultSchema,\n // Direct-mode CLI-owned envelopes\n ProtocolBalanceEnvelope: ProtocolBalanceEnvelopeSchema,\n ProtocolMarketEnvelope: ProtocolMarketEnvelopeSchema,\n ProtocolQuoteEnvelope: ProtocolQuoteEnvelopeSchema,\n // Common (wire-format)\n Pagination: PaginationSchema,\n ProblemDetails: ProblemDetailsSchema,\n // Markets\n MarketResource: MarketResourceSchema,\n GetMarketResponse: GetMarketResponseSchema,\n ListMarketsResponse: ListMarketsResponseSchema,\n // Quotes\n QuoteResponse: QuoteResponseSchema,\n QuoteBuyDetail: QuoteBuyDetailSchema,\n QuoteSellDetail: QuoteSellDetailSchema,\n QuoteMarketSummary: QuoteMarketSummarySchema,\n // Trades — request bodies\n CreateTradeBody: CreateTradeBodySchema,\n ConfirmTradeBody: ConfirmTradeBodySchema,\n // Trades — dry-run envelope (CLI-owned)\n TradeDryRunEnvelope: TradeDryRunEnvelopeSchema,\n // Trades — responses\n TradeResource: TradeResourceSchema,\n CreateTradeAcceptedResponse: CreateTradeAcceptedResponseSchema,\n ConfirmTradeResponse: ConfirmTradeResponseSchema,\n GetTradeResponse: GetTradeResponseSchema,\n ListTradesResponse: ListTradesResponseSchema,\n // Portfolio\n PortfolioSummary: PortfolioSummarySchema,\n PositionResource: PositionResourceSchema,\n PositionsResponse: PositionsResponseSchema,\n // Webhooks\n WebhookEventResource: WebhookEventResourceSchema,\n ListWebhookEventsResponse: ListWebhookEventsResponseSchema,\n RedeliverWebhookEvent: RedeliverWebhookEventSchema,\n RedeliverWebhookResponse: RedeliverWebhookResponseSchema,\n RotateWebhookSecretResponse: RotateWebhookSecretResponseSchema,\n // Traces (correlation timeline)\n TraceEventData: TraceEventDataSchema,\n TraceEvent: TraceEventSchema,\n TraceResource: TraceResourceSchema,\n GetTraceResponse: GetTraceResponseSchema,\n};\n\nconst SCHEMA_NAMES = Object.keys(SCHEMA_MAP).sort();\n\n/**\n * Wrap `zodToJsonSchema` once at the boundary. Its generic argument\n * is `ZodType<any, ZodTypeDef, any>` — narrower than the\n * `ZodTypeAny` we use to type `SCHEMA_MAP`. Confining the\n * eslint-disable here keeps the rest of the file lint-clean.\n *\n * Calling `zodToJsonSchema(schema)` without `{ name }` produces the\n * unwrapped schema directly. The wrapped form (`{ $ref, definitions }`)\n * would be surprising for agents that expect the schema at the top\n * level. We commit to the unwrapped shape as the SemVer-stable\n * contract.\n *\n * **Lazy-loaded.** `zod-to-json-schema` adds ~10ms to startup; the\n * `kash schema` command is a niche introspection path, so we defer\n * the import to the first call. Cached after the first action so\n * iterating over `SCHEMA_MAP` doesn't re-import per entry.\n */\nlet zodToJsonSchemaImpl: typeof ZodToJsonSchemaFn | undefined;\n\nasync function loadZodToJsonSchema(): Promise<typeof ZodToJsonSchemaFn> {\n if (zodToJsonSchemaImpl !== undefined) return zodToJsonSchemaImpl;\n const mod = await import('zod-to-json-schema');\n zodToJsonSchemaImpl = mod.zodToJsonSchema;\n return zodToJsonSchemaImpl;\n}\n\nfunction toJsonSchema(\n impl: typeof ZodToJsonSchemaFn,\n schema: ZodTypeAny\n): ReturnType<typeof ZodToJsonSchemaFn> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return impl(schema);\n}\n\ntype SchemaOptions = {\n list?: boolean;\n};\n\nexport const schemaCommand = new Command('schema')\n .description('Emit JSON Schema for the SDK request/response shapes.')\n .argument(\n '[name]',\n `optional schema name; omit to list every available schema (one of: ${SCHEMA_NAMES.join(', ')})`\n )\n .option(\n '--list',\n 'emit only the schema names (cheap probe: skips the zod-to-json-schema conversion that the full --json catalog needs)'\n )\n .addHelpText(\n 'after',\n `\nExamples:\n $ kash schema # list available schema names (human)\n $ kash schema --list --json --quiet # cheap agent probe: just the names\n $ kash schema CreateTradeBody --json # JSON Schema for the trade request\n $ kash schema TradeResource --json # JSON Schema for the trade response\n\nNotes:\n Bare \\`kash schema --json\\` converts every Zod schema (~36 entries)\n to JSON Schema — that's ~tens-of-KB and ~360ms of CPU. AI agents\n doing capability probes should use \\`kash schema --list --json\\`\n to fetch just the catalog of names, then drill into the specific\n schema they actually need.\n`\n )\n .action(async (name: string | undefined, options: SchemaOptions, cmd: Command) => {\n const globals = readGlobals(cmd);\n\n // --list short-circuits before zod-to-json-schema loads. Cheapest\n // path for agent probes: returns a flat name array.\n if (options.list === true) {\n if (globals.json) {\n printJson({ schemas: SCHEMA_NAMES });\n return;\n }\n print('');\n print(style.bold('Available schemas:'));\n for (const n of SCHEMA_NAMES) {\n print(` - ${n}`);\n }\n print('');\n return;\n }\n\n // Listing names without --json doesn't need the converter at all —\n // skip the heavy import for the catalog-listing case.\n if (name === undefined && !globals.json) {\n print('');\n print(style.bold('Available schemas:'));\n for (const n of SCHEMA_NAMES) {\n print(` - ${n}`);\n }\n print('');\n print(style.dim('Run `kash schema <name> --json` for the full JSON Schema.'));\n return;\n }\n\n const impl = await loadZodToJsonSchema();\n\n if (name === undefined) {\n // --json catalog: emit each schema inline (unwrapped — see comment\n // on the per-schema branch).\n const catalog: Record<string, unknown> = {};\n for (const [key, schema] of Object.entries(SCHEMA_MAP)) {\n catalog[key] = toJsonSchema(impl, schema);\n }\n printJson({ schemas: catalog });\n return;\n }\n\n const schema = SCHEMA_MAP[name];\n if (!schema) {\n throw new CliError(`Unknown schema: ${name}`, {\n code: 'INVALID_INPUT',\n recoverable: true,\n suggestion: `Run \\`kash schema\\` (no argument) to list every available schema name.`,\n });\n }\n\n const json = toJsonSchema(impl, schema);\n if (globals.json) {\n printJson(json);\n return;\n }\n print(JSON.stringify(json, null, 2));\n });\n","/**\n * CLI-owned Zod schemas — the SemVer-stable contracts the CLI itself\n * defines (rather than the wire formats the SDK defines).\n *\n * Currently:\n * - `CliErrorEnvelopeSchema` — the JSON shape every command emits\n * on failure when `--json` is set. Agents pin to this contract\n * to recover from errors deterministically.\n * - `CliErrorActionSchema` — discriminated union of recovery hints.\n * - `VersionManifestSchema` — what `kash version --json` returns.\n * - `CliConfigEnvelopeSchema` — what `kash config show --json` returns.\n *\n * These are exported via `kash schema --json` so an AI agent can\n * validate output against the schema before parsing.\n */\n\nimport { z } from 'zod';\n\nimport { BIGINT_STRING_REGEX, HEX_ADDRESS_REGEX, USDC_DECIMAL_REGEX } from './utils/trade-input.js';\n\nconst cliErrorActionSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('run_command'),\n command: z.string(),\n description: z.string(),\n /**\n * `true` when `command` contains `<placeholder>` tokens the\n * caller must substitute. Absent / `false` means concrete and\n * safe to auto-execute. Agents that auto-shell `run_command`\n * actions MUST honour this flag — otherwise the literal\n * \"<id>\" / \"<command>\" reaches the shell and fails.\n */\n template: z.boolean().optional(),\n }),\n z.object({\n type: z.literal('set_env'),\n variable: z.string(),\n description: z.string(),\n }),\n z.object({\n type: z.literal('wait_and_retry'),\n delayMs: z.number().int().nonnegative(),\n description: z.string(),\n }),\n z.object({\n type: z.literal('open_url'),\n url: z.string().url(),\n description: z.string(),\n }),\n z.object({\n type: z.literal('check_input'),\n field: z.string(),\n description: z.string(),\n }),\n]);\n\nexport const CliErrorActionSchema = cliErrorActionSchema;\n\n/**\n * The error envelope `kash <cmd> --json` emits on any failure path.\n *\n * Required: `code`, `message`, `recoverable`, `actions`. The optional\n * fields (`suggestion`, `retryAfterMs`, `docsUrl`, `requestId`) appear\n * only when the underlying error provides them — agents pinning to\n * the schema must treat them as optional.\n */\nexport const CliErrorEnvelopeSchema = z.object({\n ok: z.literal(false),\n error: z.object({\n code: z.string(),\n message: z.string(),\n recoverable: z.boolean(),\n suggestion: z.string().optional(),\n retryAfterMs: z.number().int().nonnegative().optional(),\n docsUrl: z.string().url().optional(),\n requestId: z.string().optional(),\n actions: z.array(cliErrorActionSchema),\n }),\n});\n\nexport type CliErrorEnvelope = z.infer<typeof CliErrorEnvelopeSchema>;\n\n/**\n * Stable feature flags an AI-agent or downstream tool can pin against.\n * Each capability is a string token: presence means \"this CLI release\n * supports the feature.\" Removing a token is a SemVer-breaking event;\n * adding one is additive (consumers must do containment checks, not\n * equality).\n *\n * Maintained in `version.ts`'s manifest builder so a single grep\n * shows what every release advertises.\n */\nexport const CliCapabilitySchema = z.enum([\n // Output / agent surface\n 'json-envelope', // every command emits a stable `--json` shape\n 'json-quiet', // `--json --quiet` for compact NDJSON-style stdout\n 'fields-projection', // `--fields a,b,c` projection on JSON output\n 'filter-dsl', // `--filter` boolean DSL on JSON output\n 'ndjson-streaming', // `--ndjson` flag on list / streaming commands\n // Error surface\n 'kash-explain', // `kash explain CODE` recovery catalog\n 'structured-actions', // typed `actions[]` on every error envelope\n // Trade modes\n 'trade-place', // public-API hosted-trade flow (`kash trade buy/sell`)\n 'protocol-trade', // SA-mode direct UserOp execution\n 'eoa-trade', // EOA-mode vanilla EIP-1559 trade execution\n 'protocol-userop', // offline UserOp sign/submit lifecycle\n 'protocol-watch', // NDJSON event subscription\n 'partial-completion-records', // `{partial: true}` records on submit-then-wait failure\n // Webhooks\n 'webhooks-replay', // `kash webhooks replay` with HMAC re-signing\n 'webhooks-replay-dry-run', // `--dry-run` for inspect-without-send\n 'webhooks-replay-refuse-private', // `--refuse-private-addresses` hard-fail\n // Discovery\n 'mcp-server', // `kash mcp serve` (Model Context Protocol)\n]);\nexport type CliCapability = z.infer<typeof CliCapabilitySchema>;\n\n/** Shape of `kash version --json`. */\nexport const VersionManifestSchema = z.object({\n cli: z.string(),\n sdk: z.string(),\n node: z.string(),\n platform: z.string(),\n release: z.string(),\n arch: z.string(),\n /**\n * Feature-detection tokens — listed iff this release implements the\n * named capability. Additive across releases; removing a token is\n * a breaking change.\n */\n capabilities: z.array(CliCapabilitySchema).optional(),\n});\n\nexport type VersionManifest = z.infer<typeof VersionManifestSchema>;\n\n/**\n * Shape of `kash health --json`. Mirrors the SDK's\n * `KashClient.healthCheck` result: `ok` is the load-bearing field;\n * everything else is best-effort metadata.\n */\nexport const HealthResultSchema = z.object({\n ok: z.boolean(),\n latencyMs: z.number().nonnegative(),\n status: z.string().optional(),\n version: z.string().optional(),\n requestId: z.string().optional(),\n});\n\nexport type HealthResult = z.infer<typeof HealthResultSchema>;\n\n// ── Direct-mode (`kash protocol …`) envelopes ─────────────────────\n\n/** Shape of `kash protocol balance --json`. */\nexport const ProtocolBalanceEnvelopeSchema = z.object({\n account: z.string().regex(HEX_ADDRESS_REGEX),\n chainId: z.number().int().positive(),\n /** USDC balance in atomic units (6 decimals). Stringified bigint. */\n usdcAtomic: z.string().regex(BIGINT_STRING_REGEX),\n /** Native ETH balance in wei. Stringified bigint. */\n gasWei: z.string().regex(BIGINT_STRING_REGEX),\n});\nexport type ProtocolBalanceEnvelope = z.infer<typeof ProtocolBalanceEnvelopeSchema>;\n\n/** Shape of `kash protocol market --json`. */\nexport const ProtocolMarketEnvelopeSchema = z.object({\n marketAddress: z.string().regex(HEX_ADDRESS_REGEX),\n chainId: z.number().int().positive(),\n status: z.enum(['unseeded', 'active', 'frozen', 'resolved']),\n /** block.timestamp at read time (seconds), stringified bigint. */\n readAt: z.string().regex(BIGINT_STRING_REGEX),\n /** Reserve in WAD-18, stringified bigint. */\n reserveWad: z.string().regex(BIGINT_STRING_REGEX),\n outcomes: z.array(\n z.object({\n index: z.number().int().nonnegative(),\n outstandingTokensWad: z.string().regex(BIGINT_STRING_REGEX),\n weightWad: z.string().regex(BIGINT_STRING_REGEX),\n probability: z.number().min(0).max(1),\n })\n ),\n});\nexport type ProtocolMarketEnvelope = z.infer<typeof ProtocolMarketEnvelopeSchema>;\n\n/** Shape of `kash protocol quote --json`. */\nexport const ProtocolQuoteEnvelopeSchema = z.object({\n side: z.enum(['BUY', 'SELL']),\n outcomeIndex: z.number().int().nonnegative(),\n /** Atomic units: USDC (6dp) on BUY, outcome tokens (18dp) on SELL. */\n amountIn: z.string().regex(BIGINT_STRING_REGEX),\n /** Atomic units: outcome tokens (18dp) on BUY, USDC (6dp) on SELL. */\n amountOut: z.string().regex(BIGINT_STRING_REGEX),\n reserveAfterWad: z.string().regex(BIGINT_STRING_REGEX),\n pricesAfterWad: z.array(z.string().regex(BIGINT_STRING_REGEX)),\n});\nexport type ProtocolQuoteEnvelope = z.infer<typeof ProtocolQuoteEnvelopeSchema>;\n\n// ── Dry-run envelopes ─────────────────────────────────────────────\n\n/**\n * Shape of `kash trade buy --dry-run --json` and\n * `kash trade sell --dry-run --json`. Agents use this to plan a trade\n * locally without hitting the API: the envelope describes exactly what\n * the CLI WOULD send if the same invocation ran without `--dry-run`.\n *\n * `wouldSend` is the request body. `idempotencyKey` echoes the resolved\n * `Idempotency-Key` header (auto-generated UUID v4 when\n * `--auto-idempotency-key` is set; null otherwise). `endpoint` pins the\n * HTTP method + path so consumers can reproduce the call out-of-band.\n */\nexport const TradeDryRunEnvelopeSchema = z.object({\n wouldSend: z.object({\n marketId: z.string().uuid(),\n outcomeIndex: z.number().int().nonnegative(),\n amount: z.string().regex(USDC_DECIMAL_REGEX),\n side: z.enum(['buy', 'sell']),\n clientRequestId: z.string().optional(),\n }),\n idempotencyKey: z.string().nullable(),\n endpoint: z.object({\n method: z.literal('POST'),\n path: z.literal('/v1/trades'),\n }),\n});\nexport type TradeDryRunEnvelope = z.infer<typeof TradeDryRunEnvelopeSchema>;\n\n/**\n * Shape of `kash config show --json` and (mostly) of\n * `kash auth status --json`. Agents pin to this contract; the two\n * commands deliberately emit the same shape so consumers don't have\n * to keep two schemas in mind.\n */\nexport const CliConfigEnvelopeSchema = z.object({\n profile: z.string(),\n authenticated: z.boolean(),\n apiKey: z.string().nullable(),\n baseUrl: z.string().url(),\n defaultChainId: z.number().int().positive(),\n // Direct-mode fields. Always present (`null` when unset) so the\n // shape is uniform across Kash-orchestrated-only and self-orchestrated\n // profiles — agents pinning to this schema can read every field without\n // optionality branches. The `signerKeyRef` is a reference shape\n // (`file:<path>` / `env:<NAME>`); the raw private key is never\n // emitted (the CLI never persists keys, even redacted).\n rpcUrl: z.string().url().nullable(),\n smartAccount: z.string().regex(HEX_ADDRESS_REGEX).nullable(),\n bundlerUrl: z.string().url().nullable(),\n bundlerProvider: z.enum(['flashbots', 'pimlico', 'alchemy', 'generic']).nullable(),\n signerKeyRef: z.string().nullable(),\n /**\n * Custom-chain block — `null` when the profile uses the static\n * registry (the typical Base mainnet / Sepolia case). Required for\n * any chain the registry doesn't cover (Anvil / forks / sidechains).\n * `smartAccount` (the inner factory + EntryPoint addresses) is only\n * required when running SA mode on the custom chain — EOA mode\n * ignores it.\n */\n customChain: z\n .object({\n // All fields are optional in the persisted schema (so `kash\n // config set customChain.<leaf>` writes one leaf at a time);\n // completeness is enforced at use time in `resolveCliCustomChain`.\n // The JSON envelope mirrors that: half-built customChain blocks\n // are emitted faithfully so `kash config show --json` matches\n // what's on disk.\n name: z.string().min(1).optional(),\n factoryAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n usdcAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n oracleAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n vaultAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n tokens1155Address: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n paramRegistryAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n smartAccount: z\n .object({\n factoryAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n implementationAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n entryPointAddress: z.string().regex(HEX_ADDRESS_REGEX).optional(),\n })\n .optional(),\n })\n .nullable(),\n sources: z.object({\n apiKey: z.enum(['env', 'file', 'unset']),\n baseUrl: z.enum(['env', 'file', 'default']),\n defaultChainId: z.enum(['env', 'file', 'default']),\n profile: z.enum(['flag', 'env', 'file', 'default']),\n rpcUrl: z.enum(['env', 'file', 'unset']),\n smartAccount: z.enum(['env', 'file', 'unset']),\n bundlerUrl: z.enum(['env', 'file', 'unset']),\n bundlerProvider: z.enum(['env', 'file', 'unset']),\n signerKeyRef: z.enum(['env', 'file', 'unset']),\n customChain: z.enum(['file', 'unset']),\n }),\n});\n\nexport type CliConfigEnvelope = z.infer<typeof CliConfigEnvelopeSchema>;\n"],"mappings":"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","names":["schema"]}