@wirecat/bitrix24-cli 0.3.0 → 0.5.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 (255) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/README.md +84 -9
  3. package/dist/api-keys.d.ts +36 -9
  4. package/dist/api-keys.d.ts.map +1 -1
  5. package/dist/api-keys.js +139 -19
  6. package/dist/api-keys.js.map +1 -1
  7. package/dist/bin/b24.js +2 -2
  8. package/dist/bitrix/errors.js +1 -1
  9. package/dist/bitrix/errors.js.map +1 -1
  10. package/dist/bitrix/methods.d.ts.map +1 -1
  11. package/dist/bitrix/methods.js +7 -3
  12. package/dist/bitrix/methods.js.map +1 -1
  13. package/dist/bitrix/transport.d.ts +4 -7
  14. package/dist/bitrix/transport.d.ts.map +1 -1
  15. package/dist/bitrix/transport.js +29 -19
  16. package/dist/bitrix/transport.js.map +1 -1
  17. package/dist/body.d.ts +14 -0
  18. package/dist/body.d.ts.map +1 -0
  19. package/dist/body.js +44 -0
  20. package/dist/body.js.map +1 -0
  21. package/dist/bundle/{chunk-QIPTIUMJ.js → all-profiles-CANIDIDS.js} +12 -7
  22. package/dist/bundle/{anthropic-RHRAVHC2.js → anthropic-JUJB4DCF.js} +5 -5
  23. package/dist/bundle/{app-server-QIT6S7AZ.js → app-server-3V5Z4PTK.js} +68 -54
  24. package/dist/bundle/b24.js +18 -12
  25. package/dist/bundle/{bun-H6RSODZ3.js → bun-LKMV5TY7.js} +2 -2
  26. package/dist/bundle/{bun-sqlite-BO4LTQHX.js → bun-sqlite-S56EF74S.js} +3 -3
  27. package/dist/bundle/{chunk-D5S6QV6R.js → chunk-2I4KWS3H.js} +6 -6
  28. package/dist/bundle/chunk-36PO5NWY.js +147 -0
  29. package/dist/bundle/{chunk-ZIAQPTUS.js → chunk-42F7Q7V6.js} +3 -3
  30. package/dist/bundle/{chunk-6WY72XVQ.js → chunk-4D3K6GZW.js} +18 -4
  31. package/dist/bundle/chunk-5D4MJQ6X.js +22 -0
  32. package/dist/bundle/chunk-5JOPERVF.js +84 -0
  33. package/dist/bundle/chunk-6A4UPWDC.js +15 -0
  34. package/dist/bundle/{chunk-P33NDCDI.js → chunk-6MGWIZG4.js} +1 -1
  35. package/dist/bundle/{chunk-ZDQQCXFG.js → chunk-6YJTNZ7U.js} +13 -13
  36. package/dist/bundle/{chunk-MBDK4YXG.js → chunk-7FBFJ6B4.js} +4 -2
  37. package/dist/bundle/chunk-7VCMOTQP.js +55 -0
  38. package/dist/bundle/{chunk-P364PLIK.js → chunk-A5IMMGYU.js} +36 -34
  39. package/dist/bundle/{chunk-45AKJVKV.js → chunk-ASEHTBNK.js} +1 -1
  40. package/dist/bundle/{chunk-HGL63O5V.js → chunk-B6LPJYPQ.js} +2 -2
  41. package/dist/bundle/{chunk-LSPIOT6Z.js → chunk-BHEE2K6C.js} +7 -7
  42. package/dist/bundle/chunk-BYZQBE63.js +971 -0
  43. package/dist/bundle/{program-H3TGGRQ6.js → chunk-COKGNTDQ.js} +15761 -16685
  44. package/dist/bundle/{chunk-XJXONOB5.js → chunk-DVFYRQGE.js} +1 -1
  45. package/dist/bundle/{chunk-FLUEXJ4X.js → chunk-DVSIBZ3G.js} +1 -1
  46. package/dist/bundle/chunk-EJEIXC6Y.js +273 -0
  47. package/dist/bundle/chunk-EYTGCM44.js +130 -0
  48. package/dist/bundle/{chunk-IRV2PCQ2.js → chunk-EYYOKT23.js} +26 -26
  49. package/dist/bundle/{chunk-PH5FZX6E.js → chunk-FCWPIWSR.js} +2 -2
  50. package/dist/bundle/{chunk-YZ5LHE5Q.js → chunk-FSWRMQWX.js} +2 -2
  51. package/dist/bundle/{chunk-ADLS6FVG.js → chunk-FXBHOCJK.js} +1 -1
  52. package/dist/bundle/chunk-G5MW6RCM.js +723 -0
  53. package/dist/bundle/{chunk-VEWWAGTD.js → chunk-GLTKRLFT.js} +8 -8
  54. package/dist/bundle/chunk-GUUZQ7NE.js +581 -0
  55. package/dist/bundle/{chunk-QSNROIJL.js → chunk-H6RIPOOI.js} +42 -9
  56. package/dist/bundle/{chunk-H2ADPPSH.js → chunk-HGFNC4CR.js} +1819 -597
  57. package/dist/bundle/{chunk-7GRZAKBB.js → chunk-IERYD2N2.js} +6 -6
  58. package/dist/bundle/{chunk-N6FLBXZS.js → chunk-IGCLMEMB.js} +3 -3
  59. package/dist/bundle/{chunk-U5ACMCAQ.js → chunk-J7WCSZ2Q.js} +411 -919
  60. package/dist/bundle/{chunk-W5YAO5G5.js → chunk-JZYHQ4HB.js} +9 -4
  61. package/dist/bundle/{chunk-EVYSBZ3I.js → chunk-K4QM3X5F.js} +4 -4
  62. package/dist/bundle/{chunk-DTXERR44.js → chunk-KFSMY7SZ.js} +2 -2
  63. package/dist/bundle/{chunk-LRGYKOCP.js → chunk-KPEDH5T4.js} +1 -1
  64. package/dist/bundle/{chunk-XRFJWHY5.js → chunk-KUY7LII2.js} +4 -4
  65. package/dist/bundle/{chunk-QC53QBNC.js → chunk-LFXDHLFR.js} +3 -3
  66. package/dist/bundle/{chunk-CNNEA2M4.js → chunk-LGLT4JB6.js} +3 -3
  67. package/dist/bundle/{chunk-QGMDQ2PM.js → chunk-LM4OOBAW.js} +3 -3
  68. package/dist/bundle/chunk-M74BSKMA.js +234 -0
  69. package/dist/bundle/{chunk-2KCZ7BKW.js → chunk-MMMT6ORT.js} +11 -11
  70. package/dist/bundle/{chunk-WII44RXN.js → chunk-NGYD6QTE.js} +2 -2
  71. package/dist/bundle/{chunk-FOTREPNS.js → chunk-NO6QOPVT.js} +10 -19
  72. package/dist/bundle/chunk-O6XC7DZI.js +804 -0
  73. package/dist/bundle/chunk-OE3NFB53.js +64 -0
  74. package/dist/bundle/{chunk-XD4FRDSL.js → chunk-OUMFNB34.js} +13 -149
  75. package/dist/bundle/{chunk-ZGZT5S6B.js → chunk-P2RQTNVJ.js} +806 -850
  76. package/dist/bundle/{chunk-RRJNNPR4.js → chunk-PBIBGIZ7.js} +1 -1
  77. package/dist/bundle/{chunk-EXOOKUEA.js → chunk-Q6VQHTRW.js} +2 -2
  78. package/dist/bundle/{chunk-TE3FR6MI.js → chunk-QHBCNVUG.js} +5 -5
  79. package/dist/bundle/{chunk-SGRYYE4X.js → chunk-QNOXAQ6Y.js} +4 -4
  80. package/dist/bundle/{chunk-QQXH2OPB.js → chunk-R5F2O5GX.js} +15 -272
  81. package/dist/bundle/{chunk-SFRNX2TI.js → chunk-R5PBSKJL.js} +1 -1
  82. package/dist/bundle/{chunk-OTD2ZRXD.js → chunk-RS2BARUU.js} +4 -4
  83. package/dist/bundle/chunk-TG3DSPT5.js +14 -0
  84. package/dist/bundle/{chunk-BCF7P4FZ.js → chunk-U22JMKUO.js} +6 -125
  85. package/dist/bundle/chunk-U66Q5TVK.js +106 -0
  86. package/dist/bundle/{chunk-QMPN6WKD.js → chunk-UCHMQWON.js} +211 -89
  87. package/dist/bundle/{chunk-POC3V3AO.js → chunk-VMJS7FJZ.js} +526 -467
  88. package/dist/bundle/{chunk-FZL7F5NR.js → chunk-VMVAQHDC.js} +77 -615
  89. package/dist/bundle/{chunk-K3UIB6ZF.js → chunk-WWMCJFMT.js} +2 -2
  90. package/dist/bundle/{chunk-CXL33BFL.js → chunk-XTA5TN3H.js} +1 -1
  91. package/dist/bundle/{chunk-WTPMJYMD.js → chunk-XUHHBEA7.js} +652 -131
  92. package/dist/bundle/{chunk-WKRQ44EH.js → chunk-YDZHO4LT.js} +13 -13
  93. package/dist/bundle/{chunk-2SNUMZ7S.js → chunk-ZKINZFIT.js} +6 -6
  94. package/dist/bundle/{chunk-HAXNUIGQ.js → chunk-ZSQXSIFQ.js} +89 -39
  95. package/dist/bundle/{chunk-YYO7D2MO.js → chunk-ZZEHDIEG.js} +58 -54
  96. package/dist/bundle/command-contract-OQV6H7SR.js +36 -0
  97. package/dist/bundle/{decode-5ZPLTYV6.js → decode-QSTBX4MG.js} +3 -3
  98. package/dist/bundle/{echarts-J6LAPIX7.js → echarts-JZELFH2N.js} +2 -2
  99. package/dist/bundle/{embed-YG5LDHME.js → embed-4RIW2LVH.js} +4 -4
  100. package/dist/bundle/{embedder-7FNUA5OZ.js → embedder-SW7DTWSL.js} +7 -7
  101. package/dist/bundle/{first-run-JPZNWIJN.js → first-run-7AISOSOM.js} +8 -8
  102. package/dist/bundle/first-screen-NMHNFZ2B.js +34 -0
  103. package/dist/bundle/{instructions-AXWTQHMR.js → instructions-BZE5YUGG.js} +1 -1
  104. package/dist/bundle/{mcp-7F46P6AM.js → mcp-SDWHDJTY.js} +2 -2
  105. package/dist/bundle/{node-P4E63KXA.js → node-KM3CUABH.js} +9 -9
  106. package/dist/bundle/{node-CWKAIOEM.js → node-LTKZIO4U.js} +2 -2
  107. package/dist/bundle/{node-sqlite-LSEKVRDA.js → node-sqlite-HQ5PN2RH.js} +4 -4
  108. package/dist/bundle/{oauth-THYNLRLD.js → oauth-UH6FOZQL.js} +5 -5
  109. package/dist/bundle/{open-E47QYKFC.js → open-TSUP3XGL.js} +3 -3
  110. package/dist/bundle/{openai-EWSGC3BC.js → openai-GVEE52E3.js} +14 -14
  111. package/dist/bundle/{process-WKTEA3WE.js → process-AGXY76ZE.js} +1 -1
  112. package/dist/bundle/program-BI4A4HFJ.js +2247 -0
  113. package/dist/bundle/{prompt-CAQ7QR3U.js → prompt-NRSUY7FA.js} +3 -3
  114. package/dist/bundle/{recognize-6KGHNZC3.js → recognize-NPDPQ6PJ.js} +2 -2
  115. package/dist/bundle/{remote-3UO2WDC3.js → remote-HFASMVLB.js} +5 -5
  116. package/dist/bundle/{rerank-2JVDPZBX.js → rerank-TL6Z6F7K.js} +5 -5
  117. package/dist/bundle/{chunk-VL6SPMZV.js → serve-VB4DHDZQ.js} +8 -6
  118. package/dist/bundle/server-T5EDRPJI.js +68 -0
  119. package/dist/bundle/{chunk-ZEW4P6AH.js → server-Z6MW6C37.js} +50 -14
  120. package/dist/bundle/source-4IGO5J7E.js +237 -0
  121. package/dist/bundle/sqlite-runtime-YS4POY3W.js +17 -0
  122. package/dist/bundle/{state-7NH5G4XJ.js → state-ISZVVZGR.js} +4 -4
  123. package/dist/bundle/store-IZJBAKJV.js +58 -0
  124. package/dist/bundle/{store-7O4JQD2Z.js → store-L76MSQC3.js} +17 -12
  125. package/dist/bundle/store-PBTIB7BD.js +207 -0
  126. package/dist/bundle/store-maintenance-command-YFKII7TF.js +58 -0
  127. package/dist/bundle/writer-3O5EYMFE.js +214 -0
  128. package/dist/commands/api.d.ts.map +1 -1
  129. package/dist/commands/api.js +81 -30
  130. package/dist/commands/api.js.map +1 -1
  131. package/dist/commands/crm-shared.d.ts +4 -0
  132. package/dist/commands/crm-shared.d.ts.map +1 -0
  133. package/dist/commands/crm-shared.js +94 -0
  134. package/dist/commands/crm-shared.js.map +1 -0
  135. package/dist/commands/crm-writes.d.ts +0 -1
  136. package/dist/commands/crm-writes.d.ts.map +1 -1
  137. package/dist/commands/crm-writes.js +43 -88
  138. package/dist/commands/crm-writes.js.map +1 -1
  139. package/dist/commands/crm.d.ts.map +1 -1
  140. package/dist/commands/crm.js +30 -48
  141. package/dist/commands/crm.js.map +1 -1
  142. package/dist/commands/session.d.ts.map +1 -1
  143. package/dist/commands/session.js +1 -0
  144. package/dist/commands/session.js.map +1 -1
  145. package/dist/commands/write.d.ts +6 -6
  146. package/dist/commands/write.d.ts.map +1 -1
  147. package/dist/commands/write.js +11 -18
  148. package/dist/commands/write.js.map +1 -1
  149. package/dist/config.d.ts +0 -5
  150. package/dist/config.d.ts.map +1 -1
  151. package/dist/config.js +6 -8
  152. package/dist/config.js.map +1 -1
  153. package/dist/crm/capabilities.d.ts +7 -0
  154. package/dist/crm/capabilities.d.ts.map +1 -0
  155. package/dist/crm/capabilities.js +7 -0
  156. package/dist/crm/capabilities.js.map +1 -0
  157. package/dist/crm/conditions.d.ts +1 -1
  158. package/dist/crm/conditions.d.ts.map +1 -1
  159. package/dist/crm/conditions.js +4 -6
  160. package/dist/crm/conditions.js.map +1 -1
  161. package/dist/crm/custom-query.d.ts +19 -0
  162. package/dist/crm/custom-query.d.ts.map +1 -0
  163. package/dist/crm/custom-query.js +79 -0
  164. package/dist/crm/custom-query.js.map +1 -0
  165. package/dist/crm/deal.d.ts +4 -27
  166. package/dist/crm/deal.d.ts.map +1 -1
  167. package/dist/crm/deal.js +15 -48
  168. package/dist/crm/deal.js.map +1 -1
  169. package/dist/crm/fields.d.ts +20 -0
  170. package/dist/crm/fields.d.ts.map +1 -0
  171. package/dist/crm/fields.js +78 -0
  172. package/dist/crm/fields.js.map +1 -0
  173. package/dist/crm/items.d.ts +7 -1
  174. package/dist/crm/items.d.ts.map +1 -1
  175. package/dist/crm/items.js +21 -18
  176. package/dist/crm/items.js.map +1 -1
  177. package/dist/crm/lead.d.ts +5 -36
  178. package/dist/crm/lead.d.ts.map +1 -1
  179. package/dist/crm/lead.js +15 -61
  180. package/dist/crm/lead.js.map +1 -1
  181. package/dist/crm/organization.d.ts +1 -0
  182. package/dist/crm/organization.d.ts.map +1 -1
  183. package/dist/crm/person.d.ts +1 -0
  184. package/dist/crm/person.d.ts.map +1 -1
  185. package/dist/crm/pipelines.d.ts +5 -0
  186. package/dist/crm/pipelines.d.ts.map +1 -0
  187. package/dist/crm/pipelines.js +54 -0
  188. package/dist/crm/pipelines.js.map +1 -0
  189. package/dist/crm/product.d.ts.map +1 -1
  190. package/dist/crm/product.js +2 -2
  191. package/dist/crm/product.js.map +1 -1
  192. package/dist/crm/rest3-fields.d.ts +3 -0
  193. package/dist/crm/rest3-fields.d.ts.map +1 -0
  194. package/dist/crm/rest3-fields.js +38 -0
  195. package/dist/crm/rest3-fields.js.map +1 -0
  196. package/dist/crm/source.d.ts +15 -0
  197. package/dist/crm/source.d.ts.map +1 -0
  198. package/dist/crm/source.js +122 -0
  199. package/dist/crm/source.js.map +1 -0
  200. package/dist/crm/user.d.ts.map +1 -1
  201. package/dist/crm/user.js +2 -2
  202. package/dist/crm/user.js.map +1 -1
  203. package/dist/crm/values.d.ts +26 -5
  204. package/dist/crm/values.d.ts.map +1 -1
  205. package/dist/crm/values.js +40 -5
  206. package/dist/crm/values.js.map +1 -1
  207. package/dist/crm/writer.d.ts +9 -0
  208. package/dist/crm/writer.d.ts.map +1 -0
  209. package/dist/crm/writer.js +119 -0
  210. package/dist/crm/writer.js.map +1 -0
  211. package/dist/program.d.ts.map +1 -1
  212. package/dist/program.js +53 -5
  213. package/dist/program.js.map +1 -1
  214. package/dist/reasons.d.ts.map +1 -1
  215. package/dist/reasons.js +6 -1
  216. package/dist/reasons.js.map +1 -1
  217. package/dist/store.d.ts +15 -0
  218. package/dist/store.d.ts.map +1 -0
  219. package/dist/store.js +33 -0
  220. package/dist/store.js.map +1 -0
  221. package/dist/version.d.ts +1 -1
  222. package/dist/version.js +1 -1
  223. package/package.json +4 -6
  224. package/skills/bitrix24-cli/SKILL.md +16 -10
  225. package/dist/bundle/all-profiles-QJ444GSX.js +0 -24
  226. package/dist/bundle/chunk-XNHSPHUN.js +0 -48
  227. package/dist/bundle/command-contract-OKQOE6G4.js +0 -30
  228. package/dist/bundle/first-screen-VQM4MTS7.js +0 -28
  229. package/dist/bundle/mcp-5RSWNTHS.js +0 -160
  230. package/dist/bundle/mcp-J5R5A65I.js +0 -87
  231. package/dist/bundle/serve-ES7AG5IK.js +0 -19
  232. package/dist/bundle/server-5LE5LNUQ.js +0 -45
  233. package/dist/bundle/server-BU4VBM6S.js +0 -58
  234. package/dist/bundle/store-maintenance-command-UDVGEY2D.js +0 -47
  235. package/dist/commands/doctor.d.ts +0 -77
  236. package/dist/commands/doctor.d.ts.map +0 -1
  237. package/dist/commands/doctor.js +0 -74
  238. package/dist/commands/doctor.js.map +0 -1
  239. package/dist/commands/mcp.d.ts +0 -3
  240. package/dist/commands/mcp.d.ts.map +0 -1
  241. package/dist/commands/mcp.js +0 -97
  242. package/dist/commands/mcp.js.map +0 -1
  243. package/dist/crm/pipeline.d.ts +0 -17
  244. package/dist/crm/pipeline.d.ts.map +0 -1
  245. package/dist/crm/pipeline.js +0 -42
  246. package/dist/crm/pipeline.js.map +0 -1
  247. package/dist/crm/stage.d.ts +0 -20
  248. package/dist/crm/stage.d.ts.map +0 -1
  249. package/dist/crm/stage.js +0 -65
  250. package/dist/crm/stage.js.map +0 -1
  251. package/dist/mcp.d.ts +0 -29
  252. package/dist/mcp.d.ts.map +0 -1
  253. package/dist/mcp.js +0 -99
  254. package/dist/mcp.js.map +0 -1
  255. /package/dist/bundle/{chunk-4PDYYS5K.js → chunk-ZQ3GWKDQ.js} +0 -0
@@ -0,0 +1,78 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { fieldNamed, optionOf } from "@wirecat/cli-core/crm";
3
+ import { isCustom, text, yes } from "./values.js";
4
+ const rows = (result) => {
5
+ const items = Array.isArray(result) ? result : result?.items;
6
+ return Array.isArray(items) ? items : [];
7
+ };
8
+ /**
9
+ * The portal's custom fields of one type, in two calls that need only read rights: REST 3.0's `field.list` has the
10
+ * title and whether a list can filter by it, and REST 2's `userfield.list` the real type and a list field's options,
11
+ * which `field.list` shows only as `int` (apidocs crm.<type>.field.custom.enum.list).
12
+ */
13
+ export const loadFields = async (portal, type) => {
14
+ const described = await portal.call(`crm.${type}.field.list`, {
15
+ select: ["name", "title", "type", "multiple", "filterable"],
16
+ });
17
+ const custom = await portal.call(`crm.${type}.userfield.list`, { order: { SORT: "ASC" } });
18
+ const own = new Map(rows(custom.result).map((field) => [String(field.FIELD_NAME), field]));
19
+ return rows(described.result)
20
+ .filter((field) => isCustom(String(field.name)))
21
+ .map((field) => {
22
+ const code = String(field.name);
23
+ const user = own.get(code);
24
+ const options = Array.isArray(user?.LIST)
25
+ ? user.LIST.flatMap((option) => {
26
+ const id = text(option.ID);
27
+ return id === null ? [] : [{ id, label: text(option.VALUE) ?? id }];
28
+ })
29
+ : undefined;
30
+ return {
31
+ code,
32
+ label: text(field.title),
33
+ type: text(user?.USER_TYPE_ID) ?? text(field.type) ?? "string",
34
+ multiple: yes(field.multiple),
35
+ filterable: yes(field.filterable),
36
+ ...(options ? { options } : {}),
37
+ };
38
+ });
39
+ };
40
+ const optionLabel = (field, id) => field.options?.find((option) => option.id === String(id))?.label ?? String(id);
41
+ /** Custom values as `{ label, value }`, a list field's option ids turned into their labels. */
42
+ export const metadataOf = (custom, fields) => {
43
+ const byCode = new Map(fields.map((field) => [field.code, field]));
44
+ return Object.fromEntries(Object.entries(custom).map(([code, value]) => {
45
+ const field = byCode.get(code);
46
+ const label = field?.label ?? null;
47
+ if (!field?.options)
48
+ return [code, { label, value }];
49
+ if (Array.isArray(value))
50
+ return [
51
+ code,
52
+ { label, value: value.map((one) => optionLabel(field, one)), option_id: value.map((one) => String(one)) },
53
+ ];
54
+ return [code, { label, value: optionLabel(field, value), option_id: String(value) }];
55
+ }));
56
+ };
57
+ /**
58
+ * The custom values to write, by code, as typed: a list field's options as their ids, numbers as `field.list` types
59
+ * them (`int`), and a multiple field's values as an array.
60
+ */
61
+ export const customValues = (fields, pairs) => {
62
+ const values = new Map();
63
+ for (const [name, value] of pairs) {
64
+ const field = fieldNamed(fields, name);
65
+ values.set(field, [...(values.get(field) ?? []), field.options ? Number(optionOf(field, value)) : value]);
66
+ }
67
+ return Object.fromEntries([...values].map(([field, all]) => {
68
+ if (field.multiple)
69
+ return [field.code, all];
70
+ if (all.length > 1)
71
+ throw new CliError("validation_error", `${field.label ?? field.code} holds one value; give --field once`, {
72
+ param: "--field",
73
+ field: field.code,
74
+ });
75
+ return [field.code, all[0]];
76
+ }));
77
+ };
78
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/crm/fields.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { BitrixTransport } from "../bitrix/transport.js";
2
2
  import { type Condition } from "./conditions.js";
3
+ import { type Field } from "./fields.js";
3
4
  import { type Metadata, type Raw } from "./values.js";
4
5
  import { type Window } from "./walk.js";
5
6
  /** A CRM object REST 3.0 serves as `crm.<type>.*`, and REST 2 as `crm.item.*` with its `entityTypeId`. */
@@ -14,7 +15,12 @@ export interface ItemType<T> {
14
15
  nameOf: (item: T) => string | null;
15
16
  map: (raw: Raw, metadata?: Metadata) => T;
16
17
  }
17
- export declare const listItems: <T>(portal: BitrixTransport, type: ItemType<T>, conditions: readonly Condition[], window: Window) => Promise<{
18
+ /** Custom fields a list selects beside its own, with the definitions that label them. */
19
+ export interface Custom {
20
+ codes: readonly string[];
21
+ fields: readonly Field[];
22
+ }
23
+ export declare const listItems: <T>(portal: BitrixTransport, type: ItemType<T>, conditions: readonly Condition[], window: Window, custom?: Custom) => Promise<{
18
24
  items: T[];
19
25
  has_more: boolean;
20
26
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../src/crm/items.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,KAAK,SAAS,EAAwC,MAAM,iBAAiB,CAAA;AACtF,OAAO,EAAgB,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAQ,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,WAAW,CAAA;AAE7C,0GAA0G;AAC1G,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,uFAAuF;IACvF,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAA;IAClC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAQ,KAAK,CAAC,CAAA;CAC1C;AAaD,eAAO,MAAM,SAAS,GAAU,CAAC,UACvB,eAAe,QACjB,QAAQ,CAAC,CAAC,CAAC,cACL,SAAS,SAAS,EAAE,UACxB,MAAM;;;EA2Bf,CAAA;AAED,6GAA6G;AAC7G,eAAO,MAAM,OAAO,GAAU,CAAC,UAAU,eAAe,QAAQ,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,KAAG,OAAO,CAAC,CAAC,CAkBlG,CAAA;AAqBD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAU,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,UAChD,eAAe,QACjB,QAAQ,CAAC,CAAC,CAAC,aACN,MAAM,KAChB,OAAO,CAAC,MAAM,CAuBhB,CAAA"}
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../src/crm/items.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,KAAK,SAAS,EAAwC,MAAM,iBAAiB,CAAA;AACtF,OAAO,EAAE,KAAK,KAAK,EAA0B,MAAM,aAAa,CAAA;AAChE,OAAO,EAAgB,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,WAAW,CAAA;AAE7C,0GAA0G;AAC1G,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,uFAAuF;IACvF,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAA;IAClC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAQ,KAAK,CAAC,CAAA;CAC1C;AAaD,yFAAyF;AACzF,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CACzB;AAED,eAAO,MAAM,SAAS,GAAU,CAAC,UACvB,eAAe,QACjB,QAAQ,CAAC,CAAC,CAAC,cACL,SAAS,SAAS,EAAE,UACxB,MAAM,WACN,MAAM;;;EA6Bf,CAAA;AAOD,6GAA6G;AAC7G,eAAO,MAAM,OAAO,GAAU,CAAC,UAAU,eAAe,QAAQ,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,KAAG,OAAO,CAAC,CAAC,CAYlG,CAAA;AAcD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAU,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,UAChD,eAAe,QACjB,QAAQ,CAAC,CAAC,CAAC,aACN,MAAM,KAChB,OAAO,CAAC,MAAM,CAuBhB,CAAA"}
package/dist/crm/items.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { CliError, isCliError } from "@wirecat/cli-base";
2
+ import { foldName } from "@wirecat/cli-core";
2
3
  import { needsRest2, rest2Filter, rest3Filter } from "./conditions.js";
3
- import { customFields, text } from "./values.js";
4
+ import { loadFields, metadataOf } from "./fields.js";
5
+ import { customFields } from "./values.js";
4
6
  import { walk } from "./walk.js";
5
7
  const REST3_PAGE = 1000;
6
8
  const REST2_PAGE = 50;
@@ -10,28 +12,34 @@ const itemsOf = (result) => {
10
12
  };
11
13
  /** Newest first; REST 3.0 adds `id` itself for stable pages. */
12
14
  const ORDER = { id: "DESC" };
13
- export const listItems = async (portal, type, conditions, window) => {
15
+ export const listItems = async (portal, type, conditions, window, custom = { codes: [], fields: [] }) => {
16
+ const select = [...type.select, ...custom.codes];
14
17
  const { items, has_more } = needsRest2(conditions)
15
18
  ? await walk(window, REST2_PAGE, async (start) => {
16
19
  const answer = await portal.call("crm.item.list", {
17
20
  entityTypeId: type.entityTypeId,
18
- select: type.select,
21
+ select,
19
22
  filter: rest2Filter(conditions, { [type.words[0] ?? "title"]: type.words }),
20
23
  order: ORDER,
21
24
  start,
25
+ useOriginalUfNames: "Y",
22
26
  });
23
27
  return { rows: itemsOf(answer.result), more: answer.next !== undefined };
24
28
  })
25
29
  : await walk(window, REST3_PAGE, async (offset, limit) => {
26
30
  const rows = itemsOf((await portal.call(`crm.${type.type}.list`, {
27
- select: type.select,
31
+ select,
28
32
  filter: rest3Filter(conditions),
29
33
  order: ORDER,
30
34
  pagination: { limit, offset },
31
35
  })).result);
32
36
  return { rows, more: rows.length === limit };
33
37
  });
34
- return { items: items.map((raw) => type.map(raw)), has_more };
38
+ return { items: items.map((raw) => type.map(raw, metadataIn(raw, custom))), has_more };
39
+ };
40
+ const metadataIn = (raw, { codes, fields }) => {
41
+ const values = Object.entries(customFields(raw)).filter(([code]) => codes.includes(code));
42
+ return values.length ? metadataOf(Object.fromEntries(values), fields) : undefined;
35
43
  };
36
44
  /** One item, with the portal's custom fields, which REST 3.0 returns only when each is named in `select`. */
37
45
  export const getItem = async (portal, type, id) => {
@@ -47,25 +55,20 @@ export const getItem = async (portal, type, id) => {
47
55
  const custom = customFields(full.result?.item);
48
56
  if (!Object.keys(custom).length)
49
57
  return type.map(item);
50
- const labels = await labelsOf(portal, type.type);
51
- return type.map(item, Object.fromEntries(Object.entries(custom).map(([code, value]) => [code, { label: labels.get(code) ?? null, value }])));
58
+ return type.map(item, metadataOf(custom, await fieldsOrNone(portal, type.type)));
52
59
  };
53
- /**
54
- * Titles by field code. `field.list` needs only read rights, where `field.custom.list` answers empty without the right
55
- * to edit CRM settings. Labels are extra, so a failed call leaves them out rather than failing `show`.
56
- */
57
- const labelsOf = async (portal, type) => {
60
+ /** A webhook without the rights to read field definitions still shows the record, with codes for labels. */
61
+ const fieldsOrNone = async (portal, type) => {
58
62
  try {
59
- const answer = await portal.call(`crm.${type}.field.list`, { select: ["name", "title"] });
60
- return new Map(itemsOf(answer.result).map((field) => [String(field.name), text(field.title)]));
63
+ return await loadFields(portal, type);
61
64
  }
62
65
  catch (error) {
63
- if (isCliError(error) && error.code === "cancelled")
64
- throw error;
65
- return new Map();
66
+ if (isCliError(error) && error.code === "permission_error")
67
+ return [];
68
+ throw error;
66
69
  }
67
70
  };
68
- const folded = (value) => value?.trim().toLocaleLowerCase() ?? "";
71
+ const folded = (value) => foldName(value?.trim() ?? "");
69
72
  /**
70
73
  * An id as it is, or a name matched whole against the portal's substring search; two matches are refused with both,
71
74
  * never guessed (as cli-core's `pickPerson` refuses).
@@ -1 +1 @@
1
- {"version":3,"file":"items.js","sourceRoot":"","sources":["../../src/crm/items.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../src/crm/items.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,8 @@
1
- import * as v from "valibot";
2
- import type { FieldMap } from "./conditions.js";
1
+ import type { CrmItem, CrmPipeline } from "@wirecat/cli-core";
3
2
  import type { ItemType } from "./items.js";
4
3
  import { type Metadata, type Raw } from "./values.js";
5
- export declare const leadSchema: v.StrictObjectSchema<{
6
- readonly id: v.StringSchema<undefined>;
7
- readonly title: v.NullableSchema<v.StringSchema<undefined>, undefined>;
8
- readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
9
- readonly organization_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
10
- readonly stage_id: v.NullableSchema<v.StringSchema<undefined>, undefined>;
11
- readonly outcome: v.PicklistSchema<readonly ["open", "won", "lost"], undefined>;
12
- readonly amount: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
13
- readonly currency: v.NullableSchema<v.StringSchema<undefined>, undefined>;
14
- readonly assigned_to: v.NullableSchema<v.StringSchema<undefined>, undefined>;
15
- readonly organization_id: v.NullableSchema<v.StringSchema<undefined>, undefined>;
16
- readonly person_ids: v.ArraySchema<v.StringSchema<undefined>, undefined>;
17
- readonly phones: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
18
- readonly type: v.NullableSchema<v.StringSchema<undefined>, undefined>;
19
- readonly value: v.StringSchema<undefined>;
20
- }, undefined>, undefined>, undefined>;
21
- readonly emails: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
22
- readonly type: v.NullableSchema<v.StringSchema<undefined>, undefined>;
23
- readonly value: v.StringSchema<undefined>;
24
- }, undefined>, undefined>, undefined>;
25
- readonly source_id: v.NullableSchema<v.StringSchema<undefined>, undefined>;
26
- readonly created_at: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
27
- readonly updated_at: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
28
- readonly url: v.NullableSchema<v.StringSchema<undefined>, undefined>;
29
- readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StrictObjectSchema<{
30
- readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
31
- readonly value: v.UnknownSchema;
32
- }, undefined>, undefined>, undefined>;
33
- }, undefined>;
34
- export type Lead = v.InferOutput<typeof leadSchema>;
35
- export declare const LEAD_FIELDS: Record<string, FieldMap>;
36
- /** Phones and emails come from REST 3.0 only; REST 2's crm.item.list leaves them out, so they are left out here too. */
37
- export declare const fromBitrixLead: (raw: Raw, metadata?: Metadata) => Lead;
38
- export declare const LEAD: ItemType<Lead>;
4
+ /** Bitrix24's leads have no pipelines, only the one list of lead stages: core gets one pipeline of b24's making. */
5
+ export declare const LEAD_PIPELINE: Omit<CrmPipeline, "stages">;
6
+ export declare const fromBitrixLead: (raw: Raw, metadata?: Metadata) => CrmItem;
7
+ export declare const LEAD: ItemType<CrmItem>;
39
8
  //# sourceMappingURL=lead.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lead.d.ts","sourceRoot":"","sources":["../../src/crm/lead.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAML,KAAK,QAAQ,EAMb,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAmBrB,CAAA;AAEF,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAWhD,CAAA;AAED,wHAAwH;AACxH,eAAO,MAAM,cAAc,QAAS,GAAG,aAAa,QAAQ,KAAG,IAmB7D,CAAA;AAEF,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,CA4B/B,CAAA"}
1
+ {"version":3,"file":"lead.d.ts","sourceRoot":"","sources":["../../src/crm/lead.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAA4B,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAQ,MAAM,aAAa,CAAA;AAErF,oHAAoH;AACpH,eAAO,MAAM,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAsC,CAAA;AAE5F,eAAO,MAAM,cAAc,QAAS,GAAG,aAAa,QAAQ,KAAG,OAa7D,CAAA;AAEF,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,CAoBlC,CAAA"}
package/dist/crm/lead.js CHANGED
@@ -1,57 +1,19 @@
1
- import * as v from "valibot";
2
- import { contactSchema, contacts, fullName, id, ids, metadataSchema, nullableTime, number, OUTCOMES, outcomeOf, text, time, } from "./values.js";
3
- export const leadSchema = v.strictObject({
4
- id: v.string(),
5
- title: v.nullable(v.string()),
6
- name: v.nullable(v.string()),
7
- organization_name: v.nullable(v.string()),
8
- stage_id: v.nullable(v.string()),
9
- outcome: v.picklist(OUTCOMES),
10
- amount: v.nullable(v.number()),
11
- currency: v.nullable(v.string()),
12
- assigned_to: v.nullable(v.string()),
13
- organization_id: v.nullable(v.string()),
14
- person_ids: v.array(v.string()),
15
- phones: v.optional(v.array(contactSchema)),
16
- emails: v.optional(v.array(contactSchema)),
17
- source_id: v.nullable(v.string()),
18
- created_at: nullableTime,
19
- updated_at: nullableTime,
20
- url: v.nullable(v.string()),
21
- provider_metadata: metadataSchema,
22
- });
23
- export const LEAD_FIELDS = {
24
- title: { field: "title", kind: "word" },
25
- stage_id: { field: "stageId", kind: "text" },
26
- outcome: { field: "stageSemanticId", kind: "outcome" },
27
- amount: { field: "opportunity", kind: "number" },
28
- currency: { field: "currencyId", kind: "text" },
29
- assigned_to: { field: "assignedById", kind: "id" },
30
- organization_id: { field: "companyId", kind: "id" },
31
- source_id: { field: "sourceId", kind: "text" },
32
- created_at: { field: "createdTime", kind: "time" },
33
- updated_at: { field: "updatedTime", kind: "time" },
34
- };
35
- /** Phones and emails come from REST 3.0 only; REST 2's crm.item.list leaves them out, so they are left out here too. */
1
+ import { amountOf, epoch, id, ids, text } from "./values.js";
2
+ /** Bitrix24's leads have no pipelines, only the one list of lead stages: core gets one pipeline of b24's making. */
3
+ export const LEAD_PIPELINE = { externalId: "0", name: "Leads" };
36
4
  export const fromBitrixLead = (raw, metadata) => ({
37
- id: id(raw.id) ?? "",
38
- title: text(raw.title),
39
- name: fullName(raw.name, raw.secondName, raw.lastName),
40
- organization_name: text(raw.companyTitle),
41
- stage_id: text(raw.stageId),
42
- outcome: outcomeOf(raw.stageSemanticId),
43
- amount: number(raw.opportunity),
44
- currency: text(raw.currencyId),
45
- assigned_to: id(raw.assignedById),
46
- organization_id: id(raw.companyId),
47
- person_ids: ids(raw.contactsId),
48
- ...(Array.isArray(raw.phone) ? { phones: contacts(raw.phone) } : {}),
49
- ...(Array.isArray(raw.email) ? { emails: contacts(raw.email) } : {}),
50
- source_id: text(raw.sourceId),
51
- created_at: time(raw.createdTime),
52
- updated_at: time(raw.updatedTime),
5
+ externalId: id(raw.id) ?? "",
6
+ title: text(raw.title) ?? "",
7
+ pipeline: LEAD_PIPELINE.externalId,
8
+ stage: text(raw.stageId) ?? "",
9
+ ...amountOf(raw.opportunity, raw.currencyId),
10
+ organization: id(raw.companyId),
11
+ people: ids(raw.contactsId).map((externalId) => ({ externalId, role: "contact" })),
12
+ createdAt: epoch(raw.createdTime),
13
+ updatedAt: epoch(raw.updatedTime),
53
14
  url: text(raw.url),
54
- ...(metadata ? { provider_metadata: metadata } : {}),
15
+ assignee: id(raw.assignedById),
16
+ ...(metadata ? { metadata } : {}),
55
17
  });
56
18
  export const LEAD = {
57
19
  type: "lead",
@@ -60,23 +22,15 @@ export const LEAD = {
60
22
  select: [
61
23
  "id",
62
24
  "title",
63
- "name",
64
- "secondName",
65
- "lastName",
66
- "companyTitle",
67
25
  "stageId",
68
- "stageSemanticId",
69
26
  "opportunity",
70
27
  "currencyId",
71
- "assignedById",
72
28
  "companyId",
73
29
  "contactsId",
74
- "phone",
75
- "email",
76
- "sourceId",
77
30
  "createdTime",
78
31
  "updatedTime",
79
32
  "url",
33
+ "assignedById",
80
34
  ],
81
35
  words: ["title"],
82
36
  nameOf: (lead) => lead.title,
@@ -1 +1 @@
1
- {"version":3,"file":"lead.js","sourceRoot":"","sources":["../../src/crm/lead.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lead.js","sourceRoot":"","sources":["../../src/crm/lead.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAA2B,IAAI,EAAE,MAAM,aAAa,CAAA;AAErF,oHAAoH;AACpH,MAAM,CAAC,MAAM,aAAa,GAAgC,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAE5F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,QAAmB,EAAW,EAAE,CAAC,CAAC;IACzE,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;IAC5B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;IAC5B,QAAQ,EAAE,aAAa,CAAC,UAAU;IAClC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;IAC9B,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC;IAC5C,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,SAAkB,EAAE,CAAC,CAAC;IAC3F,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACjC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACjC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;IAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAClC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAsB;IACrC,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,CAAC;IACf,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE;QACN,IAAI;QACJ,OAAO;QACP,SAAS;QACT,aAAa;QACb,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,aAAa;QACb,aAAa;QACb,KAAK;QACL,cAAc;KACf;IACD,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK;IAC5B,GAAG,EAAE,cAAc;CACpB,CAAA"}
@@ -26,6 +26,7 @@ export declare const organizationSchema: v.StrictObjectSchema<{
26
26
  readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StrictObjectSchema<{
27
27
  readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
28
28
  readonly value: v.UnknownSchema;
29
+ readonly option_id: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>], undefined>, undefined>;
29
30
  }, undefined>, undefined>, undefined>;
30
31
  }, undefined>;
31
32
  export type Organization = v.InferOutput<typeof organizationSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"organization.d.ts","sourceRoot":"","sources":["../../src/crm/organization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAKL,KAAK,QAAQ,EAIb,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAEpB,wEAAwE;AACxE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;aAe7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAOxD,CAAA;AAED,eAAO,MAAM,sBAAsB,QAAS,GAAG,aAAa,QAAQ,KAAG,YAerE,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,CAsB/C,CAAA"}
1
+ {"version":3,"file":"organization.d.ts","sourceRoot":"","sources":["../../src/crm/organization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAKL,KAAK,QAAQ,EAIb,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAEpB,wEAAwE;AACxE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;aAe7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAOxD,CAAA;AAED,eAAO,MAAM,sBAAsB,QAAS,GAAG,aAAa,QAAQ,KAAG,YAerE,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,CAsB/C,CAAA"}
@@ -25,6 +25,7 @@ export declare const personSchema: v.StrictObjectSchema<{
25
25
  readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StrictObjectSchema<{
26
26
  readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
27
27
  readonly value: v.UnknownSchema;
28
+ readonly option_id: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>], undefined>, undefined>;
28
29
  }, undefined>, undefined>, undefined>;
29
30
  }, undefined>;
30
31
  export type Person = v.InferOutput<typeof personSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"person.d.ts","sourceRoot":"","sources":["../../src/crm/person.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAML,KAAK,QAAQ,EAGb,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAEpB,gEAAgE;AAChE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;aAcvB,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AAEvD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAKlD,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,GAAG,aAAa,QAAQ,KAAG,MAkBhE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAsBnC,CAAA"}
1
+ {"version":3,"file":"person.d.ts","sourceRoot":"","sources":["../../src/crm/person.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAML,KAAK,QAAQ,EAGb,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAEpB,gEAAgE;AAChE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;aAcvB,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AAEvD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAKlD,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,GAAG,aAAa,QAAQ,KAAG,MAkBhE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAsBnC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { CrmPipeline } from "@wirecat/cli-core";
2
+ import type { BitrixTransport } from "../bitrix/transport.js";
3
+ /** Deal pipelines are Bitrix24's deal categories, the default one id 0; leads get the one pipeline b24 makes them. */
4
+ export declare const bitrixPipelines: (portal: BitrixTransport, kind: "deal" | "lead") => Promise<CrmPipeline[]>;
5
+ //# sourceMappingURL=pipelines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../src/crm/pipelines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAoC7D,sHAAsH;AACtH,eAAO,MAAM,eAAe,WAAkB,eAAe,QAAQ,MAAM,GAAG,MAAM,KAAG,OAAO,CAAC,WAAW,EAAE,CAc3G,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { LEAD_PIPELINE } from "./lead.js";
2
+ import { number, outcomeOf, text } from "./values.js";
3
+ /** Lead stages are the `STATUS` directory; deal stages `DEAL_STAGE` for pipeline 0 and `DEAL_STAGE_<id>` for the rest. */
4
+ const directoryOf = (pipeline) => (pipeline === "0" ? "DEAL_STAGE" : `DEAL_STAGE_${pipeline}`);
5
+ /** One directory's stages, every page: REST 2 answers 50 rows at a time with `next`. */
6
+ const stagesOf = async (portal, directory) => {
7
+ const rows = [];
8
+ for (let start = 0;;) {
9
+ const answer = await portal.call("crm.status.list", {
10
+ filter: { ENTITY_ID: directory },
11
+ order: { SORT: "ASC" },
12
+ start,
13
+ });
14
+ if (Array.isArray(answer.result))
15
+ for (const row of answer.result)
16
+ rows.push(row);
17
+ if (answer.next === undefined || answer.next <= start)
18
+ break;
19
+ start = answer.next;
20
+ }
21
+ return rows.flatMap((raw) => {
22
+ const externalId = text(raw.STATUS_ID);
23
+ if (externalId === null)
24
+ return [];
25
+ const extra = (raw.EXTRA ?? {});
26
+ // The outcome comes from the stage's semantics, never its name (apidocs crm.status.fields).
27
+ return [
28
+ {
29
+ externalId,
30
+ name: text(raw.NAME) ?? externalId,
31
+ position: number(raw.SORT) ?? 0,
32
+ outcome: outcomeOf(raw.SEMANTICS ?? extra.SEMANTICS),
33
+ },
34
+ ];
35
+ });
36
+ };
37
+ /** Deal pipelines are Bitrix24's deal categories, the default one id 0; leads get the one pipeline b24 makes them. */
38
+ export const bitrixPipelines = async (portal, kind) => {
39
+ if (kind === "lead")
40
+ return [{ ...LEAD_PIPELINE, stages: await stagesOf(portal, "STATUS") }];
41
+ const answer = await portal.call("crm.category.list", { entityTypeId: 2 });
42
+ const categories = answer.result?.categories;
43
+ const pipelines = [];
44
+ for (const raw of Array.isArray(categories) ? categories : []) {
45
+ const externalId = text(raw.id) ?? "0";
46
+ pipelines.push({
47
+ externalId,
48
+ name: text(raw.name) ?? `Pipeline ${externalId}`,
49
+ stages: await stagesOf(portal, directoryOf(externalId)),
50
+ });
51
+ }
52
+ return pipelines;
53
+ };
54
+ //# sourceMappingURL=pipelines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelines.js","sourceRoot":"","sources":["../../src/crm/pipelines.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../src/crm/product.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAc,KAAK,GAAG,EAAa,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,WAAW,CAAA;AAE7C,eAAO,MAAM,aAAa;;;;;;;aAOxB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,aAAa,CAAC,CAAA;AAEzD,eAAO,MAAM,cAAc;aACzB,IAAI;iBAAI,KAAK,EAAE,MAAM;iBAAE,IAAI,EAAE,MAAM;;aACnC,MAAM;iBAAI,KAAK,EAAE,QAAQ;iBAAE,IAAI,EAAE,MAAM;;aACvC,UAAU;iBAAI,KAAK,EAAE,YAAY;iBAAE,IAAI,EAAE,IAAI;;CACrC,CAAA;AAIV,uGAAuG;AACvG,eAAO,MAAM,iBAAiB,QAAS,GAAG,KAAG,OAO3C,CAAA;AAKF,eAAO,MAAM,YAAY,WAAkB,eAAe,cAAc,SAAS,SAAS,EAAE,UAAU,MAAM;;;;;;;;;;EAW3G,CAAA;AAED,eAAO,MAAM,UAAU,WAAkB,eAAe,aAAa,MAAM,KAAG,OAAO,CAAC,OAAO,CACO,CAAA"}
1
+ {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../src/crm/product.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAyB,KAAK,GAAG,EAAa,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,WAAW,CAAA;AAE7C,eAAO,MAAM,aAAa;;;;;;;aAOxB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,aAAa,CAAC,CAAA;AAEzD,eAAO,MAAM,cAAc;aACzB,IAAI;iBAAI,KAAK,EAAE,MAAM;iBAAE,IAAI,EAAE,MAAM;;aACnC,MAAM;iBAAI,KAAK,EAAE,QAAQ;iBAAE,IAAI,EAAE,MAAM;;aACvC,UAAU;iBAAI,KAAK,EAAE,YAAY;iBAAE,IAAI,EAAE,IAAI;;CACrC,CAAA;AAIV,uGAAuG;AACvG,eAAO,MAAM,iBAAiB,QAAS,GAAG,KAAG,OAO3C,CAAA;AAKF,eAAO,MAAM,YAAY,WAAkB,eAAe,cAAc,SAAS,SAAS,EAAE,UAAU,MAAM;;;;;;;;;;EAW3G,CAAA;AAED,eAAO,MAAM,UAAU,WAAkB,eAAe,aAAa,MAAM,KAAG,OAAO,CAAC,OAAO,CAC2B,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import * as v from "valibot";
2
2
  import { rest2Filter } from "./conditions.js";
3
- import { id, number, text, yes } from "./values.js";
3
+ import { id, number, numericId, text, yes } from "./values.js";
4
4
  import { walk } from "./walk.js";
5
5
  export const productSchema = v.strictObject({
6
6
  id: v.string(),
@@ -38,5 +38,5 @@ export const listProducts = async (portal, conditions, window) => {
38
38
  });
39
39
  return { items: items.map(fromBitrixProduct), has_more };
40
40
  };
41
- export const getProduct = async (portal, reference) => fromBitrixProduct((await portal.call("crm.product.get", { id: Number(reference) })).result);
41
+ export const getProduct = async (portal, reference) => fromBitrixProduct((await portal.call("crm.product.get", { id: numericId(reference, "products show") })).result);
42
42
  //# sourceMappingURL=product.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/crm/product.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/crm/product.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ItemType } from "./items.js";
2
+ export declare const REST3_FIELDS: Record<ItemType<unknown>["type"], readonly string[]>;
3
+ //# sourceMappingURL=rest3-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest3-fields.d.ts","sourceRoot":"","sources":["../../src/crm/rest3-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAQ1C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CA8B7E,CAAA"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The REST 3.0 fields b24 may name, per type, from the field pages: REST 3.0 refuses the whole call over one unknown
3
+ * field (BITRIX_REST_V3_EXCEPTION_UNKNOWNDTOPROPERTYEXCEPTION, seen live 2026-11-06).
4
+ * https://apidocs.bitrix24.com/api-reference/crm/rest-v3/items/fields-deal.html (and fields-lead, -contact, -company)
5
+ */
6
+ const COMMON = ["id", "title", "createdTime", "updatedTime", "assignedById", "url", "phone", "email"];
7
+ export const REST3_FIELDS = {
8
+ deal: [
9
+ ...COMMON,
10
+ "categoryId",
11
+ "stageId",
12
+ "stageSemanticId",
13
+ "opportunity",
14
+ "currencyId",
15
+ "companyId",
16
+ "contactsId",
17
+ "closeTime",
18
+ "sourceId",
19
+ "typeId",
20
+ ],
21
+ lead: [
22
+ ...COMMON,
23
+ "name",
24
+ "secondName",
25
+ "lastName",
26
+ "companyTitle",
27
+ "stageId",
28
+ "stageSemanticId",
29
+ "opportunity",
30
+ "currencyId",
31
+ "companyId",
32
+ "contactsId",
33
+ "sourceId",
34
+ ],
35
+ contact: [...COMMON, "name", "secondName", "lastName", "post", "companyId", "companiesId", "typeId", "sourceId"],
36
+ company: [...COMMON, "typeId", "industryId", "revenue", "currencyId", "contactsId"],
37
+ };
38
+ //# sourceMappingURL=rest3-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest3-fields.js","sourceRoot":"","sources":["../../src/crm/rest3-fields.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACrG,MAAM,CAAC,MAAM,YAAY,GAAyD;IAChF,IAAI,EAAE;QACJ,GAAG,MAAM;QACT,YAAY;QACZ,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,WAAW;QACX,UAAU;QACV,QAAQ;KACT;IACD,IAAI,EAAE;QACJ,GAAG,MAAM;QACT,MAAM;QACN,YAAY;QACZ,UAAU;QACV,cAAc;QACd,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,UAAU;KACX;IACD,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC;IAChH,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC;CACpF,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { CrmField, CrmItem, CrmKind } from "@wirecat/cli-core";
2
+ import type { CrmSource } from "@wirecat/cli-core/crm";
3
+ import type { BitrixTransport } from "../bitrix/transport.js";
4
+ export interface BitrixCrmSource extends CrmSource {
5
+ /** One deal or lead as the portal holds it now, custom fields included: what a write answers. */
6
+ item(kind: "deal" | "lead", externalId: string): Promise<CrmItem>;
7
+ /** The portal's custom fields of a kind, read once per source. */
8
+ fields(kind: CrmKind): Promise<CrmField[]>;
9
+ }
10
+ /**
11
+ * The portal's CRM for core's sync: REST 3.0 lists by id with `updatedTime` for changes, since a webhook gets no
12
+ * event feed, and a list of every id to find deletions.
13
+ */
14
+ export declare const bitrixCrmSource: (portal: () => BitrixTransport, now?: () => number) => BitrixCrmSource;
15
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/crm/source.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAA0C,MAAM,mBAAmB,CAAA;AAC3G,OAAO,KAAK,EAAyB,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAiD7D,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,iGAAiG;IACjG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjE,kEAAkE;IAClE,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,WAAY,MAAM,eAAe,QAAO,MAAM,MAAM,KAAc,eAyE7F,CAAA"}