@sonisoft/now-sdk-ext-cli 2.0.0-alpha.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/README.md +2971 -313
  2. package/dist/commands/aggregate/count.d.ts +16 -0
  3. package/dist/commands/aggregate/count.d.ts.map +1 -0
  4. package/dist/commands/aggregate/count.js +67 -0
  5. package/dist/commands/aggregate/count.js.map +1 -0
  6. package/dist/commands/aggregate/group.d.ts +24 -0
  7. package/dist/commands/aggregate/group.d.ts.map +1 -0
  8. package/dist/commands/aggregate/group.js +120 -0
  9. package/dist/commands/aggregate/group.js.map +1 -0
  10. package/dist/commands/aggregate/query.d.ts +21 -0
  11. package/dist/commands/aggregate/query.d.ts.map +1 -0
  12. package/dist/commands/aggregate/query.js +100 -0
  13. package/dist/commands/aggregate/query.js.map +1 -0
  14. package/dist/commands/app/index.d.ts +0 -1
  15. package/dist/commands/app/index.d.ts.map +1 -1
  16. package/dist/commands/app/index.js +2 -2
  17. package/dist/commands/app/index.js.map +1 -1
  18. package/dist/commands/app/install.d.ts +0 -1
  19. package/dist/commands/app/install.d.ts.map +1 -1
  20. package/dist/commands/app/install.js +1 -2
  21. package/dist/commands/app/install.js.map +1 -1
  22. package/dist/commands/app/repo-install.d.ts +0 -1
  23. package/dist/commands/app/repo-install.d.ts.map +1 -1
  24. package/dist/commands/app/repo-install.js +1 -3
  25. package/dist/commands/app/repo-install.js.map +1 -1
  26. package/dist/commands/app/repo-list.d.ts +0 -1
  27. package/dist/commands/app/repo-list.d.ts.map +1 -1
  28. package/dist/commands/app/repo-list.js +1 -3
  29. package/dist/commands/app/repo-list.js.map +1 -1
  30. package/dist/commands/app/uninstall.d.ts +0 -1
  31. package/dist/commands/app/uninstall.d.ts.map +1 -1
  32. package/dist/commands/app/uninstall.js +1 -2
  33. package/dist/commands/app/uninstall.js.map +1 -1
  34. package/dist/commands/atf/index.d.ts +0 -46
  35. package/dist/commands/atf/index.d.ts.map +1 -1
  36. package/dist/commands/atf/index.js +48 -121
  37. package/dist/commands/atf/index.js.map +1 -1
  38. package/dist/commands/attachment/get.d.ts +14 -0
  39. package/dist/commands/attachment/get.d.ts.map +1 -0
  40. package/dist/commands/attachment/get.js +44 -0
  41. package/dist/commands/attachment/get.js.map +1 -0
  42. package/dist/commands/attachment/list.d.ts +16 -0
  43. package/dist/commands/attachment/list.d.ts.map +1 -0
  44. package/dist/commands/attachment/list.js +60 -0
  45. package/dist/commands/attachment/list.js.map +1 -0
  46. package/dist/commands/attachment/upload.d.ts +17 -0
  47. package/dist/commands/attachment/upload.d.ts.map +1 -0
  48. package/dist/commands/attachment/upload.js +71 -0
  49. package/dist/commands/attachment/upload.js.map +1 -0
  50. package/dist/commands/batch/create.d.ts +15 -0
  51. package/dist/commands/batch/create.d.ts.map +1 -0
  52. package/dist/commands/batch/create.js +56 -0
  53. package/dist/commands/batch/create.js.map +1 -0
  54. package/dist/commands/batch/update.d.ts +15 -0
  55. package/dist/commands/batch/update.d.ts.map +1 -0
  56. package/dist/commands/batch/update.js +56 -0
  57. package/dist/commands/batch/update.js.map +1 -0
  58. package/dist/commands/bulk/delete.d.ts +18 -0
  59. package/dist/commands/bulk/delete.d.ts.map +1 -0
  60. package/dist/commands/bulk/delete.js +95 -0
  61. package/dist/commands/bulk/delete.js.map +1 -0
  62. package/dist/commands/bulk/update.d.ts +19 -0
  63. package/dist/commands/bulk/update.d.ts.map +1 -0
  64. package/dist/commands/bulk/update.js +110 -0
  65. package/dist/commands/bulk/update.js.map +1 -0
  66. package/dist/commands/exec/index.d.ts +0 -1
  67. package/dist/commands/exec/index.d.ts.map +1 -1
  68. package/dist/commands/exec/index.js +12 -22
  69. package/dist/commands/exec/index.js.map +1 -1
  70. package/dist/commands/flow/action.d.ts +19 -0
  71. package/dist/commands/flow/action.d.ts.map +1 -0
  72. package/dist/commands/flow/action.js +88 -0
  73. package/dist/commands/flow/action.js.map +1 -0
  74. package/dist/commands/flow/cancel.d.ts +17 -0
  75. package/dist/commands/flow/cancel.d.ts.map +1 -0
  76. package/dist/commands/flow/cancel.js +60 -0
  77. package/dist/commands/flow/cancel.js.map +1 -0
  78. package/dist/commands/flow/error.d.ts +16 -0
  79. package/dist/commands/flow/error.d.ts.map +1 -0
  80. package/dist/commands/flow/error.js +51 -0
  81. package/dist/commands/flow/error.js.map +1 -0
  82. package/dist/commands/flow/message.d.ts +18 -0
  83. package/dist/commands/flow/message.d.ts.map +1 -0
  84. package/dist/commands/flow/message.js +66 -0
  85. package/dist/commands/flow/message.js.map +1 -0
  86. package/dist/commands/flow/outputs.d.ts +16 -0
  87. package/dist/commands/flow/outputs.d.ts.map +1 -0
  88. package/dist/commands/flow/outputs.js +55 -0
  89. package/dist/commands/flow/outputs.js.map +1 -0
  90. package/dist/commands/flow/run.d.ts +19 -0
  91. package/dist/commands/flow/run.d.ts.map +1 -0
  92. package/dist/commands/flow/run.js +100 -0
  93. package/dist/commands/flow/run.js.map +1 -0
  94. package/dist/commands/flow/status.d.ts +16 -0
  95. package/dist/commands/flow/status.d.ts.map +1 -0
  96. package/dist/commands/flow/status.js +52 -0
  97. package/dist/commands/flow/status.js.map +1 -0
  98. package/dist/commands/flow/subflow.d.ts +19 -0
  99. package/dist/commands/flow/subflow.d.ts.map +1 -0
  100. package/dist/commands/flow/subflow.js +94 -0
  101. package/dist/commands/flow/subflow.js.map +1 -0
  102. package/dist/commands/flow/test.d.ts +18 -0
  103. package/dist/commands/flow/test.d.ts.map +1 -0
  104. package/dist/commands/flow/test.js +91 -0
  105. package/dist/commands/flow/test.js.map +1 -0
  106. package/dist/commands/health/check.d.ts +20 -0
  107. package/dist/commands/health/check.d.ts.map +1 -0
  108. package/dist/commands/health/check.js +105 -0
  109. package/dist/commands/health/check.js.map +1 -0
  110. package/dist/commands/log/index.d.ts +2 -26
  111. package/dist/commands/log/index.d.ts.map +1 -1
  112. package/dist/commands/log/index.js +23 -251
  113. package/dist/commands/log/index.js.map +1 -1
  114. package/dist/commands/query/app.d.ts +17 -0
  115. package/dist/commands/query/app.d.ts.map +1 -0
  116. package/dist/commands/query/app.js +81 -0
  117. package/dist/commands/query/app.js.map +1 -0
  118. package/dist/commands/query/columns.d.ts +16 -0
  119. package/dist/commands/query/columns.d.ts.map +1 -0
  120. package/dist/commands/query/columns.js +76 -0
  121. package/dist/commands/query/columns.js.map +1 -0
  122. package/dist/commands/query/index.d.ts +19 -0
  123. package/dist/commands/query/index.d.ts.map +1 -0
  124. package/dist/commands/query/index.js +94 -0
  125. package/dist/commands/query/index.js.map +1 -0
  126. package/dist/commands/query/syslog.d.ts +16 -0
  127. package/dist/commands/query/syslog.d.ts.map +1 -0
  128. package/dist/commands/query/syslog.js +67 -0
  129. package/dist/commands/query/syslog.js.map +1 -0
  130. package/dist/commands/schema/field.d.ts +16 -0
  131. package/dist/commands/schema/field.d.ts.map +1 -0
  132. package/dist/commands/schema/field.js +62 -0
  133. package/dist/commands/schema/field.js.map +1 -0
  134. package/dist/commands/schema/index.d.ts +19 -0
  135. package/dist/commands/schema/index.d.ts.map +1 -0
  136. package/dist/commands/schema/index.js +90 -0
  137. package/dist/commands/schema/index.js.map +1 -0
  138. package/dist/commands/schema/validate-catalog.d.ts +15 -0
  139. package/dist/commands/schema/validate-catalog.d.ts.map +1 -0
  140. package/dist/commands/schema/validate-catalog.js +58 -0
  141. package/dist/commands/schema/validate-catalog.js.map +1 -0
  142. package/dist/commands/scope/index.d.ts +14 -0
  143. package/dist/commands/scope/index.d.ts.map +1 -0
  144. package/dist/commands/scope/index.js +58 -0
  145. package/dist/commands/scope/index.js.map +1 -0
  146. package/dist/commands/scope/set.d.ts +14 -0
  147. package/dist/commands/scope/set.d.ts.map +1 -0
  148. package/dist/commands/scope/set.js +44 -0
  149. package/dist/commands/scope/set.js.map +1 -0
  150. package/dist/commands/script-sync/pull.d.ts +16 -0
  151. package/dist/commands/script-sync/pull.d.ts.map +1 -0
  152. package/dist/commands/script-sync/pull.js +74 -0
  153. package/dist/commands/script-sync/pull.js.map +1 -0
  154. package/dist/commands/script-sync/push.d.ts +16 -0
  155. package/dist/commands/script-sync/push.d.ts.map +1 -0
  156. package/dist/commands/script-sync/push.js +73 -0
  157. package/dist/commands/script-sync/push.js.map +1 -0
  158. package/dist/commands/script-sync/sync.d.ts +15 -0
  159. package/dist/commands/script-sync/sync.d.ts.map +1 -0
  160. package/dist/commands/script-sync/sync.js +71 -0
  161. package/dist/commands/script-sync/sync.js.map +1 -0
  162. package/dist/commands/search/add-table.d.ts +16 -0
  163. package/dist/commands/search/add-table.d.ts.map +1 -0
  164. package/dist/commands/search/add-table.js +68 -0
  165. package/dist/commands/search/add-table.js.map +1 -0
  166. package/dist/commands/search/groups.d.ts +12 -0
  167. package/dist/commands/search/groups.d.ts.map +1 -0
  168. package/dist/commands/search/groups.js +42 -0
  169. package/dist/commands/search/groups.js.map +1 -0
  170. package/dist/commands/search/index.d.ts +18 -0
  171. package/dist/commands/search/index.d.ts.map +1 -0
  172. package/dist/commands/search/index.js +103 -0
  173. package/dist/commands/search/index.js.map +1 -0
  174. package/dist/commands/search/tables.d.ts +14 -0
  175. package/dist/commands/search/tables.d.ts.map +1 -0
  176. package/dist/commands/search/tables.js +50 -0
  177. package/dist/commands/search/tables.js.map +1 -0
  178. package/dist/commands/store/install.d.ts +19 -0
  179. package/dist/commands/store/install.d.ts.map +1 -0
  180. package/dist/commands/store/install.js +90 -0
  181. package/dist/commands/store/install.js.map +1 -0
  182. package/dist/commands/store/search.d.ts +16 -0
  183. package/dist/commands/store/search.d.ts.map +1 -0
  184. package/dist/commands/store/search.js +67 -0
  185. package/dist/commands/store/search.js.map +1 -0
  186. package/dist/commands/store/update.d.ts +18 -0
  187. package/dist/commands/store/update.d.ts.map +1 -0
  188. package/dist/commands/store/update.js +83 -0
  189. package/dist/commands/store/update.js.map +1 -0
  190. package/dist/commands/store/validate.d.ts +14 -0
  191. package/dist/commands/store/validate.d.ts.map +1 -0
  192. package/dist/commands/store/validate.js +43 -0
  193. package/dist/commands/store/validate.js.map +1 -0
  194. package/dist/commands/task/approve.d.ts +15 -0
  195. package/dist/commands/task/approve.d.ts.map +1 -0
  196. package/dist/commands/task/approve.js +66 -0
  197. package/dist/commands/task/approve.js.map +1 -0
  198. package/dist/commands/task/assign.d.ts +17 -0
  199. package/dist/commands/task/assign.d.ts.map +1 -0
  200. package/dist/commands/task/assign.js +86 -0
  201. package/dist/commands/task/assign.js.map +1 -0
  202. package/dist/commands/task/close.d.ts +16 -0
  203. package/dist/commands/task/close.d.ts.map +1 -0
  204. package/dist/commands/task/close.js +71 -0
  205. package/dist/commands/task/close.js.map +1 -0
  206. package/dist/commands/task/comment.d.ts +17 -0
  207. package/dist/commands/task/comment.d.ts.map +1 -0
  208. package/dist/commands/task/comment.js +86 -0
  209. package/dist/commands/task/comment.js.map +1 -0
  210. package/dist/commands/task/find.d.ts +15 -0
  211. package/dist/commands/task/find.d.ts.map +1 -0
  212. package/dist/commands/task/find.js +65 -0
  213. package/dist/commands/task/find.js.map +1 -0
  214. package/dist/commands/task/resolve.d.ts +16 -0
  215. package/dist/commands/task/resolve.d.ts.map +1 -0
  216. package/dist/commands/task/resolve.js +71 -0
  217. package/dist/commands/task/resolve.js.map +1 -0
  218. package/dist/commands/update-set/clone.d.ts +15 -0
  219. package/dist/commands/update-set/clone.d.ts.map +1 -0
  220. package/dist/commands/update-set/clone.js +50 -0
  221. package/dist/commands/update-set/clone.js.map +1 -0
  222. package/dist/commands/update-set/create.d.ts +16 -0
  223. package/dist/commands/update-set/create.d.ts.map +1 -0
  224. package/dist/commands/update-set/create.js +60 -0
  225. package/dist/commands/update-set/create.js.map +1 -0
  226. package/dist/commands/update-set/current.d.ts +14 -0
  227. package/dist/commands/update-set/current.d.ts.map +1 -0
  228. package/dist/commands/update-set/current.js +55 -0
  229. package/dist/commands/update-set/current.js.map +1 -0
  230. package/dist/commands/update-set/index.d.ts +15 -0
  231. package/dist/commands/update-set/index.d.ts.map +1 -0
  232. package/dist/commands/update-set/index.js +56 -0
  233. package/dist/commands/update-set/index.js.map +1 -0
  234. package/dist/commands/update-set/inspect.d.ts +14 -0
  235. package/dist/commands/update-set/inspect.d.ts.map +1 -0
  236. package/dist/commands/update-set/inspect.js +43 -0
  237. package/dist/commands/update-set/inspect.js.map +1 -0
  238. package/dist/commands/update-set/move.d.ts +16 -0
  239. package/dist/commands/update-set/move.d.ts.map +1 -0
  240. package/dist/commands/update-set/move.js +57 -0
  241. package/dist/commands/update-set/move.js.map +1 -0
  242. package/dist/commands/workflow/create.d.ts +14 -0
  243. package/dist/commands/workflow/create.d.ts.map +1 -0
  244. package/dist/commands/workflow/create.js +50 -0
  245. package/dist/commands/workflow/create.js.map +1 -0
  246. package/dist/commands/workflow/publish.d.ts +15 -0
  247. package/dist/commands/workflow/publish.d.ts.map +1 -0
  248. package/dist/commands/workflow/publish.js +53 -0
  249. package/dist/commands/workflow/publish.js.map +1 -0
  250. package/dist/commands/xml/export.d.ts +17 -0
  251. package/dist/commands/xml/export.d.ts.map +1 -0
  252. package/dist/commands/xml/export.js +87 -0
  253. package/dist/commands/xml/export.js.map +1 -0
  254. package/dist/commands/xml/import.d.ts +16 -0
  255. package/dist/commands/xml/import.d.ts.map +1 -0
  256. package/dist/commands/xml/import.js +69 -0
  257. package/dist/commands/xml/import.js.map +1 -0
  258. package/dist/common/authenticated-command.d.ts +5 -2
  259. package/dist/common/authenticated-command.d.ts.map +1 -1
  260. package/dist/common/authenticated-command.js +12 -3
  261. package/dist/common/authenticated-command.js.map +1 -1
  262. package/dist/common/base-command.d.ts +2 -2
  263. package/dist/common/base-command.d.ts.map +1 -1
  264. package/dist/common/base-command.js +0 -1
  265. package/dist/common/base-command.js.map +1 -1
  266. package/dist/common/scope-autocomplete.js +0 -1
  267. package/dist/common/scope-autocomplete.js.map +1 -1
  268. package/dist/services/aggregate-display.service.d.ts +18 -0
  269. package/dist/services/aggregate-display.service.d.ts.map +1 -0
  270. package/dist/services/aggregate-display.service.js +83 -0
  271. package/dist/services/aggregate-display.service.js.map +1 -0
  272. package/dist/services/app-display.service.d.ts +36 -0
  273. package/dist/services/app-display.service.d.ts.map +1 -0
  274. package/dist/services/app-display.service.js +101 -0
  275. package/dist/services/app-display.service.js.map +1 -0
  276. package/dist/services/atf-result-formatter.service.d.ts +64 -0
  277. package/dist/services/atf-result-formatter.service.d.ts.map +1 -0
  278. package/dist/services/atf-result-formatter.service.js +83 -0
  279. package/dist/services/atf-result-formatter.service.js.map +1 -0
  280. package/dist/services/attachment-display.service.d.ts +18 -0
  281. package/dist/services/attachment-display.service.d.ts.map +1 -0
  282. package/dist/services/attachment-display.service.js +93 -0
  283. package/dist/services/attachment-display.service.js.map +1 -0
  284. package/dist/services/batch-display.service.d.ts +11 -0
  285. package/dist/services/batch-display.service.d.ts.map +1 -0
  286. package/dist/services/batch-display.service.js +75 -0
  287. package/dist/services/batch-display.service.js.map +1 -0
  288. package/dist/services/bulk-display.service.d.ts +11 -0
  289. package/dist/services/bulk-display.service.d.ts.map +1 -0
  290. package/dist/services/bulk-display.service.js +85 -0
  291. package/dist/services/bulk-display.service.js.map +1 -0
  292. package/dist/services/code-search-display.service.d.ts +23 -0
  293. package/dist/services/code-search-display.service.d.ts.map +1 -0
  294. package/dist/services/code-search-display.service.js +130 -0
  295. package/dist/services/code-search-display.service.js.map +1 -0
  296. package/dist/services/flow-display.service.d.ts +19 -0
  297. package/dist/services/flow-display.service.d.ts.map +1 -0
  298. package/dist/services/flow-display.service.js +194 -0
  299. package/dist/services/flow-display.service.js.map +1 -0
  300. package/dist/services/health-display.service.d.ts +8 -0
  301. package/dist/services/health-display.service.d.ts.map +1 -0
  302. package/dist/services/health-display.service.js +91 -0
  303. package/dist/services/health-display.service.js.map +1 -0
  304. package/dist/services/log-filter.service.d.ts +31 -0
  305. package/dist/services/log-filter.service.d.ts.map +1 -0
  306. package/dist/services/log-filter.service.js +117 -0
  307. package/dist/services/log-filter.service.js.map +1 -0
  308. package/dist/services/log-formatter.service.d.ts +30 -0
  309. package/dist/services/log-formatter.service.d.ts.map +1 -0
  310. package/dist/services/log-formatter.service.js +122 -0
  311. package/dist/services/log-formatter.service.js.map +1 -0
  312. package/dist/services/query-display.service.d.ts +23 -0
  313. package/dist/services/query-display.service.d.ts.map +1 -0
  314. package/dist/services/query-display.service.js +152 -0
  315. package/dist/services/query-display.service.js.map +1 -0
  316. package/dist/services/schema-display.service.d.ts +18 -0
  317. package/dist/services/schema-display.service.d.ts.map +1 -0
  318. package/dist/services/schema-display.service.js +106 -0
  319. package/dist/services/schema-display.service.js.map +1 -0
  320. package/dist/services/scope-display.service.d.ts +18 -0
  321. package/dist/services/scope-display.service.d.ts.map +1 -0
  322. package/dist/services/scope-display.service.js +83 -0
  323. package/dist/services/scope-display.service.js.map +1 -0
  324. package/dist/services/script-parameter.service.d.ts +16 -0
  325. package/dist/services/script-parameter.service.d.ts.map +1 -0
  326. package/dist/services/script-parameter.service.js +34 -0
  327. package/dist/services/script-parameter.service.js.map +1 -0
  328. package/dist/services/script-sync-display.service.d.ts +13 -0
  329. package/dist/services/script-sync-display.service.d.ts.map +1 -0
  330. package/dist/services/script-sync-display.service.js +71 -0
  331. package/dist/services/script-sync-display.service.js.map +1 -0
  332. package/dist/services/store-app-display.service.d.ts +16 -0
  333. package/dist/services/store-app-display.service.d.ts.map +1 -0
  334. package/dist/services/store-app-display.service.js +114 -0
  335. package/dist/services/store-app-display.service.js.map +1 -0
  336. package/dist/services/task-display.service.d.ts +14 -0
  337. package/dist/services/task-display.service.d.ts.map +1 -0
  338. package/dist/services/task-display.service.js +86 -0
  339. package/dist/services/task-display.service.js.map +1 -0
  340. package/dist/services/update-set-display.service.d.ts +28 -0
  341. package/dist/services/update-set-display.service.d.ts.map +1 -0
  342. package/dist/services/update-set-display.service.js +150 -0
  343. package/dist/services/update-set-display.service.js.map +1 -0
  344. package/dist/services/workflow-display.service.d.ts +13 -0
  345. package/dist/services/workflow-display.service.d.ts.map +1 -0
  346. package/dist/services/workflow-display.service.js +53 -0
  347. package/dist/services/workflow-display.service.js.map +1 -0
  348. package/dist/services/xml-display.service.d.ts +11 -0
  349. package/dist/services/xml-display.service.d.ts.map +1 -0
  350. package/dist/services/xml-display.service.js +55 -0
  351. package/dist/services/xml-display.service.js.map +1 -0
  352. package/dist/util/log-factory.d.ts +5 -0
  353. package/dist/util/log-factory.d.ts.map +1 -0
  354. package/dist/util/log-factory.js +8 -0
  355. package/dist/util/log-factory.js.map +1 -0
  356. package/oclif.manifest.json +5608 -387
  357. package/package.json +83 -23
@@ -0,0 +1,66 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { TaskOperations } from '@sonisoft/now-sdk-ext-core';
3
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
4
+ import { isNilOrEmpty } from '../../common/utils.js';
5
+ import { TaskDisplayService } from '../../services/task-display.service.js';
6
+ export class Approve extends AuthenticatedCommand {
7
+ static args = {};
8
+ static description = 'Approve a ServiceNow change request.\n\n' +
9
+ 'This command approves a change request identified by its number. ' +
10
+ 'You can optionally provide approval comments.\n\n' +
11
+ 'Features:\n' +
12
+ ' - Approve change requests\n' +
13
+ ' - Optionally add approval comments\n' +
14
+ ' - Auto-resolves change request number to sys_id';
15
+ static examples = [
16
+ {
17
+ command: '<%= config.bin %> <%= command.id %> --number CHG0010001 --auth dev',
18
+ description: 'Approve a change request',
19
+ },
20
+ {
21
+ command: '<%= config.bin %> <%= command.id %> -n CHG0010001 -c "Looks good, approved" --auth dev',
22
+ description: 'Approve a change request with comments',
23
+ },
24
+ ];
25
+ static flags = {
26
+ 'comments': Flags.string({
27
+ char: 'c',
28
+ description: 'Approval comments',
29
+ required: false,
30
+ }),
31
+ 'number': Flags.string({
32
+ char: 'n',
33
+ description: 'Change request number (e.g., CHG0010001)',
34
+ required: true,
35
+ }),
36
+ };
37
+ async run() {
38
+ const { flags } = await this.parse(Approve);
39
+ const displayService = new TaskDisplayService();
40
+ try {
41
+ const taskOps = new TaskOperations(this.instance);
42
+ const number = flags.number;
43
+ const { comments } = flags;
44
+ this.log(`Looking up change request ${number}...`);
45
+ const record = await taskOps.findByNumber('change_request', number);
46
+ if (!record || isNilOrEmpty(record.sys_id)) {
47
+ this.error(`Change request ${number} not found.`);
48
+ return;
49
+ }
50
+ this.log(`Approving change request ${number}...`);
51
+ const result = await taskOps.approveChange({
52
+ comments,
53
+ sysId: record.sys_id,
54
+ });
55
+ const lines = displayService.formatTaskResult(result, 'approve', (flags.json ?? false) ?? false);
56
+ for (const line of lines) {
57
+ (flags.json ?? false) ? console.log(line) : this.log(line);
58
+ }
59
+ }
60
+ catch (error) {
61
+ this._logger.error("Error occurred when approving change request.", error);
62
+ this.error(error);
63
+ }
64
+ }
65
+ }
66
+ //# sourceMappingURL=approve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../../src/commands/task/approve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAE3E,MAAM,OAAO,OAAQ,SAAQ,oBAAoC;IAE/D,MAAM,CAAC,IAAI,GAAG,EACb,CAAA;IACH,MAAM,CAAC,WAAW,GAAG,0CAA0C;QAC3D,mEAAmE;QACnE,mDAAmD;QACnD,aAAa;QACb,+BAA+B;QAC/B,wCAAwC;QACxC,mDAAmD,CAAA;IACvD,MAAM,CAAC,QAAQ,GAAG;QACd;YACE,OAAO,EAAE,oEAAoE;YAC7E,WAAW,EAAE,0BAA0B;SACxC;QACD;YACE,OAAO,EAAE,wFAAwF;YACjG,WAAW,EAAE,wCAAwC;SACtD;KACF,CAAA;IACH,MAAM,CAAC,KAAK,GAAG;QACX,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3C,MAAM,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAA;QAE/C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgB,CAAA;YACrC,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAA;YAExB,IAAI,CAAC,GAAG,CAAC,6BAA6B,MAAM,KAAK,CAAC,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;YAEnE,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,kBAAkB,MAAM,aAAa,CAAC,CAAA;gBACjD,OAAM;YACR,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,4BAA4B,MAAM,KAAK,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;gBACzC,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,MAAM;aACrB,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA;YAChG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAc,CAAC,CAAA;YACnF,IAAI,CAAC,KAAK,CAAC,KAAc,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
2
+ export declare class Assign extends AuthenticatedCommand<typeof Assign> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: {
6
+ command: string;
7
+ description: string;
8
+ }[];
9
+ static flags: {
10
+ group: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ number: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ table: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
+ user: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=assign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign.d.ts","sourceRoot":"","sources":["../../../src/commands/task/assign.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAI5E,qBAAa,MAAO,SAAQ,oBAAoB,CAAC,OAAO,MAAM,CAAC;IAE7D,MAAM,CAAC,IAAI,KACV;IACH,MAAM,CAAC,WAAW,SAQ2B;IAC7C,MAAM,CAAC,QAAQ;;;QAaZ;IACH,MAAM,CAAC,KAAK;;;;;MAqBT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC3B"}
@@ -0,0 +1,86 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { TaskOperations } from '@sonisoft/now-sdk-ext-core';
3
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
4
+ import { isNilOrEmpty } from '../../common/utils.js';
5
+ import { TaskDisplayService } from '../../services/task-display.service.js';
6
+ export class Assign extends AuthenticatedCommand {
7
+ static args = {};
8
+ static description = 'Assign a ServiceNow task to a user or group.\n\n' +
9
+ 'This command assigns a task record identified by its number to a specified user and/or group. ' +
10
+ 'You can assign to a user, a group, or both simultaneously.\n\n' +
11
+ 'Features:\n' +
12
+ ' - Assign tasks to individual users\n' +
13
+ ' - Assign tasks to assignment groups\n' +
14
+ ' - Assign to both user and group at once\n' +
15
+ ' - Supports any task-based table\n' +
16
+ ' - Auto-resolves task number to sys_id';
17
+ static examples = [
18
+ {
19
+ command: '<%= config.bin %> <%= command.id %> --number INC0010001 --user admin --auth dev',
20
+ description: 'Assign an incident to a user',
21
+ },
22
+ {
23
+ command: '<%= config.bin %> <%= command.id %> -n INC0010001 -u admin -g "Service Desk" --auth dev',
24
+ description: 'Assign an incident to a user and group',
25
+ },
26
+ {
27
+ command: '<%= config.bin %> <%= command.id %> --number CHG0010001 --table change_request --user admin --auth dev',
28
+ description: 'Assign a change request to a user',
29
+ },
30
+ ];
31
+ static flags = {
32
+ 'group': Flags.string({
33
+ char: 'g',
34
+ description: 'Assignment group',
35
+ required: false,
36
+ }),
37
+ 'number': Flags.string({
38
+ char: 'n',
39
+ description: 'Task number (e.g., INC0010001)',
40
+ required: true,
41
+ }),
42
+ 'table': Flags.string({
43
+ default: 'task',
44
+ description: 'ServiceNow table name',
45
+ required: false,
46
+ }),
47
+ 'user': Flags.string({
48
+ char: 'u',
49
+ description: 'User to assign the task to',
50
+ required: true,
51
+ }),
52
+ };
53
+ async run() {
54
+ const { flags } = await this.parse(Assign);
55
+ const displayService = new TaskDisplayService();
56
+ try {
57
+ const taskOps = new TaskOperations(this.instance);
58
+ const table = flags.table;
59
+ const number = flags.number;
60
+ const user = flags.user;
61
+ const { group } = flags;
62
+ this.log(`Looking up task ${number} in table '${table}'...`);
63
+ const record = await taskOps.findByNumber(table, number);
64
+ if (!record || isNilOrEmpty(record.sys_id)) {
65
+ this.error(`Task ${number} not found in table '${table}'.`);
66
+ return;
67
+ }
68
+ this.log(`Assigning ${number} to user '${user}'${group ? ` in group '${group}'` : ''}...`);
69
+ const result = await taskOps.assignTask({
70
+ assignedTo: user,
71
+ assignmentGroup: group,
72
+ recordSysId: record.sys_id,
73
+ table,
74
+ });
75
+ const lines = displayService.formatTaskResult(result, 'assign', (flags.json ?? false) ?? false);
76
+ for (const line of lines) {
77
+ (flags.json ?? false) ? console.log(line) : this.log(line);
78
+ }
79
+ }
80
+ catch (error) {
81
+ this._logger.error("Error occurred when assigning task.", error);
82
+ this.error(error);
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=assign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../src/commands/task/assign.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
2
+ export declare class Close extends AuthenticatedCommand<typeof Close> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: {
6
+ command: string;
7
+ description: string;
8
+ }[];
9
+ static flags: {
10
+ 'close-code': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ notes: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ number: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=close.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../src/commands/task/close.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAI5E,qBAAa,KAAM,SAAQ,oBAAoB,CAAC,OAAO,KAAK,CAAC;IAE3D,MAAM,CAAC,IAAI,KACV;IACH,MAAM,CAAC,WAAW,SAM+B;IACjD,MAAM,CAAC,QAAQ;;;QASZ;IACH,MAAM,CAAC,KAAK;;;;MAcT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
@@ -0,0 +1,71 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { TaskOperations } from '@sonisoft/now-sdk-ext-core';
3
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
4
+ import { isNilOrEmpty } from '../../common/utils.js';
5
+ import { TaskDisplayService } from '../../services/task-display.service.js';
6
+ export class Close extends AuthenticatedCommand {
7
+ static args = {};
8
+ static description = 'Close a ServiceNow incident.\n\n' +
9
+ 'This command closes an incident identified by its number, setting the close notes ' +
10
+ 'and optionally a close code. The incident must be in a state that allows closure.\n\n' +
11
+ 'Features:\n' +
12
+ ' - Close incidents with close notes\n' +
13
+ ' - Optionally specify a close code\n' +
14
+ ' - Auto-resolves incident number to sys_id';
15
+ static examples = [
16
+ {
17
+ command: '<%= config.bin %> <%= command.id %> --number INC0010001 --notes "Issue confirmed resolved by user" --auth dev',
18
+ description: 'Close an incident with close notes',
19
+ },
20
+ {
21
+ command: '<%= config.bin %> <%= command.id %> -n INC0010001 --notes "Closed" --close-code "Solved (Permanently)" --auth dev',
22
+ description: 'Close with a specific close code',
23
+ },
24
+ ];
25
+ static flags = {
26
+ 'close-code': Flags.string({
27
+ description: 'Close code for the closure',
28
+ required: false,
29
+ }),
30
+ 'notes': Flags.string({
31
+ description: 'Close notes',
32
+ required: true,
33
+ }),
34
+ 'number': Flags.string({
35
+ char: 'n',
36
+ description: 'Incident number (e.g., INC0010001)',
37
+ required: true,
38
+ }),
39
+ };
40
+ async run() {
41
+ const { flags } = await this.parse(Close);
42
+ const displayService = new TaskDisplayService();
43
+ try {
44
+ const taskOps = new TaskOperations(this.instance);
45
+ const number = flags.number;
46
+ const notes = flags.notes;
47
+ const closeCode = flags['close-code'];
48
+ this.log(`Looking up incident ${number}...`);
49
+ const record = await taskOps.findByNumber('incident', number);
50
+ if (!record || isNilOrEmpty(record.sys_id)) {
51
+ this.error(`Incident ${number} not found.`);
52
+ return;
53
+ }
54
+ this.log(`Closing incident ${number}...`);
55
+ const result = await taskOps.closeIncident({
56
+ closeCode,
57
+ closeNotes: notes,
58
+ sysId: record.sys_id,
59
+ });
60
+ const lines = displayService.formatTaskResult(result, 'close', (flags.json ?? false) ?? false);
61
+ for (const line of lines) {
62
+ (flags.json ?? false) ? console.log(line) : this.log(line);
63
+ }
64
+ }
65
+ catch (error) {
66
+ this._logger.error("Error occurred when closing incident.", error);
67
+ this.error(error);
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/commands/task/close.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
2
+ export declare class Comment extends AuthenticatedCommand<typeof Comment> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: {
6
+ command: string;
7
+ description: string;
8
+ }[];
9
+ static flags: {
10
+ comment: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ number: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ table: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
+ 'work-note': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=comment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../../src/commands/task/comment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAI5E,qBAAa,OAAQ,SAAQ,oBAAoB,CAAC,OAAO,OAAO,CAAC;IAE/D,MAAM,CAAC,IAAI,KACV;IACH,MAAM,CAAC,WAAW,SAQ2B;IAC7C,MAAM,CAAC,QAAQ;;;QAaZ;IACH,MAAM,CAAC,KAAK;;;;;MAqBT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC3B"}
@@ -0,0 +1,86 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { TaskOperations } from '@sonisoft/now-sdk-ext-core';
3
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
4
+ import { isNilOrEmpty } from '../../common/utils.js';
5
+ import { TaskDisplayService } from '../../services/task-display.service.js';
6
+ export class Comment extends AuthenticatedCommand {
7
+ static args = {};
8
+ static description = 'Add a comment or work note to a ServiceNow task.\n\n' +
9
+ 'This command adds a comment or work note to a task record identified by its number. ' +
10
+ 'By default, comments are added as customer-visible comments. Use the --work-note flag ' +
11
+ 'to add an internal work note instead.\n\n' +
12
+ 'Features:\n' +
13
+ ' - Add customer-visible comments to any task\n' +
14
+ ' - Add internal work notes visible only to fulfiller teams\n' +
15
+ ' - Supports any task-based table (incident, change_request, etc.)\n' +
16
+ ' - Auto-resolves task number to sys_id';
17
+ static examples = [
18
+ {
19
+ command: '<%= config.bin %> <%= command.id %> --number INC0010001 --comment "Investigating the issue" --auth dev',
20
+ description: 'Add a comment to an incident',
21
+ },
22
+ {
23
+ command: '<%= config.bin %> <%= command.id %> -n INC0010001 -c "Internal update" --work-note --auth dev',
24
+ description: 'Add a work note to an incident',
25
+ },
26
+ {
27
+ command: '<%= config.bin %> <%= command.id %> --number CHG0010001 --table change_request --comment "Approved" --auth dev',
28
+ description: 'Add a comment to a change request',
29
+ },
30
+ ];
31
+ static flags = {
32
+ 'comment': Flags.string({
33
+ char: 'c',
34
+ description: 'Comment text to add',
35
+ required: true,
36
+ }),
37
+ 'number': Flags.string({
38
+ char: 'n',
39
+ description: 'Task number (e.g., INC0010001)',
40
+ required: true,
41
+ }),
42
+ 'table': Flags.string({
43
+ default: 'task',
44
+ description: 'ServiceNow table name',
45
+ required: false,
46
+ }),
47
+ 'work-note': Flags.boolean({
48
+ default: false,
49
+ description: 'Add as work note instead of comment',
50
+ required: false,
51
+ }),
52
+ };
53
+ async run() {
54
+ const { flags } = await this.parse(Comment);
55
+ const displayService = new TaskDisplayService();
56
+ try {
57
+ const taskOps = new TaskOperations(this.instance);
58
+ const table = flags.table;
59
+ const number = flags.number;
60
+ const comment = flags.comment;
61
+ const isWorkNote = flags['work-note'];
62
+ this.log(`Looking up task ${number} in table '${table}'...`);
63
+ const record = await taskOps.findByNumber(table, number);
64
+ if (!record || isNilOrEmpty(record.sys_id)) {
65
+ this.error(`Task ${number} not found in table '${table}'.`);
66
+ return;
67
+ }
68
+ this.log(`Adding ${isWorkNote ? 'work note' : 'comment'} to ${number}...`);
69
+ const result = await taskOps.addComment({
70
+ comment,
71
+ isWorkNote,
72
+ recordSysId: record.sys_id,
73
+ table,
74
+ });
75
+ const lines = displayService.formatTaskResult(result, 'comment', (flags.json ?? false) ?? false);
76
+ for (const line of lines) {
77
+ (flags.json ?? false) ? console.log(line) : this.log(line);
78
+ }
79
+ }
80
+ catch (error) {
81
+ this._logger.error("Error occurred when adding comment to task.", error);
82
+ this.error(error);
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../src/commands/task/comment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
2
+ export declare class Find extends AuthenticatedCommand<typeof Find> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: {
6
+ command: string;
7
+ description: string;
8
+ }[];
9
+ static flags: {
10
+ number: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ table: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=find.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/commands/task/find.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAI5E,qBAAa,IAAK,SAAQ,oBAAoB,CAAC,OAAO,IAAI,CAAC;IAEzD,MAAM,CAAC,IAAI,KACV;IACH,MAAM,CAAC,WAAW,SAMgC;IAClD,MAAM,CAAC,QAAQ;;;QAaZ;IACH,MAAM,CAAC,KAAK;;;MAWT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B3B"}
@@ -0,0 +1,65 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { TaskOperations } from '@sonisoft/now-sdk-ext-core';
3
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
4
+ import { isNilOrEmpty } from '../../common/utils.js';
5
+ import { TaskDisplayService } from '../../services/task-display.service.js';
6
+ export class Find extends AuthenticatedCommand {
7
+ static args = {};
8
+ static description = 'Find a ServiceNow task by its number.\n\n' +
9
+ 'This command looks up a task record by its number in the specified table. ' +
10
+ 'Returns the full task details including sys_id, description, state, and assignment information.\n\n' +
11
+ 'Features:\n' +
12
+ ' - Look up any task by number\n' +
13
+ ' - Supports any task-based table\n' +
14
+ ' - JSON output for scripting and automation';
15
+ static examples = [
16
+ {
17
+ command: '<%= config.bin %> <%= command.id %> --number INC0010001 --auth dev',
18
+ description: 'Find an incident by number',
19
+ },
20
+ {
21
+ command: '<%= config.bin %> <%= command.id %> -n CHG0010001 --table change_request --auth dev',
22
+ description: 'Find a change request by number',
23
+ },
24
+ {
25
+ command: '<%= config.bin %> <%= command.id %> -n INC0010001 --json --auth dev',
26
+ description: 'Find an incident and output as JSON',
27
+ },
28
+ ];
29
+ static flags = {
30
+ 'number': Flags.string({
31
+ char: 'n',
32
+ description: 'Task number (e.g., INC0010001, CHG0010001)',
33
+ required: true,
34
+ }),
35
+ 'table': Flags.string({
36
+ default: 'task',
37
+ description: 'ServiceNow table name',
38
+ required: false,
39
+ }),
40
+ };
41
+ async run() {
42
+ const { flags } = await this.parse(Find);
43
+ const displayService = new TaskDisplayService();
44
+ try {
45
+ const taskOps = new TaskOperations(this.instance);
46
+ const table = flags.table;
47
+ const number = flags.number;
48
+ this.log(`Looking up task ${number} in table '${table}'...`);
49
+ const result = await taskOps.findByNumber(table, number);
50
+ if (!result || isNilOrEmpty(result.sys_id)) {
51
+ this.error(`Task ${number} not found in table '${table}'.`);
52
+ return;
53
+ }
54
+ const lines = displayService.formatFindResult(result, (flags.json ?? false) ?? false);
55
+ for (const line of lines) {
56
+ (flags.json ?? false) ? console.log(line) : this.log(line);
57
+ }
58
+ }
59
+ catch (error) {
60
+ this._logger.error("Error occurred when finding task.", error);
61
+ this.error(error);
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=find.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/commands/task/find.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAE3E,MAAM,OAAO,IAAK,SAAQ,oBAAiC;IAEzD,MAAM,CAAC,IAAI,GAAG,EACb,CAAA;IACH,MAAM,CAAC,WAAW,GAAG,2CAA2C;QAC5D,4EAA4E;QAC5E,qGAAqG;QACrG,aAAa;QACb,kCAAkC;QAClC,qCAAqC;QACrC,8CAA8C,CAAA;IAClD,MAAM,CAAC,QAAQ,GAAG;QACd;YACE,OAAO,EAAE,oEAAoE;YAC7E,WAAW,EAAE,4BAA4B;SAC1C;QACD;YACE,OAAO,EAAE,qFAAqF;YAC9F,WAAW,EAAE,iCAAiC;SAC/C;QACD;YACE,OAAO,EAAE,qEAAqE;YAC9E,WAAW,EAAE,qCAAqC;SACnD;KACF,CAAA;IACH,MAAM,CAAC,KAAK,GAAG;QACX,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAA;QAE/C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAe,CAAA;YACnC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgB,CAAA;YAErC,IAAI,CAAC,GAAG,CAAC,mBAAmB,MAAM,cAAc,KAAK,MAAM,CAAC,CAAA;YAC5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAExD,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,MAAM,wBAAwB,KAAK,IAAI,CAAC,CAAA;gBAC3D,OAAM;YACR,CAAC;YAED,MAAM,KAAK,GAAG,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA;YACrF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAc,CAAC,CAAA;YACvE,IAAI,CAAC,KAAK,CAAC,KAAc,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
2
+ export declare class Resolve extends AuthenticatedCommand<typeof Resolve> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: {
6
+ command: string;
7
+ description: string;
8
+ }[];
9
+ static flags: {
10
+ 'close-code': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ notes: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ number: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/commands/task/resolve.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAI5E,qBAAa,OAAQ,SAAQ,oBAAoB,CAAC,OAAO,OAAO,CAAC;IAE/D,MAAM,CAAC,IAAI,KACV;IACH,MAAM,CAAC,WAAW,SAM+B;IACjD,MAAM,CAAC,QAAQ;;;QASZ;IACH,MAAM,CAAC,KAAK;;;;MAcT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
@@ -0,0 +1,71 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { TaskOperations } from '@sonisoft/now-sdk-ext-core';
3
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
4
+ import { isNilOrEmpty } from '../../common/utils.js';
5
+ import { TaskDisplayService } from '../../services/task-display.service.js';
6
+ export class Resolve extends AuthenticatedCommand {
7
+ static args = {};
8
+ static description = 'Resolve a ServiceNow incident with resolution notes.\n\n' +
9
+ 'This command resolves an incident identified by its number, setting the resolution notes ' +
10
+ 'and optionally a close code. The incident must be in a state that allows resolution.\n\n' +
11
+ 'Features:\n' +
12
+ ' - Resolve incidents with resolution notes\n' +
13
+ ' - Optionally specify a close code\n' +
14
+ ' - Auto-resolves incident number to sys_id';
15
+ static examples = [
16
+ {
17
+ command: '<%= config.bin %> <%= command.id %> --number INC0010001 --notes "Issue resolved by restarting the service" --auth dev',
18
+ description: 'Resolve an incident with resolution notes',
19
+ },
20
+ {
21
+ command: '<%= config.bin %> <%= command.id %> -n INC0010001 --notes "Fixed" --close-code "Solved (Permanently)" --auth dev',
22
+ description: 'Resolve with a specific close code',
23
+ },
24
+ ];
25
+ static flags = {
26
+ 'close-code': Flags.string({
27
+ description: 'Close code for the resolution',
28
+ required: false,
29
+ }),
30
+ 'notes': Flags.string({
31
+ description: 'Resolution notes',
32
+ required: true,
33
+ }),
34
+ 'number': Flags.string({
35
+ char: 'n',
36
+ description: 'Incident number (e.g., INC0010001)',
37
+ required: true,
38
+ }),
39
+ };
40
+ async run() {
41
+ const { flags } = await this.parse(Resolve);
42
+ const displayService = new TaskDisplayService();
43
+ try {
44
+ const taskOps = new TaskOperations(this.instance);
45
+ const number = flags.number;
46
+ const notes = flags.notes;
47
+ const closeCode = flags['close-code'];
48
+ this.log(`Looking up incident ${number}...`);
49
+ const record = await taskOps.findByNumber('incident', number);
50
+ if (!record || isNilOrEmpty(record.sys_id)) {
51
+ this.error(`Incident ${number} not found.`);
52
+ return;
53
+ }
54
+ this.log(`Resolving incident ${number}...`);
55
+ const result = await taskOps.resolveIncident({
56
+ closeCode,
57
+ resolutionNotes: notes,
58
+ sysId: record.sys_id,
59
+ });
60
+ const lines = displayService.formatTaskResult(result, 'resolve', (flags.json ?? false) ?? false);
61
+ for (const line of lines) {
62
+ (flags.json ?? false) ? console.log(line) : this.log(line);
63
+ }
64
+ }
65
+ catch (error) {
66
+ this._logger.error("Error occurred when resolving incident.", error);
67
+ this.error(error);
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/commands/task/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
2
+ export declare class Clone extends AuthenticatedCommand<typeof Clone> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: {
6
+ command: string;
7
+ description: string;
8
+ }[];
9
+ static flags: {
10
+ name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ source: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/commands/update-set/clone.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,KAAM,SAAQ,oBAAoB,CAAC,OAAO,KAAK,CAAC;IAE3D,MAAM,CAAC,IAAI,KACV;IACH,MAAM,CAAC,WAAW,SAAyC;IAC3D,MAAM,CAAC,QAAQ;;;QASZ;IACH,MAAM,CAAC,KAAK;;;MAWT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB3B"}