@ghostlytools/cli 1.3.10 → 1.4.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 (100) hide show
  1. package/README.md +13 -4
  2. package/SKILL.md +7 -4
  3. package/dist/assets/{api-Cp9GxjUO.js → api-BqLfti32.js} +2 -2
  4. package/dist/assets/{api-BCrwJ57L.js → api-JMkEO0RR.js} +130 -50
  5. package/dist/assets/api-JMkEO0RR.js.map +1 -0
  6. package/dist/assets/{apiKit-B4qhnLQT.js → apiKit-BpIUCwa-.js} +3 -3
  7. package/dist/assets/{apiKit-B4qhnLQT.js.map → apiKit-BpIUCwa-.js.map} +1 -1
  8. package/dist/assets/{apps-CpxENMgl.js → apps-BdfyGVZ1.js} +1 -1
  9. package/dist/assets/{apps-DOH1P_S0.js → apps-Bettj7WQ.js} +6 -6
  10. package/dist/assets/apps-Bettj7WQ.js.map +1 -0
  11. package/dist/assets/{arkade-Cyf5MGxG.js → arkade-CP4HvKaa.js} +2 -2
  12. package/dist/assets/{arkade-Cyf5MGxG.js.map → arkade-CP4HvKaa.js.map} +1 -1
  13. package/dist/assets/{backup-CqM-0-2v.js → backup-BbO2zLjx.js} +1 -1
  14. package/dist/assets/{backup-CTpFFQ-4.js → backup-BmBtta66.js} +7 -7
  15. package/dist/assets/{backup-CTpFFQ-4.js.map → backup-BmBtta66.js.map} +1 -1
  16. package/dist/assets/bark_ffi_wasm_bg-EY2uc0Bx.js.map +1 -1
  17. package/dist/assets/bitcoindevkit_bg-B-iLWrmX.js.map +1 -1
  18. package/dist/assets/blobFiles-B0rNnHlO.js +35 -0
  19. package/dist/assets/blobFiles-B0rNnHlO.js.map +1 -0
  20. package/dist/assets/{buttons-BtxwyM2l.js → buttons-YgijrprJ.js} +4 -4
  21. package/dist/assets/{buttons-BtxwyM2l.js.map → buttons-YgijrprJ.js.map} +1 -1
  22. package/dist/assets/buttons-_GBlxAti.js +2 -0
  23. package/dist/assets/{endpoint-BOTFMpfS.js → endpoint-Cl3cgAYl.js} +3 -2
  24. package/dist/assets/endpoint-Cl3cgAYl.js.map +1 -0
  25. package/dist/assets/{envelope-DW8TWKPD.js → envelope-C7vnmsJN.js} +2 -2
  26. package/dist/assets/{envelope-DW8TWKPD.js.map → envelope-C7vnmsJN.js.map} +1 -1
  27. package/dist/assets/{errors-B-zMxbcd.js → errors-BLSPp0tK.js} +3 -1
  28. package/dist/assets/errors-BLSPp0tK.js.map +1 -0
  29. package/dist/assets/{fileBytes-Di7VZtmU.js → fileBytes-B-fqGdEd.js} +3 -3
  30. package/dist/assets/{fileBytes-Di7VZtmU.js.map → fileBytes-B-fqGdEd.js.map} +1 -1
  31. package/dist/assets/{fileBytes-CgbibpbV.js → fileBytes-C2jycN_7.js} +1 -1
  32. package/dist/assets/{fileBytes-CfSXjTFa.js → fileBytes-D6fqFQEX.js} +6 -3
  33. package/dist/assets/fileBytes-D6fqFQEX.js.map +1 -0
  34. package/dist/assets/fileBytesIdb-DOxm_BKt.js +2 -0
  35. package/dist/assets/{fileBytesIdb-D5u6H8X_.js → fileBytesIdb-_HnxdacI.js} +3 -3
  36. package/dist/assets/{fileBytesIdb-D5u6H8X_.js.map → fileBytesIdb-_HnxdacI.js.map} +1 -1
  37. package/dist/assets/{fileBytesOpfs-Dd1N4ERH.js → fileBytesOpfs-p_CANncD.js} +3 -3
  38. package/dist/assets/{fileBytesOpfs-Dd1N4ERH.js.map → fileBytesOpfs-p_CANncD.js.map} +1 -1
  39. package/dist/assets/{groupFiles-uxa0U9_n.js → groupFiles-sIdGq4AV.js} +5 -5
  40. package/dist/assets/groupFiles-sIdGq4AV.js.map +1 -0
  41. package/dist/assets/{host-BbDWamRc.js → host-Drd-c4VO.js} +43 -20
  42. package/dist/assets/host-Drd-c4VO.js.map +1 -0
  43. package/dist/assets/{hyperdhtRelay-De5FT7Am.js → hyperdhtRelay-13aQ4KOf.js} +2 -2
  44. package/dist/assets/{hyperdhtRelay-De5FT7Am.js.map → hyperdhtRelay-13aQ4KOf.js.map} +1 -1
  45. package/dist/assets/{idb-B5L8wuOm.js → idb-CMVgtn2k.js} +59 -6
  46. package/dist/assets/idb-CMVgtn2k.js.map +1 -0
  47. package/dist/assets/{irohWeb-z5QDDWa-.js → irohWeb-DHCxSvHF.js} +2 -2
  48. package/dist/assets/{irohWeb-z5QDDWa-.js.map → irohWeb-DHCxSvHF.js.map} +1 -1
  49. package/dist/assets/{main-_q4Fgypp.js → main-BWAwKY4f.js} +476 -141
  50. package/dist/assets/main-BWAwKY4f.js.map +1 -0
  51. package/dist/assets/{mainline-Cld-bKeC.js → mainline-CsG-DdJ5.js} +2 -2
  52. package/dist/assets/{mainline-Cld-bKeC.js.map → mainline-CsG-DdJ5.js.map} +1 -1
  53. package/dist/assets/{networkReason-vUHo6A_C.js → networkReason-B91upMCb.js} +3 -3
  54. package/dist/assets/{networkReason-vUHo6A_C.js.map → networkReason-B91upMCb.js.map} +1 -1
  55. package/dist/assets/{nwc-zXpmd2FN.js → nwc-BFv67iSz.js} +3 -3
  56. package/dist/assets/{nwc-zXpmd2FN.js.map → nwc-BFv67iSz.js.map} +1 -1
  57. package/dist/assets/{nwcProvider-D482SQ1a.js → nwcProvider-BKNFdH9v.js} +2 -2
  58. package/dist/assets/{nwcProvider-D482SQ1a.js.map → nwcProvider-BKNFdH9v.js.map} +1 -1
  59. package/dist/assets/{profiles-gPCjLOQq.js → profiles-DSxPYdlU.js} +13 -3
  60. package/dist/assets/profiles-DSxPYdlU.js.map +1 -0
  61. package/dist/assets/{registry-CxsDR3c6.js → registry-CHPd_hf7.js} +1 -1
  62. package/dist/assets/{registry-OVx2kY3d.js → registry-qbnWmwCE.js} +3 -3
  63. package/dist/assets/registry-qbnWmwCE.js.map +1 -0
  64. package/dist/assets/{resolve-CPTAnu-9.js → resolve-B63_uSu7.js} +2 -2
  65. package/dist/assets/{resolve-CPTAnu-9.js.map → resolve-B63_uSu7.js.map} +1 -1
  66. package/dist/assets/{restoredRows-Db3oUTko.js → restoredRows-DeBImGRd.js} +2 -2
  67. package/dist/assets/{restoredRows-Db3oUTko.js.map → restoredRows-DeBImGRd.js.map} +1 -1
  68. package/dist/assets/{server-C-EkLCCt.js → server-Cd1dLOB8.js} +1456 -228
  69. package/dist/assets/server-Cd1dLOB8.js.map +1 -0
  70. package/dist/assets/{src-Dg1bvMNv.js → src-DzXL-GYu.js} +7277 -5975
  71. package/dist/assets/src-DzXL-GYu.js.map +1 -0
  72. package/dist/assets/turnRefs-BCtM10d3.js +357 -0
  73. package/dist/assets/turnRefs-BCtM10d3.js.map +1 -0
  74. package/dist/assets/{usdt-BY5OIIvG.js → usdt-B7JWDhQV.js} +3 -3
  75. package/dist/assets/{usdt-BY5OIIvG.js.map → usdt-B7JWDhQV.js.map} +1 -1
  76. package/dist/ghostly.mjs +1 -1
  77. package/package.json +7 -6
  78. package/skills/ghostly/README.md +41 -0
  79. package/skills/ghostly/SKILL.md +79 -0
  80. package/skills/ghostly/scripts/listen +67 -0
  81. package/skills/ghostly/scripts/react +25 -0
  82. package/skills/ghostly/scripts/say +44 -0
  83. package/skills/ghostly/scripts/status +27 -0
  84. package/dist/assets/api-BCrwJ57L.js.map +0 -1
  85. package/dist/assets/apps-DOH1P_S0.js.map +0 -1
  86. package/dist/assets/buttons-CJqNkG-Q.js +0 -2
  87. package/dist/assets/endpoint-BOTFMpfS.js.map +0 -1
  88. package/dist/assets/errors-B-zMxbcd.js.map +0 -1
  89. package/dist/assets/fileBytes-CfSXjTFa.js.map +0 -1
  90. package/dist/assets/fileBytesIdb-CFP-DSkZ.js +0 -2
  91. package/dist/assets/groupFiles-uxa0U9_n.js.map +0 -1
  92. package/dist/assets/host-BbDWamRc.js.map +0 -1
  93. package/dist/assets/idb-B5L8wuOm.js.map +0 -1
  94. package/dist/assets/main-_q4Fgypp.js.map +0 -1
  95. package/dist/assets/profiles-gPCjLOQq.js.map +0 -1
  96. package/dist/assets/registry-OVx2kY3d.js.map +0 -1
  97. package/dist/assets/server-C-EkLCCt.js.map +0 -1
  98. package/dist/assets/src-Dg1bvMNv.js.map +0 -1
  99. package/dist/assets/turnRefs-WnggXm2T.js +0 -323
  100. package/dist/assets/turnRefs-WnggXm2T.js.map +0 -1
@@ -1,323 +0,0 @@
1
- import { f as node, g as state, i as chatOrGroup, s as findGroup } from "./apiKit-B4qhnLQT.js";
2
- import { createHash } from "node:crypto";
3
- //#region src/engineMethods.ts
4
- /**
5
- * The engine's calls the daemon passes through as `engine.<method>` (WISP 1100 § Local control API): exactly the
6
- * app's `EngineApi` (packages/browser/src/shared/rpc.ts; `engineMethods.test.ts` keeps the two equal), plus two
7
- * reads every host has. Nothing else on the engine object is reachable.
8
- */
9
- var ENGINE_METHODS = [
10
- "usdtCreate",
11
- "usdtUnlock",
12
- "usdtReveal",
13
- "usdtLock",
14
- "usdtRefresh",
15
- "usdtExportBackup",
16
- "usdtRestoreBackup",
17
- "arkCreate",
18
- "arkUnlock",
19
- "arkLock",
20
- "arkBackup",
21
- "arkExportBackup",
22
- "arkRestoreBackup",
23
- "arkRefresh",
24
- "arkRecover",
25
- "barkCreate",
26
- "barkBackup",
27
- "barkExportBackup",
28
- "barkRestoreBackup",
29
- "barkRefresh",
30
- "barkBoard",
31
- "fedimintPreview",
32
- "fedimintJoin",
33
- "fedimintLeave",
34
- "fedimintRefresh",
35
- "fedimintSpendNotes",
36
- "fedimintReceiveNotes",
37
- "fedimintInvoice",
38
- "fedimintTakeBack",
39
- "fedimintBackup",
40
- "fedimintExportBackup",
41
- "fedimintRestoreBackup",
42
- "fedimintRestorePhrase",
43
- "sparkCreate",
44
- "sparkBackup",
45
- "sparkExportBackup",
46
- "sparkRestoreBackup",
47
- "sparkRefresh",
48
- "sparkUseForLightning",
49
- "preparePayment",
50
- "approvePayment",
51
- "reconcilePayment",
52
- "cancelPayment",
53
- "refreshPublicProfiles",
54
- "choosePublicProfile",
55
- "preparePeerProof",
56
- "submitPeerProof",
57
- "withdrawPeerProof",
58
- "beginIdentityProof",
59
- "completeIdentityProof",
60
- "cancelIdentityProof",
61
- "removeIdentityProof",
62
- "shareIdentityProof",
63
- "withdrawIdentityProof",
64
- "recheckIdentityProof",
65
- "lookupIdentityDisplay",
66
- "loadPublicProfile",
67
- "loadPublicPosts",
68
- "loadPublicGraph",
69
- "loadPublicPostImage",
70
- "clearProfileData",
71
- "setDidListed",
72
- "nostrLoadContact",
73
- "nostrForgetContact",
74
- "nostrLoadOwn",
75
- "nostrLookup",
76
- "nostrDraft",
77
- "nostrPublish",
78
- "createLink",
79
- "takeInvite",
80
- "joinLink",
81
- "ensureLink",
82
- "confirmPair",
83
- "pollNow",
84
- "removeLink",
85
- "renameLink",
86
- "setActiveLink",
87
- "sendMessage",
88
- "editMessage",
89
- "retryMessage",
90
- "react",
91
- "pinMessage",
92
- "appId",
93
- "appOpen",
94
- "appClose",
95
- "appSend",
96
- "messageDetails",
97
- "deleteMessage",
98
- "exportLinks",
99
- "sendFile",
100
- "forwardMessages",
101
- "fileAction",
102
- "setDeliveryMode",
103
- "setTransportPreference",
104
- "setChatTransport",
105
- "setChatPaymentMethods",
106
- "setChatHold",
107
- "connect",
108
- "walletAddMint",
109
- "walletCreate",
110
- "walletRemove",
111
- "walletTestCoins",
112
- "walletSetupRetry",
113
- "walletSetupDismiss",
114
- "wake",
115
- "peekProfile",
116
- "walletSetPrimaryMint",
117
- "walletRemoveMint",
118
- "walletReceiveLightning",
119
- "walletQuoteInvoice",
120
- "walletPayQuote",
121
- "lnurlResolve",
122
- "lnurlInvoice",
123
- "checkPayment",
124
- "lightningSetSource",
125
- "lightningClearSource",
126
- "lightningRetrySource",
127
- "lightningReconfigureSource",
128
- "lightningRefresh",
129
- "lightningSetReceive",
130
- "lightningRename",
131
- "bitcoinSetSource",
132
- "bitcoinClearSource",
133
- "bitcoinRetrySource",
134
- "bitcoinReconfigureSource",
135
- "bitcoinReceiveAddress",
136
- "bitcoinRefresh",
137
- "walletReceiveToken",
138
- "walletInspectCashu",
139
- "walletExport",
140
- "walletBackupReminder",
141
- "sendPayment",
142
- "requestPayment",
143
- "requestGroupPayment",
144
- "groupPaymentHello",
145
- "askToPay",
146
- "payRequest",
147
- "reclaimPayment",
148
- "disconnect",
149
- "addService",
150
- "removeService",
151
- "setServiceEnabled",
152
- "setServiceShared",
153
- "updateSettings",
154
- "setCallSignal",
155
- "setTyping",
156
- "setWakeSubscription",
157
- "setWakeMuted",
158
- "wakeForCall",
159
- "setCallOn",
160
- "wakeConfirm",
161
- "setFastPoll",
162
- "createGroup",
163
- "inviteToGroup",
164
- "acceptGroupInvitation",
165
- "declineGroupInvitation",
166
- "enableGroupLink",
167
- "disableGroupLink",
168
- "joinGroupByLink",
169
- "sendGroupMessage",
170
- "sendGroupFile",
171
- "groupFileCheck",
172
- "pressButton",
173
- "groupMessages",
174
- "messagePage",
175
- "statusCardIndex",
176
- "groupTaken",
177
- "leaveGroup",
178
- "removeGroupMember",
179
- "makeGroupAdmin",
180
- "setGroupHub",
181
- "rotateGroup",
182
- "setGroupPicture",
183
- "renameGroup",
184
- "setGroupTyping",
185
- "forgetGroup",
186
- "setGroupManage",
187
- "deviceEnrollInvite",
188
- "deviceEnrollConfirm",
189
- "deviceEnrollCancel",
190
- "deviceEnrollView",
191
- "deviceEnrollJoin",
192
- "deviceEnrollReady",
193
- "deviceEnrollFinish",
194
- "deviceEnrollRemove",
195
- "deviceSet",
196
- "devicePing",
197
- "deviceHandoffVerifier",
198
- "deviceHandoffPush",
199
- "deviceHandoffPull",
200
- "deviceHandoffAccept",
201
- "deviceHandoffSettle",
202
- "deviceHandoffCancel",
203
- "deviceHandoffView",
204
- "deviceHandoffAllow",
205
- "deviceTakeoverInfo",
206
- "deviceTakeover",
207
- "deviceTurnPeek",
208
- "deviceForkDiscard",
209
- "deviceRestoreStartOwn",
210
- "deviceRemove",
211
- "deviceNewSecret",
212
- "deviceSecretOfferDismiss",
213
- "deviceSetNoticeSeen",
214
- "deviceTurnCheck",
215
- "devicePushState",
216
- "devicePushSet",
217
- "appList",
218
- "appBuiltIns",
219
- "appStoreList",
220
- "appStorePreview",
221
- "appStoreAdd",
222
- "appStoreRemove",
223
- "appStoreRefresh",
224
- "appPreview",
225
- "appInstall",
226
- "appUpdateAccept",
227
- "appCheckUpdates",
228
- "appUninstall",
229
- "appRunCheck",
230
- "appFetchFiles",
231
- "appEntry",
232
- "appFile",
233
- "appFileAt",
234
- "appStorageGet",
235
- "appStorageSet",
236
- "appStorageDelete",
237
- "appStorageKeys",
238
- "appDataExport",
239
- "appDataExportText"
240
- ];
241
- /** Reads the hosts use outside `EngineApi`: the whole state, and one chat's stored messages. */
242
- var ENGINE_READS = ["getState", "getMessages"];
243
- /**
244
- * Calls whose answer holds a secret (chat seeds, wallet phrases and keys, ecash, backups): the CLI prints their
245
- * result only with `--show-secret`.
246
- */
247
- var SECRET_RESULTS = /* @__PURE__ */ new Set([
248
- "exportLinks",
249
- "takeInvite",
250
- "walletExport",
251
- "usdtReveal",
252
- "arkBackup",
253
- "barkBackup",
254
- "sparkBackup",
255
- "fedimintBackup",
256
- "usdtExportBackup",
257
- "arkExportBackup",
258
- "barkExportBackup",
259
- "sparkExportBackup",
260
- "fedimintExportBackup",
261
- "fedimintSpendNotes"
262
- ]);
263
- //#endregion
264
- //#region src/turnRefs.ts
265
- /**
266
- * The id an agent turn names its message by (docs/CLI.md § Agent turns). A message is stored under an id its sender
267
- * chose most of (`peer_<the id they sent>`), so a turn carries this one instead, made here from the chat (or group) and
268
- * that id: `t_` and 32 hex digits, in which nobody can write a word. Every command that takes a message's id takes it.
269
- */
270
- function turnRef(where, messageId) {
271
- return "t_" + createHash("sha256").update(`${where}\n${messageId}`).digest("hex").slice(0, 32);
272
- }
273
- var TURN_REF = /^t_[0-9a-f]{32}$/;
274
- var isRef = (value) => typeof value === "string" && TURN_REF.test(value);
275
- /**
276
- * `params` with each turn's id in `message`, `reply` and `messages` as the id its message is stored under: looked for
277
- * among the chat's (or group's) newest messages first, where a turn's almost always is, then in all of them. One that
278
- * names no message stays as given, and its command says so as for any unknown id.
279
- */
280
- async function withStoredIds(ctx, params) {
281
- const wanted = new Set([
282
- params.message,
283
- params.reply,
284
- ...Array.isArray(params.messages) ? params.messages : []
285
- ].filter(isRef));
286
- if (!wanted.size) return params;
287
- let target = null;
288
- try {
289
- if (typeof params.group === "string") {
290
- const group = findGroup(state(ctx).groups, params.group);
291
- target = {
292
- id: group.id,
293
- linkId: `group:${group.id}`,
294
- group: true
295
- };
296
- } else if (typeof params.chat === "string") target = chatOrGroup(ctx, params.chat);
297
- } catch {}
298
- if (!target) return params;
299
- const { id, linkId, group } = target;
300
- const found = /* @__PURE__ */ new Map();
301
- const look = (messages) => {
302
- for (const message of messages) {
303
- const ref = turnRef(id, message.id);
304
- if (wanted.has(ref)) found.set(ref, message.id);
305
- }
306
- return found.size === wanted.size;
307
- };
308
- if (!look((await node(ctx).messagePage({
309
- linkId,
310
- limit: 200
311
- })).messages)) look(group ? await node(ctx).groupMessages({ groupId: id }) : await node(ctx).getMessages(linkId));
312
- const stored = (value) => isRef(value) ? found.get(value) ?? value : value;
313
- return {
314
- ...params,
315
- ...params.message !== void 0 && { message: stored(params.message) },
316
- ...params.reply !== void 0 && { reply: stored(params.reply) },
317
- ...Array.isArray(params.messages) && { messages: params.messages.map(stored) }
318
- };
319
- }
320
- //#endregion
321
- export { SECRET_RESULTS as a, ENGINE_READS as i, withStoredIds as n, ENGINE_METHODS as r, turnRef as t };
322
-
323
- //# sourceMappingURL=turnRefs-WnggXm2T.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"turnRefs-WnggXm2T.js","names":[],"sources":["../../src/engineMethods.ts","../../src/turnRefs.ts"],"sourcesContent":["/**\n * The engine's calls the daemon passes through as `engine.<method>` (WISP 1100 § Local control API): exactly the\n * app's `EngineApi` (packages/browser/src/shared/rpc.ts; `engineMethods.test.ts` keeps the two equal), plus two\n * reads every host has. Nothing else on the engine object is reachable.\n */\nexport const ENGINE_METHODS: readonly string[] = [\n \"usdtCreate\", \"usdtUnlock\", \"usdtReveal\", \"usdtLock\", \"usdtRefresh\", \"usdtExportBackup\", \"usdtRestoreBackup\",\n \"arkCreate\", \"arkUnlock\", \"arkLock\", \"arkBackup\", \"arkExportBackup\", \"arkRestoreBackup\", \"arkRefresh\", \"arkRecover\",\n \"barkCreate\", \"barkBackup\", \"barkExportBackup\", \"barkRestoreBackup\", \"barkRefresh\", \"barkBoard\", \"fedimintPreview\",\n \"fedimintJoin\", \"fedimintLeave\", \"fedimintRefresh\", \"fedimintSpendNotes\", \"fedimintReceiveNotes\", \"fedimintInvoice\",\n \"fedimintTakeBack\", \"fedimintBackup\", \"fedimintExportBackup\", \"fedimintRestoreBackup\", \"fedimintRestorePhrase\",\n \"sparkCreate\", \"sparkBackup\", \"sparkExportBackup\", \"sparkRestoreBackup\", \"sparkRefresh\", \"sparkUseForLightning\",\n \"preparePayment\", \"approvePayment\", \"reconcilePayment\", \"cancelPayment\", \"refreshPublicProfiles\",\n \"choosePublicProfile\", \"preparePeerProof\", \"submitPeerProof\", \"withdrawPeerProof\", \"beginIdentityProof\",\n \"completeIdentityProof\", \"cancelIdentityProof\", \"removeIdentityProof\", \"shareIdentityProof\",\n \"withdrawIdentityProof\", \"recheckIdentityProof\", \"lookupIdentityDisplay\", \"loadPublicProfile\", \"loadPublicPosts\",\n \"loadPublicGraph\", \"loadPublicPostImage\", \"clearProfileData\", \"setDidListed\", \"nostrLoadContact\", \"nostrForgetContact\", \"nostrLoadOwn\",\n \"nostrLookup\", \"nostrDraft\", \"nostrPublish\", \"createLink\", \"takeInvite\", \"joinLink\", \"ensureLink\", \"confirmPair\",\n \"pollNow\", \"removeLink\", \"renameLink\", \"setActiveLink\", \"sendMessage\", \"editMessage\", \"retryMessage\", \"react\", \"pinMessage\", \"appId\", \"appOpen\", \"appClose\", \"appSend\", \"messageDetails\",\n \"deleteMessage\", \"exportLinks\", \"sendFile\", \"forwardMessages\", \"fileAction\", \"setDeliveryMode\", \"setTransportPreference\",\n \"setChatTransport\", \"setChatPaymentMethods\", \"setChatHold\", \"connect\", \"walletAddMint\", \"walletCreate\",\n \"walletRemove\", \"walletTestCoins\", \"walletSetupRetry\", \"walletSetupDismiss\", \"wake\", \"peekProfile\", \"walletSetPrimaryMint\", \"walletRemoveMint\", \"walletReceiveLightning\",\n \"walletQuoteInvoice\", \"walletPayQuote\", \"lnurlResolve\", \"lnurlInvoice\", \"checkPayment\", \"lightningSetSource\",\n \"lightningClearSource\", \"lightningRetrySource\", \"lightningReconfigureSource\", \"lightningRefresh\",\n \"lightningSetReceive\", \"lightningRename\", \"bitcoinSetSource\", \"bitcoinClearSource\", \"bitcoinRetrySource\",\n \"bitcoinReconfigureSource\", \"bitcoinReceiveAddress\", \"bitcoinRefresh\", \"walletReceiveToken\", \"walletInspectCashu\",\n \"walletExport\", \"walletBackupReminder\", \"sendPayment\", \"requestPayment\", \"requestGroupPayment\", \"groupPaymentHello\", \"askToPay\",\n \"payRequest\", \"reclaimPayment\", \"disconnect\", \"addService\", \"removeService\", \"setServiceEnabled\",\n \"setServiceShared\", \"updateSettings\", \"setCallSignal\", \"setTyping\", \"setWakeSubscription\", \"setWakeMuted\", \"wakeForCall\", \"setCallOn\", \"wakeConfirm\", \"setFastPoll\", \"createGroup\", \"inviteToGroup\",\n \"acceptGroupInvitation\", \"declineGroupInvitation\", \"enableGroupLink\", \"disableGroupLink\", \"joinGroupByLink\",\n \"sendGroupMessage\", \"sendGroupFile\", \"groupFileCheck\", \"pressButton\", \"groupMessages\", \"messagePage\", \"statusCardIndex\", \"groupTaken\", \"leaveGroup\", \"removeGroupMember\", \"makeGroupAdmin\", \"setGroupHub\", \"rotateGroup\",\n \"setGroupPicture\", \"renameGroup\", \"setGroupTyping\", \"forgetGroup\", \"setGroupManage\",\n // One profile on several devices (WISP 06): a CLI profile is always on one device, so these answer `single` or refuse.\n \"deviceEnrollInvite\", \"deviceEnrollConfirm\", \"deviceEnrollCancel\", \"deviceEnrollView\", \"deviceEnrollJoin\", \"deviceEnrollReady\", \"deviceEnrollFinish\",\n \"deviceEnrollRemove\", \"deviceSet\", \"devicePing\", \"deviceHandoffVerifier\", \"deviceHandoffPush\", \"deviceHandoffPull\", \"deviceHandoffAccept\",\n \"deviceHandoffSettle\", \"deviceHandoffCancel\", \"deviceHandoffView\", \"deviceHandoffAllow\", \"deviceTakeoverInfo\", \"deviceTakeover\", \"deviceTurnPeek\", \"deviceForkDiscard\", \"deviceRestoreStartOwn\",\n \"deviceRemove\", \"deviceNewSecret\", \"deviceSecretOfferDismiss\", \"deviceSetNoticeSeen\", \"deviceTurnCheck\", \"devicePushState\", \"devicePushSet\",\n \"appList\", \"appBuiltIns\", \"appStoreList\", \"appStorePreview\", \"appStoreAdd\", \"appStoreRemove\", \"appStoreRefresh\", \"appPreview\", \"appInstall\",\n \"appUpdateAccept\", \"appCheckUpdates\", \"appUninstall\", \"appRunCheck\", \"appFetchFiles\", \"appEntry\", \"appFile\", \"appFileAt\", \"appStorageGet\", \"appStorageSet\",\n \"appStorageDelete\", \"appStorageKeys\", \"appDataExport\", \"appDataExportText\",\n];\n\n/** Reads the hosts use outside `EngineApi`: the whole state, and one chat's stored messages. */\nexport const ENGINE_READS: readonly string[] = [\"getState\", \"getMessages\"];\n\n/**\n * Calls whose answer holds a secret (chat seeds, wallet phrases and keys, ecash, backups): the CLI prints their\n * result only with `--show-secret`.\n */\nexport const SECRET_RESULTS: ReadonlySet<string> = new Set([\n \"exportLinks\", \"takeInvite\", \"walletExport\", \"usdtReveal\",\n \"arkBackup\", \"barkBackup\", \"sparkBackup\", \"fedimintBackup\",\n \"usdtExportBackup\", \"arkExportBackup\", \"barkExportBackup\", \"sparkExportBackup\", \"fedimintExportBackup\",\n \"fedimintSpendNotes\",\n]);\n","import { createHash } from \"node:crypto\";\nimport { chatOrGroup, findGroup, node, state, type ApiContext, type Params } from \"./apiKit\";\n\n/**\n * The id an agent turn names its message by (docs/CLI.md § Agent turns). A message is stored under an id its sender\n * chose most of (`peer_<the id they sent>`), so a turn carries this one instead, made here from the chat (or group) and\n * that id: `t_` and 32 hex digits, in which nobody can write a word. Every command that takes a message's id takes it.\n */\nexport function turnRef(where: string, messageId: string): string {\n return \"t_\" + createHash(\"sha256\").update(`${where}\\n${messageId}`).digest(\"hex\").slice(0, 32);\n}\n\nconst TURN_REF = /^t_[0-9a-f]{32}$/;\nconst isRef = (value: unknown): value is string => typeof value === \"string\" && TURN_REF.test(value);\n\n/**\n * `params` with each turn's id in `message`, `reply` and `messages` as the id its message is stored under: looked for\n * among the chat's (or group's) newest messages first, where a turn's almost always is, then in all of them. One that\n * names no message stays as given, and its command says so as for any unknown id.\n */\nexport async function withStoredIds(ctx: ApiContext, params: Params): Promise<Params> {\n const wanted = new Set([params.message, params.reply, ...(Array.isArray(params.messages) ? params.messages : [])].filter(isRef));\n if (!wanted.size) return params;\n let target: { id: string; linkId: string; group: boolean } | null = null;\n try {\n if (typeof params.group === \"string\") { const group = findGroup(state(ctx).groups, params.group); target = { id: group.id, linkId: `group:${group.id}`, group: true }; }\n else if (typeof params.chat === \"string\") target = chatOrGroup(ctx, params.chat);\n } catch { /* the command says what is wrong with its chat or group */ }\n if (!target) return params;\n const { id, linkId, group } = target;\n const found = new Map<string, string>();\n const look = (messages: readonly { id: string }[]) => {\n for (const message of messages) { const ref = turnRef(id, message.id); if (wanted.has(ref)) found.set(ref, message.id); }\n return found.size === wanted.size;\n };\n if (!look((await node(ctx).messagePage({ linkId, limit: 200 })).messages)) look(group ? await node(ctx).groupMessages({ groupId: id }) : await node(ctx).getMessages(linkId));\n const stored = (value: unknown) => (isRef(value) ? found.get(value) ?? value : value);\n return {\n ...params,\n ...(params.message !== undefined && { message: stored(params.message) }),\n ...(params.reply !== undefined && { reply: stored(params.reply) }),\n ...(Array.isArray(params.messages) && { messages: params.messages.map(stored) }),\n };\n}\n"],"mappings":"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"}