@grimoirelabs/cli 0.14.2 → 0.15.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 (111) hide show
  1. package/dist/commands/advisory-handlers.d.ts.map +1 -1
  2. package/dist/commands/advisory-handlers.js +1 -180
  3. package/dist/commands/advisory-handlers.js.map +1 -1
  4. package/dist/commands/advisory-live-trace.d.ts.map +1 -1
  5. package/dist/commands/advisory-live-trace.js +1 -1
  6. package/dist/commands/advisory-live-trace.js.map +1 -1
  7. package/dist/commands/advisory-verbose-trace.d.ts +15 -0
  8. package/dist/commands/advisory-verbose-trace.d.ts.map +1 -0
  9. package/dist/commands/advisory-verbose-trace.js +185 -0
  10. package/dist/commands/advisory-verbose-trace.js.map +1 -0
  11. package/dist/commands/cast-cross-chain.d.ts +69 -0
  12. package/dist/commands/cast-cross-chain.d.ts.map +1 -0
  13. package/dist/commands/cast-cross-chain.js +456 -0
  14. package/dist/commands/cast-cross-chain.js.map +1 -0
  15. package/dist/commands/cast.d.ts +1 -1
  16. package/dist/commands/cast.d.ts.map +1 -1
  17. package/dist/commands/cast.js +84 -709
  18. package/dist/commands/cast.js.map +1 -1
  19. package/dist/commands/compile-all.d.ts +15 -2
  20. package/dist/commands/compile-all.d.ts.map +1 -1
  21. package/dist/commands/compile-all.js +16 -21
  22. package/dist/commands/compile-all.js.map +1 -1
  23. package/dist/commands/compile.d.ts +1 -1
  24. package/dist/commands/compile.d.ts.map +1 -1
  25. package/dist/commands/compile.js +22 -26
  26. package/dist/commands/compile.js.map +1 -1
  27. package/dist/commands/cross-chain-helpers.d.ts +0 -1
  28. package/dist/commands/cross-chain-helpers.d.ts.map +1 -1
  29. package/dist/commands/cross-chain-helpers.js +0 -3
  30. package/dist/commands/cross-chain-helpers.js.map +1 -1
  31. package/dist/commands/history.d.ts +1 -2
  32. package/dist/commands/history.d.ts.map +1 -1
  33. package/dist/commands/history.js +59 -69
  34. package/dist/commands/history.js.map +1 -1
  35. package/dist/commands/init.d.ts +5 -1
  36. package/dist/commands/init.d.ts.map +1 -1
  37. package/dist/commands/init.js +25 -20
  38. package/dist/commands/init.js.map +1 -1
  39. package/dist/commands/log.d.ts +1 -2
  40. package/dist/commands/log.d.ts.map +1 -1
  41. package/dist/commands/log.js +9 -12
  42. package/dist/commands/log.js.map +1 -1
  43. package/dist/commands/resume.d.ts +18 -1
  44. package/dist/commands/resume.d.ts.map +1 -1
  45. package/dist/commands/resume.js +44 -66
  46. package/dist/commands/resume.js.map +1 -1
  47. package/dist/commands/setup-ui.d.ts +46 -0
  48. package/dist/commands/setup-ui.d.ts.map +1 -0
  49. package/dist/commands/setup-ui.js +221 -0
  50. package/dist/commands/setup-ui.js.map +1 -0
  51. package/dist/commands/setup.d.ts +31 -3
  52. package/dist/commands/setup.d.ts.map +1 -1
  53. package/dist/commands/setup.js +27 -270
  54. package/dist/commands/setup.js.map +1 -1
  55. package/dist/commands/simulate-cross-chain.d.ts +53 -0
  56. package/dist/commands/simulate-cross-chain.d.ts.map +1 -0
  57. package/dist/commands/simulate-cross-chain.js +256 -0
  58. package/dist/commands/simulate-cross-chain.js.map +1 -0
  59. package/dist/commands/simulate.d.ts +5 -1
  60. package/dist/commands/simulate.d.ts.map +1 -1
  61. package/dist/commands/simulate.js +16 -364
  62. package/dist/commands/simulate.js.map +1 -1
  63. package/dist/commands/state-helpers.d.ts.map +1 -1
  64. package/dist/commands/state-helpers.js +1 -5
  65. package/dist/commands/state-helpers.js.map +1 -1
  66. package/dist/commands/validate.d.ts +24 -2
  67. package/dist/commands/validate.d.ts.map +1 -1
  68. package/dist/commands/validate.js +40 -42
  69. package/dist/commands/validate.js.map +1 -1
  70. package/dist/commands/venue-doctor-morpho.d.ts +38 -0
  71. package/dist/commands/venue-doctor-morpho.d.ts.map +1 -0
  72. package/dist/commands/venue-doctor-morpho.js +214 -0
  73. package/dist/commands/venue-doctor-morpho.js.map +1 -0
  74. package/dist/commands/venue-doctor.d.ts +2 -26
  75. package/dist/commands/venue-doctor.d.ts.map +1 -1
  76. package/dist/commands/venue-doctor.js +17 -221
  77. package/dist/commands/venue-doctor.js.map +1 -1
  78. package/dist/commands/venue.d.ts.map +1 -1
  79. package/dist/commands/venue.js +11 -19
  80. package/dist/commands/venue.js.map +1 -1
  81. package/dist/commands/venues.d.ts +1 -5
  82. package/dist/commands/venues.d.ts.map +1 -1
  83. package/dist/commands/venues.js +5 -8
  84. package/dist/commands/venues.js.map +1 -1
  85. package/dist/commands/wallet-weth.d.ts +22 -0
  86. package/dist/commands/wallet-weth.d.ts.map +1 -0
  87. package/dist/commands/wallet-weth.js +150 -0
  88. package/dist/commands/wallet-weth.js.map +1 -0
  89. package/dist/commands/wallet.d.ts +65 -3
  90. package/dist/commands/wallet.d.ts.map +1 -1
  91. package/dist/commands/wallet.js +183 -377
  92. package/dist/commands/wallet.js.map +1 -1
  93. package/dist/index.js +375 -170
  94. package/dist/index.js.map +1 -1
  95. package/dist/lib/execution-helpers.d.ts +24 -0
  96. package/dist/lib/execution-helpers.d.ts.map +1 -0
  97. package/dist/lib/execution-helpers.js +133 -0
  98. package/dist/lib/execution-helpers.js.map +1 -0
  99. package/dist/lib/json.d.ts +8 -0
  100. package/dist/lib/json.d.ts.map +1 -0
  101. package/dist/lib/json.js +10 -0
  102. package/dist/lib/json.js.map +1 -0
  103. package/dist/lib/keystore.d.ts +12 -0
  104. package/dist/lib/keystore.d.ts.map +1 -0
  105. package/dist/lib/keystore.js +14 -0
  106. package/dist/lib/keystore.js.map +1 -0
  107. package/dist/lib/prompts.d.ts +16 -0
  108. package/dist/lib/prompts.d.ts.map +1 -0
  109. package/dist/lib/prompts.js +61 -0
  110. package/dist/lib/prompts.js.map +1 -0
  111. package/package.json +4 -4
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shared execution helpers for cast and simulate commands
3
+ */
4
+ import type { CrossChainReceipt, execute, LedgerEntry, LedgerEvent, RunStepResultRecord, SqliteStateStore } from "@grimoirelabs/core";
5
+ export declare function resolveNoState(options: {
6
+ noState?: boolean;
7
+ state?: boolean;
8
+ }): boolean;
9
+ export declare function isMissingNodeSqliteBackend(error: unknown): boolean;
10
+ export declare function parseRequiredNumber(value: string | undefined, flag: string): number;
11
+ export declare function sleep(ms: number): Promise<void>;
12
+ export declare function resolveRpcUrlFromOption(chainId: number, value?: string | string[]): string | undefined;
13
+ export declare function appendLifecycleLedgerEntries(entries: LedgerEntry[], lifecycleEvents: LedgerEvent[], runId: string, spellId: string): LedgerEntry[];
14
+ export declare function persistCrossChainState(store: SqliteStateStore, input: {
15
+ runId: string;
16
+ tracks: CrossChainReceipt["tracks"];
17
+ handoffs: CrossChainReceipt["handoffs"];
18
+ sourceSpellId?: string;
19
+ destinationSpellId?: string;
20
+ sourceResult?: Awaited<ReturnType<typeof execute>>;
21
+ destinationResult?: Awaited<ReturnType<typeof execute>>;
22
+ }): Promise<void>;
23
+ export declare function collectStepStatuses(result: Awaited<ReturnType<typeof execute>> | undefined, trackId: "source" | "destination", runId: string): RunStepResultRecord[];
24
+ //# sourceMappingURL=execution-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/execution-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,WAAW,EAEX,mBAAmB,EAEnB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAIvF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKlE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASnF;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACxB,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,WAAW,EAAE,EACtB,eAAe,EAAE,WAAW,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,WAAW,EAAE,CAaf;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;CACzD,GACA,OAAO,CAAC,IAAI,CAAC,CAgDf;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,GAAG,SAAS,EACvD,OAAO,EAAE,QAAQ,GAAG,aAAa,EACjC,KAAK,EAAE,MAAM,GACZ,mBAAmB,EAAE,CAyCvB"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Shared execution helpers for cast and simulate commands
3
+ */
4
+ import { parseRpcUrlMappings, resolveRpcUrlForChain } from "../commands/cross-chain-helpers.js";
5
+ export function resolveNoState(options) {
6
+ if (typeof options.noState === "boolean")
7
+ return options.noState;
8
+ if (options.state === false)
9
+ return true;
10
+ return false;
11
+ }
12
+ export function isMissingNodeSqliteBackend(error) {
13
+ if (!(error instanceof Error))
14
+ return false;
15
+ return error.message.includes("SqliteStateStore requires bun:sqlite (Bun) or better-sqlite3 (Node)");
16
+ }
17
+ export function parseRequiredNumber(value, flag) {
18
+ if (!value) {
19
+ throw new Error(`${flag} is required in cross-chain mode`);
20
+ }
21
+ const parsed = Number.parseInt(value, 10);
22
+ if (!Number.isFinite(parsed) || parsed <= 0) {
23
+ throw new Error(`${flag} must be a positive integer`);
24
+ }
25
+ return parsed;
26
+ }
27
+ export function sleep(ms) {
28
+ return new Promise((resolve) => setTimeout(resolve, ms));
29
+ }
30
+ export function resolveRpcUrlFromOption(chainId, value) {
31
+ const parsed = parseRpcUrlMappings(value);
32
+ return resolveRpcUrlForChain(chainId, parsed);
33
+ }
34
+ export function appendLifecycleLedgerEntries(entries, lifecycleEvents, runId, spellId) {
35
+ if (lifecycleEvents.length === 0) {
36
+ return entries;
37
+ }
38
+ const start = entries.length;
39
+ const extras = lifecycleEvents.map((event, index) => ({
40
+ id: `evt_cc_${String(start + index).padStart(3, "0")}`,
41
+ timestamp: Date.now(),
42
+ runId,
43
+ spellId,
44
+ event,
45
+ }));
46
+ return [...entries, ...extras];
47
+ }
48
+ export async function persistCrossChainState(store, input) {
49
+ const nowIso = new Date().toISOString();
50
+ for (const track of input.tracks) {
51
+ const row = {
52
+ runId: input.runId,
53
+ trackId: track.trackId,
54
+ role: track.role,
55
+ spellId: track.spellId,
56
+ chainId: track.chainId,
57
+ status: track.status,
58
+ lastStepId: track.lastStepId,
59
+ error: track.error,
60
+ updatedAt: nowIso,
61
+ };
62
+ await store.upsertRunTrack(row);
63
+ }
64
+ for (const handoff of input.handoffs) {
65
+ const row = {
66
+ runId: input.runId,
67
+ handoffId: handoff.handoffId,
68
+ sourceTrackId: handoff.sourceTrackId,
69
+ destinationTrackId: handoff.destinationTrackId,
70
+ sourceStepId: handoff.sourceStepId,
71
+ originChainId: handoff.originChainId,
72
+ destinationChainId: handoff.destinationChainId,
73
+ asset: handoff.asset,
74
+ submittedAmount: handoff.submittedAmount.toString(),
75
+ settledAmount: handoff.settledAmount?.toString(),
76
+ status: handoff.status,
77
+ reference: handoff.reference,
78
+ originTxHash: handoff.originTxHash,
79
+ reason: handoff.reason,
80
+ createdAt: nowIso,
81
+ updatedAt: nowIso,
82
+ expiresAt: handoff.status === "expired" ? nowIso : undefined,
83
+ };
84
+ await store.upsertRunHandoff(row);
85
+ }
86
+ const sourceSteps = collectStepStatuses(input.sourceResult, "source", input.runId);
87
+ for (const step of sourceSteps) {
88
+ await store.upsertRunStepResult(step);
89
+ }
90
+ const destinationSteps = collectStepStatuses(input.destinationResult, "destination", input.runId);
91
+ for (const step of destinationSteps) {
92
+ await store.upsertRunStepResult(step);
93
+ }
94
+ }
95
+ export function collectStepStatuses(result, trackId, runId) {
96
+ if (!result?.receipt) {
97
+ return [];
98
+ }
99
+ const nowIso = new Date().toISOString();
100
+ const byStep = new Map();
101
+ for (const planned of result.receipt.plannedActions) {
102
+ byStep.set(planned.stepId, {
103
+ runId,
104
+ trackId,
105
+ stepId: planned.stepId,
106
+ status: "pending",
107
+ idempotencyKey: `${runId}:${trackId}:${planned.stepId}`,
108
+ updatedAt: nowIso,
109
+ });
110
+ }
111
+ for (const tx of result.commit?.transactions ?? []) {
112
+ const existing = byStep.get(tx.stepId);
113
+ if (!existing)
114
+ continue;
115
+ existing.status = tx.success ? "confirmed" : "failed";
116
+ existing.reference = tx.hash;
117
+ existing.error = tx.error;
118
+ }
119
+ if (result.success && !result.commit) {
120
+ for (const step of byStep.values()) {
121
+ step.status = "confirmed";
122
+ }
123
+ }
124
+ if (!result.success) {
125
+ for (const step of byStep.values()) {
126
+ if (step.status !== "confirmed") {
127
+ step.status = "failed";
128
+ }
129
+ }
130
+ }
131
+ return [...byStep.values()];
132
+ }
133
+ //# sourceMappingURL=execution-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-helpers.js","sourceRoot":"","sources":["../../src/lib/execution-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared JSON serialization utilities
3
+ */
4
+ /**
5
+ * JSON.stringify with bigint support (converts bigints to strings)
6
+ */
7
+ export declare function stringifyJson(value: unknown): string;
8
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/lib/json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpD"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared JSON serialization utilities
3
+ */
4
+ /**
5
+ * JSON.stringify with bigint support (converts bigints to strings)
6
+ */
7
+ export function stringifyJson(value) {
8
+ return JSON.stringify(value, (_key, innerValue) => (typeof innerValue === "bigint" ? innerValue.toString() : innerValue), 2);
9
+ }
10
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/lib/json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,EACL,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAC3F,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared keystore path constants and resolver
3
+ */
4
+ export declare const DEFAULT_KEYSTORE_DIR: string;
5
+ export declare const DEFAULT_KEYSTORE_PATH: string;
6
+ /**
7
+ * Resolve the keystore file path from options or default
8
+ */
9
+ export declare function resolveKeystorePath(options: {
10
+ keystore?: string;
11
+ }): string;
12
+ //# sourceMappingURL=keystore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../../src/lib/keystore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,oBAAoB,QAA+B,CAAC;AACjE,eAAO,MAAM,qBAAqB,QAA8C,CAAC;AAEjF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE1E"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared keystore path constants and resolver
3
+ */
4
+ import { homedir } from "node:os";
5
+ import { join } from "node:path";
6
+ export const DEFAULT_KEYSTORE_DIR = join(homedir(), ".grimoire");
7
+ export const DEFAULT_KEYSTORE_PATH = join(DEFAULT_KEYSTORE_DIR, "keystore.json");
8
+ /**
9
+ * Resolve the keystore file path from options or default
10
+ */
11
+ export function resolveKeystorePath(options) {
12
+ return options.keystore ?? DEFAULT_KEYSTORE_PATH;
13
+ }
14
+ //# sourceMappingURL=keystore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../src/lib/keystore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAEjF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA8B;IAChE,OAAO,OAAO,CAAC,QAAQ,IAAI,qBAAqB,CAAC;AACnD,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared interactive prompt utilities for CLI commands
3
+ */
4
+ /**
5
+ * Prompt for a password interactively (hides input)
6
+ */
7
+ export declare function promptPassword(message: string): Promise<string>;
8
+ /**
9
+ * Prompt for yes/no confirmation
10
+ */
11
+ export declare function confirmPrompt(message: string): Promise<boolean>;
12
+ /**
13
+ * Prompt for a visible line of input
14
+ */
15
+ export declare function promptLine(message: string): Promise<string>;
16
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/lib/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBrE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAarE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAajE"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Shared interactive prompt utilities for CLI commands
3
+ */
4
+ import * as readline from "node:readline";
5
+ import { Writable } from "node:stream";
6
+ /**
7
+ * Prompt for a password interactively (hides input)
8
+ */
9
+ export async function promptPassword(message) {
10
+ return new Promise((resolve) => {
11
+ process.stdout.write(message);
12
+ const silentOutput = new Writable({
13
+ write(_chunk, _encoding, cb) {
14
+ cb();
15
+ },
16
+ });
17
+ const rl = readline.createInterface({
18
+ input: process.stdin,
19
+ output: silentOutput,
20
+ terminal: true,
21
+ });
22
+ rl.question("", (answer) => {
23
+ rl.close();
24
+ process.stdout.write("\n");
25
+ resolve(answer);
26
+ });
27
+ });
28
+ }
29
+ /**
30
+ * Prompt for yes/no confirmation
31
+ */
32
+ export async function confirmPrompt(message) {
33
+ const rl = readline.createInterface({
34
+ input: process.stdin,
35
+ output: process.stdout,
36
+ });
37
+ return new Promise((resolve) => {
38
+ rl.question(message, (answer) => {
39
+ rl.close();
40
+ const normalized = answer.toLowerCase().trim();
41
+ resolve(normalized === "yes" || normalized === "y");
42
+ });
43
+ });
44
+ }
45
+ /**
46
+ * Prompt for a visible line of input
47
+ */
48
+ export async function promptLine(message) {
49
+ return await new Promise((resolve) => {
50
+ const rl = readline.createInterface({
51
+ input: process.stdin,
52
+ output: process.stdout,
53
+ terminal: true,
54
+ });
55
+ rl.question(message, (answer) => {
56
+ rl.close();
57
+ resolve(answer);
58
+ });
59
+ });
60
+ }
61
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/lib/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC;YAChC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;gBACzB,EAAE,EAAE,CAAC;YACP,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAC9B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAC9B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grimoirelabs/cli",
3
- "version": "0.14.2",
3
+ "version": "0.15.0",
4
4
  "description": "CLI for Grimoire spell execution",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,11 +19,11 @@
19
19
  "test": "bun test"
20
20
  },
21
21
  "dependencies": {
22
- "@grimoirelabs/core": "0.16.0",
23
- "@grimoirelabs/venues": "0.9.3",
22
+ "@grimoirelabs/core": "0.17.0",
23
+ "@grimoirelabs/venues": "0.10.0",
24
24
  "@mariozechner/pi-coding-agent": "0.51.2",
25
25
  "chalk": "^5.3.0",
26
- "commander": "^12.1.0",
26
+ "incur": "^0.3.4",
27
27
  "ora": "^8.1.0",
28
28
  "viem": "^2.21.55"
29
29
  },