@poe-platform/safe-bash 0.1.630 → 0.1.631

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 +1 -0
  2. package/dist/office-package/compression.d.ts +19 -0
  3. package/dist/office-package/compression.js +186 -0
  4. package/dist/office-package/runtime.d.ts +11 -0
  5. package/dist/office-package/runtime.js +28 -0
  6. package/dist/safe-bash/chunks/{bz2-B2RXT4EX.js → bz2-ACU4EOVE.js} +2 -2
  7. package/dist/safe-bash/chunks/chunk-2E4KBFO6.js +239 -0
  8. package/dist/safe-bash/chunks/chunk-2E4KBFO6.js.map +7 -0
  9. package/dist/safe-bash/chunks/chunk-3E5M2WEL.js +33 -0
  10. package/dist/safe-bash/chunks/chunk-3E5M2WEL.js.map +7 -0
  11. package/dist/safe-bash/chunks/{chunk-KQ6J7JHQ.js → chunk-3LD67SER.js} +12 -10
  12. package/dist/safe-bash/chunks/{chunk-KQ6J7JHQ.js.map → chunk-3LD67SER.js.map} +1 -1
  13. package/dist/safe-bash/chunks/{chunk-6LSSEOG7.js → chunk-6HNK7Q66.js} +11 -7
  14. package/dist/safe-bash/chunks/{chunk-6LSSEOG7.js.map → chunk-6HNK7Q66.js.map} +1 -1
  15. package/dist/safe-bash/chunks/{chunk-AD7UAP5B.js → chunk-7EEWZY5S.js} +10 -8
  16. package/dist/safe-bash/chunks/{chunk-AD7UAP5B.js.map → chunk-7EEWZY5S.js.map} +1 -1
  17. package/dist/safe-bash/chunks/{chunk-RNKTWFEM.js → chunk-CDBQXRWL.js} +3 -3
  18. package/dist/safe-bash/chunks/{chunk-UYX72YHY.js → chunk-CHHAB5SS.js} +10 -74
  19. package/dist/safe-bash/chunks/{chunk-UYX72YHY.js.map → chunk-CHHAB5SS.js.map} +3 -3
  20. package/dist/safe-bash/chunks/{chunk-6YSBXTTJ.js → chunk-EI4X5ETX.js} +12 -10
  21. package/dist/safe-bash/chunks/{chunk-6YSBXTTJ.js.map → chunk-EI4X5ETX.js.map} +1 -1
  22. package/dist/safe-bash/chunks/{chunk-KZ7QCYNT.js → chunk-GIBLUW2U.js} +13 -9
  23. package/dist/safe-bash/chunks/{chunk-KZ7QCYNT.js.map → chunk-GIBLUW2U.js.map} +1 -1
  24. package/dist/safe-bash/chunks/chunk-GPV7ZFYS.js +1528 -0
  25. package/dist/safe-bash/chunks/chunk-GPV7ZFYS.js.map +7 -0
  26. package/dist/safe-bash/chunks/{chunk-N5CYTGBN.js → chunk-H3E67KTZ.js} +13 -9
  27. package/dist/safe-bash/chunks/{chunk-N5CYTGBN.js.map → chunk-H3E67KTZ.js.map} +1 -1
  28. package/dist/safe-bash/chunks/{chunk-AFH57PPL.js → chunk-IEKESMO4.js} +3 -3
  29. package/dist/safe-bash/chunks/{chunk-DPJWEGIX.js → chunk-JLBIUYT3.js} +2 -2
  30. package/dist/safe-bash/chunks/chunk-JZDO5MC3.js +77 -0
  31. package/dist/safe-bash/chunks/chunk-JZDO5MC3.js.map +7 -0
  32. package/dist/safe-bash/chunks/{chunk-GFZKQIPL.js → chunk-LA6BX562.js} +8 -6
  33. package/dist/safe-bash/chunks/{chunk-GFZKQIPL.js.map → chunk-LA6BX562.js.map} +1 -1
  34. package/dist/safe-bash/chunks/{chunk-PVJJFCGA.js → chunk-M3GPCYSP.js} +2 -2
  35. package/dist/safe-bash/chunks/{chunk-FWDMJTQO.js → chunk-NDCZ3UBP.js} +13 -9
  36. package/dist/safe-bash/chunks/{chunk-FWDMJTQO.js.map → chunk-NDCZ3UBP.js.map} +1 -1
  37. package/dist/safe-bash/chunks/{chunk-2KL6W6NB.js → chunk-O2EVBRKF.js} +1 -2
  38. package/dist/safe-bash/chunks/chunk-OFT77XIB.js +389 -0
  39. package/dist/safe-bash/chunks/chunk-OFT77XIB.js.map +7 -0
  40. package/dist/safe-bash/chunks/{chunk-PCLOK32J.js → chunk-PC6BEIAF.js} +13 -9
  41. package/dist/safe-bash/chunks/{chunk-PCLOK32J.js.map → chunk-PC6BEIAF.js.map} +1 -1
  42. package/dist/safe-bash/chunks/{chunk-3M5F7LD5.js → chunk-QWKP7ZU7.js} +13 -9
  43. package/dist/safe-bash/chunks/{chunk-3M5F7LD5.js.map → chunk-QWKP7ZU7.js.map} +1 -1
  44. package/dist/safe-bash/chunks/chunk-THXJ6CLF.js +53 -0
  45. package/dist/safe-bash/chunks/chunk-THXJ6CLF.js.map +7 -0
  46. package/dist/safe-bash/chunks/{chunk-K7W6Q6FN.js → chunk-V73A742N.js} +58 -16
  47. package/dist/safe-bash/chunks/chunk-V73A742N.js.map +7 -0
  48. package/dist/safe-bash/chunks/{chunk-4BYUV5PA.js → chunk-VN3ZGME3.js} +12 -8
  49. package/dist/safe-bash/chunks/{chunk-4BYUV5PA.js.map → chunk-VN3ZGME3.js.map} +1 -1
  50. package/dist/safe-bash/chunks/{chunk-3BZ5NQ73.js → chunk-WECHUK3Y.js} +369 -36
  51. package/dist/safe-bash/chunks/chunk-WECHUK3Y.js.map +7 -0
  52. package/dist/safe-bash/chunks/{chunk-X55AMTNM.js → chunk-WIOEUR7D.js} +14 -10
  53. package/dist/safe-bash/chunks/{chunk-X55AMTNM.js.map → chunk-WIOEUR7D.js.map} +1 -1
  54. package/dist/safe-bash/chunks/chunk-WPIOO4NX.js +443 -0
  55. package/dist/safe-bash/chunks/chunk-WPIOO4NX.js.map +7 -0
  56. package/dist/safe-bash/chunks/{chunk-C7QNJ3D4.js → chunk-WYTI64IU.js} +2 -2
  57. package/dist/safe-bash/chunks/{xz-AVXFDXW4.js → xz-U4QDTPZL.js} +2 -2
  58. package/dist/safe-bash/chunks/{zstd-R6RPHJYO.js → zstd-OG5RPYXO.js} +2 -2
  59. package/dist/safe-bash/commands/archive/zip/crc.d.ts +2 -0
  60. package/dist/safe-bash/commands/archive/zip/crc.d.ts.map +1 -0
  61. package/dist/safe-bash/commands/archive/zip/crc.js +7 -0
  62. package/dist/safe-bash/commands/archive/zip/crc.js.map +1 -0
  63. package/dist/safe-bash/commands/archive/zip/crypto.d.ts +4 -0
  64. package/dist/safe-bash/commands/archive/zip/crypto.d.ts.map +1 -0
  65. package/dist/safe-bash/commands/archive/zip/crypto.js +34 -0
  66. package/dist/safe-bash/commands/archive/zip/crypto.js.map +1 -0
  67. package/dist/safe-bash/commands/archive/zip/help.d.ts +3 -0
  68. package/dist/safe-bash/commands/archive/zip/help.d.ts.map +1 -0
  69. package/dist/safe-bash/commands/archive/zip/help.js +87 -0
  70. package/dist/safe-bash/commands/archive/zip/help.js.map +1 -0
  71. package/dist/safe-bash/commands/archive/zip/move.d.ts +12 -0
  72. package/dist/safe-bash/commands/archive/zip/move.d.ts.map +1 -0
  73. package/dist/safe-bash/commands/archive/zip/move.js +60 -0
  74. package/dist/safe-bash/commands/archive/zip/move.js.map +1 -0
  75. package/dist/safe-bash/commands/archive/zip/options.js +5 -5
  76. package/dist/safe-bash/commands/archive/zip/options.js.map +1 -1
  77. package/dist/safe-bash/commands/archive/zip-format.d.ts +1 -1
  78. package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
  79. package/dist/safe-bash/commands/archive/zip-format.js +14 -17
  80. package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
  81. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
  82. package/dist/safe-bash/commands/archive/zip.js +45 -15
  83. package/dist/safe-bash/commands/archive/zip.js.map +1 -1
  84. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +2 -0
  85. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -1
  86. package/dist/safe-bash/commands/bytes/compression/bounded-codec.js +4 -0
  87. package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -1
  88. package/dist/safe-bash/commands/bytes/compression/codec.d.ts +4 -24
  89. package/dist/safe-bash/commands/bytes/compression/codec.d.ts.map +1 -1
  90. package/dist/safe-bash/commands/bytes/compression/codec.js +12 -168
  91. package/dist/safe-bash/commands/bytes/compression/codec.js.map +1 -1
  92. package/dist/safe-bash/commands/cmp.js +1 -1
  93. package/dist/safe-bash/commands/cmp.js.map +1 -1
  94. package/dist/safe-bash/commands/csplit/index.browser.js +10 -7
  95. package/dist/safe-bash/commands/docx/index.browser.js +54 -0
  96. package/dist/safe-bash/commands/docx/index.browser.js.map +7 -0
  97. package/dist/safe-bash/commands/docx/index.d.ts +25 -0
  98. package/dist/safe-bash/commands/docx/index.d.ts.map +1 -0
  99. package/dist/safe-bash/commands/docx/index.js +42 -0
  100. package/dist/safe-bash/commands/docx/index.js.map +1 -0
  101. package/dist/safe-bash/commands/docx/io.d.ts +15 -0
  102. package/dist/safe-bash/commands/docx/io.d.ts.map +1 -0
  103. package/dist/safe-bash/commands/docx/io.js +16 -0
  104. package/dist/safe-bash/commands/docx/io.js.map +1 -0
  105. package/dist/safe-bash/commands/factor/index.browser.js +7 -5
  106. package/dist/safe-bash/commands/filesystem.d.ts.map +1 -1
  107. package/dist/safe-bash/commands/filesystem.js +9 -1
  108. package/dist/safe-bash/commands/filesystem.js.map +1 -1
  109. package/dist/safe-bash/commands/getopt/index.browser.js +7 -5
  110. package/dist/safe-bash/commands/hexdump/index.browser.js +8 -6
  111. package/dist/safe-bash/commands/iconv/index.browser.js +8 -6
  112. package/dist/safe-bash/commands/line-endings/index.browser.js +10 -7
  113. package/dist/safe-bash/commands/llm/index.browser.js +10 -8
  114. package/dist/safe-bash/commands/llm/providers/index.browser.js +3 -3
  115. package/dist/safe-bash/commands/network/index.browser.js +11 -8
  116. package/dist/safe-bash/commands/node/index.browser.js +8 -6
  117. package/dist/safe-bash/commands/op/index.browser.js +3 -3
  118. package/dist/safe-bash/commands/op/index.js +0 -1
  119. package/dist/safe-bash/commands/op/index.js.map +2 -2
  120. package/dist/safe-bash/commands/pptx/index.d.ts +29 -0
  121. package/dist/safe-bash/commands/pptx/index.d.ts.map +1 -0
  122. package/dist/safe-bash/commands/pptx/index.js +153 -0
  123. package/dist/safe-bash/commands/pptx/index.js.map +1 -0
  124. package/dist/safe-bash/commands/pr/index.browser.js +8 -6
  125. package/dist/safe-bash/commands/predicates.js +1 -1
  126. package/dist/safe-bash/commands/python/execution.d.ts +3 -0
  127. package/dist/safe-bash/commands/python/execution.d.ts.map +1 -0
  128. package/dist/safe-bash/commands/python/execution.js +193 -0
  129. package/dist/safe-bash/commands/python/execution.js.map +1 -0
  130. package/dist/safe-bash/commands/python/index.browser.js +21 -0
  131. package/dist/safe-bash/commands/python/index.browser.js.map +7 -0
  132. package/dist/safe-bash/commands/python/index.d.ts +49 -0
  133. package/dist/safe-bash/commands/python/index.d.ts.map +1 -0
  134. package/dist/safe-bash/commands/python/index.js +317 -0
  135. package/dist/safe-bash/commands/python/index.js.map +1 -0
  136. package/dist/safe-bash/commands/python/installation.d.ts +9 -0
  137. package/dist/safe-bash/commands/python/installation.d.ts.map +1 -0
  138. package/dist/safe-bash/commands/python/installation.js +80 -0
  139. package/dist/safe-bash/commands/python/installation.js.map +1 -0
  140. package/dist/safe-bash/commands/python/invocation.d.ts +10 -0
  141. package/dist/safe-bash/commands/python/invocation.d.ts.map +1 -0
  142. package/dist/safe-bash/commands/python/invocation.js +81 -0
  143. package/dist/safe-bash/commands/python/invocation.js.map +1 -0
  144. package/dist/safe-bash/commands/python/node.d.ts +12 -0
  145. package/dist/safe-bash/commands/python/node.d.ts.map +1 -0
  146. package/dist/safe-bash/commands/python/node.js +33 -0
  147. package/dist/safe-bash/commands/python/node.js.map +1 -0
  148. package/dist/safe-bash/commands/python/provisioning-runtime.d.ts +5 -0
  149. package/dist/safe-bash/commands/python/provisioning-runtime.d.ts.map +1 -0
  150. package/dist/safe-bash/commands/python/provisioning-runtime.js +179 -0
  151. package/dist/safe-bash/commands/python/provisioning-runtime.js.map +1 -0
  152. package/dist/safe-bash/commands/python/provisioning.d.ts +49 -0
  153. package/dist/safe-bash/commands/python/provisioning.d.ts.map +1 -0
  154. package/dist/safe-bash/commands/python/provisioning.js +320 -0
  155. package/dist/safe-bash/commands/python/provisioning.js.map +1 -0
  156. package/dist/safe-bash/commands/python/reply.d.ts +3 -0
  157. package/dist/safe-bash/commands/python/reply.d.ts.map +1 -0
  158. package/dist/safe-bash/commands/python/reply.js +103 -0
  159. package/dist/safe-bash/commands/python/reply.js.map +1 -0
  160. package/dist/safe-bash/commands/python/worker.browser.js +736 -0
  161. package/dist/safe-bash/commands/python/worker.browser.js.map +7 -0
  162. package/dist/safe-bash/commands/python/worker.d.ts +47 -0
  163. package/dist/safe-bash/commands/python/worker.d.ts.map +1 -0
  164. package/dist/safe-bash/commands/python/worker.js +373 -0
  165. package/dist/safe-bash/commands/python/worker.js.map +1 -0
  166. package/dist/safe-bash/commands/tsort/index.browser.js +8 -6
  167. package/dist/safe-bash/commands/xml/index.browser.js +9 -7
  168. package/dist/safe-bash/commands/yq/index.browser.js +10 -8
  169. package/dist/safe-bash/commands/yq/index.d.ts.map +1 -1
  170. package/dist/safe-bash/commands/yq/index.js +32 -4
  171. package/dist/safe-bash/commands/yq/index.js.map +1 -1
  172. package/dist/safe-bash/commands/yq/parser.d.ts.map +1 -1
  173. package/dist/safe-bash/commands/yq/parser.js +21 -5
  174. package/dist/safe-bash/commands/yq/parser.js.map +1 -1
  175. package/dist/safe-bash/contracts/command.d.ts +2 -0
  176. package/dist/safe-bash/contracts/command.d.ts.map +1 -1
  177. package/dist/safe-bash/contracts/command.js +6 -2
  178. package/dist/safe-bash/contracts/command.js.map +1 -1
  179. package/dist/safe-bash/contracts/filesystem-descriptor.d.ts +13 -0
  180. package/dist/safe-bash/contracts/filesystem-descriptor.d.ts.map +1 -0
  181. package/dist/safe-bash/contracts/filesystem-descriptor.js +189 -0
  182. package/dist/safe-bash/contracts/filesystem-descriptor.js.map +1 -0
  183. package/dist/safe-bash/contracts/filesystem-output-budget.d.ts +15 -0
  184. package/dist/safe-bash/contracts/filesystem-output-budget.d.ts.map +1 -0
  185. package/dist/safe-bash/contracts/filesystem-output-budget.js +69 -0
  186. package/dist/safe-bash/contracts/filesystem-output-budget.js.map +1 -0
  187. package/dist/safe-bash/contracts/filesystem-output.d.ts +11 -5
  188. package/dist/safe-bash/contracts/filesystem-output.d.ts.map +1 -1
  189. package/dist/safe-bash/contracts/filesystem-output.js +229 -20
  190. package/dist/safe-bash/contracts/filesystem-output.js.map +1 -1
  191. package/dist/safe-bash/contracts/io.d.ts +29 -0
  192. package/dist/safe-bash/contracts/io.d.ts.map +1 -1
  193. package/dist/safe-bash/contracts/io.js +317 -37
  194. package/dist/safe-bash/contracts/io.js.map +1 -1
  195. package/dist/safe-bash/core.browser.js +5502 -2210
  196. package/dist/safe-bash/core.browser.js.map +4 -4
  197. package/dist/safe-bash/core.d.ts +1 -0
  198. package/dist/safe-bash/core.d.ts.map +1 -1
  199. package/dist/safe-bash/core.js +1 -0
  200. package/dist/safe-bash/core.js.map +1 -1
  201. package/dist/safe-bash/opt-in/commands/cmp/compare.js +95 -0
  202. package/dist/safe-bash/opt-in/commands/cmp/index.d.ts +6 -0
  203. package/dist/safe-bash/opt-in/commands/cmp/index.js +99 -0
  204. package/dist/safe-bash/opt-in/commands/cmp/io.js +218 -0
  205. package/dist/safe-bash/opt-in/commands/cmp/options.d.ts +24 -0
  206. package/dist/safe-bash/opt-in/commands/cmp/options.js +195 -0
  207. package/dist/safe-bash/opt-in/commands/dd/conversions.js +152 -0
  208. package/dist/safe-bash/opt-in/commands/dd/index.d.ts +18 -0
  209. package/dist/safe-bash/opt-in/commands/dd/index.js +561 -0
  210. package/dist/safe-bash/opt-in/commands/dd/io.d.ts +31 -0
  211. package/dist/safe-bash/opt-in/commands/dd/io.js +244 -0
  212. package/dist/safe-bash/opt-in/commands/dd/options.js +184 -0
  213. package/dist/safe-bash/opt-in/commands/dd/report.js +69 -0
  214. package/dist/safe-bash/opt-in/commands/install/arguments.js +224 -0
  215. package/dist/safe-bash/opt-in/commands/install/index.d.ts +6 -0
  216. package/dist/safe-bash/opt-in/commands/install/index.js +678 -0
  217. package/dist/safe-bash/opt-in/commands/install/mode.js +71 -0
  218. package/dist/safe-bash/opt-in/commands/install/options.d.ts +36 -0
  219. package/dist/safe-bash/opt-in/commands/install/options.js +27 -0
  220. package/dist/safe-bash/opt-in/commands/shuf/args.js +179 -0
  221. package/dist/safe-bash/opt-in/commands/shuf/index.d.ts +6 -0
  222. package/dist/safe-bash/opt-in/commands/shuf/index.js +20 -0
  223. package/dist/safe-bash/opt-in/commands/shuf/input.js +93 -0
  224. package/dist/safe-bash/opt-in/commands/shuf/options.d.ts +9 -0
  225. package/dist/safe-bash/opt-in/commands/shuf/options.js +8 -0
  226. package/dist/safe-bash/opt-in/commands/shuf/random.js +114 -0
  227. package/dist/safe-bash/opt-in/commands/shuf/shuf.d.ts +3 -0
  228. package/dist/safe-bash/opt-in/commands/shuf/shuf.js +230 -0
  229. package/dist/safe-bash/opt-in/commands/shuf/usage.js +24 -0
  230. package/dist/safe-bash/opt-in/commands/truncate/arguments.js +186 -0
  231. package/dist/safe-bash/opt-in/commands/truncate/index.d.ts +9 -0
  232. package/dist/safe-bash/opt-in/commands/truncate/index.js +244 -0
  233. package/dist/safe-bash/opt-in/commands/yes/index.d.ts +11 -0
  234. package/dist/safe-bash/opt-in/commands/yes/index.js +167 -0
  235. package/dist/safe-bash/opt-in/commands/yq/arguments.js +177 -0
  236. package/dist/safe-bash/opt-in/commands/yq/evaluate.js +564 -0
  237. package/dist/safe-bash/opt-in/commands/yq/expression.js +183 -0
  238. package/dist/safe-bash/opt-in/commands/yq/inplace.js +65 -0
  239. package/dist/safe-bash/opt-in/commands/yq/mike.d.ts +9 -0
  240. package/dist/safe-bash/opt-in/commands/yq/mike.js +192 -0
  241. package/dist/safe-bash/opt-in/commands/yq/native-encoder.js +165 -0
  242. package/dist/safe-bash/opt-in/commands/yq/native-work.d.ts +44 -0
  243. package/dist/safe-bash/opt-in/commands/yq/native-work.js +188 -0
  244. package/dist/safe-bash/opt-in/commands/yq/nodes.js +621 -0
  245. package/dist/safe-bash/opt-in/entrypoints/arrays.d.ts +1 -0
  246. package/dist/safe-bash/opt-in/entrypoints/arrays.js +1 -0
  247. package/dist/safe-bash/opt-in/entrypoints/cmp.d.ts +2 -0
  248. package/dist/safe-bash/opt-in/entrypoints/cmp.js +1 -0
  249. package/dist/safe-bash/opt-in/entrypoints/dd.d.ts +2 -0
  250. package/dist/safe-bash/opt-in/entrypoints/dd.js +1 -0
  251. package/dist/safe-bash/opt-in/entrypoints/devices.d.ts +2 -0
  252. package/dist/safe-bash/opt-in/entrypoints/devices.js +1 -0
  253. package/dist/safe-bash/opt-in/entrypoints/install.d.ts +2 -0
  254. package/dist/safe-bash/opt-in/entrypoints/install.js +1 -0
  255. package/dist/safe-bash/opt-in/entrypoints/jobs.d.ts +1 -0
  256. package/dist/safe-bash/opt-in/entrypoints/jobs.js +1 -0
  257. package/dist/safe-bash/opt-in/entrypoints/mapfile.d.ts +1 -0
  258. package/dist/safe-bash/opt-in/entrypoints/mapfile.js +1 -0
  259. package/dist/safe-bash/opt-in/entrypoints/read.d.ts +2 -0
  260. package/dist/safe-bash/opt-in/entrypoints/read.js +1 -0
  261. package/dist/safe-bash/opt-in/entrypoints/shuf.d.ts +2 -0
  262. package/dist/safe-bash/opt-in/entrypoints/shuf.js +1 -0
  263. package/dist/safe-bash/opt-in/entrypoints/trap.d.ts +2 -0
  264. package/dist/safe-bash/opt-in/entrypoints/trap.js +1 -0
  265. package/dist/safe-bash/opt-in/entrypoints/truncate.d.ts +2 -0
  266. package/dist/safe-bash/opt-in/entrypoints/truncate.js +1 -0
  267. package/dist/safe-bash/opt-in/entrypoints/yes.d.ts +2 -0
  268. package/dist/safe-bash/opt-in/entrypoints/yes.js +1 -0
  269. package/dist/safe-bash/opt-in/entrypoints/yq.d.ts +3 -0
  270. package/dist/safe-bash/opt-in/entrypoints/yq.js +1 -0
  271. package/dist/safe-bash/opt-in/fs/devices/index.d.ts +8 -0
  272. package/dist/safe-bash/opt-in/fs/devices/index.js +292 -0
  273. package/dist/safe-bash/opt-in/optional.d.ts +28 -0
  274. package/dist/safe-bash/opt-in/optional.js +14 -0
  275. package/dist/safe-bash/opt-in/shell/extensions/arrays/index.d.ts +2 -0
  276. package/dist/safe-bash/opt-in/shell/extensions/arrays/index.js +4 -0
  277. package/dist/safe-bash/opt-in/shell/extensions/jobs/index.d.ts +2 -0
  278. package/dist/safe-bash/opt-in/shell/extensions/jobs/index.js +291 -0
  279. package/dist/safe-bash/opt-in/shell/extensions/jobs/state.js +374 -0
  280. package/dist/safe-bash/opt-in/shell/extensions/mapfile/index.d.ts +24 -0
  281. package/dist/safe-bash/opt-in/shell/extensions/mapfile/index.js +338 -0
  282. package/dist/safe-bash/opt-in/shell/extensions/read/index.d.ts +5 -0
  283. package/dist/safe-bash/opt-in/shell/extensions/read/index.js +351 -0
  284. package/dist/safe-bash/opt-in/shell/extensions/trap/index.d.ts +9 -0
  285. package/dist/safe-bash/opt-in/shell/extensions/trap/index.js +210 -0
  286. package/dist/safe-bash/optional-host.d.ts +5 -0
  287. package/dist/safe-bash/optional-host.d.ts.map +1 -0
  288. package/dist/safe-bash/optional-host.js +3 -0
  289. package/dist/safe-bash/optional-host.js.map +1 -0
  290. package/dist/safe-bash/shell/arrays/bindings.d.ts +15 -5
  291. package/dist/safe-bash/shell/arrays/bindings.d.ts.map +1 -1
  292. package/dist/safe-bash/shell/arrays/bindings.js +131 -23
  293. package/dist/safe-bash/shell/arrays/bindings.js.map +1 -1
  294. package/dist/safe-bash/shell/arrays/ledger.d.ts +1 -0
  295. package/dist/safe-bash/shell/arrays/ledger.d.ts.map +1 -1
  296. package/dist/safe-bash/shell/arrays/ledger.js +19 -0
  297. package/dist/safe-bash/shell/arrays/ledger.js.map +1 -1
  298. package/dist/safe-bash/shell/arrays/state.d.ts.map +1 -1
  299. package/dist/safe-bash/shell/arrays/state.js +3 -1
  300. package/dist/safe-bash/shell/arrays/state.js.map +1 -1
  301. package/dist/safe-bash/shell/arrays/syntax.d.ts +4 -1
  302. package/dist/safe-bash/shell/arrays/syntax.d.ts.map +1 -1
  303. package/dist/safe-bash/shell/arrays/syntax.js +3 -3
  304. package/dist/safe-bash/shell/arrays/syntax.js.map +1 -1
  305. package/dist/safe-bash/shell/conditional.js +1 -1
  306. package/dist/safe-bash/shell/descriptors.d.ts +31 -0
  307. package/dist/safe-bash/shell/descriptors.d.ts.map +1 -0
  308. package/dist/safe-bash/shell/descriptors.js +234 -0
  309. package/dist/safe-bash/shell/descriptors.js.map +1 -0
  310. package/dist/safe-bash/shell/diagnostic-name-ranges.d.ts +2 -0
  311. package/dist/safe-bash/shell/diagnostic-name-ranges.d.ts.map +1 -0
  312. package/dist/safe-bash/shell/diagnostic-name-ranges.js +717 -0
  313. package/dist/safe-bash/shell/diagnostic-name-ranges.js.map +1 -0
  314. package/dist/safe-bash/shell/diagnostic-name.d.ts +3 -0
  315. package/dist/safe-bash/shell/diagnostic-name.d.ts.map +1 -0
  316. package/dist/safe-bash/shell/diagnostic-name.js +89 -0
  317. package/dist/safe-bash/shell/diagnostic-name.js.map +1 -0
  318. package/dist/safe-bash/shell/display.js +1 -1
  319. package/dist/safe-bash/shell/display.js.map +1 -1
  320. package/dist/safe-bash/shell/extensions.d.ts +188 -0
  321. package/dist/safe-bash/shell/extensions.d.ts.map +1 -0
  322. package/dist/safe-bash/shell/extensions.js +141 -0
  323. package/dist/safe-bash/shell/extensions.js.map +1 -0
  324. package/dist/safe-bash/shell/input.d.ts +66 -14
  325. package/dist/safe-bash/shell/input.d.ts.map +1 -1
  326. package/dist/safe-bash/shell/input.js +947 -173
  327. package/dist/safe-bash/shell/input.js.map +1 -1
  328. package/dist/safe-bash/shell/parser.d.ts +38 -6
  329. package/dist/safe-bash/shell/parser.d.ts.map +1 -1
  330. package/dist/safe-bash/shell/parser.js +339 -52
  331. package/dist/safe-bash/shell/parser.js.map +1 -1
  332. package/dist/safe-bash/shell/runtime.d.ts +92 -20
  333. package/dist/safe-bash/shell/runtime.d.ts.map +1 -1
  334. package/dist/safe-bash/shell/runtime.js +2547 -689
  335. package/dist/safe-bash/shell/runtime.js.map +1 -1
  336. package/dist/safe-bash/shell/shell.d.ts.map +1 -1
  337. package/dist/safe-bash/shell/shell.js +52 -21
  338. package/dist/safe-bash/shell/shell.js.map +1 -1
  339. package/dist/safe-bash/shell/types.d.ts +4 -0
  340. package/dist/safe-bash/shell/types.d.ts.map +1 -1
  341. package/dist/safe-bash/shell/types.js.map +1 -1
  342. package/package.json +92 -4
  343. package/dist/safe-bash/chunks/chunk-3BZ5NQ73.js.map +0 -7
  344. package/dist/safe-bash/chunks/chunk-4DBWBEU7.js +0 -194
  345. package/dist/safe-bash/chunks/chunk-4DBWBEU7.js.map +0 -7
  346. package/dist/safe-bash/chunks/chunk-CXMIIXJA.js +0 -178
  347. package/dist/safe-bash/chunks/chunk-CXMIIXJA.js.map +0 -7
  348. package/dist/safe-bash/chunks/chunk-K7W6Q6FN.js.map +0 -7
  349. /package/dist/safe-bash/chunks/{bz2-B2RXT4EX.js.map → bz2-ACU4EOVE.js.map} +0 -0
  350. /package/dist/safe-bash/chunks/{chunk-RNKTWFEM.js.map → chunk-CDBQXRWL.js.map} +0 -0
  351. /package/dist/safe-bash/chunks/{chunk-AFH57PPL.js.map → chunk-IEKESMO4.js.map} +0 -0
  352. /package/dist/safe-bash/chunks/{chunk-DPJWEGIX.js.map → chunk-JLBIUYT3.js.map} +0 -0
  353. /package/dist/safe-bash/chunks/{chunk-PVJJFCGA.js.map → chunk-M3GPCYSP.js.map} +0 -0
  354. /package/dist/safe-bash/chunks/{chunk-2KL6W6NB.js.map → chunk-O2EVBRKF.js.map} +0 -0
  355. /package/dist/safe-bash/chunks/{chunk-C7QNJ3D4.js.map → chunk-WYTI64IU.js.map} +0 -0
  356. /package/dist/safe-bash/chunks/{xz-AVXFDXW4.js.map → xz-U4QDTPZL.js.map} +0 -0
  357. /package/dist/safe-bash/chunks/{zstd-R6RPHJYO.js.map → zstd-OG5RPYXO.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../op/src/encoding-runtime.ts", "../../../../op/src/encoding.ts", "../../../../op/src/catalog.ts", "../../../../op/src/duration.ts", "../../../../op/src/file-mode.ts", "../../../../op/src/csv-values.ts", "../../../../op/src/flag-values.ts", "../../../../op/src/completion-resolver.ts", "../../../../op/src/completion.ts", "../../../../op/src/help-renderer.ts", "../../../../op/src/plugin-catalog.ts", "../../../../op/src/plugin-list-output.ts", "../../../../op/src/cli.ts", "../../../../op/src/handler-preparation.ts", "../../../../op/src/secrets.ts", "../../../../op/src/environment.ts", "../../../../op/src/environment-commands.ts", "../../../../op/src/documents.ts", "../../../../op/src/references.ts", "../../../../op/src/crypto-node.ts", "../../../../op/src/otp.ts", "../../../../op/src/auth.ts", "../../../../op/src/selectors.ts", "../../../../op/src/permissions.ts", "../../../../op/src/plugin-scopes.ts", "../../../../op/src/admin.ts", "../../../../op/src/vault-options.ts", "../../../../op/src/templates.ts", "../../../../op/src/plugin-selection.ts", "../../../../op/src/object-vaults.ts", "../../../../op/src/bindings.ts", "../../../../op/src/backend.ts", "../../../../op/src/items.ts", "../../../../op/src/index.ts", "../../../src/contracts/io.ts", "../../../src/contracts/path.ts", "../../../src/commands/op/index.ts"],
4
- "sourcesContent": ["// Keep encoding registration and implementation types out of the public codec declaration.\nimport \"@kayahr/text-encoding/encodings/shift_jis\";\nimport \"@kayahr/text-encoding/encodings/gbk\";\nexport { TextDecoder, createTextEncoder } from \"@kayahr/text-encoding/no-encodings\";\n", "import { TextDecoder, createTextEncoder } from \"./encoding-runtime.js\";\n\nexport interface OpTextCodec {\n encode(input?: string): Uint8Array<ArrayBuffer>;\n decoder(options?: { fatal?: boolean; ignoreBOM?: boolean }): {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n decode(input?: ArrayBufferLike | ArrayBufferView, options?: { stream?: boolean }): string;\n };\n}\n\nexport function createOpTextCodec(value: unknown): OpTextCodec {\n const aliases: Readonly<Record<string, string>> = {\n \"\": \"utf-8\", shift_jis: \"shift_jis\", \"shift-jis\": \"shift_jis\",\n shiftjis: \"shift_jis\", sjis: \"shift_jis\", gbk: \"gbk\",\n };\n const label = value === undefined ? \"\" : typeof value === \"string\" ? value.toLowerCase() : undefined;\n if (label === undefined || !Object.hasOwn(aliases, label)) throw new Error(\"unsupported character-encoding\");\n const encoding = aliases[label]!;\n const encoder = createTextEncoder(encoding);\n return {\n encode: encoder.encode.bind(encoder),\n decoder: (options) => new TextDecoder(encoding, options),\n };\n}\n", "export type OpFlagKind = \"string\" | \"boolean\" | \"optional\" | \"array\" | \"csv\";\n\nexport interface OpFlagDefinition {\n readonly kind: OpFlagKind;\n readonly alias?: string;\n readonly env?: string;\n readonly invalidEnv?: \"ignore\";\n readonly longAliases?: readonly string[];\n readonly availability?: \"beta\";\n readonly description?: string;\n readonly metavar?: string;\n readonly defaultDisplay?: string;\n readonly helpVisible?: boolean;\n readonly completionVisible?: boolean;\n readonly completionRequired?: boolean;\n readonly completionRejectEmpty?: boolean;\n readonly allowedValues?: readonly string[];\n readonly normalizeValues?: \"trim-lowercase\" | \"lowercase\";\n readonly valueSyntax?: \"duration\" | \"go-duration\" | \"file-mode\" | \"csv\" | \"password-recipe\";\n}\n\nexport interface OpCatalogCommand {\n readonly path: readonly string[];\n readonly flags: Readonly<Record<string, OpFlagDefinition>>;\n readonly aliases: readonly string[];\n readonly availability: \"stable\" | \"beta\" | \"extension\";\n readonly summary: string;\n readonly description: string;\n readonly synopsis: string;\n readonly examples?: string;\n readonly helpGroup: \"management\" | \"commands\";\n readonly helpOrder: number;\n readonly args?: Readonly<{ min: number; max?: number; stdinAlternative?: boolean }>;\n}\n\ninterface NodeDeclaration {\n readonly path: string;\n readonly summary: string;\n readonly description?: string;\n readonly synopsis?: string;\n readonly examples?: string;\n readonly helpGroup?: \"management\" | \"commands\";\n readonly helpOrder?: number;\n readonly flags?: string;\n readonly flagOverrides?: Readonly<Record<string, { [Key in keyof OpFlagDefinition]?: OpFlagDefinition[Key] | null }>>;\n readonly aliases?: readonly string[];\n readonly availability?: OpCatalogCommand[\"availability\"];\n readonly args?: OpCatalogCommand[\"args\"];\n}\n\nexport const opReferenceUrl = \"https://www.1password.dev/cli/reference\";\nexport const opMetadataVersion = \"2.39.0\";\n\nfunction freezeFlag(flag: OpFlagDefinition): OpFlagDefinition {\n return Object.freeze({ ...flag, ...(flag.longAliases ? { longAliases: Object.freeze([...flag.longAliases]) } : {}), ...(flag.allowedValues ? { allowedValues: Object.freeze([...flag.allowedValues]) } : {}) });\n}\n\nconst vaultPermissionValues = Object.freeze([\n \"allow_viewing\", \"allow_editing\", \"allow_managing\", \"view_items\", \"create_items\",\n \"view_and_copy_passwords\", \"edit_items\", \"archive_items\", \"delete_items\",\n \"view_item_history\", \"import_items\", \"export_items\", \"copy_and_share_items\",\n \"print_items\", \"manage_vault\", \"read_items\", \"write_items\", \"share_items\",\n]);\n\nexport const opGlobalFlags: Readonly<Record<string, OpFlagDefinition>> = Object.freeze(Object.fromEntries(\n Object.entries({\n \"account\": {\n \"kind\": \"string\",\n \"env\": \"OP_ACCOUNT\",\n \"description\": \"Select the account to execute the command by account shorthand, sign-in address, account ID, or user ID. For a list of available accounts, run 'op account list'. Can be set as the OP_ACCOUNT environment variable.\",\n \"metavar\": \"account\"\n },\n \"cache\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_CACHE\",\n \"description\": \"Store and use cached information. Caching is enabled by default on UNIX-like systems. Caching is not available on Windows. Options: true, false. Can also be set with the OP_CACHE environment variable.\",\n \"metavar\": \"\",\n \"defaultDisplay\": \"true\"\n },\n \"config\": {\n \"kind\": \"string\",\n \"env\": \"OP_CONFIG_DIR\",\n \"description\": \"Use this configuration directory.\",\n \"metavar\": \"directory\"\n },\n \"debug\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_DEBUG\",\n \"description\": \"Enable debug mode. Can also be enabled by setting the OP_DEBUG environment variable to true.\",\n \"metavar\": \"\"\n },\n \"encoding\": {\n \"kind\": \"string\",\n \"description\": \"Use this character encoding type. Default: UTF-8. Supported: SHIFT_JIS, gbk.\",\n \"metavar\": \"type\"\n },\n \"format\": {\n \"kind\": \"string\",\n \"env\": \"OP_FORMAT\",\n \"description\": \"Use this output format. Can be 'human-readable' or 'json'. Can be set as the OP_FORMAT environment variable.\",\n \"metavar\": \"string\",\n \"defaultDisplay\": \"\\\"human-readable\\\"\"\n },\n \"help\": {\n \"kind\": \"boolean\",\n \"alias\": \"h\",\n \"description\": \"Get help for op.\",\n \"metavar\": \"\"\n },\n \"iso-timestamps\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_ISO_TIMESTAMPS\",\n \"invalidEnv\": \"ignore\",\n \"description\": \"Format timestamps according to ISO 8601 / RFC 3339. Can be set as the OP_ISO_TIMESTAMPS environment variable.\",\n \"metavar\": \"\"\n },\n \"no-color\": {\n \"kind\": \"boolean\",\n \"description\": \"Print output without color.\",\n \"metavar\": \"\"\n },\n \"session\": {\n \"kind\": \"string\",\n \"env\": \"OP_SESSION\",\n \"description\": \"Authenticate with this session token. 1Password CLI outputs session tokens for successful 'op signin' commands when 1Password app integration is not enabled.\",\n \"metavar\": \"token\"\n }\n} satisfies Record<string, OpFlagDefinition>).map(([name, flag]) => [name, freezeFlag(flag)]),\n));\n\nexport const opRootFlags: Readonly<Record<string, OpFlagDefinition>> = Object.freeze(Object.fromEntries(\n Object.entries({\n \"version\": {\n \"kind\": \"boolean\",\n \"alias\": \"v\",\n \"description\": \"version for op\",\n \"metavar\": \"\"\n }\n} satisfies Record<string, OpFlagDefinition>).map(([name, flag]) => [name, freezeFlag(flag)]),\n));\n\nconst definitions: Readonly<Record<string, OpFlagDefinition>> = {\n \"environment\": { \"kind\": \"array\", \"availability\": \"beta\", \"description\": \"Read variables from these Environments before starting the process.\", \"metavar\": \"strings\" },\n \"file-mode\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"file-mode\",\n \"description\": \"Set filemode for the output file. It is ignored without the --out-file flag.\",\n \"metavar\": \"filemode\",\n \"defaultDisplay\": \"0600\"\n },\n \"force\": {\n \"kind\": \"boolean\",\n \"alias\": \"f\",\n \"description\": \"Do not prompt for confirmation.\",\n \"metavar\": \"\"\n },\n \"in-file\": {\n \"kind\": \"string\",\n \"alias\": \"i\",\n \"description\": \"The filename of a template file to inject.\",\n \"metavar\": \"string\"\n },\n \"out-file\": {\n \"kind\": \"string\",\n \"alias\": \"o\",\n \"description\": \"Write the injected template to a file instead of stdout.\",\n \"metavar\": \"string\"\n },\n \"no-newline\": {\n \"kind\": \"boolean\",\n \"alias\": \"n\",\n \"description\": \"Do not print a new line after the secret.\",\n \"metavar\": \"\"\n },\n \"env-file\": {\n \"kind\": \"array\",\n \"description\": \"Enable Dotenv integration with specific Dotenv files to parse. For example: --env-file=.env.\",\n \"metavar\": \"stringArray\"\n },\n \"no-masking\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_RUN_NO_MASKING\",\n \"description\": \"Disable masking of secrets on stdout and stderr.\",\n \"metavar\": \"\"\n },\n \"raw\": {\n \"kind\": \"boolean\",\n \"description\": \"Only return the session token.\",\n \"metavar\": \"\"\n },\n \"all\": {\n \"kind\": \"boolean\",\n \"description\": \"Sign out of all signed-in accounts.\",\n \"metavar\": \"\"\n },\n \"forget\": {\n \"kind\": \"boolean\",\n \"description\": \"Remove the details for a 1Password account from this device.\",\n \"metavar\": \"\"\n },\n \"channel\": {\n \"kind\": \"string\",\n \"description\": \"Look for updates from a specific channel. allowed: stable, beta\",\n \"metavar\": \"string\"\n },\n \"directory\": {\n \"kind\": \"string\",\n \"description\": \"Download the update to this ''path''.\",\n \"metavar\": \"string\"\n },\n \"address\": {\n \"kind\": \"string\",\n \"description\": \"The sign-in address for your account.\",\n \"metavar\": \"string\"\n },\n \"email\": {\n \"kind\": \"string\",\n \"description\": \"The email address associated with your account.\",\n \"metavar\": \"string\"\n },\n \"shorthand\": {\n \"kind\": \"string\",\n \"description\": \"Set a custom account shorthand for your account.\",\n \"metavar\": \"string\"\n },\n \"signin\": {\n \"kind\": \"boolean\",\n \"description\": \"Immediately sign in to the added account.\",\n \"metavar\": \"\"\n },\n \"file-name\": {\n \"kind\": \"string\",\n \"description\": \"Set the file's name.\",\n \"metavar\": \"name\"\n },\n \"tags\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Set the tags to the specified (comma-separated) values.\",\n \"metavar\": \"tags\"\n },\n \"title\": {\n \"kind\": \"string\",\n \"description\": \"Set the document item's title.\",\n \"metavar\": \"title\"\n },\n \"vault\": {\n \"kind\": \"string\",\n \"description\": \"Look for the item in this vault.\",\n \"metavar\": \"string\"\n },\n \"include-archive\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_INCLUDE_ARCHIVE\",\n \"description\": \"Include document items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\",\n \"metavar\": \"\"\n },\n \"archive\": {\n \"kind\": \"boolean\",\n \"description\": \"Move the document to the Archive.\",\n \"metavar\": \"\"\n },\n \"expires-in\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"duration\",\n \"description\": \"Set how the long the events-api token is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\",\n \"metavar\": \"duration\"\n },\n \"features\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Set the comma-separated list of features the integration token can be used for. Options: 'signinattempts', 'itemusages', 'auditevents'.\",\n \"metavar\": \"features\"\n },\n \"description\": {\n \"kind\": \"string\",\n \"description\": \"Set the group's description.\",\n \"metavar\": \"string\"\n },\n \"name\": {\n \"kind\": \"string\",\n \"description\": \"Change the group's name.\",\n \"metavar\": \"name\"\n },\n \"user\": {\n \"kind\": \"string\",\n \"description\": \"List groups that a user belongs to.\",\n \"metavar\": \"user\"\n },\n \"category\": {\n \"kind\": \"string\",\n \"description\": \"Set the item's category.\",\n \"metavar\": \"category\"\n },\n \"dry-run\": {\n \"kind\": \"boolean\",\n \"description\": \"Test the command and output a preview of the resulting item.\",\n \"metavar\": \"\"\n },\n \"favorite\": {\n \"kind\": \"boolean\",\n \"description\": \"Add item to favorites.\",\n \"metavar\": \"\"\n },\n \"generate-password\": {\n \"kind\": \"optional\",\n \"valueSyntax\": \"password-recipe\",\n \"description\": \"Add a randomly-generated password to a Login or Password item.\",\n \"metavar\": \"recipe\"\n },\n \"reveal\": {\n \"kind\": \"boolean\",\n \"description\": \"Don't conceal sensitive fields.\",\n \"metavar\": \"\"\n },\n \"ssh-generate-key\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"ed25519\", \"rsa\", \"rsa2048\", \"rsa3072\", \"rsa4096\", \"rsa-2048\", \"rsa-3072\", \"rsa-4096\"],\n \"normalizeValues\": \"lowercase\",\n \"description\": \"The type of SSH key to create: Ed25519 or RSA. For RSA, specify 2048, 3072, or 4096 (default) bits. Possible values: 'ed25519', 'rsa', 'rsa2048', 'rsa3072', 'rsa4096'.\",\n \"metavar\": \"\",\n \"defaultDisplay\": \"Ed25519\"\n },\n \"template\": {\n \"kind\": \"string\",\n \"description\": \"Specify the file path to read an item template from.\",\n \"metavar\": \"string\"\n },\n \"url\": {\n \"kind\": \"string\",\n \"description\": \"Set the URL associated with the item\",\n \"metavar\": \"URL\"\n },\n \"fields\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"longAliases\": [\n \"field\"\n ],\n \"description\": \"Return data from specific fields. Use 'label=' to get the field by name or 'type=' to filter fields by type. Specify multiple in a comma-separated list.\",\n \"metavar\": \"strings\"\n },\n \"otp\": {\n \"kind\": \"boolean\",\n \"description\": \"Output the primary one-time password for this item.\",\n \"metavar\": \"\"\n },\n \"share-link\": {\n \"kind\": \"boolean\",\n \"description\": \"Get a shareable link for the item.\",\n \"metavar\": \"\"\n },\n \"categories\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Only list items in these categories (comma-separated).\",\n \"metavar\": \"categories\"\n },\n \"long\": {\n \"kind\": \"boolean\",\n \"description\": \"Output a more detailed item list.\",\n \"metavar\": \"\"\n },\n \"current-vault\": {\n \"kind\": \"string\",\n \"description\": \"Vault where the item is currently saved.\",\n \"metavar\": \"string\"\n },\n \"destination-vault\": {\n \"kind\": \"string\",\n \"description\": \"The vault you want to move the item to.\",\n \"metavar\": \"string\"\n },\n \"emails\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Email addresses to share with.\",\n \"metavar\": \"strings\"\n },\n \"view-once\": {\n \"kind\": \"boolean\",\n \"description\": \"Expire link after a single view.\",\n \"metavar\": \"\"\n },\n \"can-create-vaults\": {\n \"kind\": \"boolean\",\n \"description\": \"Allow the service account to create new vaults.\",\n \"metavar\": \"\"\n },\n \"language\": {\n \"kind\": \"string\",\n \"description\": \"Provide the user's account language.\",\n \"metavar\": \"string\",\n \"defaultDisplay\": \"\\\"en\\\"\"\n },\n \"fingerprint\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the user's public key fingerprint.\",\n \"metavar\": \"\"\n },\n \"me\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the authenticated user's details.\",\n \"metavar\": \"\"\n },\n \"public-key\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the user's public key.\",\n \"metavar\": \"\"\n },\n \"travel-mode\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"on\", \"off\"],\n \"description\": \"Turn Travel Mode on or off for the user.\",\n \"metavar\": \"on|off\",\n \"defaultDisplay\": \"off\"\n },\n \"deauthorize-devices-after\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"go-duration\",\n \"description\": \"Deauthorize the user's devices after a time (rounded down to seconds).\",\n \"metavar\": \"duration\"\n },\n \"group\": {\n \"kind\": \"string\",\n \"description\": \"The group to receive access.\",\n \"metavar\": \"group\"\n },\n \"allow-admins-to-manage\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"true\", \"false\", \"TRUE\", \"FALSE\", \"True\", \"False\", \"t\", \"f\", \"T\", \"F\", \"1\", \"0\"],\n \"description\": \"Set whether administrators can manage the vault. If not provided, the default policy for the account applies.\",\n \"metavar\": \"true|false\"\n },\n \"icon\": {\n \"kind\": \"string\",\n \"description\": \"Set the vault icon.\",\n \"metavar\": \"string\"\n },\n \"permission\": {\n \"kind\": \"csv\",\n \"allowedValues\": vaultPermissionValues,\n \"normalizeValues\": \"trim-lowercase\",\n \"description\": \"List only vaults that the specified user/group has this permission for.\",\n \"metavar\": \"permissions\"\n },\n \"all-servers\": {\n \"kind\": \"boolean\",\n \"description\": \"Grant access to all current and future servers in the authenticated account.\",\n \"metavar\": \"\"\n },\n \"server\": {\n \"kind\": \"string\",\n \"description\": \"Only look for tokens for this 1Password Connect server.\",\n \"metavar\": \"string\"\n },\n \"vaults\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Grant the Connect server access to these vaults.\",\n \"metavar\": \"strings\"\n },\n \"role\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"manager\", \"member\"],\n \"normalizeValues\": \"lowercase\",\n \"description\": \"Specify the user's role as a member or manager. Default: member.\",\n \"metavar\": \"string\"\n },\n \"no-input\": {\n \"kind\": \"boolean\",\n \"description\": \"Do not prompt for input on interactive terminal.\",\n \"metavar\": \"input\"\n },\n \"permissions\": {\n \"kind\": \"csv\",\n \"allowedValues\": vaultPermissionValues,\n \"normalizeValues\": \"trim-lowercase\",\n \"description\": \"The permissions to grant to the group.\",\n \"metavar\": \"permissions\"\n },\n \"vars\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Capture only these comma-separated variable names, including names that are unset.\",\n \"metavar\": \"strings\"\n },\n \"shell\": {\n \"kind\": \"string\",\n \"description\": \"Print restoration commands for bash, zsh, sh, fish, or powershell.\",\n \"metavar\": \"string\"\n }\n};\n\nconst declarations: readonly NodeDeclaration[] = [\n {\"path\":\"\",\"summary\":\"Portable op-compatible command interface\",\"description\":\"This portable implementation exposes an op-compatible command interface with a configurable backend and host approval policies.\\n\\nStable command metadata targets 1Password CLI 2.39.0. Beta commands and local extensions are identified separately.\"},\n {\"path\":\"account\",\"summary\":\"Manage your locally configured 1Password accounts\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"connect\",\"summary\":\"Manage Connect server instances and tokens in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"document\",\"summary\":\"Perform CRUD operations on Document items in your vaults\",\"helpGroup\":\"management\",\"helpOrder\":2},\n {\"path\":\"events-api\",\"summary\":\"Manage Events API integrations in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":3},\n {\"path\":\"group\",\"summary\":\"Manage the groups in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":4},\n {\"path\":\"item\",\"summary\":\"Perform CRUD operations on the 1Password items in your vaults\",\"helpGroup\":\"management\",\"helpOrder\":5},\n {\"path\":\"plugin\",\"summary\":\"Manage the shell plugins you use to authenticate third-party CLIs\",\"helpGroup\":\"management\",\"helpOrder\":6},\n {\"path\":\"service-account\",\"summary\":\"Manage service accounts\",\"helpGroup\":\"management\",\"helpOrder\":7},\n {\"path\":\"user\",\"summary\":\"Manage users within this 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":8},\n {\"path\":\"vault\",\"summary\":\"Manage permissions and perform CRUD operations on your 1Password vaults\",\"helpGroup\":\"management\",\"helpOrder\":9},\n {\"path\":\"completion\",\"summary\":\"Generate shell completion information\",\"synopsis\":\"<shell> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"description\":\"Print a shell adapter for Bash, Zsh, fish, or PowerShell. Source the generated text in the selected shell to activate command and flag completion.\\n\\nCompletion callbacks return catalog metadata without loading a backend. Backend-backed argument suggestions are not provided.\",\"examples\":\"Load Bash completions:\\n\\n\\tsource <(op completion bash)\\n\\nLoad fish completions:\\n\\n\\top completion fish | source\"},\n {\"path\":\"inject\",\"summary\":\"Inject secrets into a config file\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"file-mode force in-file out-file\",\"description\":\"Substitute secret references inside a template. Templates come from stdin or --in-file; output goes to stdout or --out-file.\\n\\nThe result can contain plaintext secrets. Host authorization may deny the operation before resolution begins.\",\"examples\":\"Render a template into a separate file:\\n\\n\\top inject --in-file ./example.conf.tpl --out-file ./example.conf\"},\n {\"path\":\"read\",\"summary\":\"Read a secret reference\",\"synopsis\":\"<reference> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"file-mode force no-newline out-file\",\"flagOverrides\":{\"out-file\":{\"description\":\"Write the secret to a file instead of stdout.\"}},\"description\":\"Resolve an op:// secret reference and write its value. References may address fields or attachments and can include supported attribute queries.\\n\\nOutput is plaintext or raw attachment bytes, not a secrecy boundary. --out-file redirects the result to a file, and --no-newline suppresses a trailing newline for text.\",\"examples\":\"Resolve a password field:\\n\\n\\top read op://example-vault/example-item/password\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"run\",\"summary\":\"Pass secrets as environment variables to a process\",\"synopsis\":\"-- <command> <command>... [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"env-file environment no-masking\",\"description\":\"Start a child command with resolved secret values in its environment. Put -- before the child command so its options are not parsed as op flags.\\n\\nDotenv input remains UTF-8. Output masking is enabled unless --no-masking is requested; masking is not a substitute for keeping child output confidential.\",\"examples\":\"Pass resolved environment values to a child:\\n\\n\\top run --env-file ./example.env -- ./example-worker\",\"args\":{\"min\":1}},\n {\"path\":\"signin\",\"summary\":\"Sign in to a 1Password account\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"force raw\",\"flagOverrides\":{\"force\":{\"description\":\"Ignore warnings and print raw output from this command.\"}},\"description\":\"Request authentication from the configured backend. Manual mode returns a session token for subsequent operations; app integration delegates authentication to a configured host hook. Backend capabilities determine which authentication methods are available.\"},\n {\"path\":\"signout\",\"summary\":\"Sign out of a 1Password account\",\"helpGroup\":\"commands\",\"helpOrder\":5,\"flags\":\"all forget\"},\n {\"path\":\"update\",\"summary\":\"Check for and download updates.\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"flags\":\"channel directory\"},\n {\"path\":\"whoami\",\"summary\":\"Get information about a signed-in account\",\"helpGroup\":\"commands\",\"helpOrder\":7,\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"account add\",\"summary\":\"Add an account to sign in to for the first time\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"address email raw shorthand signin\"},\n {\"path\":\"account get\",\"summary\":\"Get details about your account\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"account list\",\"summary\":\"List users and accounts set up on this device\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"account forget\",\"summary\":\"Remove a 1Password account from this device\",\"synopsis\":\"[ <account> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"all\",\"flagOverrides\":{\"all\":{\"description\":\"Forget all authenticated accounts.\"}}},\n {\"path\":\"connect group\",\"summary\":\"Manage group access to Secrets Automation\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"connect server\",\"summary\":\"Manage Connect servers\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"connect token\",\"summary\":\"Manage Connect server tokens\",\"helpGroup\":\"management\",\"helpOrder\":2},\n {\"path\":\"connect vault\",\"summary\":\"Manage Connect server vault access\",\"helpGroup\":\"management\",\"helpOrder\":3},\n {\"path\":\"document create\",\"summary\":\"Create a document item\",\"synopsis\":\"[{ <file> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"file-name tags title vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Save the document in this vault. Default: Private, Personal, or Employee, depending on your account type.\",\"metavar\":\"vault\"}},\"description\":\"Upload file bytes or read them from stdin when no file is given or the file argument is -. The file name and title can be supplied explicitly. Choose the destination with --vault.\\n\\nDocument uploads preserve their binary content.\"},\n {\"path\":\"document get\",\"summary\":\"Download a document\",\"synopsis\":\"{ <itemName> | <itemID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"file-mode force include-archive out-file vault\",\"flagOverrides\":{\"force\":{\"alias\":null,\"description\":\"Forcibly print an unintelligible document to an interactive terminal. If --out-file is specified, save the document to a file without prompting for confirmation.\"},\"out-file\":{\"description\":\"Save the document to the file path instead of stdout.\",\"metavar\":\"path\"},\"vault\":{\"description\":\"Look for the document in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Download the document as bytes. With no output path, bytes go to stdout; --out-file writes a file instead. --file-mode controls the output file mode.\\n\\n--force permits binary output to an interactive terminal and skips overwrite confirmation for a destination file. Document bytes are not text-transcoded.\",\"examples\":\"Save a document without interpreting its contents as text:\\n\\n\\top document get 'Example document' --out-file ./example-document.bin\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"document edit\",\"summary\":\"Edit a document item\",\"synopsis\":\"{ <itemName> | <itemID> } [{ <file> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"file-name tags title vault\",\"flagOverrides\":{\"tags\":{\"description\":\"Set the tags to the specified (comma-separated) values. An empty value removes all tags.\"},\"vault\":{\"description\":\"Look up document in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Replace the selected document's content using file bytes or stdin. File name, title, tags, and vault selectors remain separate from the binary payload.\"},\n {\"path\":\"document delete\",\"summary\":\"Delete or archive a document item\",\"synopsis\":\"[{ <itemName> | <itemID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"archive vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Delete the document in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"document list\",\"summary\":\"Get a list of documents\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"include-archive vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Only list documents in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"events-api create\",\"summary\":\"Set up an integration with the Events API\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"expires-in features\"},\n {\"path\":\"group user\",\"summary\":\"Manage group membership\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"group create\",\"summary\":\"Create a group\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"description\"},\n {\"path\":\"group get\",\"summary\":\"Get details about a group\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"group edit\",\"summary\":\"Edit a group's name or description\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"description name\",\"flagOverrides\":{\"description\":{\"description\":\"Change the group's description.\",\"metavar\":\"description\"}}},\n {\"path\":\"group delete\",\"summary\":\"Remove a group\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"group list\",\"summary\":\"List groups\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"user vault\",\"flagOverrides\":{\"vault\":{\"description\":\"List groups that have direct access to a vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"item template\",\"summary\":\"Manage templates\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"item create\",\"summary\":\"Create an item\",\"synopsis\":\"[ - ] [ <assignment>... ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"category dry-run favorite generate-password reveal ssh-generate-key tags template title url vault\",\"flagOverrides\":{\"title\":{\"description\":\"Set the item's title.\"},\"vault\":{\"description\":\"Save the item in this vault. Default: Private, Personal, or Employee, depending on your account type.\",\"metavar\":\"vault\"}},\"description\":\"Create an item from assignments, a JSON template file, or JSON received on stdin. A leading - selects stdin; it cannot be combined with --template. Assignments override matching template fields.\\n\\nAssignment syntax is [section.]field[type]=value. Escape punctuation in field and section names with a backslash. For confidential values, prefer a template or stdin over command-line assignments, which may remain in shell history.\\n\\nPassword generation accepts a recipe of length and character classes. SSH key generation accepts an explicit key type.\",\"examples\":\"Prepare a JSON template and create an item from it:\\n\\n\\top item template get Login --out-file ./example-login.json\\n\\top item create --template ./example-login.json --vault 'Example vault'\"},\n {\"path\":\"item get\",\"summary\":\"Get an item's details\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"fields include-archive otp reveal share-link vault\",\"flagOverrides\":{\"include-archive\":{\"description\":\"Include items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\"}},\"description\":\"Choose an item using its name, ID, or sharing link. The --vault selector narrows the lookup; service-account requests need a vault selection.\\n\\nFor batch input, pass - and provide selectors on stdin. JSON objects with id properties can also identify the requested items.\\n\\nUse --fields to select labels or types, --otp for the primary one-time password, and --format=json for structured output. Human output conceals sensitive fields unless --reveal is supplied. Use op read for the value behind a secret reference.\",\"examples\":\"Select fields by their labels:\\n\\n\\top item get 'Example item' --fields label=username,label=password --format=json\\n\\nSelect concealed fields:\\n\\n\\top item get 'Example item' --fields type=concealed\\n\\nRead a batch of item IDs:\\n\\n\\top item list --vault 'Example vault' --format=json | op item get -\",\"args\":{\"min\":0,\"max\":1,\"stdinAlternative\":true}},\n {\"path\":\"item edit\",\"summary\":\"Edit an item's details\",\"synopsis\":\"{ <itemName> | <itemID> | <shareLink> } [ <assignment> ... ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"dry-run favorite generate-password reveal tags template title url vault\",\"flagOverrides\":{\"dry-run\":{\"description\":\"Perform a dry run of the command and output a preview of the resulting item.\"},\"favorite\":{\"description\":\"Whether this item is a favorite item. Options: true, false\"},\"generate-password\":{\"description\":\"Give the item a randomly generated password.\"},\"tags\":{\"description\":\"Set the tags to the specified (comma-separated) values. An empty value will remove all tags.\"},\"template\":{\"description\":\"Specify the filepath to read an item template from.\"},\"title\":{\"description\":\"Set the item's title.\"},\"vault\":{\"description\":\"Edit the item in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Select the item first, then provide assignments or a JSON template containing the changes. Existing fields remain unless the update replaces or removes them. Use --dry-run to inspect the resulting item before writing it.\\n\\nAvoid placing confidential values directly in command arguments.\"},\n {\"path\":\"item delete\",\"summary\":\"Delete or archive an item\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"archive vault\",\"flagOverrides\":{\"archive\":{\"description\":\"Move the item to the Archive.\"}},\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"item list\",\"summary\":\"List items\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"categories favorite include-archive long tags vault\",\"flagOverrides\":{\"favorite\":{\"description\":\"Only list favorite items\"},\"include-archive\":{\"description\":\"Include items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\"},\"tags\":{\"description\":\"Only list items with these tags (comma-separated).\"},\"vault\":{\"description\":\"Only list items in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"item move\",\"summary\":\"Move an item between vaults\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":5,\"flags\":\"current-vault destination-vault reveal\",\"aliases\":[\"mv\"],\"flagOverrides\":{\"destination-vault\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"item share\",\"summary\":\"Share an item\",\"synopsis\":\"{ <itemName> | <itemID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"flags\":\"emails expires-in vault view-once\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Expire link after the duration specified in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\",\"longAliases\":[\"expiry\"],\"defaultDisplay\":\"7d\"}}},\n {\"path\":\"plugin credential\",\"summary\":\"Manage credentials for shell plugins\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"plugin list\",\"summary\":\"List all available shell plugins\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"aliases\":[\"ls\"]},\n {\"path\":\"plugin clear\",\"summary\":\"Clear shell plugin configuration\",\"synopsis\":\"<plugin-name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all force\",\"flagOverrides\":{\"all\":{\"description\":\"Clear all configurations for this plugin that apply to this directory and/or terminal session, including the global default.\"},\"force\":{\"description\":\"Apply immediately without asking for confirmation.\"}},\"aliases\":[\"reset\"],\"description\":\"Remove applicable plugin defaults. A single clear removes the active scope; --all includes the other applicable directory, terminal, and global defaults. Confirmation and host authorization are separate decisions: --force does not override authorization.\"},\n {\"path\":\"plugin init\",\"summary\":\"Configure a shell plugin\",\"synopsis\":\"[ <plugin-executable> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2},\n {\"path\":\"plugin inspect\",\"summary\":\"Inspect your existing shell plugin configurations\",\"synopsis\":\"[ <plugin-name> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"info\"]},\n {\"path\":\"plugin run\",\"summary\":\"Provision credentials from 1Password and run this command\",\"synopsis\":\"<command>... [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":4},\n {\"path\":\"service-account create\",\"summary\":\"Create a service account\",\"synopsis\":\"<serviceAccountName> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"can-create-vaults expires-in raw vault\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Set how long the service account is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, or (w)eeks.\"},\"raw\":{\"description\":\"Only return the service account token.\"},\"vault\":{\"kind\":\"array\",\"description\":\"Give access to this vault with a set of permissions. Has syntax <vault-name>:<permission>[,<permission>]\",\"metavar\":\"stringArray\"}}},\n {\"path\":\"service-account ratelimit\",\"summary\":\"Retrieve rate limit usage for a service account\",\"synopsis\":\"[{ <serviceAccountName> | <serviceAccountID> }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"aliases\":[\"ratelimits\"]},\n {\"path\":\"user recovery\",\"summary\":\"Manage user recovery in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"user provision\",\"summary\":\"Provision a user in the authenticated account\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"email language name\",\"flagOverrides\":{\"email\":{\"description\":\"Provide the user's email address.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"name\":{\"description\":\"Provide the user's name.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"user confirm\",\"summary\":\"Confirm a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all\",\"flagOverrides\":{\"all\":{\"description\":\"Confirm all unconfirmed users.\"}}},\n {\"path\":\"user get\",\"summary\":\"Get details about a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | --me | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"fingerprint me public-key\"},\n {\"path\":\"user edit\",\"summary\":\"Edit a user's name or Travel Mode status\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"name travel-mode\",\"flagOverrides\":{\"name\":{\"description\":\"Set the user's name.\",\"metavar\":\"string\"}}},\n {\"path\":\"user suspend\",\"summary\":\"Suspend a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"deauthorize-devices-after\"},\n {\"path\":\"user reactivate\",\"summary\":\"Reactivate a suspended user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":5},\n {\"path\":\"user delete\",\"summary\":\"Remove a user and all their data from the account\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"user list\",\"summary\":\"List users\",\"helpGroup\":\"commands\",\"helpOrder\":7,\"flags\":\"group vault\",\"flagOverrides\":{\"group\":{\"description\":\"List users who belong to a group.\"},\"vault\":{\"description\":\"List users who have direct access to vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"vault group\",\"summary\":\"Manage group vault access\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"vault user\",\"summary\":\"Manage user vault access\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"vault create\",\"summary\":\"Create a new vault\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"allow-admins-to-manage description icon\",\"flagOverrides\":{\"description\":{\"metavar\":\"description\"}}},\n {\"path\":\"vault get\",\"summary\":\"Get details about a vault\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"vault edit\",\"summary\":\"Edit a vault's name, description, icon, or Travel Mode status\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"description icon name travel-mode\",\"flagOverrides\":{\"description\":{\"description\":\"Change the vault's description.\",\"metavar\":\"description\"},\"icon\":{\"description\":\"Change the vault's icon.\",\"metavar\":\"icon\"},\"name\":{\"description\":\"Change the vault's name.\"},\"travel-mode\":{\"description\":\"Turn Travel Mode on or off for the vault.\"}}},\n {\"path\":\"vault delete\",\"summary\":\"Remove a vault\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"vault list\",\"summary\":\"List all vaults in the account\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"group permission user\",\"flagOverrides\":{\"group\":{\"description\":\"List vaults a group has access to.\",\"metavar\":\"string\"},\"user\":{\"description\":\"List vaults that a given user has access to.\",\"metavar\":\"string\"}},\"aliases\":[\"ls\"],\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"connect group grant\",\"summary\":\"Grant a group access to manage Secrets Automation\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"all-servers group server\",\"flagOverrides\":{\"server\":{\"description\":\"The server to grant access to.\",\"metavar\":\"server\"},\"group\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"connect group revoke\",\"summary\":\"Revoke a group's access to manage Secrets Automation\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all-servers group server\",\"flagOverrides\":{\"all-servers\":{\"description\":\"Revoke access to all current and future servers in the authenticated account.\"},\"group\":{\"description\":\"The group to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"server\":{\"description\":\"The server to revoke access to.\",\"metavar\":\"server\"}}},\n {\"path\":\"connect server create\",\"summary\":\"Set up a Connect server\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"force vaults\",\"flagOverrides\":{\"force\":{\"description\":\"Do not prompt for confirmation when overwriting credential files.\"}}},\n {\"path\":\"connect server get\",\"summary\":\"Get a Connect server\",\"synopsis\":\"[{ <serverName> | <serverID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"connect server edit\",\"summary\":\"Rename a Connect server\",\"synopsis\":\"{ <serverName> | <serverID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"name\",\"flagOverrides\":{\"name\":{\"description\":\"Change the server's name.\"}}},\n {\"path\":\"connect server delete\",\"summary\":\"Remove a Connect server\",\"synopsis\":\"[{ <serverName> | <serverID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"connect server list\",\"summary\":\"List Connect servers\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"aliases\":[\"ls\"]},\n {\"path\":\"connect token create\",\"summary\":\"Issue a token for a 1Password Connect server\",\"synopsis\":\"<tokenName> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"expires-in server vault\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Set how long the Connect token is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\"},\"server\":{\"description\":\"Issue a token for this server.\",\"completionRequired\":true},\"vault\":{\"kind\":\"array\",\"description\":\"Issue a token on these vaults.\",\"metavar\":\"stringArray\"}}},\n {\"path\":\"connect token edit\",\"summary\":\"Rename a Connect server token\",\"synopsis\":\"<token> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"name server\",\"flagOverrides\":{\"name\":{\"description\":\"Change the token's name.\",\"metavar\":\"string\"}}},\n {\"path\":\"connect token delete\",\"summary\":\"Revoke a token for a Connect server\",\"synopsis\":\"[ <token> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"server\",\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"connect token list\",\"summary\":\"Get a list of tokens\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"server\",\"flagOverrides\":{\"server\":{\"description\":\"Only list tokens for this Connect server.\",\"metavar\":\"server\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"connect vault grant\",\"summary\":\"Grant a Connect server access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"server vault\",\"flagOverrides\":{\"server\":{\"description\":\"The server to be granted access.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to grant access to.\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"connect vault revoke\",\"summary\":\"Revoke a Connect server's access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"server vault\",\"flagOverrides\":{\"server\":{\"description\":\"The server to revoke access from.\",\"metavar\":\"server\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to revoke a server's access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user grant\",\"summary\":\"Add a user to a group\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"group role user\",\"flagOverrides\":{\"group\":{\"description\":\"Specify the group to add the user to.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"Specify the user to add to the group.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user revoke\",\"summary\":\"Remove a user from a group\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"group user\",\"flagOverrides\":{\"group\":{\"description\":\"Specify the group to remove the user from.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"Specify the user to remove from the group.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user list\",\"summary\":\"Retrieve users that belong to a group\",\"synopsis\":\"<group> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"item template get\",\"summary\":\"Get an item template\",\"synopsis\":\"[{ <category> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"file-mode force out-file\",\"flagOverrides\":{\"out-file\":{\"description\":\"Write the template to a file instead of stdout.\"}}},\n {\"path\":\"item template list\",\"summary\":\"Get a list of templates\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"aliases\":[\"ls\"],\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"plugin credential import\",\"summary\":\"Import credentials for a shell plugin\",\"synopsis\":\"<plugin-name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0},\n {\"path\":\"user recovery begin\",\"summary\":\"Begin recovery for users in your 1Password account\",\"synopsis\":\"[ { <email> | <name> | <userID> } ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0},\n {\"path\":\"vault group grant\",\"summary\":\"Grant a group permissions to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"group no-input permissions vault\",\"flagOverrides\":{\"vault\":{\"description\":\"The vault to grant group permissions to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"group\":{\"completionRequired\":true,\"completionRejectEmpty\":true},\"permissions\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault group revoke\",\"summary\":\"Revoke a portion or the entire access of a group to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"group no-input permissions vault\",\"flagOverrides\":{\"group\":{\"description\":\"The group to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"permissions\":{\"description\":\"The permissions to revoke from the group.\"},\"vault\":{\"description\":\"The vault to revoke access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault group list\",\"summary\":\"List all the groups that have access to the given vault\",\"synopsis\":\"[{ <vault> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"vault user grant\",\"summary\":\"Grant a user access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"no-input permissions user vault\",\"flagOverrides\":{\"permissions\":{\"description\":\"The permissions to grant to the user.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"The user to receive access.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to grant access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault user revoke\",\"summary\":\"Revoke a portion or the entire access of a user to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"no-input permissions user vault\",\"flagOverrides\":{\"permissions\":{\"description\":\"The permissions to revoke from the user.\"},\"user\":{\"description\":\"The user to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to revoke access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault user list\",\"summary\":\"List all users with access to the vault and their permissions\",\"synopsis\":\"<vault> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"environment read\",\"summary\":\"Read an Environment\",\"synopsis\":\"<environment> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"beta\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot create\",\"summary\":\"Capture an environment snapshot\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"flags\":\"vars\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot get\",\"summary\":\"Get an environment snapshot\",\"synopsis\":\"<snapshot> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot list\",\"summary\":\"List environment snapshots\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"environment snapshot delete\",\"summary\":\"Delete an environment snapshot\",\"synopsis\":\"<snapshot> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot restore\",\"summary\":\"Restore an environment snapshot\",\"synopsis\":\"<snapshot> [-- command args...] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"flags\":\"shell no-masking\",\"flagOverrides\":{\"no-masking\":{\"env\":null,\"description\":\"Do not conceal captured values in child process output.\"}},\"description\":\"Restore the snapshot through a host callback, start a child with the restored environment, or print shell commands with --shell.\\n\\nSelected snapshots affect only captured names; null entries explicitly remove those names. Complete snapshots also remove known current extras. Shell evaluation is not atomic, and readonly variables may prevent changes.\",\"examples\":\"Print commands for restoring captured variables:\\n\\n\\top environment snapshot restore example --shell=bash\",\"args\":{\"min\":1}},\n {\"path\":\"environment\",\"summary\":\"Manage Environments and local snapshots\",\"synopsis\":\"[command] [flags]\",\"helpGroup\":\"management\",\"helpOrder\":99,\"availability\":\"extension\"},\n {\"path\":\"environment snapshot\",\"summary\":\"Manage local environment snapshots\",\"synopsis\":\"[command] [flags]\",\"helpGroup\":\"management\",\"helpOrder\":99,\"availability\":\"extension\"},\n];\n\nexport const opCatalogNodes: readonly OpCatalogCommand[] = Object.freeze(declarations.map(declaration => {\n const { flags: names = \"\", flagOverrides = {}, path: name, ...metadata } = declaration;\n const path = name ? name.split(\" \") : [];\n const group = declarations.some(child => name ? child.path.startsWith(name + \" \") : child.path !== \"\");\n const flags = Object.fromEntries(names.split(\" \").filter(Boolean).map(flag => {\n const merged = { ...(definitions[flag] ?? opGlobalFlags[flag]), ...flagOverrides[flag] };\n return [flag, freezeFlag(Object.fromEntries(Object.entries(merged).filter(([, value]) => value !== null)) as unknown as OpFlagDefinition)];\n }));\n return Object.freeze({\n ...metadata,\n path: Object.freeze(path),\n flags: Object.freeze(flags),\n aliases: Object.freeze([...(metadata.aliases ?? [])]),\n availability: metadata.availability ?? \"stable\",\n description: metadata.description ?? metadata.summary,\n synopsis: metadata.synopsis ?? (group ? \"[command] [flags]\" : \"[flags]\"),\n helpGroup: metadata.helpGroup ?? \"commands\",\n helpOrder: metadata.helpOrder ?? 0,\n ...(metadata.args ? { args: Object.freeze({ ...metadata.args }) } : {}),\n });\n}));\n\nexport const opCommandCatalog: readonly OpCatalogCommand[] = Object.freeze(opCatalogNodes.filter(node =>\n node.path.length > 0 && !opCatalogNodes.some(child =>\n child.path.length > node.path.length && node.path.every((part, index) => child.path[index] === part),\n ),\n));\n\nexport function getOpCommandFlags(path: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): Readonly<Record<string, OpFlagDefinition>> {\n const node = opCatalogNodes.find(entry => entry.path.join(\" \") === path.join(\" \"));\n return Object.freeze(Object.fromEntries(Object.entries({\n ...opGlobalFlags,\n ...(path.length === 0 ? opRootFlags : {}),\n ...node?.flags,\n ...(path.length ? { help: freezeFlag({ ...opGlobalFlags.help!, description: `help for ${path.at(-1)}` }) } : {}),\n }).filter(([, flag]) => channel === \"beta\" || flag.availability !== \"beta\")));\n}\n", "const magnitudeLimit = 1n << 63n;\nconst nanoseconds: Readonly<Record<string, bigint>> = Object.freeze({\n ns: 1n, us: 1000n, \"\u00B5s\": 1000n, \"\u03BCs\": 1000n, ms: 1000000n,\n s: 1000000000n, m: 60000000000n, h: 3600000000000n,\n});\n\nfunction isDigit(character: string | undefined): boolean {\n return character !== undefined && character >= \"0\" && character <= \"9\";\n}\n\nfunction roundedHundredths(value: number): bigint {\n if (value === 0) return 0n;\n const buffer = new DataView(new ArrayBuffer(8));\n buffer.setFloat64(0, value);\n const bits = buffer.getBigUint64(0);\n const exponent = Number(bits >> 52n);\n const significand = (bits & ((1n << 52n) - 1n)) + (exponent === 0 ? 0n : 1n << 52n);\n const shift = (exponent === 0 ? 1 : exponent) - 1023 - 52;\n const numerator = significand * 100n;\n if (shift >= 0) return numerator << BigInt(shift);\n const denominator = 1n << BigInt(-shift);\n const quotient = numerator / denominator;\n const remainder = numerator % denominator;\n return quotient + (remainder * 2n > denominator || remainder * 2n === denominator && quotient % 2n !== 0n ? 1n : 0n);\n}\n\nexport function isOpDuration(value: string, extendedUnits = true): boolean {\n const negative = value[0] === \"-\";\n let cursor = value[0] === \"+\" || negative ? 1 : 0;\n if (value.slice(cursor) === \"0\") return true;\n if (cursor === value.length) return false;\n let total = 0n;\n while (cursor < value.length) {\n const start = cursor;\n while (isDigit(value[cursor])) cursor++;\n const integerEnd = cursor;\n if (value[cursor] === \".\") cursor++;\n const fractionStart = cursor;\n while (isDigit(value[cursor])) cursor++;\n const numberEnd = cursor;\n if (integerEnd === start && fractionStart === numberEnd) return false;\n while (cursor < value.length && !isDigit(value[cursor]) && value[cursor] !== \".\") cursor++;\n const unitName = value.slice(numberEnd, cursor);\n let component: bigint;\n if (extendedUnits && (unitName === \"d\" || unitName === \"w\")) {\n const hours = Number(value.slice(start, numberEnd)) * (unitName === \"d\" ? 24 : 168);\n if (!Number.isFinite(hours) || hours > Number(magnitudeLimit) / Number(nanoseconds.h!) + 1) return false;\n component = roundedHundredths(hours) * 36000000000n;\n } else {\n if (!Object.hasOwn(nanoseconds, unitName)) return false;\n const unit = nanoseconds[unitName]!;\n let integer = 0n;\n for (let index = start; index < integerEnd; index++) {\n integer = integer * 10n + BigInt(value[index]!);\n if (integer > magnitudeLimit) return false;\n }\n component = integer * unit;\n if (component > magnitudeLimit) return false;\n let fraction = 0n;\n let scale = 1;\n for (let index = fractionStart; index < numberEnd; index++) {\n const next = fraction * 10n + BigInt(value[index]!);\n if (fraction > (magnitudeLimit - 1n) / 10n || next > magnitudeLimit) break;\n fraction = next;\n scale *= 10;\n }\n component += BigInt(Math.trunc(Number(fraction) * (Number(unit) / scale)));\n }\n if (component > magnitudeLimit) return false;\n total = BigInt.asUintN(64, total + component);\n if (total > magnitudeLimit) return false;\n }\n return total <= magnitudeLimit - (negative ? 0n : 1n);\n}\n", "export function parseOpFileMode(value: unknown): number {\n if (value === undefined) return 0o600;\n if (typeof value !== \"string\" || value.length < 3) throw new Error(\"file-mode requires at least three octal digits\");\n let mode = 0;\n for (const character of value) {\n if (character < \"0\" || character > \"7\") throw new Error(\"file-mode must be an octal permission mode\");\n mode = mode * 8 + Number(character);\n if (mode > 0xffffffff) throw new Error(\"file-mode exceeds uint32 range\");\n }\n return mode;\n}\n", "export function parseOpCsv(value: string): string[] {\n if (value === \"\") return [];\n let input = \"\";\n for (let index = 0; index < value.length; index++) {\n if (value[index] === \"\\r\" && (value[index + 1] === \"\\n\" || index === value.length - 1)) continue;\n input += value[index];\n }\n let cursor = 0;\n while (input[cursor] === \"\\n\") cursor++;\n if (cursor === input.length) throw new Error(\"CSV flag requires a record\");\n const fields: string[] = [];\n let field = \"\";\n let quoted = false;\n let closed = false;\n for (; cursor < input.length; cursor++) {\n const character = input[cursor]!;\n if (quoted) {\n if (character !== '\"') field += character;\n else if (input[cursor + 1] === '\"') { field += '\"'; cursor++; }\n else { quoted = false; closed = true; }\n } else if (character === \"\\n\") return [...fields, field];\n else if (character === \",\") { fields.push(field); field = \"\"; closed = false; }\n else if (closed || character === '\"' && field.length !== 0) throw new Error(\"Invalid CSV quoting\");\n else if (character === '\"') quoted = true;\n else field += character;\n }\n if (quoted) throw new Error(\"Unterminated quoted CSV field\");\n return [...fields, field];\n}\n", "import type { OpFlagDefinition } from \"./catalog.js\";\nimport { isOpDuration } from \"./duration.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { parseOpCsv } from \"./csv-values.js\";\n\nfunction isPasswordRecipe(value: string): boolean {\n let lengthSeen = false;\n for (const part of value.split(\",\")) {\n if ([\"letters\", \"digits\", \"symbols\"].includes(part.toLowerCase())) continue;\n const digits = part.startsWith(\"+\") ? part.slice(1) : part;\n if (!digits || !Array.from(digits).every(character => character >= \"0\" && character <= \"9\")) return false;\n const length = Number(digits);\n if (lengthSeen || length < 1 || length > 64) return false;\n lengthSeen = true;\n }\n return true;\n}\n\nexport function validateOpFlagValue(name: string, definition: OpFlagDefinition, value: string): void {\n if (definition.valueSyntax === \"password-recipe\" && !isPasswordRecipe(value)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"csv\") parseOpCsv(value);\n if (definition.valueSyntax === \"duration\" && !isOpDuration(value)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"go-duration\" && !isOpDuration(value, false)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"file-mode\") {\n try { parseOpFileMode(value); } catch { throw new Error(`invalid value for --${name}`); }\n }\n if (!definition.allowedValues) return;\n const values = definition.kind === \"csv\" ? value.split(\",\") : [value];\n for (const entry of values) {\n const normalized = definition.normalizeValues === \"trim-lowercase\" ? entry.trim().toLowerCase() : definition.normalizeValues === \"lowercase\" ? entry.toLowerCase() : entry;\n if (!definition.allowedValues.includes(normalized)) throw new Error(`invalid value for --${name}`);\n }\n}\n", "import { getOpCommandFlags, opCatalogNodes, opCommandCatalog, opGlobalFlags, type OpCatalogCommand, type OpFlagDefinition } from \"./catalog.js\";\nimport { validateOpFlagValue } from \"./flag-values.js\";\n\nexport interface OpCompletionResult {\n readonly candidates: readonly { readonly value: string; readonly description: string }[];\n readonly directive: 0 | 4;\n}\n\nexport function resolveOpCompletion(words: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): OpCompletionResult {\n const catalog = opCommandCatalog.filter(command => channel === \"beta\" || command.availability !== \"beta\");\n const previous = words.slice(0, -1);\n const current = words.at(-1) ?? \"\";\n const path: string[] = [];\n const used = new Set<string>();\n let command: OpCatalogCommand | undefined;\n let pending: string | undefined;\n let stopped = false;\n let invalid = false;\n let help = false;\n const available = () => getOpCommandFlags(path, channel);\n const consume = (name: string, definition: OpFlagDefinition, value: string | undefined, spelling: string) => {\n used.add(definition.longAliases?.includes(spelling) ? spelling : name);\n if (name === \"help\" || name === \"version\") help = true;\n if (definition.kind === \"boolean\") {\n if (value !== undefined && ![\"true\", \"false\", \"1\", \"0\", \"t\", \"f\", \"TRUE\", \"FALSE\", \"True\", \"False\", \"T\", \"F\"].includes(value)) invalid = true;\n } else if (definition.kind !== \"optional\" && value === undefined) pending = name;\n if (name === \"format\" && value !== undefined && ![\"json\", \"human-readable\"].includes(value)) invalid = true;\n if (definition.completionRejectEmpty && value === \"\") invalid = true;\n if (value !== undefined) {\n try { validateOpFlagValue(name, definition, value); } catch { invalid = true; }\n }\n };\n for (const token of previous) {\n if (pending !== undefined) {\n if (pending === \"format\" && ![\"json\", \"human-readable\"].includes(token)) invalid = true;\n if (available()[pending]?.completionRejectEmpty && token === \"\") invalid = true;\n const definition = available()[pending];\n if (definition) {\n try { validateOpFlagValue(pending, definition, token); } catch { invalid = true; }\n }\n pending = undefined;\n continue;\n }\n if (stopped || invalid) break;\n if (token === \"--\") { stopped = true; break; }\n if (token.startsWith(\"-\") && token !== \"-\") {\n const flags = available();\n if (token.startsWith(\"--\")) {\n const equal = token.indexOf(\"=\");\n const spelling = token.slice(2, equal < 0 ? undefined : equal);\n const name = Object.hasOwn(flags, spelling) ? spelling : Object.keys(flags).find(key => flags[key]!.longAliases?.includes(spelling));\n if (!name) { invalid = true; break; }\n consume(name, flags[name]!, equal < 0 ? undefined : token.slice(equal + 1), spelling);\n } else {\n for (let index = 1; index < token.length; index++) {\n const name = Object.keys(flags).find(key => flags[key]!.alias === token[index]);\n if (!name) { invalid = true; break; }\n const definition = flags[name]!;\n const remainder = token.slice(index + 1);\n const attached = remainder.startsWith(\"=\") || definition.kind !== \"boolean\";\n consume(name, definition, attached && remainder ? remainder.startsWith(\"=\") ? remainder.slice(1) : remainder : undefined, name);\n if (attached) break;\n }\n }\n continue;\n }\n if (command) continue;\n if (path.length === 0 && token === \"help\") { stopped = true; break; }\n const candidates = catalog.filter(entry => path.every((part, index) => entry.path[index] === part) && (entry.path[path.length] === token || entry.path.length === path.length + 1 && entry.aliases.includes(token)));\n if (!candidates.length) { invalid = true; break; }\n path.push(candidates[0]!.path[path.length]!);\n command = candidates.find(entry => entry.path.length === path.length);\n }\n if (invalid || pending !== undefined || stopped) return { candidates: [], directive: 0 };\n if (help) return { candidates: [], directive: 4 };\n if (current.startsWith(\"-\")) {\n if (current.includes(\"=\")) return { candidates: [], directive: 0 };\n const flags = available();\n const inherited = path.length ? Object.keys(opGlobalFlags).filter(name => name !== \"help\") : [];\n const local = Object.keys(flags).filter(name => !inherited.includes(name));\n const candidates: { value: string; description: string }[] = [];\n const required: { value: string; description: string }[] = [];\n for (const name of [...inherited.sort(), ...local.sort()]) {\n const definition = flags[name];\n if (!definition || definition.completionVisible === false || used.has(name) && definition.kind !== \"array\" && definition.valueSyntax !== \"csv\") continue;\n for (const value of [`--${name}`, ...(definition.alias ? [`-${definition.alias}`] : [])]) {\n if (value.startsWith(current)) {\n const candidate = { value, description: definition.description ?? \"\" };\n candidates.push(candidate);\n if (definition.completionRequired && !used.has(name)) required.push(candidate);\n }\n }\n }\n return { candidates: required.length ? required : candidates, directive: 4 };\n }\n if (command) return { candidates: [], directive: 0 };\n const names = new Set(catalog.filter(entry => path.every((part, index) => entry.path[index] === part)).map(entry => entry.path[path.length]!));\n if (!path.length) names.add(\"help\");\n return { candidates: [...names].sort().filter(value => value.startsWith(current)).map(value => ({ value, description: opCatalogNodes.find(node => node.path.join(\" \") === [...path, value].join(\" \"))?.summary ?? \"Help about any command\" })), directive: 4 };\n}\n", "import type { OpCommandContext } from \"./cli.js\";\nimport type { OpBackendRequest } from \"./types.js\";\nimport { resolveOpCompletion } from \"./completion-resolver.js\";\n\nexport function createCompletionCallbackHandler(channel: \"stable\" | \"beta\" = \"stable\") {\n return async (request: OpBackendRequest, context: OpCommandContext): Promise<{ exitCode: number }> => {\n if (request.resource !== \"__complete\" && request.resource !== \"__completeNoDesc\") throw new Error(\"Invalid completion callback\");\n context.signal.throwIfAborted();\n const result = resolveOpCompletion(request.args, channel);\n const lines = result.candidates.map(candidate => request.resource === \"__complete\" ? `${candidate.value}\\t${candidate.description}` : candidate.value);\n lines.push(`:${result.directive}`);\n await context.stdout.write(new TextEncoder().encode(`${lines.join(\"\\n\")}\\n`));\n return { exitCode: 0 };\n };\n}\n\nexport function createCompletionHandler(channel: \"stable\" | \"beta\" = \"stable\") {\n if (channel !== \"stable\" && channel !== \"beta\") throw new Error(\"Invalid completion channel\");\n return async (request: OpBackendRequest, context: OpCommandContext): Promise<{ exitCode: number }> => {\n const shell = request.args[0];\n if (request.args.length !== 1 || ![\"bash\", \"zsh\", \"fish\", \"powershell\"].includes(shell)) {\n throw new Error(\"completion requires one shell: bash, zsh, fish, or powershell\");\n }\n context.signal.throwIfAborted();\n let lines: string[];\n if (shell === \"bash\") {\n lines = [\n \"_op() {\",\n \" local response directive choice current op_cword\",\n \" local -a op_words\",\n ' if declare -F _get_comp_words_by_ref >/dev/null; then',\n ' _get_comp_words_by_ref -n =: -w op_words -i op_cword -c current || return',\n ' else',\n ' op_words=(\"${COMP_WORDS[@]}\")',\n ' op_cword=$COMP_CWORD',\n ' current=\"${op_words[op_cword]}\"',\n ' fi',\n ' op_words[op_cword]=\"$current\"',\n ' COMPREPLY=()',\n ' response=$(OP_COMPATIBILITY_CHANNEL=' + channel + ' \"${op_words[0]}\" __completeNoDesc \"${op_words[@]:1:op_cword}\" 2>/dev/null) || return',\n ' directive=\"${response##*$\\'\\\\n\\'}\"',\n ' case \"$directive\" in',\n ' :0) while IFS= read -r choice; do COMPREPLY+=(\"$choice\"); done < <(compgen -f -- \"$current\") ;;',\n ' :4) while IFS= read -r choice; do [[ \"$choice\" == :4 ]] || COMPREPLY+=(\"$choice\"); done <<< \"$response\" ;;',\n ' esac',\n '}',\n 'complete -o filenames -F _op op',\n ];\n } else if (shell === \"zsh\") {\n lines = [\n '#compdef op',\n '_op() {',\n ' local line directive',\n ' local -a response candidates descriptions',\n ' response=(\"${(@f)$(OP_COMPATIBILITY_CHANNEL=' + channel + ' \"${words[1]}\" __complete \"${(@)words[2,CURRENT]}\" 2>/dev/null)}\")',\n ' directive=\"${response[-1]}\"',\n ' case \"$directive\" in',\n ' :0) _files ;;',\n ' :4)',\n ' for line in \"${response[@]}\"; do',\n ' [[ \"$line\" == :4 ]] && continue',\n ' candidates+=(\"${line%%$\\'\\\\t\\'*}\")',\n ' descriptions+=(\"${line#*$\\'\\\\t\\'}\")',\n ' done',\n ' (( ${#candidates} )) && compadd -d descriptions -- \"${candidates[@]}\"',\n ' ;;',\n ' esac',\n ' return 0',\n '}',\n 'compdef _op op',\n ];\n } else if (shell === \"fish\") {\n lines = [\n 'function __op_candidates',\n ' set -lx OP_COMPATIBILITY_CHANNEL ' + channel,\n ' set -l tokens (commandline -opc)',\n ' set -l current (commandline -ct)',\n ' set -l response ($tokens[1] __complete $tokens[2..-1] \"$current\" 2>/dev/null)',\n ' set -l directive $response[-1]',\n ' switch \"$directive\"',\n ' case :0',\n ' __fish_complete_path \"$current\"',\n ' case :4',\n ' set -e response[-1]',\n ' for candidate in $response',\n ' printf \"%s\\\\n\" \"$candidate\"',\n ' end',\n ' end',\n 'end',\n \"complete -c op -f -a '(__op_candidates)'\",\n ];\n } else {\n lines = [\n 'Register-ArgumentCompleter -Native -CommandName op -ScriptBlock {',\n ' param($wordToComplete, $commandAst, $cursorPosition)',\n ' $program = $commandAst.CommandElements[0].Value',\n ' $arguments = @()',\n ' foreach ($element in ($commandAst.CommandElements | Select-Object -Skip 1)) {',\n ' if ($element.Extent.EndOffset -ge $cursorPosition) { break }',\n ' if ($element -is [System.Management.Automation.Language.StringConstantExpressionAst]) { $arguments += $element.Value }',\n ' else { $arguments += $element.Extent.Text }',\n ' }',\n ' $current = $wordToComplete',\n ' if ($current -eq \"\" -and ($PSVersionTable.PSVersion -lt [version]\"7.3\" -or $PSNativeCommandArgumentPassing -eq \"Legacy\")) { $current = \\'\"\"\\' }',\n ' $previousChannel = $env:OP_COMPATIBILITY_CHANNEL',\n ' try {',\n \" $env:OP_COMPATIBILITY_CHANNEL = '\" + channel + \"'\",\n ' $response = @(& $program __complete @arguments $current 2>$null)',\n ' } finally { $env:OP_COMPATIBILITY_CHANNEL = $previousChannel }',\n ' if ($response.Count -eq 0) { return }',\n ' $directive = $response[-1]',\n ' if ($directive -eq \":0\") { return }',\n ' if ($directive -ne \":4\") { \"\"; return }',\n ' if ($response.Count -eq 1) { \"\"; return }',\n ' foreach ($line in $response[0..($response.Count - 2)]) {',\n ' $parts = $line.Split([char]9, 2)',\n ' $description = if ($parts.Count -gt 1) { $parts[1] } else { \" \" }',\n \" [System.Management.Automation.CompletionResult]::new($parts[0], $parts[0], 'ParameterValue', $description)\",\n ' }',\n '}',\n ];\n }\n await context.stdout.write(new TextEncoder().encode(`${lines.join(\"\\n\")}\\n`));\n return { exitCode: 0 };\n };\n}\n", "import { getOpCommandFlags, opCatalogNodes, type OpFlagDefinition } from \"./catalog.js\";\n\nfunction wrap(text: string, width: number): string[] {\n const lines: string[] = [];\n let line = \"\";\n for (const word of text.split(\" \").filter(Boolean)) {\n if (line && line.length + word.length + 1 > width) { lines.push(line); line = \"\"; }\n line += (line ? \" \" : \"\") + word;\n }\n if (line) lines.push(line);\n return lines;\n}\n\nfunction flagSyntax(name: string, flag: OpFlagDefinition): string {\n const value = flag.metavar ?? (flag.kind === \"boolean\" ? \"\" : \"string\");\n return `${flag.alias ? `-${flag.alias}, ` : \" \"}--${name}${flag.kind === \"optional\" ? `[=${value}]` : value ? ` ${value}` : \"\"}`;\n}\n\nexport function renderOpHelp(path: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): string {\n const node = opCatalogNodes.find(entry => entry.path.join(\" \") === path.join(\" \") && (channel === \"beta\" || entry.availability !== \"beta\"));\n if (!node) throw new Error(\"Unknown help topic\");\n const children = opCatalogNodes.filter(entry => entry.path.length === path.length + 1 && path.every((part, index) => entry.path[index] === part) && (channel === \"beta\" || entry.availability !== \"beta\"));\n const prefix = `op${path.length ? ` ${path.join(\" \")}` : \"\"}`;\n const lines = [node.description, \"\", `Usage: ${prefix} ${node.synopsis}`, \"\"];\n if (node.availability !== \"stable\") lines.push(`Availability: ${node.availability}`, \"\");\n if (node.aliases.length) lines.push(\"Aliases:\", ` ${[path.at(-1), ...node.aliases].join(\", \")}`, \"\");\n for (const group of [\"management\", \"commands\"] as const) {\n const entries = children.filter(child => child.helpGroup === group).sort((first, second) => first.helpOrder - second.helpOrder || first.path.at(-1)!.localeCompare(second.path.at(-1)!));\n if (!entries.length) continue;\n lines.push(group === \"management\" ? \"Management Commands:\" : \"Commands:\");\n const width = Math.max(...entries.map(child => child.path.at(-1)!.length)) + 1;\n for (const child of entries) {\n lines.push(` ${child.path.at(-1)!.padEnd(width)} ${child.summary}${child.availability === \"stable\" ? \"\" : ` [${child.availability}]`}`);\n }\n lines.push(\"\");\n }\n if (node.examples) lines.push(\"Examples:\", node.examples, \"\");\n const flags = Object.entries(getOpCommandFlags(path, channel)).filter(([name, flag]) => flag.helpVisible !== false && (!path.length || name === \"help\" || Object.hasOwn(node.flags, name))).sort(([first], [second]) => first.localeCompare(second));\n lines.push(path.length ? \"Flags:\" : \"Global Flags:\");\n const width = Math.max(...flags.map(([name, flag]) => flagSyntax(name, flag).length)) + 3;\n for (const [name, flag] of flags) {\n const description = `${flag.description ?? \"\"}${flag.defaultDisplay === undefined ? \"\" : ` (default ${flag.defaultDisplay})`}${flag.availability === \"beta\" ? \" [beta]\" : \"\"}`;\n const wrapped = wrap(description, Math.max(20, 143 - width - 2));\n lines.push(` ${flagSyntax(name, flag).padEnd(width)}${wrapped[0] ?? \"\"}`.trimEnd());\n for (const continuation of wrapped.slice(1)) lines.push(`${\" \".repeat(width + 2)}${continuation}`);\n }\n lines.push(\"\");\n if (path.length) lines.push(\"To list the global flags available on every command, run 'op --help'.\");\n if (children.length) lines.push(...(path.length ? [\"\"] : []), `Run '${prefix} [command] --help' for more information on the command.`);\n return `${lines.join(\"\\n\")}\\n`;\n}\n", "import type { OpObject } from \"./types.js\";\n\nexport const pluginRequiredFieldLabels: Readonly<Record<string, string>> = Object.freeze({\n \"akamai\": \"Client Secret, Host, Access Token, Client Token\",\n \"claude\": \"API Key\",\n \"argocd\": \"Auth Token\",\n \"aws\": \"Access Key ID, Secret Access Key\",\n \"cdk\": \"Access Key ID, Secret Access Key\",\n \"sam\": \"Access Key ID, Secret Access Key\",\n \"eksctl\": \"Access Key ID, Secret Access Key\",\n \"awslogs\": \"Access Key ID, Secret Access Key\",\n \"axiom\": \"Token, Organization\",\n \"binance-cli\": \"API Key, API Secret\",\n \"cachix\": \"Token\",\n \"cargo\": \"Token\",\n \"circleci\": \"Token\",\n \"civo\": \"API Key\",\n \"cline\": \"API Key\",\n \"wrangler\": \"Token\",\n \"crash\": \"Host, Username, Password\",\n \"crowdin\": \"Token\",\n \"agent\": \"API Key\",\n \"databricks\": \"Host, Token\",\n \"dog\": \"API Key, App Key\",\n \"descope\": \"Project ID, Management Key\",\n \"doctl\": \"Token\",\n \"exercism\": \"URL, API Key, Directory\",\n \"expo\": \"Token\",\n \"eas\": \"Token\",\n \"fastly\": \"Token\",\n \"flyctl\": \"Token\",\n \"fly\": \"Token\",\n \"fossa\": \"API Key\",\n \"tea\": \"Token, Host Address, User\",\n \"gh\": \"Token\",\n \"copilot\": \"Token\",\n \"glab\": \"Token\",\n \"gemini\": \"API Key\",\n \"vault\": \"Token\",\n \"heroku\": \"API Key\",\n \"hcloud\": \"Token\",\n \"brew\": \"Token\",\n \"huggingface-cli\": \"User Access Token\",\n \"influx\": \"Host, Organization, Access Token\",\n \"junie\": \"API Key\",\n \"kaggle\": \"Token, Username\",\n \"kiro-cli\": \"API Key\",\n \"lacework\": \"Account, API Key ID, API Secret\",\n \"forge\": \"Token\",\n \"vapor\": \"Token\",\n \"linode-cli\": \"Token\",\n \"localstack\": \"API Key\",\n \"atlas\": \"Public Key, Private Key\",\n \"mysql\": \"Password\",\n \"ngrok\": \"Authtoken\",\n \"ohdear\": \"Token\",\n \"okta\": \"Token, Org URL\",\n \"openai\": \"API Key\",\n \"oaieval\": \"API Key\",\n \"oaievalset\": \"API Key\",\n \"codex\": \"API Key\",\n \"opencode\": \"API Key\",\n \"tofu\": \"Depends on configured credentials\",\n \"pd\": \"API Key\",\n \"psql\": \"Host, User, Password\",\n \"pg_dump\": \"Host, User, Password\",\n \"pg_restore\": \"Host, User, Password\",\n \"pgcli\": \"Host, User, Password\",\n \"pulumi\": \"Token\",\n \"twine\": \"Token\",\n \"flit\": \"Token\",\n \"hatch\": \"Token\",\n \"rdme\": \"API Key\",\n \"redis-cli\": \"Password\",\n \"rediscloud\": \"Account Key, User Key\",\n \"scw\": \"Access Key ID, Secret Access Key\",\n \"sentry-cli\": \"Token\",\n \"snowsql\": \"Account, Username, Password\",\n \"snyk\": \"Token\",\n \"src\": \"Token\",\n \"stripe\": \"Key\",\n \"todoist\": \"Token\",\n \"td\": \"API Key\",\n \"tugboat\": \"Token\",\n \"twilio\": \"Account SID, API Key, API Secret\",\n \"upctl\": \"Username, Password\",\n \"upstash\": \"API Key, Email\",\n \"vercel\": \"Token\",\n \"vsql\": \"Username, Password, Database\",\n \"vultr-cli\": \"API Key\",\n \"ysqlsh\": \"Host, Username, Password\",\n \"zapier\": \"Key\",\n \"zcli\": \"Subdomain, Email, Token\",\n});\n\nexport interface OpPluginAvailability {\n readonly source?: string;\n readonly name?: string;\n readonly executable?: string;\n readonly plugin_name?: string;\n readonly id?: string;\n}\n\nconst nativePlugins: readonly OpPluginAvailability[] = Object.freeze([\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Akamai CLI\",\"executable\":\"akamai\",\"plugin_name\":\"Akamai\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Claude Code\",\"executable\":\"claude\",\"plugin_name\":\"Anthropic\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Argo CD CLI\",\"executable\":\"argocd\",\"plugin_name\":\"Argo CD\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS CLI\",\"executable\":\"aws\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS CDK Toolkit\",\"executable\":\"cdk\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS SAM CLI\",\"executable\":\"sam\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"eksctl CLI\",\"executable\":\"eksctl\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"awslogs\",\"executable\":\"awslogs\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Axiom CLI\",\"executable\":\"axiom\",\"plugin_name\":\"Axiom\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Binance CLI\",\"executable\":\"binance-cli\",\"plugin_name\":\"Binance\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cachix CLI\",\"executable\":\"cachix\",\"plugin_name\":\"Cachix\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cargo CLI\",\"executable\":\"cargo\",\"plugin_name\":\"Cargo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"CircleCI CLI\",\"executable\":\"circleci\",\"plugin_name\":\"CircleCI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Civo CLI\",\"executable\":\"civo\",\"plugin_name\":\"Civo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cline CLI\",\"executable\":\"cline\",\"plugin_name\":\"Cline\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cloudflare Workers CLI\",\"executable\":\"wrangler\",\"plugin_name\":\"Cloudflare Workers\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"CrateDB Shell\",\"executable\":\"crash\",\"plugin_name\":\"CrateDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Crowdin CLI\",\"executable\":\"crowdin\",\"plugin_name\":\"Crowdin\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cursor CLI\",\"executable\":\"agent\",\"plugin_name\":\"Cursor\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Databricks CLI\",\"executable\":\"databricks\",\"plugin_name\":\"Databricks\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Dogshell\",\"executable\":\"dog\",\"plugin_name\":\"Datadog\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Descope CLI\",\"executable\":\"descope\",\"plugin_name\":\"Descope\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"DigitalOcean CLI\",\"executable\":\"doctl\",\"plugin_name\":\"DigitalOcean\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Exercism CLI\",\"executable\":\"exercism\",\"plugin_name\":\"Exercism\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Expo CLI\",\"executable\":\"expo\",\"plugin_name\":\"Expo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"EAS CLI\",\"executable\":\"eas\",\"plugin_name\":\"Expo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Fastly CLI\",\"executable\":\"fastly\",\"plugin_name\":\"Fastly\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Flyctl\",\"executable\":\"flyctl\",\"plugin_name\":\"Fly.io\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Fly\",\"executable\":\"fly\",\"plugin_name\":\"Fly.io\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"FOSSA CLI\",\"executable\":\"fossa\",\"plugin_name\":\"FOSSA\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Gitea CLI\",\"executable\":\"tea\",\"plugin_name\":\"Gitea\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitHub CLI\",\"executable\":\"gh\",\"plugin_name\":\"GitHub\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitHub Copilot CLI\",\"executable\":\"copilot\",\"plugin_name\":\"GitHub Copilot\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitLab CLI\",\"executable\":\"glab\",\"plugin_name\":\"GitLab\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Google Gemini CLI\",\"executable\":\"gemini\",\"plugin_name\":\"Google Gemini CLI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vault CLI\",\"executable\":\"vault\",\"plugin_name\":\"HashiCorp Vault\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Heroku CLI\",\"executable\":\"heroku\",\"plugin_name\":\"Heroku\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Hetzner Cloud CLI\",\"executable\":\"hcloud\",\"plugin_name\":\"Hetzner Cloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Homebrew CLI\",\"executable\":\"brew\",\"plugin_name\":\"Homebrew\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"HuggingFace CLI\",\"executable\":\"huggingface-cli\",\"plugin_name\":\"Hugging Face\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"InfluxDB CLI\",\"executable\":\"influx\",\"plugin_name\":\"InfluxDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"JetBrains Junie CLI\",\"executable\":\"junie\",\"plugin_name\":\"JetBrains Junie\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Kaggle CLI\",\"executable\":\"kaggle\",\"plugin_name\":\"Kaggle\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Kiro CLI\",\"executable\":\"kiro-cli\",\"plugin_name\":\"Kiro\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Lacework CLI\",\"executable\":\"lacework\",\"plugin_name\":\"Lacework\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Laravel Forge CLI\",\"executable\":\"forge\",\"plugin_name\":\"Laravel Forge\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Laravel Vapor CLI\",\"executable\":\"vapor\",\"plugin_name\":\"Laravel Vapor\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Linode CLI\",\"executable\":\"linode-cli\",\"plugin_name\":\"Linode\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"LocalStack CLI\",\"executable\":\"localstack\",\"plugin_name\":\"LocalStack\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"MongoDB Atlas CLI\",\"executable\":\"atlas\",\"plugin_name\":\"MongoDB Atlas\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"mysql\",\"executable\":\"mysql\",\"plugin_name\":\"MySQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"ngrok CLI\",\"executable\":\"ngrok\",\"plugin_name\":\"ngrok\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Oh Dear CLI\",\"executable\":\"ohdear\",\"plugin_name\":\"Oh Dear\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Okta CLI\",\"executable\":\"okta\",\"plugin_name\":\"Okta\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI CLI\",\"executable\":\"openai\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Evals CLI\",\"executable\":\"oaieval\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Eval Set CLI\",\"executable\":\"oaievalset\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Codex\",\"executable\":\"codex\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenCode CLI\",\"executable\":\"opencode\",\"plugin_name\":\"OpenCode\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenTofu\",\"executable\":\"tofu\",\"plugin_name\":\"OpenTofu\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Pipedream CLI\",\"executable\":\"pd\",\"plugin_name\":\"Pipedream\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"psql\",\"executable\":\"psql\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pg_dump\",\"executable\":\"pg_dump\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pg_restore\",\"executable\":\"pg_restore\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pgcli\",\"executable\":\"pgcli\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Pulumi CLI\",\"executable\":\"pulumi\",\"plugin_name\":\"Pulumi\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Twine\",\"executable\":\"twine\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Flit\",\"executable\":\"flit\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Hatch\",\"executable\":\"hatch\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"ReadMe CLI\",\"executable\":\"rdme\",\"plugin_name\":\"ReadMe\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Redis CLI\",\"executable\":\"redis-cli\",\"plugin_name\":\"Redis\"}),\n Object.freeze({\"source\":\"1password-registry\",\"plugin_name\":\"rediscloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Scaleway CLI\",\"executable\":\"scw\",\"plugin_name\":\"Scaleway\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Sentry CLI\",\"executable\":\"sentry-cli\",\"plugin_name\":\"Sentry\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Snowflake CLI\",\"executable\":\"snowsql\",\"plugin_name\":\"Snowflake\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Snyk CLI\",\"executable\":\"snyk\",\"plugin_name\":\"Snyk\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Sourcegraph CLI\",\"executable\":\"src\",\"plugin_name\":\"Sourcegraph\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Stripe CLI\",\"executable\":\"stripe\",\"plugin_name\":\"Stripe\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Todoist CLI\",\"executable\":\"todoist\",\"plugin_name\":\"Todoist\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Treasure Data Toolbelt\",\"executable\":\"td\",\"plugin_name\":\"Treasure Data\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Tugboat CLI\",\"executable\":\"tugboat\",\"plugin_name\":\"Tugboat\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Twilio CLI\",\"executable\":\"twilio\",\"plugin_name\":\"Twilio\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"UpCloud CLI\",\"executable\":\"upctl\",\"plugin_name\":\"UpCloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Upstash CLI\",\"executable\":\"upstash\",\"plugin_name\":\"Upstash\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vercel CLI\",\"executable\":\"vercel\",\"plugin_name\":\"Vercel\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vertica CLI\",\"executable\":\"vsql\",\"plugin_name\":\"Vertica\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vultr CLI\",\"executable\":\"vultr-cli\",\"plugin_name\":\"Vultr\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"YugabyteDB SQL Shell\",\"executable\":\"ysqlsh\",\"plugin_name\":\"YugabyteDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Zapier CLI\",\"executable\":\"zapier\",\"plugin_name\":\"Zapier\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Zendesk CLI\",\"executable\":\"zcli\",\"plugin_name\":\"Zendesk\"}),\n]);\n\nexport function availablePlugins(configured: readonly OpObject[]): OpPluginAvailability[] {\n const entries = nativePlugins.map(plugin => ({ ...plugin }));\n const executables = new Set(nativePlugins.flatMap(plugin => plugin.executable ? [plugin.executable.toLowerCase()] : []));\n for (const plugin of configured) {\n if (executables.has(plugin.id.toLowerCase())) continue;\n executables.add(plugin.id.toLowerCase());\n entries.push({ id: plugin.id, name: typeof plugin.name === \"string\" ? plugin.name : plugin.id });\n }\n return entries;\n}\n", "import { pluginRequiredFieldLabels } from \"./plugin-catalog.js\";\n\nexport function renderPluginList(plugins: readonly Record<string, unknown>[]): string {\n if (!plugins.length) return \"\";\n const rows = [[\"EXECUTABLE\", \"NAME\", \"REQUIRED FIELDS\"], ...plugins.map(plugin => {\n const executable = typeof plugin.executable === \"string\" ? plugin.executable : typeof plugin.id === \"string\" ? plugin.id : \"-\";\n const name = typeof plugin.plugin_name === \"string\" ? plugin.plugin_name : typeof plugin.name === \"string\" ? plugin.name : executable;\n const key = typeof plugin.executable === \"string\" ? plugin.executable : typeof plugin.plugin_name === \"string\" ? plugin.plugin_name : \"\";\n const requiredFields = plugin.source === \"1password-registry\" && Object.hasOwn(pluginRequiredFieldLabels, key) ? pluginRequiredFieldLabels[key]! : \"-\";\n return [executable, name, requiredFields];\n })];\n const executableWidth = Math.max(...rows.map(row => row[0]!.length)) + 4;\n const nameWidth = Math.max(...rows.map(row => row[1]!.length)) + 4;\n return rows.map(row => `${row[0]!.padEnd(executableWidth)}${row[1]!.padEnd(nameWidth)}${row[2]}`).join(\"\\n\") + \"\\n\";\n}\n", "import type { OpBackend, OpBackendContext, OpBackendRequest, OpBindingTarget, OpPreparedBinding } from \"./types.js\";\nimport type { OpHandlerPreparation, OpPreparedEffect, OpPreparedHandler } from \"./handler-preparation.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createCompletionCallbackHandler } from \"./completion.js\";\nimport { renderOpHelp } from \"./help-renderer.js\";\nimport { renderPluginList } from \"./plugin-list-output.js\";\nimport { validateOpFlagValue } from \"./flag-values.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { parseOpCsv } from \"./csv-values.js\";\nexport { parseOpFileMode } from \"./file-mode.js\";\nexport { createOpTextCodec } from \"./encoding.js\";\nimport { opCommandCatalog, opGlobalFlags, opRootFlags, type OpCatalogCommand, type OpFlagDefinition } from \"./catalog.js\";\n\nexport interface OpOutputSink {\n isTTY?: boolean;\n write(data: Uint8Array): Promise<void>;\n}\n\nexport interface OpFileWriteOptions {\n mode?: number;\n overwrite?: boolean;\n}\n\nexport interface OpCommandContext {\n args: readonly string[];\n env: Record<string, string>;\n signal: AbortSignal;\n binding?: OpBackendContext[\"binding\"];\n authentication?: OpBackendContext[\"authentication\"];\n pluginScope?: OpBackendContext[\"pluginScope\"];\n confirmPluginClear?: OpBackendContext[\"confirmPluginClear\"];\n selectPlugin?: OpBackendContext[\"selectPlugin\"];\n stdin: AsyncIterable<Uint8Array>;\n stdout: OpOutputSink;\n stderr: OpOutputSink;\n invoke?: (command: string, args: readonly string[], options: {\n env: Readonly<Record<string, string>>;\n stdout?: OpOutputSink;\n stderr?: OpOutputSink;\n }) => Promise<{ exitCode: number }>;\n readFile?: (path: string) => Promise<Uint8Array>;\n writeFile?: (path: string, data: Uint8Array, options?: OpFileWriteOptions) => Promise<void>;\n}\n\nexport interface OpCommandOptions {\n backend: OpBackend;\n version?: string;\n channel?: \"stable\" | \"beta\";\n authorize?: (request: OpBackendRequest, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) =>\n \"allow\" | \"deny\" | \"ask\" | Promise<\"allow\" | \"deny\" | \"ask\">;\n approve?: (request: OpBackendRequest, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) => boolean | Promise<boolean>;\n approvalMode?: \"resolved\" | \"literal\";\n authorizeResolution?: OpCommandOptions[\"approve\"];\n approveResolved?: (approval: OpResolvedApproval, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) => boolean | Promise<boolean>;\n handlers?: Readonly<Record<string, (request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>>>;\n}\n\nexport interface OpResolvedApproval {\n readonly operation: Readonly<{ resource: string; action: string }>;\n readonly backendId: string;\n readonly accountId: string | null;\n readonly targets: readonly OpBindingTarget[];\n readonly optionNames: readonly string[];\n readonly mutation: Readonly<{ requested: boolean; propertyNames: readonly string[]; assignmentNames: readonly string[]; batchSize?: number }>;\n readonly output: Readonly<{ kind: \"none\" | \"stdout\" | \"file\"; destination?: string }>;\n readonly child?: Readonly<{ executable: string; argv: readonly string[]; environmentNames: readonly string[] }>;\n}\n\ntype FlagValue = string | boolean | readonly string[];\n\nexport function selectOpGlobalFlags(flags: OpBackendRequest[\"flags\"]): OpBackendRequest[\"flags\"] {\n return Object.freeze(Object.fromEntries(Object.entries(flags).filter(([name]) => Object.hasOwn(opGlobalFlags, name))));\n}\n\nexport function selectOpBackendContext(context: OpCommandContext): OpBackendContext {\n return Object.freeze({\n signal: context.signal,\n ...(context.binding === undefined ? {} : { binding: context.binding }),\n ...(context.authentication === undefined ? {} : { authentication: context.authentication }),\n ...(context.pluginScope === undefined ? {} : { pluginScope: context.pluginScope }),\n ...(context.confirmPluginClear === undefined ? {} : { confirmPluginClear: context.confirmPluginClear }),\n ...(context.selectPlugin === undefined ? {} : { selectPlugin: context.selectPlugin }),\n });\n}\n\nfunction booleanValue(value: string): boolean | undefined {\n if ([\"true\", \"1\", \"t\", \"TRUE\", \"True\", \"T\"].includes(value)) return true;\n if ([\"false\", \"0\", \"f\", \"FALSE\", \"False\", \"F\"].includes(value)) return false;\n return undefined;\n}\n\nfunction flagValue(name: string, definition: OpFlagDefinition, value: string | undefined): FlagValue {\n if (definition.kind === \"boolean\") {\n if (value === undefined) return true;\n const parsed = booleanValue(value);\n if (parsed !== undefined) return parsed;\n throw new Error(`invalid boolean value for --${name}`);\n }\n if (definition.kind === \"optional\" && value === undefined) return true;\n if (value === undefined) throw new Error(`flag needs a value: --${name}`);\n validateOpFlagValue(name, definition, value);\n if (definition.kind === \"array\") return [value];\n if (definition.kind === \"csv\") return definition.valueSyntax === \"csv\" ? parseOpCsv(value) : value.split(\",\");\n return value;\n}\n\nfunction commandFlags(command: OpCatalogCommand | undefined, channel: \"stable\" | \"beta\", root: boolean): Record<string, OpFlagDefinition> {\n return Object.fromEntries(Object.entries({ ...opGlobalFlags, ...(root ? opRootFlags : {}), ...command?.flags }).filter(([, flag]) => channel === \"beta\" || flag.availability !== \"beta\"));\n}\n\nfunction scanCommand(argv: readonly string[], channel: \"stable\" | \"beta\", resolvedFlags?: Record<string, OpFlagDefinition>) {\n const tokens = [...argv];\n const path: string[] = [];\n const args: string[] = [];\n const flags: Record<string, FlagValue> = Object.create(null);\n let command: OpCatalogCommand | undefined;\n let candidates = opCommandCatalog.filter(entry => channel === \"beta\" || entry.availability !== \"beta\");\n let literal = false;\n let help = argv[0] === \"help\";\n for (let index = help ? 1 : 0; index < tokens.length; index++) {\n const token = tokens[index]!;\n if (literal) { args.push(token); continue; }\n if (token === \"--\") { literal = true; continue; }\n if (token.startsWith(\"-\") && token !== \"-\") {\n const available = resolvedFlags ?? {};\n if (!resolvedFlags) {\n for (const candidate of candidates) {\n for (const [name, definition] of Object.entries(commandFlags(candidate, channel, path.length === 0))) {\n const previous = available[name];\n available[name] = { ...definition,\n alias: previous?.alias ?? definition.alias,\n longAliases: [...new Set([...(previous?.longAliases ?? []), ...(definition.longAliases ?? [])])],\n };\n }\n }\n }\n if (!token.startsWith(\"--\") && token.length > 2 && token[2] !== \"=\") {\n const firstName = Object.keys(available).find(key => available[key]!.alias === token[1]);\n if (!firstName) throw new Error(`unknown shorthand flag: ${token[1]}`);\n const first = available[firstName]!;\n tokens.splice(index, 1, ...(first.kind === \"boolean\" ? [token.slice(0, 2), `-${token.slice(2)}`] : [`${token.slice(0, 2)}=${token.slice(2)}`]));\n index--;\n continue;\n }\n const equal = token.indexOf(\"=\");\n const long = token.startsWith(\"--\");\n const spelling = token.slice(long ? 2 : 1, equal < 0 ? undefined : equal);\n const name = long ? Object.hasOwn(available, spelling) ? spelling : Object.keys(available).find(key => available[key]!.longAliases?.includes(spelling))\n : Object.keys(available).find(key => available[key]!.alias === spelling);\n const definition = name === undefined || !Object.hasOwn(available, name) ? undefined : available[name];\n if (!name || !definition) throw new Error(`unknown flag: ${token.slice(0, equal < 0 ? undefined : equal)}`);\n if (!resolvedFlags && !command && equal < 0 && !Object.hasOwn(commandFlags(undefined, channel, path.length === 0), name)) {\n index++;\n continue;\n }\n let value = equal < 0 ? undefined : token.slice(equal + 1);\n if (value === undefined && definition.kind !== \"boolean\" && definition.kind !== \"optional\") {\n value = tokens[++index];\n if (value === undefined) throw new Error(`flag needs a value: --${name}`);\n }\n const parsed = flagValue(name, definition, value);\n const previous = flags[name];\n flags[name] = Array.isArray(previous) && Array.isArray(parsed) ? [...previous, ...parsed] : parsed;\n continue;\n }\n if (command) { args.push(token); continue; }\n if (token === \"help\" && path.length === 0) { help = true; continue; }\n candidates = candidates.filter(entry => entry.path[path.length] === token || (entry.path.length === path.length + 1 && entry.aliases.includes(token)));\n if (candidates.length === 0) throw new Error(`unknown command: ${[...path, token].join(\" \")}`);\n path.push(candidates[0]!.path[path.length]!);\n command = candidates.find(entry => entry.path.length === path.length);\n }\n help ||= flags.help === true || path.length === 0 || (!command && args.length === 0);\n return { path, args, flags, command, help };\n}\n\nfunction parseCommand(argv: readonly string[], env: Readonly<Record<string, string>>, channel: \"stable\" | \"beta\") {\n const resolved = scanCommand(argv, channel);\n const parsed = scanCommand(argv, channel, commandFlags(resolved.command, channel, resolved.path.length === 0));\n const { path, flags, command } = parsed;\n if (path.length > 0 && flags.version !== undefined) throw new Error(\"unknown flag: --version\");\n const available = commandFlags(command, channel, path.length === 0);\n for (const [name, definition] of Object.entries(available)) {\n const value = definition.env === undefined ? undefined : env[definition.env];\n if (flags[name] === undefined && value !== undefined && value !== \"\") {\n if (definition.invalidEnv === \"ignore\" && definition.kind === \"boolean\" && booleanValue(value) === undefined) continue;\n flags[name] = flagValue(name, definition, value);\n }\n }\n if (flags.format !== undefined && flags.format !== \"json\" && flags.format !== \"human-readable\") throw new Error(\"format must be json or human-readable\");\n return parsed;\n}\n\nfunction freezeJson(value: unknown): unknown {\n if (value !== null && typeof value === \"object\") {\n for (const child of Object.values(value)) freezeJson(child);\n Object.freeze(value);\n }\n return value;\n}\n\nasync function readInput(context: OpCommandContext, encoding: unknown): Promise<{ input: unknown; chunks: Uint8Array[] }> {\n const chunks: Uint8Array[] = [];\n let length = 0;\n for await (const chunk of context.stdin) {\n context.signal.throwIfAborted();\n length += chunk.byteLength;\n if (length > 16 * 1024 * 1024) throw new Error(\"stdin exceeds 16 MiB\");\n chunks.push(Uint8Array.from(chunk));\n }\n if (length === 0) return { input: undefined, chunks };\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n const text = createOpTextCodec(encoding).decoder().decode(bytes);\n try { return { input: freezeJson(JSON.parse(text)), chunks }; } catch { return { input: text, chunks }; }\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && !(value instanceof Uint8Array);\n}\n\nfunction conceal(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(conceal);\n if (!record(value)) return value;\n const hidden = [\"CONCEALED\", \"OTP\", \"SSHKEY\"].includes(String(value.type).toUpperCase()) || value.purpose === \"PASSWORD\";\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key,\n hidden && key === \"value\" ? \"(use 'op item get --reveal' to reveal)\" : conceal(entry),\n ]));\n}\n\nfunction metadata(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(metadata);\n if (!record(value)) return value;\n return Object.fromEntries(Object.entries(value).filter(([key]) => key !== \"content\").map(([key, entry]) => [key, metadata(entry)]));\n}\n\nexport function renderOpOutput(result: unknown, request: OpBackendRequest): Uint8Array | undefined {\n const encoder = createOpTextCodec(request.flags.encoding);\n const { resource, action, flags } = request;\n const format = flags.format;\n let value = result;\n if (resource === \"plugin\" && action === \"list\" && format !== \"json\" && Array.isArray(value) && value.every(record)) return encoder.encode(renderPluginList(value));\n if (resource === \"document\" && action === \"get\") {\n const content = record(value) ? value.content : value;\n if (content instanceof Uint8Array) return content;\n if (typeof content === \"string\") return new TextEncoder().encode(content);\n throw new Error(\"document backend did not return document content\");\n }\n if (resource === \"item\" || resource === \"document\") value = metadata(value);\n if (resource === \"item\" && flags.otp === true) {\n const values = request.args.length === 1 && request.args[0] === \"-\" && Array.isArray(value) ? value : [value];\n const codes: string[] = [];\n for (const entry of values) {\n if (typeof entry !== \"string\" || ![6, 8].includes(entry.trim().length) || !Array.from(entry.trim()).every(character => character >= \"0\" && character <= \"9\")) {\n throw new Error(\"backend did not return a generated one-time password\");\n }\n codes.push(entry.trim());\n }\n if (!codes.length) throw new Error(\"backend did not return a generated one-time password\");\n return encoder.encode(`${codes.join(\"\\n\")}\\n`);\n }\n if (resource === \"item\" && flags.fields !== undefined) {\n const selectors = typeof flags.fields === \"string\" ? parseOpCsv(flags.fields) : flags.fields;\n if (!Array.isArray(selectors)) throw new Error(\"fields must be a list\");\n const fields = record(value) && Array.isArray(value.fields) ? value.fields : Array.isArray(value) ? value : [value];\n const selected = selectors.flatMap(selector => {\n const equal = selector.indexOf(\"=\");\n const key = equal < 0 ? \"label\" : selector.slice(0, equal);\n const match = (equal < 0 ? selector : selector.slice(equal + 1)).toLowerCase();\n if (key !== \"label\" && key !== \"type\") throw new Error(\"field selectors must use label or type\");\n const matches = fields.filter(field => record(field) && (String(field[key] ?? \"\").toLowerCase() === match || (key === \"label\" && String(field.id ?? \"\").toLowerCase() === match)));\n if (!matches.length) throw new Error(\"selected field was not found\");\n return matches;\n });\n if (format === \"json\") value = selected.length === 1 ? selected[0] : selected;\n else {\n const visible = flags.reveal === true ? selected : selected.map(conceal);\n const values = visible.map(field => {\n const text = String(record(field) ? field.value ?? \"\" : field);\n return Array.from(text).some(character => ',\"\\r\\n'.includes(character)) ? `\"${text.split('\"').join('\"\"')}\"` : text;\n });\n return encoder.encode(`${values.join(\",\")}\\n`);\n }\n }\n if (resource === \"item\" && format !== \"json\" && flags.reveal !== true) value = conceal(value);\n if (value === undefined) return undefined;\n if (value instanceof Uint8Array) return value;\n if (format === \"json\") return encoder.encode(`${JSON.stringify(value, null, 2)}\\n`);\n if (typeof value === \"string\") return encoder.encode(value.endsWith(\"\\n\") ? value : `${value}\\n`);\n if (Array.isArray(value)) {\n if (value.length === 0) return new Uint8Array();\n if (value.every(row => row !== null && typeof row === \"object\" && !Array.isArray(row))) {\n const keys = [...new Set(value.flatMap(row => Object.keys(row)))];\n return encoder.encode(`${keys.join(\"\\t\")}\\n${value.map(row => keys.map(key => typeof row[key] === \"object\" ? JSON.stringify(row[key]) : String(row[key] ?? \"\")).join(\"\\t\")).join(\"\\n\")}\\n`);\n }\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n return encoder.encode(`${Object.entries(value).map(([key, entry]) => `${key}: ${typeof entry === \"object\" ? JSON.stringify(entry) : String(entry)}`).join(\"\\n\")}\\n`);\n }\n return encoder.encode(`${JSON.stringify(value)}\\n`);\n}\n\nasync function policyResult<Value>(callback: () => Value | Promise<Value>, signal: AbortSignal): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"operation aborted\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n return await Promise.race([Promise.resolve().then(() => {\n signal.throwIfAborted();\n return callback();\n }), cancelled]);\n } catch {\n throw new Error(\"authorization failed\");\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nfunction approvalManifest(request: OpBackendRequest, requests: readonly OpBackendRequest[], prepared: OpPreparedBinding, effects: readonly OpPreparedEffect[]): OpResolvedApproval {\n if (typeof prepared.backendId !== \"string\" || (prepared.accountId !== null && typeof prepared.accountId !== \"string\")) throw new Error(\"Invalid binding metadata\");\n const targets = prepared.targets.map(target => {\n if (!Number.isInteger(target.requestIndex) || target.requestIndex < 0 || target.requestIndex >= requests.length || typeof target.resource !== \"string\" || typeof target.revision !== \"string\" || ![\"object\", \"collection\", \"field\", \"section\"].includes(target.kind)) throw new Error(\"Invalid binding target metadata\");\n for (const name of [\"id\", \"account\", \"parentId\"] as const) if (target[name] !== undefined && typeof target[name] !== \"string\") throw new Error(\"Invalid binding target metadata\");\n return { requestIndex: target.requestIndex, resource: target.resource, kind: target.kind, revision: target.revision,\n ...(target.id === undefined ? {} : { id: target.id }), ...(target.account === undefined ? {} : { account: target.account }), ...(target.parentId === undefined ? {} : { parentId: target.parentId }) };\n });\n const file = effects.find(effect => effect.kind === \"file\");\n const child = effects.find(effect => effect.kind === \"invoke\");\n if (effects.filter(effect => effect.kind === \"file\").length > 1 || effects.filter(effect => effect.kind === \"invoke\").length > 1) throw new Error(\"Multiple output destinations are unsupported\");\n if (file && typeof file.path !== \"string\") throw new Error(\"Invalid output metadata\");\n if (child && (typeof child.command !== \"string\" || !Number.isSafeInteger(child.argumentCount) || child.argumentCount! < 0 || !Array.isArray(child.environmentNames) || !child.environmentNames.every(name => typeof name === \"string\"))) throw new Error(\"Invalid child metadata\");\n const mutations = requests.filter(entry => ![\"get\", \"list\", \"read\", \"inspect\", \"ratelimit\"].includes(entry.action));\n const inputs = mutations.flatMap(entry => Array.isArray(entry.input) ? entry.input : entry.input === undefined ? [] : [entry.input]);\n const propertyNames = [...new Set(inputs.flatMap(input => record(input) ? Object.keys(input) : []))].sort();\n const assignmentNames = [...new Set(mutations.filter(entry => entry.resource === \"item\" && [\"create\", \"edit\", \"update\"].includes(entry.action)).flatMap(entry => entry.args.filter(arg => arg.includes(\"=\")).map(arg => arg.slice(0, arg.indexOf(\"=\")))))].sort();\n const manifest: OpResolvedApproval = {\n operation: { resource: request.resource, action: request.action }, backendId: prepared.backendId, accountId: prepared.accountId, targets,\n optionNames: Object.keys(request.flags).sort(),\n mutation: { requested: mutations.length > 0, propertyNames, assignmentNames,\n ...(requests.some(entry => Array.isArray(entry.input)) ? { batchSize: inputs.length } : {}) },\n output: file ? { kind: \"file\", destination: file.path } : { kind: effects.some(effect => effect.kind === \"stdout\") ? \"stdout\" : \"none\" },\n ...(child ? { child: { executable: child.command!, argv: Array.from({ length: child.argumentCount! }, () => \"[redacted]\"), environmentNames: [...child.environmentNames!] } } : {}),\n };\n return freezeJson(manifest) as OpResolvedApproval;\n}\n\nexport function createOpCommand(options: OpCommandOptions): { name: \"op\"; execute(context: OpCommandContext): Promise<{ exitCode: number }> } {\n const { backend, authorize, approve, authorizeResolution, approveResolved, approvalMode = \"resolved\", version = \"0.0.1\", channel = \"stable\" } = options;\n const handlers = { ...options.handlers };\n const planners = new Map(Object.entries(handlers).flatMap(([key, handler]) => typeof (handler as Partial<OpPreparedHandler>).prepare === \"function\" ? [[key, (handler as OpPreparedHandler).prepare.bind(handler)] as const] : []));\n return {\n name: \"op\",\n async execute(callerContext) {\n const context: OpCommandContext = {\n ...callerContext,\n binding: undefined,\n args: Object.freeze([...callerContext.args]),\n env: Object.freeze({ ...callerContext.env }),\n ...(callerContext.pluginScope === undefined ? {} : { pluginScope: Object.freeze({ ...callerContext.pluginScope }) }),\n };\n let binding: OpPreparedBinding | undefined;\n let finished = false;\n let approved = false;\n const original = { ...context,\n stdin: { [Symbol.asyncIterator]: context.stdin[Symbol.asyncIterator].bind(context.stdin) },\n stdout: { isTTY: context.stdout.isTTY, write: context.stdout.write.bind(context.stdout) },\n stderr: { isTTY: context.stderr.isTTY, write: context.stderr.write.bind(context.stderr) },\n ...(context.readFile ? { readFile: context.readFile.bind(context) } : {}),\n ...(context.writeFile ? { writeFile: context.writeFile.bind(context) } : {}),\n ...(context.invoke ? { invoke: context.invoke.bind(context) } : {}),\n };\n try {\n context.signal.throwIfAborted();\n const biometric = context.env.OP_BIOMETRIC_UNLOCK_ENABLED;\n if (biometric !== undefined && biometric !== \"true\" && biometric !== \"false\") throw new Error(\"OP_BIOMETRIC_UNLOCK_ENABLED must be true or false.\");\n const integration = biometric === undefined ? callerContext.authentication?.integration ?? \"manual\" : biometric === \"true\" ? \"app\" : \"manual\";\n context.authentication = Object.freeze({ ...callerContext.authentication, integration });\n if (context.args[0] === \"__complete\" || context.args[0] === \"__completeNoDesc\") {\n return await createCompletionCallbackHandler(channel)({ resource: context.args[0], action: \"\", args: context.args.slice(1), flags: {} }, context);\n }\n const parsed = parseCommand(context.args, context.env, channel);\n if (parsed.flags.version === true) {\n await context.stdout.write(new TextEncoder().encode(`${version}\\n`));\n return { exitCode: 0 };\n }\n if (parsed.flags.help !== true) createOpTextCodec(parsed.flags.encoding);\n if (parsed.help) {\n await context.stdout.write(new TextEncoder().encode(renderOpHelp(parsed.path, channel)));\n return { exitCode: 0 };\n }\n const codec = createOpTextCodec(parsed.flags.encoding);\n const decodeArgument = (value: string) => codec.decoder().decode(new TextEncoder().encode(value));\n parsed.args = parsed.args.map(decodeArgument);\n for (const [name, value] of Object.entries(parsed.flags)) {\n if (name === \"encoding\") continue;\n if (typeof value === \"string\") parsed.flags[name] = decodeArgument(value);\n else if (Array.isArray(value)) parsed.flags[name] = value.map(decodeArgument);\n }\n if (!parsed.command) throw new Error(\"a command is required\");\n const limits = parsed.command.args;\n if (limits && parsed.args.length < limits.min) throw new Error(`expected at least ${limits.min} arguments but got ${parsed.args.length} instead`);\n if (limits?.max !== undefined && parsed.args.length > limits.max) throw new Error(`expected at most ${limits.max} arguments but got ${parsed.args.length} instead`);\n const key = parsed.path.join(\" \");\n const handler = Object.hasOwn(handlers, key) ? handlers[key] : undefined;\n const requiresInput = limits?.stdinAlternative === true && parsed.args.length === 0;\n for (const value of Object.values(parsed.flags)) if (Array.isArray(value)) Object.freeze(value);\n const literalRequest: OpBackendRequest = Object.freeze({\n resource: parsed.path.length === 1 ? parsed.path[0]! : parsed.path.slice(0, -1).join(\" \"),\n action: parsed.path.length === 1 ? \"\" : parsed.path.at(-1)!,\n args: Object.freeze(parsed.args), flags: Object.freeze({ ...parsed.flags }),\n });\n const executionContext = Object.freeze({\n signal: context.signal,\n ...(context.authentication === undefined ? {} : { authentication: context.authentication }),\n ...(context.pluginScope === undefined ? {} : { pluginScope: context.pluginScope }),\n });\n const decision = authorize ? await policyResult(() => authorize(literalRequest, executionContext), context.signal) : \"allow\";\n context.signal.throwIfAborted();\n if (decision !== \"allow\" && decision !== \"ask\") throw new Error(\"permission denied\");\n if (approvalMode !== \"resolved\" && approvalMode !== \"literal\") throw new Error(\"Unsupported approval mode\");\n const resolved = decision === \"ask\" && approvalMode === \"resolved\";\n if (decision === \"ask\") {\n if (!resolved) {\n if (!approve || await policyResult(() => approve(literalRequest, executionContext), context.signal) !== true) throw new Error(\"permission denied\");\n } else {\n if (!authorizeResolution || !approveResolved || !backend.prepareBinding || !backend.validateBinding || !backend.cancelBinding || (handler && !planners.has(key))) throw new Error(\"Resolved approval is unsupported\");\n if (await policyResult(() => authorizeResolution(literalRequest, executionContext), context.signal) !== true) throw new Error(\"Resolution permission denied\");\n }\n }\n context.signal.throwIfAborted();\n context.stdin = original.stdin;\n context.readFile = original.readFile;\n const buffered = !handler || requiresInput ? await readInput(context, parsed.flags.encoding) : undefined;\n const input = buffered?.input;\n if (requiresInput && input === undefined) throw new Error(\"An object selector or piped input is required\");\n if (handler && buffered) context.stdin = { async *[Symbol.asyncIterator]() { yield* buffered.chunks; } };\n const request: OpBackendRequest = input === undefined ? literalRequest : Object.freeze({ ...literalRequest, input });\n if (resolved) {\n const validate = (): void | Promise<void> => {\n context.signal.throwIfAborted();\n if (!approved || !binding || finished) throw new Error(\"Resolved approval is not active\");\n const pending = backend.validateBinding!(binding.handle, selectOpBackendContext(context));\n if (pending !== undefined) return Promise.resolve(pending).then(() => { context.signal.throwIfAborted(); });\n context.signal.throwIfAborted();\n };\n const handoff = <Value>(effect: () => Promise<Value>): Promise<Value> => {\n const pending = validate();\n return pending === undefined ? effect() : pending.then(effect);\n };\n context.stdout = { isTTY: original.stdout.isTTY, async write(bytes) { return handoff(() => original.stdout.write(bytes)); } };\n context.stderr = { isTTY: original.stderr.isTTY, async write(bytes) { return handoff(() => original.stderr.write(bytes)); } };\n if (original.writeFile) context.writeFile = async (path, bytes, writeOptions) => handoff(() => original.writeFile!(path, bytes, writeOptions));\n if (original.invoke) context.invoke = async (command, args, invokeOptions) => handoff(() => original.invoke!(command, args, invokeOptions));\n const restoration = original as OpCommandContext & { restoreEnvironment?: (snapshot: unknown, context: { signal: AbortSignal }) => Promise<void> };\n if (restoration.restoreEnvironment) Object.assign(context, { async restoreEnvironment(snapshot: unknown) { return handoff(() => restoration.restoreEnvironment!(snapshot, { signal: context.signal })); } });\n let preparation: OpHandlerPreparation | undefined;\n if (handler) preparation = await policyResult(() => planners.get(key)!(request, context), context.signal);\n const requests = preparation?.requests ?? [request];\n const pending = Promise.resolve().then(() => {\n context.signal.throwIfAborted();\n return backend.prepareBinding!(requests, selectOpBackendContext(context));\n }).then(value => {\n if (finished || context.signal.aborted) backend.cancelBinding!(value.handle);\n else binding = value;\n return value;\n });\n const prepared = await policyResult(() => pending, context.signal);\n const manifest = await policyResult(() => {\n const destination = request.flags[\"out-file\"];\n const effects: readonly OpPreparedEffect[] = preparation ? preparation.complete(prepared.metadata) : [typeof destination === \"string\" ? { kind: \"file\", path: destination } : { kind: \"stdout\" }];\n return approvalManifest(literalRequest, requests, prepared, effects);\n }, context.signal);\n if (await policyResult(() => approveResolved!(manifest, executionContext), context.signal) !== true) throw new Error(\"permission denied\");\n if (preparation) Object.assign(context, preparation.context, { authentication: executionContext.authentication, pluginScope: executionContext.pluginScope });\n context.binding = prepared.handle;\n approved = true;\n await validate();\n }\n if (handler) return await handler(request, context);\n const destination = parsed.flags[\"out-file\"];\n const writeOptions = typeof destination === \"string\" ? { mode: parseOpFileMode(parsed.flags[\"file-mode\"]), overwrite: parsed.flags.force === true } : undefined;\n if (typeof destination === \"string\" && !context.writeFile) throw new Error(\"file output requires a host writeFile capability\");\n const result = await backend.execute(request, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const output = renderOpOutput(result, request);\n if (output !== undefined) {\n if (typeof destination === \"string\") {\n await context.writeFile!(destination, output, writeOptions);\n } else await context.stdout.write(output);\n }\n return { exitCode: 0 };\n } catch (error) {\n await original.stderr.write(new TextEncoder().encode(`op: ${context.signal.aborted ? \"operation aborted\" : error instanceof Error ? error.message : \"operation failed\"}\\n`));\n return { exitCode: context.signal.aborted ? 130 : 1 };\n } finally {\n finished = true;\n if (binding) backend.cancelBinding!(binding.handle);\n }\n },\n };\n}\n", "import type { OpCommandContext, OpFileWriteOptions } from \"./cli.js\";\nimport type { OpBackendRequest } from \"./types.js\";\nimport type { EnvironmentSnapshot } from \"./environment.js\";\n\nexport interface OpPreparedEffect {\n readonly kind: \"stdout\" | \"file\" | \"invoke\" | \"restore\";\n readonly path?: string;\n readonly options?: Readonly<OpFileWriteOptions>;\n readonly command?: string;\n readonly argumentCount?: number;\n readonly environmentNames?: readonly string[];\n readonly unsetNames?: readonly string[];\n readonly masking?: boolean;\n}\n\nexport interface OpEffectIntent extends OpPreparedEffect {\n readonly args?: readonly string[];\n}\n\nexport interface OpHandlerRequestMetadata {\n readonly environment?: {\n readonly names: readonly string[];\n readonly unsetNames?: readonly string[];\n readonly scope?: \"complete\" | \"selected\";\n readonly dependenciesComplete: boolean;\n };\n}\n\nexport interface OpHandlerPreparation {\n readonly requests: readonly OpBackendRequest[];\n readonly context: OpCommandContext;\n readonly effects: readonly OpPreparedEffect[];\n complete(metadata: readonly OpHandlerRequestMetadata[]): readonly OpPreparedEffect[];\n}\n\nexport type OpPreparedHandler = ((request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>) & {\n prepare(request: OpBackendRequest, context: OpCommandContext): Promise<OpHandlerPreparation>;\n};\n\nasync function acquire<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"Operation aborted\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nexport function createSourceSnapshot(source: OpCommandContext, maxBytes = 16 * 1024 * 1024) {\n const signal = source.signal;\n const readFile = source.readFile?.bind(source);\n const stdin = source.stdin;\n const files = new Map<string, Uint8Array>();\n let input: Promise<Uint8Array> | undefined;\n const context: OpCommandContext = {\n ...source,\n args: Object.freeze([...source.args]),\n env: Object.freeze({ ...source.env }),\n stdout: Object.freeze({ isTTY: source.stdout.isTTY, write: source.stdout.write.bind(source.stdout) }),\n stderr: Object.freeze({ isTTY: source.stderr.isTTY, write: source.stderr.write.bind(source.stderr) }),\n ...(source.writeFile ? { writeFile: source.writeFile.bind(source) } : {}),\n ...(source.invoke ? { invoke: source.invoke.bind(source) } : {}),\n ...(source.authentication ? { authentication: Object.freeze({ ...source.authentication }) } : {}),\n ...(source.pluginScope ? { pluginScope: Object.freeze({ ...source.pluginScope }) } : {}),\n async readFile(path) {\n signal.throwIfAborted();\n const bytes = files.get(path);\n if (!bytes) throw new Error(\"Unplanned file acquisition\");\n return Uint8Array.from(bytes);\n },\n stdin: {\n async *[Symbol.asyncIterator]() {\n signal.throwIfAborted();\n if (!input) throw new Error(\"Unplanned stdin acquisition\");\n yield Uint8Array.from(await input);\n },\n },\n };\n return {\n context,\n async file(path: string): Promise<Uint8Array> {\n signal.throwIfAborted();\n if (!files.has(path)) {\n if (!readFile) throw new Error(\"Host readFile capability is required\");\n const bytes = await acquire(signal, () => readFile(path));\n if (bytes.byteLength > maxBytes) throw new Error(\"Prepared source exceeds byte limit\");\n files.set(path, Uint8Array.from(bytes));\n }\n return Uint8Array.from(files.get(path)!);\n },\n input(): Promise<Uint8Array> {\n input ??= (async () => {\n const chunks: Uint8Array[] = [];\n let size = 0;\n const iterator = stdin[Symbol.asyncIterator]();\n while (true) {\n const next = await acquire(signal, () => iterator.next());\n if (next.done) break;\n if (next.value.byteLength > maxBytes - size) throw new Error(\"Prepared source exceeds byte limit\");\n chunks.push(Uint8Array.from(next.value));\n size += next.value.byteLength;\n }\n const bytes = new Uint8Array(size);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }\n return bytes;\n })();\n return input.then(bytes => Uint8Array.from(bytes));\n },\n };\n}\n\nfunction freezeTree<Value>(value: Value): Value {\n if (value !== null && typeof value === \"object\" && !(value instanceof Uint8Array)) {\n for (const child of Object.values(value)) freezeTree(child);\n Object.freeze(value);\n }\n return value;\n}\n\nfunction effectMetadata(effects: readonly OpEffectIntent[]): readonly OpPreparedEffect[] {\n return freezeTree(effects.map(effect => {\n const { args, ...metadata } = effect;\n return structuredClone({ ...metadata, ...(args === undefined ? {} : { argumentCount: args.length }) });\n }));\n}\n\nexport function createHandlerPreparation(\n requests: readonly OpBackendRequest[], context: OpCommandContext, effects: readonly OpEffectIntent[],\n complete: (metadata: readonly OpHandlerRequestMetadata[]) => readonly OpEffectIntent[] = () => effects,\n): OpHandlerPreparation {\n let admitted: readonly OpEffectIntent[] | undefined;\n const signal = context.signal;\n const allowed = (kind: OpPreparedEffect[\"kind\"]) => {\n signal.throwIfAborted();\n if (!admitted) throw new Error(\"Preparation is incomplete\");\n return admitted.filter(effect => effect.kind === kind);\n };\n const same = (first: readonly string[], second: readonly string[]) => first.length === second.length && first.every((value, index) => value === second[index]);\n const namesMatch = (expected: readonly string[] | undefined, env: Readonly<Record<string, unknown>>) => expected !== undefined && same([...expected].sort(), Object.keys(env).sort());\n const guarded: OpCommandContext = {\n ...context,\n stdout: {\n isTTY: context.stdout.isTTY,\n async write(bytes) {\n if (!allowed(\"stdout\").length && !allowed(\"invoke\").length) throw new Error(\"Unplanned output\");\n await acquire(signal, () => context.stdout.write(Uint8Array.from(bytes)));\n },\n },\n stderr: {\n isTTY: context.stderr.isTTY,\n async write(bytes) {\n if (!allowed(\"invoke\").length) throw new Error(\"Unplanned error output\");\n await acquire(signal, () => context.stderr.write(Uint8Array.from(bytes)));\n },\n },\n ...(context.writeFile ? { async writeFile(path: string, bytes: Uint8Array, options?: OpFileWriteOptions) {\n if (!allowed(\"file\").some(effect => effect.path === path && effect.options?.mode === options?.mode && effect.options?.overwrite === options?.overwrite)) throw new Error(\"Unplanned file output\");\n await acquire(signal, () => context.writeFile!(path, Uint8Array.from(bytes), options ? { ...options } : undefined));\n } } : {}),\n ...(context.invoke ? { async invoke(command: string, args: readonly string[], options: Parameters<NonNullable<OpCommandContext[\"invoke\"]>>[2]) {\n if (!allowed(\"invoke\").some(effect => effect.command === command && same(effect.args ?? [], args) && namesMatch(effect.environmentNames, options.env))) throw new Error(\"Unplanned child invocation\");\n return acquire(signal, () => context.invoke!(command, Object.freeze([...args]), { ...options, env: Object.freeze({ ...options.env }) }));\n } } : {}),\n };\n const restoration = context as OpCommandContext & { restoreEnvironment?: (snapshot: EnvironmentSnapshot, context: { signal: AbortSignal }) => Promise<void> };\n if (restoration.restoreEnvironment) {\n const restore = restoration.restoreEnvironment.bind(context);\n Object.assign(guarded, { async restoreEnvironment(snapshot: EnvironmentSnapshot) {\n const values = Object.fromEntries(Object.entries(snapshot.variables).filter(([, value]) => value !== null));\n const unsets = Object.entries(snapshot.variables).filter(([, value]) => value === null).map(([key]) => key);\n if (!allowed(\"restore\").some(effect => namesMatch(effect.environmentNames, values) && unsets.every(key => effect.unsetNames?.includes(key)))) throw new Error(\"Unplanned environment restoration\");\n await acquire(signal, () => restore(structuredClone(snapshot), { signal }));\n } });\n }\n return Object.freeze({\n requests: freezeTree(requests.map(request => structuredClone(request))),\n context: guarded,\n effects: effectMetadata(effects),\n complete(metadata: readonly OpHandlerRequestMetadata[]) {\n context.signal.throwIfAborted();\n if (metadata.length !== requests.length) throw new Error(\"Incomplete binding metadata\");\n admitted = freezeTree(complete(metadata).map(effect => structuredClone(effect)));\n return effectMetadata(admitted);\n },\n });\n}\n", "import type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { selectOpBackendContext, selectOpGlobalFlags, type OpCommandContext } from \"./cli.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { createHandlerPreparation, createSourceSnapshot, type OpEffectIntent } from \"./handler-preparation.js\";\n\ntype SecretHandler = (request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>;\n\nfunction word(character: string): boolean {\n return character.length === 1 && ((character >= \"a\" && character <= \"z\") || (character >= \"A\" && character <= \"Z\") || (character >= \"0\" && character <= \"9\") || character === \"_\");\n}\n\nfunction expand(value: string, env: Readonly<Record<string, string>>, escapes = true): string {\n let output = \"\";\n for (let position = 0; position < value.length;) {\n const character = value[position]!;\n if (escapes && character === \"\\\\\" && position + 1 < value.length) {\n output += value[position + 1];\n position += 2;\n continue;\n }\n if (character !== \"$\") {\n output += character;\n position++;\n continue;\n }\n let end = position + 1;\n let name: string;\n let fallback = \"\";\n if (value[end] === \"{\") {\n end = value.indexOf(\"}\", end + 1);\n if (end < 0) throw new Error(\"Unclosed environment variable\");\n name = value.slice(position + 2, end).trim();\n const separator = name.indexOf(\":-\");\n if (separator >= 0) {\n fallback = name.slice(separator + 2);\n name = name.slice(0, separator).trim();\n }\n end++;\n } else {\n while (end < value.length && word(value[end]!)) end++;\n name = value.slice(position + 1, end);\n }\n if (!name || !Array.from(name).every(word) || (name[0]! >= \"0\" && name[0]! <= \"9\")) {\n output += character;\n position++;\n continue;\n }\n const key = Object.keys(env).find(candidate => candidate.toLowerCase() === name.toLowerCase());\n output += key === undefined ? fallback : env[key];\n position = end;\n }\n return output;\n}\n\nasync function cancellable<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nasync function template(value: string, env: Readonly<Record<string, string>>, resolve: (reference: string) => Promise<string>, variables = true): Promise<string> {\n let output = \"\";\n let position = 0;\n while (position < value.length) {\n if (value.startsWith(\"{{\", position)) {\n let start = position + 2;\n while (value[start] === \" \") start++;\n if (value[start] === '\"') {\n let end = start + 1;\n let escaped = false;\n for (; end < value.length; end++) {\n if (!escaped && value[end] === '\"') break;\n if (!escaped && value[end] === \"\\\\\") escaped = true;\n else escaped = false;\n }\n const literal = JSON.parse(value.slice(start, end + 1)) as string;\n let close = end + 1;\n while (value[close] === \" \") close++;\n if (!value.startsWith(\"}}\", close)) throw new Error(\"Invalid template literal\");\n output += literal;\n position = close + 2;\n continue;\n }\n const end = value.indexOf(\"}}\", start);\n if (end < 0) throw new Error(\"Unclosed secret template\");\n const content = value.slice(start, end).trim();\n const reference = variables ? expand(content, env) : content;\n if (!reference.startsWith(\"op://\")) throw new Error(\"Expected a secret reference in template\");\n output += await resolve(reference);\n position = end + 2;\n continue;\n }\n const previous = value[position - 1] ?? \"\";\n if (value.startsWith(\"op://\", position) && !(word(previous) || (previous !== \"\" && \"-+\\\\.\".includes(previous)))) {\n let end = position + 5;\n while (end < value.length) {\n const character = value[end]!;\n if (character === \"$\") {\n if (value[end + 1] === \"{\") {\n const close = value.indexOf(\"}\", end + 2);\n if (close < 0) throw new Error(\"Unclosed environment variable\");\n end = close + 1;\n continue;\n }\n end++;\n continue;\n }\n if (!word(character) && !\"/-?_.=&%\".includes(character)) break;\n end++;\n }\n const reference = value.slice(position, end);\n output += await resolve(variables ? expand(reference, env) : reference);\n position = end;\n continue;\n }\n if (variables && value[position] === \"$\") {\n let end = position + 1;\n if (value[end] === \"{\") {\n const close = value.indexOf(\"}\", end + 1);\n if (close < 0) throw new Error(\"Unclosed environment variable\");\n end = close + 1;\n } else {\n while (end < value.length && word(value[end]!)) end++;\n }\n output += expand(value.slice(position, end), env);\n position = end;\n continue;\n }\n output += value[position];\n position++;\n }\n return output;\n}\n\nfunction dotenv(source: string, env: Record<string, string>): Set<string> {\n const keys = new Set<string>();\n let position = 0;\n while (position < source.length) {\n while (position < source.length && source[position]!.trim() === \"\") position++;\n if (position === source.length) break;\n if (source[position] === \"#\") {\n while (position < source.length && source[position] !== \"\\n\") position++;\n continue;\n }\n const start = position;\n while (position < source.length && source[position] !== \"=\" && source[position] !== \"\\n\") position++;\n if (source[position] !== \"=\") throw new Error(\"Invalid dotenv assignment\");\n let key = source.slice(start, position).trim();\n if (key.startsWith(\"export \")) key = key.slice(7).trim();\n key = expand(key, env);\n if (!key || key.includes(\"\\0\") || key.includes(\"=\") || key.includes(\"op://\")) throw new Error(\"Invalid dotenv key\");\n position++;\n while (source[position] === \" \" || source[position] === \"\\t\") position++;\n const quote = source[position] === \"'\" || source[position] === '\"' ? source[position++]! : undefined;\n let raw = \"\";\n let closed = quote === undefined;\n while (position < source.length) {\n const character = source[position]!;\n if (quote !== undefined && character === quote) {\n closed = true;\n position++;\n break;\n }\n if (quote === undefined && (character === \"\\n\" || character === \"\\r\" || character === \"#\")) break;\n if (character === \"\\\\\" && quote !== \"'\" && position + 1 < source.length) {\n raw += character + source[position + 1];\n position += 2;\n } else {\n raw += character;\n position++;\n }\n }\n if (!closed) throw new Error(\"Unclosed dotenv quote\");\n if (quote !== undefined) {\n while (source[position] === \" \" || source[position] === \"\\t\" || source[position] === \"\\r\") position++;\n if (position < source.length && source[position] !== \"#\" && source[position] !== \"\\n\") throw new Error(\"Unexpected text after dotenv quote\");\n }\n while (position < source.length && source[position] !== \"\\n\") position++;\n const value = quote === undefined ? raw.trim() : raw;\n Object.defineProperty(env, key, { value: quote === \"'\" ? value : expand(value, env), enumerable: true, writable: true, configurable: true });\n keys.add(key);\n }\n return keys;\n}\n\nexport function createMaskedSink(sink: OpCommandContext[\"stdout\"], secrets: readonly string[], signal: AbortSignal) {\n const encoder = new TextEncoder();\n const patterns = [...new Set(secrets)].filter(Boolean).map(secret => encoder.encode(secret)).sort((left, right) => right.length - left.length);\n const replacement = encoder.encode(\"<concealed by 1Password>\");\n let pending = new Uint8Array();\n let queue = Promise.resolve();\n async function drain(final: boolean) {\n const output: number[] = [];\n let position = 0;\n while (position < pending.length) {\n const remaining = pending.length - position;\n const matches = patterns.filter(pattern => pattern.subarray(0, Math.min(pattern.length, remaining)).every((byte, offset) => byte === pending[position + offset]));\n if (!final && matches.some(pattern => pattern.length > remaining)) break;\n const match = matches.find(pattern => pattern.length <= remaining);\n if (match) {\n for (const byte of replacement) output.push(byte);\n position += match.length;\n } else output.push(pending[position++]!);\n }\n pending = pending.slice(position);\n if (output.length) await cancellable(signal, () => sink.write(new Uint8Array(output)));\n }\n return {\n sink: {\n write(data: Uint8Array): Promise<void> {\n const copy = Uint8Array.from(data);\n queue = queue.then(async () => {\n signal.throwIfAborted();\n const next = new Uint8Array(pending.length + copy.length);\n next.set(pending);\n next.set(copy, pending.length);\n pending = next;\n await drain(false);\n });\n return queue;\n }\n },\n async flush() {\n await queue;\n await drain(true);\n }\n };\n}\n\nfunction outputFile(request: OpBackendRequest, context: OpCommandContext): { path: string; options: { mode: number; overwrite: boolean } } | undefined {\n const path = request.flags[\"out-file\"];\n if (typeof path !== \"string\" || !path) return undefined;\n if (!context.writeFile) throw new Error(\"Host writeFile capability is required\");\n const mode = parseOpFileMode(request.flags[\"file-mode\"]);\n return { path, options: { mode, overwrite: request.flags.force === true } };\n}\n\nexport function createSecretHandlers(backend: OpBackend): Record<string, SecretHandler> {\n function resolver(request: OpBackendRequest, context: OpCommandContext, secrets: string[] = []) {\n return async (reference: string): Promise<string> => {\n const result = await cancellable(context.signal, () => backend.execute({ resource: \"secret\", action: \"read\", args: [reference], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n if (typeof result !== \"string\") throw new Error(\"Backend read must resolve to text\");\n secrets.push(result);\n return result;\n };\n }\n const handlers: Record<string, SecretHandler> = {\n async read(request, context) {\n context.signal.throwIfAborted();\n if (request.args.length !== 1) throw new Error(\"read requires one secret reference\");\n const output = outputFile(request, context);\n const value = await cancellable(context.signal, () => backend.execute({ resource: \"secret\", action: \"read\", args: [request.args[0]!], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n let bytes: Uint8Array;\n if (value instanceof Uint8Array) {\n bytes = Uint8Array.from(value);\n } else {\n if (typeof value !== \"string\" && !(typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0)) throw new Error(\"Backend read must resolve to text, bytes, or a nonnegative safe integer\");\n bytes = createOpTextCodec(request.flags.encoding).encode(String(value) + (output || request.flags[\"no-newline\"] === true ? \"\" : \"\\n\"));\n }\n await cancellable(context.signal, () => output ? context.writeFile!(output.path, bytes, output.options) : context.stdout.write(bytes));\n return { exitCode: 0 };\n },\n async inject(request, context) {\n context.signal.throwIfAborted();\n if (request.args.length) throw new Error(\"inject does not accept positional arguments\");\n const output = outputFile(request, context);\n const input = request.flags[\"in-file\"];\n let source = \"\";\n const decoder = createOpTextCodec(request.flags.encoding).decoder();\n if (typeof input === \"string\" && input) {\n if (!context.readFile) throw new Error(\"Host readFile capability is required\");\n source = decoder.decode(await cancellable(context.signal, () => context.readFile!(input)));\n } else {\n const iterator = context.stdin[Symbol.asyncIterator]();\n while (true) {\n const next = await cancellable(context.signal, () => iterator.next());\n if (next.done) break;\n source += decoder.decode(next.value, { stream: true });\n }\n source += decoder.decode();\n }\n const value = await template(source, context.env, resolver(request, context));\n const bytes = createOpTextCodec(request.flags.encoding).encode(value);\n await cancellable(context.signal, () => output ? context.writeFile!(output.path, bytes, output.options) : context.stdout.write(bytes));\n return { exitCode: 0 };\n },\n async run(request, context) {\n context.signal.throwIfAborted();\n if (!request.args.length) throw new Error(\"run requires a command\");\n if (!context.invoke) throw new Error(\"Host invoke capability is required\");\n const env = { ...context.env };\n const parsedKeys = new Set<string>();\n const files = request.flags[\"env-file\"];\n for (const path of typeof files === \"string\" ? [files] : Array.isArray(files) ? files : []) {\n if (!context.readFile) throw new Error(\"Host readFile capability is required\");\n const source = new TextDecoder().decode(await cancellable(context.signal, () => context.readFile!(path)));\n for (const key of dotenv(source, env)) parsedKeys.add(key);\n }\n const secrets: string[] = [];\n const resolve = resolver(request, context, secrets);\n const environmentKeys = new Set<string>();\n const environments = request.flags.environment ?? request.flags.environments;\n for (const id of typeof environments === \"string\" ? [environments] : Array.isArray(environments) ? environments : []) {\n const result = await cancellable(context.signal, () => backend.execute({ resource: \"environment\", action: \"read\", args: [id], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n let values: Record<string, string>;\n if (typeof result === \"string\") {\n values = {};\n dotenv(result, values);\n } else {\n if (result === null || typeof result !== \"object\" || (Object.getPrototypeOf(result) !== Object.prototype && Object.getPrototypeOf(result) !== null)) throw new Error(\"Backend environment read must resolve to a string record or dotenv text\");\n const entries = Object.entries(result);\n if (entries.some(([, value]) => typeof value !== \"string\")) throw new Error(\"Backend environment values must be strings\");\n values = Object.fromEntries(entries);\n }\n for (const [key, value] of Object.entries(values)) {\n Object.defineProperty(env, key, { value, enumerable: true, writable: true, configurable: true });\n secrets.push(value);\n environmentKeys.add(key);\n }\n }\n const variables = { ...env };\n for (const [key, value] of Object.entries(env)) {\n if (environmentKeys.has(key)) continue;\n const resolveValue = (reference: string) => resolve(parsedKeys.has(key) ? reference : expand(reference, variables, false));\n env[key] = value.startsWith(\"op://\") ? await resolveValue(value) : await template(value, variables, resolveValue, false);\n }\n if (request.flags[\"no-masking\"] === true) return cancellable(context.signal, () => context.invoke!(request.args[0]!, request.args.slice(1), { env, stdout: context.stdout, stderr: context.stderr }));\n const stdout = createMaskedSink(context.stdout, secrets, context.signal);\n const stderr = createMaskedSink(context.stderr, secrets, context.signal);\n try {\n return await cancellable(context.signal, () => context.invoke!(request.args[0]!, request.args.slice(1), { env, stdout: stdout.sink, stderr: stderr.sink }));\n } finally {\n await Promise.all([stdout.flush(), stderr.flush()]);\n }\n }\n };\n for (const [name, handler] of Object.entries(handlers)) {\n Object.assign(handler, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context);\n const requests: OpBackendRequest[] = [];\n const flags = selectOpGlobalFlags(request.flags);\n const collect = async (reference: string) => {\n requests.push({ resource: \"secret\", action: \"read\", args: [reference], flags });\n return \"\";\n };\n if (name === \"read\") {\n if (request.args.length !== 1) throw new Error(\"read requires one secret reference\");\n await collect(request.args[0]!);\n } else if (name === \"inject\") {\n if (request.args.length) throw new Error(\"inject does not accept positional arguments\");\n const path = request.flags[\"in-file\"];\n const bytes = typeof path === \"string\" && path ? await source.file(path) : await source.input();\n await template(createOpTextCodec(request.flags.encoding).decoder().decode(bytes), source.context.env, collect);\n } else {\n if (!request.args.length) throw new Error(\"run requires a command\");\n const env = { ...source.context.env };\n const parsedKeys = new Set<string>();\n const files = request.flags[\"env-file\"];\n for (const path of typeof files === \"string\" ? [files] : Array.isArray(files) ? files : []) {\n for (const key of dotenv(new TextDecoder().decode(await source.file(path)), env)) parsedKeys.add(key);\n }\n const environments = request.flags.environment;\n const ids = typeof environments === \"string\" ? [environments] : Array.isArray(environments) ? environments : [];\n for (const id of ids) requests.push({ resource: \"environment\", action: \"read\", args: [id], flags });\n let dependent = false;\n const referenceKeys = new Set<string>();\n for (const [key, value] of Object.entries(env)) {\n const resolveValue = async (reference: string) => {\n referenceKeys.add(key);\n if (!parsedKeys.has(key) && reference.includes(\"$\")) dependent = true;\n return collect(parsedKeys.has(key) ? reference : expand(reference, env, false));\n };\n if (value.startsWith(\"op://\")) await resolveValue(value);\n else await template(value, env, resolveValue, false);\n }\n const effect: OpEffectIntent = { kind: \"invoke\", command: request.args[0]!, args: request.args.slice(1), environmentNames: Object.keys(env), masking: request.flags[\"no-masking\"] !== true };\n return createHandlerPreparation(requests, source.context, [effect], metadata => {\n const names = new Set(Object.keys(env));\n for (let index = 0; index < ids.length; index++) {\n const environment = metadata[index]?.environment;\n if (!environment || !environment.dependenciesComplete) throw new Error(\"Environment dependency metadata is unavailable\");\n if (dependent) throw new Error(\"Secret-dependent lookup targets are unsupported\");\n for (const key of environment.names) {\n if (referenceKeys.has(key)) throw new Error(\"Environment overrides a planned secret source\");\n names.add(key);\n }\n }\n return [{ ...effect, environmentNames: [...names] }];\n });\n }\n const output = outputFile(request, source.context);\n return createHandlerPreparation(requests, source.context, [output ? { kind: \"file\", ...output } : { kind: \"stdout\" }]);\n },\n });\n }\n return handlers;\n}\n", "export interface EnvironmentSnapshot {\n readonly version: 1;\n readonly scope: \"complete\" | \"selected\";\n readonly variables: Readonly<Record<string, string | null>>;\n}\n\nfunction variableEntries(value: unknown, allowUnset: boolean): [string, string | null][] {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) throw new Error(\"Invalid environment variables\");\n const entries: [string, string | null][] = [];\n for (const name of Reflect.ownKeys(value)) {\n if (typeof name !== \"string\" || !name || name.includes(\"=\") || name.includes(\"\\0\")) throw new Error(\"Invalid environment variable name\");\n const descriptor = Object.getOwnPropertyDescriptor(value, name)!;\n if (!Object.hasOwn(descriptor, \"value\")) throw new Error(\"Environment variables must be data properties\");\n const content: unknown = descriptor.value;\n if (content === undefined || (allowUnset && content === null)) {\n if (allowUnset) entries.push([name, null]);\n continue;\n }\n if (typeof content !== \"string\" || content.includes(\"\\0\")) throw new Error(\"Invalid environment variable value\");\n entries.push([name, content]);\n }\n return entries;\n}\n\nexport function captureEnvironment(\n environment: Readonly<Record<string, string | undefined>>,\n options: { readonly names?: readonly string[] } = {},\n): EnvironmentSnapshot {\n const entries = new Map(variableEntries(environment, false));\n let captured = [...entries];\n if (options.names !== undefined) {\n captured = [...new Set(options.names)].map(name => [name, entries.get(name) ?? null]);\n variableEntries(Object.fromEntries(captured), true);\n }\n return Object.freeze({\n version: 1,\n scope: options.names === undefined ? \"complete\" : \"selected\",\n variables: Object.freeze(Object.fromEntries(captured)),\n });\n}\n\nexport function restoreEnvironment(\n snapshot: unknown,\n current: Readonly<Record<string, string | undefined>>,\n): Record<string, string> {\n if (snapshot === null || typeof snapshot !== \"object\" || Array.isArray(snapshot)) throw new Error(\"Invalid environment snapshot\");\n const descriptors = Object.getOwnPropertyDescriptors(snapshot);\n const version = descriptors.version?.value;\n const scope = descriptors.scope?.value;\n if (version !== 1 || (scope !== \"complete\" && scope !== \"selected\") || !Object.hasOwn(descriptors.variables ?? {}, \"value\")) {\n throw new Error(\"Invalid environment snapshot\");\n }\n const variables = variableEntries(descriptors.variables.value, true);\n const result = new Map(scope === \"selected\" ? variableEntries(current, false) : []);\n for (const [name, value] of variables) {\n if (value === null) result.delete(name);\n else result.set(name, value);\n }\n return Object.fromEntries(result) as Record<string, string>;\n}\n", "import type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { selectOpBackendContext, selectOpGlobalFlags, type OpCommandContext } from \"./cli.js\";\nimport { captureEnvironment, restoreEnvironment, type EnvironmentSnapshot } from \"./environment.js\";\nimport { createMaskedSink } from \"./secrets.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createHandlerPreparation, createSourceSnapshot, type OpEffectIntent } from \"./handler-preparation.js\";\n\nexport interface EnvironmentCommandContext extends OpCommandContext {\n restoreEnvironment?: (snapshot: EnvironmentSnapshot, context: { signal: AbortSignal }) => Promise<void>;\n}\n\nfunction metadata(value: unknown): { id: string; name: string; variables: number; scope: string } {\n if (value === null || typeof value !== \"object\" || !(\"snapshot\" in value) || !(\"id\" in value) || typeof value.id !== \"string\") throw new Error(\"Invalid stored environment snapshot\");\n restoreEnvironment(value.snapshot, {});\n const snapshot = value.snapshot as EnvironmentSnapshot;\n return { id: value.id, name: \"name\" in value && typeof value.name === \"string\" ? value.name : value.id, variables: Object.keys(snapshot.variables).length, scope: snapshot.scope };\n}\n\nfunction shellScript(shell: string, snapshot: EnvironmentSnapshot, current: Record<string, string>): string {\n if (![\"bash\", \"zsh\", \"sh\", \"fish\", \"powershell\"].includes(shell)) throw new Error(\"Unsupported restoration shell\");\n const names = new Set([...(snapshot.scope === \"complete\" ? Object.keys(current) : []), ...Object.keys(snapshot.variables)]);\n for (const name of names) {\n if (![...name].every((character, index) => character === \"_\" || (character >= \"A\" && character <= \"Z\") || (character >= \"a\" && character <= \"z\") || (index > 0 && character >= \"0\" && character <= \"9\"))) {\n throw new Error(\"Environment contains a name that cannot be restored by a shell script\");\n }\n }\n const lines: string[] = [];\n for (const name of names) {\n const value = Object.hasOwn(snapshot.variables, name) ? snapshot.variables[name] : undefined;\n if (value === null || value === undefined) {\n lines.push(shell === \"fish\" ? `set -e ${name}` : shell === \"powershell\" ? `Remove-Item Env:${name} -ErrorAction SilentlyContinue` : `unset ${name}`);\n continue;\n }\n if (shell === \"powershell\") lines.push(`$env:${name} = '${value.split(\"'\").join(\"''\")}'`);\n else if (shell === \"fish\") lines.push(`set -gx ${name} '${value.split(\"\\\\\").join(\"\\\\\\\\\").split(\"'\").join(\"\\\\'\")}'`);\n else lines.push(`export ${name}='${value.split(\"'\").join(\"'\\\\''\")}'`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function createEnvironmentHandlers(backend: OpBackend) {\n const handlers: Record<string, (request: OpBackendRequest, context: EnvironmentCommandContext) => Promise<{ exitCode: number }>> = {};\n for (const action of [\"create\", \"get\", \"list\", \"delete\", \"restore\"]) {\n handlers[`environment snapshot ${action}`] = Object.assign(async (request: OpBackendRequest, context: EnvironmentCommandContext) => {\n context.signal.throwIfAborted();\n if (action === \"list\" ? request.args.length !== 0 : action === \"restore\" ? request.args.length < 1 : request.args.length !== 1) throw new Error(\"Invalid environment snapshot arguments\");\n let value: unknown;\n if (action === \"create\") {\n const selected = request.flags.vars;\n if (selected !== undefined && (!Array.isArray(selected) || selected.some(name => typeof name !== \"string\"))) throw new Error(\"Invalid snapshot variable selection\");\n const snapshot = captureEnvironment(context.env, { names: selected as readonly string[] | undefined });\n value = metadata(await backend.execute({ ...request, resource: \"environment snapshot\", args: [], input: { name: request.args[0], snapshot } }, selectOpBackendContext(context)));\n } else if (action === \"restore\") {\n const stored = await backend.execute({ resource: \"environment snapshot\", action: \"get\", args: [request.args[0]], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context));\n metadata(stored);\n const snapshot = structuredClone((stored as { snapshot: EnvironmentSnapshot }).snapshot);\n const variables = restoreEnvironment(snapshot, context.env);\n context.signal.throwIfAborted();\n if (request.flags.shell !== undefined) {\n if (typeof request.flags.shell !== \"string\" || request.args.length !== 1) throw new Error(\"Shell output cannot be combined with a child command\");\n await context.stdout.write(createOpTextCodec(request.flags.encoding).encode(shellScript(request.flags.shell, snapshot, context.env)));\n } else if (request.args.length > 1) {\n if (!context.invoke) throw new Error(\"Environment restoration requires a host invocation capability\");\n if (request.flags[\"no-masking\"] === true) {\n const result = await context.invoke(request.args[1], request.args.slice(2), { env: variables });\n context.signal.throwIfAborted();\n return result;\n }\n const values = Object.values(snapshot.variables).filter((value): value is string => typeof value === \"string\");\n const stdout = createMaskedSink(context.stdout, values, context.signal);\n const stderr = createMaskedSink(context.stderr, values, context.signal);\n const result = await context.invoke(request.args[1], request.args.slice(2), { env: variables, stdout: stdout.sink, stderr: stderr.sink });\n context.signal.throwIfAborted();\n await stdout.flush();\n await stderr.flush();\n return result;\n } else {\n if (!context.restoreEnvironment) throw new Error(\"Host environment restoration is unavailable; use --shell or supply a child command after --\");\n await context.restoreEnvironment(snapshot, { signal: context.signal });\n context.signal.throwIfAborted();\n }\n return { exitCode: 0 };\n } else {\n value = await backend.execute({ ...request, resource: \"environment snapshot\" }, selectOpBackendContext(context));\n if (action === \"list\") {\n if (!Array.isArray(value)) throw new Error(\"Invalid snapshot collection\");\n value = value.map(metadata);\n } else if (action === \"get\") metadata(value);\n }\n context.signal.throwIfAborted();\n if (value !== undefined) await context.stdout.write(createOpTextCodec(request.flags.encoding).encode(`${JSON.stringify(value, null, 2)}\\n`));\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: EnvironmentCommandContext) {\n const source = createSourceSnapshot(context);\n if (action === \"list\" ? request.args.length !== 0 : action === \"restore\" ? request.args.length < 1 : request.args.length !== 1) throw new Error(\"Invalid environment snapshot arguments\");\n if (action === \"create\") {\n const selected = request.flags.vars;\n if (selected !== undefined && (!Array.isArray(selected) || selected.some(name => typeof name !== \"string\"))) throw new Error(\"Invalid snapshot variable selection\");\n const snapshot = captureEnvironment(source.context.env, { names: selected as readonly string[] | undefined });\n return createHandlerPreparation([{ ...request, resource: \"environment snapshot\", args: [], input: { name: request.args[0], snapshot } }], source.context, [{ kind: \"stdout\", environmentNames: Object.keys(snapshot.variables), unsetNames: Object.entries(snapshot.variables).filter(([, value]) => value === null).map(([key]) => key) }]);\n }\n if (action !== \"restore\") return createHandlerPreparation([{ ...request, resource: \"environment snapshot\" }], source.context, [{ kind: \"stdout\" }]);\n const nested = { resource: \"environment snapshot\", action: \"get\", args: [request.args[0]!], flags: selectOpGlobalFlags(request.flags) };\n const effect: OpEffectIntent = request.flags.shell !== undefined ? { kind: \"stdout\" } : request.args.length > 1 ? { kind: \"invoke\", command: request.args[1]!, args: request.args.slice(2), masking: request.flags[\"no-masking\"] !== true } : { kind: \"restore\" };\n return createHandlerPreparation([nested], source.context, [effect], metadata => {\n const environment = metadata[0]?.environment;\n if (!environment || !environment.dependenciesComplete || !environment.scope || !environment.unsetNames) throw new Error(\"Snapshot key metadata is unavailable\");\n const unsetNames = new Set(environment.unsetNames);\n if (environment.scope === \"complete\") for (const key of Object.keys(source.context.env)) if (!environment.names.includes(key)) unsetNames.add(key);\n const names = new Set(environment.scope === \"selected\" && effect.kind === \"invoke\" ? Object.keys(source.context.env) : []);\n for (const key of environment.names) if (!unsetNames.has(key)) names.add(key);\n for (const key of unsetNames) names.delete(key);\n return [{ ...effect, environmentNames: [...names], unsetNames: [...unsetNames] }];\n });\n },\n });\n }\n return handlers;\n}\n", "import { parseOpFileMode, renderOpOutput, selectOpBackendContext, type OpCommandContext, type OpCommandOptions } from \"./cli.js\";\nimport type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { createHandlerPreparation, createSourceSnapshot } from \"./handler-preparation.js\";\n\nexport interface OpDocumentHandlerOptions {\n maxBytes?: number;\n}\n\nfunction textFlag(request: OpBackendRequest, name: string): string | undefined {\n const value = request.flags[name];\n if (value === undefined) return undefined;\n if (typeof value !== \"string\") throw new Error(`--${name} requires a string`);\n return value;\n}\n\nasync function uploadBytes(context: OpCommandContext, path: string | undefined, maxBytes: number): Promise<Uint8Array> {\n context.signal.throwIfAborted();\n if (path !== undefined && path !== \"-\") {\n if (!context.readFile) throw new Error(\"document upload requires a host readFile capability\");\n const bytes = await context.readFile(path);\n context.signal.throwIfAborted();\n if (bytes.byteLength > maxBytes) throw new Error(\"document exceeds byte limit\");\n return Uint8Array.from(bytes);\n }\n const chunks: Uint8Array[] = [];\n let length = 0;\n for await (const chunk of context.stdin) {\n context.signal.throwIfAborted();\n if (chunk.byteLength > maxBytes - length) throw new Error(\"document exceeds byte limit\");\n length += chunk.byteLength;\n chunks.push(Uint8Array.from(chunk));\n }\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n return bytes;\n}\n\nfunction readable(bytes: Uint8Array): boolean {\n try {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n return Array.from(text).every(character => {\n const code = character.codePointAt(0)!;\n return code === 9 || code === 10 || code === 13 || (code >= 32 && code !== 127 && (code < 128 || code > 159));\n });\n } catch { return false; }\n}\n\nexport function createDocumentHandlers(backend: OpBackend, options: OpDocumentHandlerOptions = {}): NonNullable<OpCommandOptions[\"handlers\"]> {\n const maxBytes = options.maxBytes ?? 16 * 1024 * 1024;\n if (!Number.isSafeInteger(maxBytes) || maxBytes < 0) throw new Error(\"maxBytes must be a nonnegative safe integer\");\n const handlers: Record<string, NonNullable<OpCommandOptions[\"handlers\"]>[string]> = {};\n for (const action of [\"create\", \"edit\"] as const) {\n const mutation = async (request: OpBackendRequest, context: OpCommandContext): Promise<OpBackendRequest> => {\n if (request.args.length > (action === \"create\" ? 1 : 2) || (action === \"edit\" && !request.args[0])) throw new Error(`invalid arguments for document ${action}`);\n const path = request.args[action === \"create\" ? 0 : 1];\n const explicitName = textFlag(request, \"file-name\");\n const title = textFlag(request, \"title\");\n const vault = textFlag(request, \"vault\");\n const filename = explicitName ?? (path !== undefined && path !== \"-\" ? path.split(\"\\\\\").join(\"/\").split(\"/\").at(-1) : undefined);\n if (filename === \"\") throw new Error(\"document filename must not be empty\");\n const content = await uploadBytes(context, path, maxBytes);\n const input = {\n content,\n ...(filename === undefined ? action === \"create\" ? { name: \"stdin\" } : {} : { name: filename }),\n ...(title === undefined ? action === \"create\" ? { title: filename ?? \"stdin\" } : {} : { title }),\n ...(action === \"create\" && vault !== undefined ? { vault } : {}),\n ...(request.flags.tags === undefined ? {} : { tags: request.flags.tags }),\n };\n context.signal.throwIfAborted();\n return { ...request, resource: \"document\", action, args: action === \"create\" ? [] : [request.args[0]!], input };\n };\n handlers[`document ${action}`] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n const prepared = await mutation(request, context);\n const result = await backend.execute(prepared, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const output = renderOpOutput(result, request);\n if (output !== undefined) await context.stdout.write(output);\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context, maxBytes);\n const path = request.args[action === \"create\" ? 0 : 1];\n if (path === undefined || path === \"-\") await source.input();\n const prepared = await mutation(request, { ...source.context, readFile: source.file });\n return createHandlerPreparation([prepared], source.context, [{ kind: \"stdout\" }]);\n },\n });\n }\n handlers[\"document get\"] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n if (request.args.length !== 1 || !request.args[0] || request.args[0] === \"-\") throw new Error(\"document get requires one document name or ID\");\n const path = textFlag(request, \"out-file\");\n const mode = path === undefined ? undefined : parseOpFileMode(request.flags[\"file-mode\"]);\n if (path !== undefined && !context.writeFile) throw new Error(\"document output requires a host writeFile capability\");\n context.signal.throwIfAborted();\n const result = await backend.execute(request, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const bytes = renderOpOutput(result, request);\n if (!(bytes instanceof Uint8Array)) throw new Error(\"document backend did not return content\");\n if (bytes.byteLength > maxBytes) throw new Error(\"document exceeds byte limit\");\n if (path !== undefined) await context.writeFile!(path, bytes, { mode, overwrite: request.flags.force === true });\n else {\n if (context.stdout.isTTY && request.flags.force !== true && !readable(bytes)) throw new Error(\"refusing binary document output to terminal; use --force or --out-file\");\n await context.stdout.write(bytes);\n }\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context, maxBytes);\n const path = textFlag(request, \"out-file\");\n return createHandlerPreparation([request], source.context, [path === undefined ? { kind: \"stdout\" } : { kind: \"file\", path, options: { mode: parseOpFileMode(request.flags[\"file-mode\"]), overwrite: request.flags.force === true } }]);\n },\n });\n return Object.freeze(handlers);\n}\n", "import type { OpBackend, OpBackendContext, OpItem, OpSecretReference } from \"./types.js\";\n\nexport function parseSecretReference(reference: string): OpSecretReference {\n if (reference.slice(0, 5).toLowerCase() !== \"op://\") throw new Error(\"Invalid secret reference scheme\");\n const queryStart = reference.indexOf(\"?\");\n const path = reference.slice(5, queryStart < 0 ? undefined : queryStart);\n const parts = path.split(\"/\");\n const allowed = \"abcdefghijklmnopqrstuvwxyz0123456789-_. \\t\\n\\r\\v\\f\";\n if ((parts.length !== 3 && parts.length !== 4) || parts.some(part => !part || [...part.toLowerCase()].some(character => !allowed.includes(character)))) {\n throw new Error(\"Invalid secret reference path; use IDs for unsupported names\");\n }\n const result: OpSecretReference = { vault: parts[0]!, item: parts[1]!, field: parts[parts.length - 1]! };\n if (parts.length === 4) result.section = parts[2]!;\n if (queryStart >= 0) {\n const query: Record<string, string> = {};\n for (const entry of reference.slice(queryStart + 1).split(\"&\")) {\n const separator = entry.indexOf(\"=\");\n const key = entry.slice(0, separator);\n const value = entry.slice(separator + 1);\n if (separator < 1 || !value || ![\"attribute\", \"attr\", \"ssh-format\"].includes(key) || Object.hasOwn(query, key)) throw new Error(\"Invalid secret reference query\");\n query[key] = value;\n }\n if (query.attribute && query.attr) throw new Error(\"Conflicting attribute parameters\");\n result.query = query;\n }\n return result;\n}\n\nexport function deriveItemFieldReferences(item: OpItem): OpItem {\n const result = structuredClone(item);\n if (result.fields === undefined) return result;\n result.fields = result.fields.map(field => {\n try {\n const parts = [result.vault.id, result.id, ...(field.section === undefined ? [] : [field.section.id]), field.id];\n if (parts.some(part => typeof part !== \"string\" || !part)) throw new Error();\n const reference = `op://${parts.join(\"/\")}`;\n const parsed = parseSecretReference(reference);\n if (parsed.vault !== result.vault.id || parsed.item !== result.id || parsed.section !== field.section?.id || parsed.field !== field.id || parsed.query !== undefined) throw new Error();\n return { ...field, reference };\n } catch {\n throw new Error(\"Cannot derive field reference from item IDs\");\n }\n });\n return result;\n}\n\nexport async function resolveSecretReference(reference: string, backend: OpBackend, context: OpBackendContext): Promise<unknown> {\n context.signal.throwIfAborted();\n parseSecretReference(reference);\n const value = await backend.execute({ resource: \"secret\", action: \"read\", args: [reference], flags: {} }, context);\n context.signal.throwIfAborted();\n return value;\n}\n", "export { webcrypto as opCrypto } from \"node:crypto\";\n", "import { opCrypto } from \"#op-crypto\";\n\nfunction decodeBase32(value: string): Uint8Array<ArrayBuffer> {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n const bytes: number[] = [];\n let pending = 0;\n let count = 0;\n let padding = false;\n for (const character of value.toUpperCase()) {\n if (character === \" \" || character === \"\\t\" || character === \"\\n\" || character === \"\\r\") continue;\n if (character === \"=\") { padding = true; continue; }\n const digit = alphabet.indexOf(character);\n if (digit < 0 || padding) throw new Error(\"Invalid OTP secret encoding\");\n pending = (pending << 5) | digit;\n count += 5;\n if (count >= 8) {\n count -= 8;\n bytes.push((pending >>> count) & 255);\n pending &= (1 << count) - 1;\n }\n }\n if (bytes.length === 0 || pending !== 0) throw new Error(\"Invalid OTP secret encoding\");\n return Uint8Array.from(bytes);\n}\n\nexport async function generateOtp(value: string, now = Date.now()): Promise<string> {\n let secret = value;\n let digits = 6;\n let period = 30;\n let algorithm = \"SHA1\";\n if (value.startsWith(\"otpauth://\")) {\n let uri: URL;\n try { uri = new URL(value); } catch { throw new Error(\"Invalid OTP configuration\"); }\n if (uri.hostname !== \"totp\" || uri.username || uri.password || uri.port) throw new Error(\"Invalid OTP configuration\");\n secret = uri.searchParams.get(\"secret\") ?? \"\";\n digits = Number(uri.searchParams.get(\"digits\") ?? \"6\");\n period = Number(uri.searchParams.get(\"period\") ?? \"30\");\n algorithm = (uri.searchParams.get(\"algorithm\") ?? \"SHA1\").toUpperCase();\n }\n if (![6, 8].includes(digits) || !Number.isSafeInteger(period) || period < 1 || !Number.isSafeInteger(now) || now < 0) {\n throw new Error(\"Invalid OTP configuration\");\n }\n const hashes: Record<string, string> = { SHA1: \"SHA-1\", SHA256: \"SHA-256\", SHA512: \"SHA-512\" };\n if (!Object.hasOwn(hashes, algorithm)) throw new Error(\"Invalid OTP algorithm\");\n const rawKey = decodeBase32(secret);\n const counter = new Uint8Array(8);\n new DataView(counter.buffer).setBigUint64(0, BigInt(Math.floor(now / 1000 / period)));\n try {\n const key = await opCrypto.subtle.importKey(\"raw\", rawKey, { name: \"HMAC\", hash: hashes[algorithm] }, false, [\"sign\"]);\n const digest = new Uint8Array(await opCrypto.subtle.sign(\"HMAC\", key, counter));\n const offset = digest[digest.length - 1] & 15;\n const binary = new DataView(digest.buffer).getUint32(offset) & 0x7fffffff;\n return String(binary % 10 ** digits).padStart(digits, \"0\");\n } finally {\n rawKey.fill(0);\n }\n}\n", "import type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpClock, OpObject, OpSession } from \"./types.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nexport function sameData(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true;\n if (left instanceof Uint8Array && right instanceof Uint8Array) return left.length === right.length && left.every((value, index) => value === right[index]);\n if (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();\n if (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => sameData(value, right[index]));\n if (!record(left) || !record(right)) return false;\n const keys = Object.keys(left);\n return keys.length === Object.keys(right).length && keys.every(key => Object.hasOwn(right, key) && sameData(left[key], right[key]));\n}\n\nfunction sameAuthorization(left: OpObject | undefined, right: OpObject | undefined): boolean {\n return left !== undefined && right !== undefined && sameData({ ...left, lastActivityAt: 0 }, { ...right, lastActivityAt: 0 });\n}\n\nfunction suspendedUser(session: OpObject, resources: ReadonlyMap<string, readonly OpObject[]>): boolean {\n return typeof session.user === \"string\" && (resources.get(\"user\") ?? []).some(user => user.id === session.user && user.state === \"SUSPENDED\");\n}\n\nexport function validateAuthentication(resources: ReadonlyMap<string, readonly OpObject[]>, policy: OpAuthenticationPolicy): void {\n if (![\"managed\", \"object-store\"].includes(policy.mode)) throw new Error(\"Invalid authentication policy\");\n const sessions = resources.get(\"session\") ?? [];\n const defaults = resources.get(\"session default\") ?? [];\n const appDefaults = resources.get(\"app default\") ?? [];\n if (policy.mode !== \"managed\" && (sessions.length || defaults.length || appDefaults.length)) throw new Error(\"Session state requires explicit managed authentication migration\");\n const accounts = resources.get(\"account\") ?? [];\n if (appDefaults.length > 1 || appDefaults.some(entry => typeof entry.id !== \"string\" || !entry.id || !accounts.some(account => account.id === entry.account))) throw new Error(\"Invalid app account preference\");\n const tokens = new Set<string>();\n const ids = new Set<string>();\n for (const session of sessions) {\n if (typeof session.id !== \"string\" || !session.id || ids.has(session.id.toLowerCase())) throw new Error(\"Invalid session ID\");\n ids.add(session.id.toLowerCase());\n if (typeof session.account !== \"string\" || !accounts.some(account => account.id === session.account)) throw new Error(\"Invalid session account\");\n if (![session.issuedAt, session.lastActivityAt].every(value => typeof value === \"number\" && Number.isFinite(value) && value >= 0) || Number(session.lastActivityAt) < Number(session.issuedAt)) throw new Error(\"Session timestamps require explicit migration\");\n if (session.revokedAt !== undefined && (typeof session.revokedAt !== \"number\" || !Number.isFinite(session.revokedAt) || session.revokedAt < Number(session.issuedAt))) throw new Error(\"Invalid session revocation\");\n if (session.mode === \"manual\") {\n if (typeof session.token !== \"string\" || !session.token || tokens.has(session.token)) throw new Error(\"Invalid manual session token\");\n tokens.add(session.token);\n } else if (session.mode === \"app\") {\n if (typeof session.terminalId !== \"string\" || !session.terminalId || session.token !== undefined) throw new Error(\"Invalid app authorization\");\n } else throw new Error(\"Session mode requires explicit migration\");\n if (session.user !== undefined && (typeof session.user !== \"string\" || !(resources.get(\"user\") ?? []).some(user => user.id === session.user))) throw new Error(\"Invalid session user\");\n }\n const terminals = new Set<string>();\n for (const entry of defaults) {\n if (typeof entry.terminalId !== \"string\" || !entry.terminalId || terminals.has(entry.terminalId) || !accounts.some(account => account.id === entry.account)) throw new Error(\"Invalid terminal account selection\");\n terminals.add(entry.terminalId);\n }\n}\n\nexport function inspectAuthentication(request: OpBackendRequest, context: OpBackendContext, source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock) {\n if (request.resource === \"app default\") throw new Error(\"App preference is updated only by signin\");\n validateAuthentication(source, policy);\n const managed = policy.mode === \"managed\";\n const command = request.action ? `${request.resource} ${request.action}` : request.resource;\n const local = [\"signin\", \"signout\", \"account add\", \"account list\", \"account forget\", \"item template list\", \"item template get\", \"plugin list\", \"plugin inspect\", \"plugin clear\", \"completion\"].includes(command);\n const terminalId = context.authentication?.terminalId;\n const integration = context.authentication?.integration === undefined ? \"manual\" : context.authentication.integration;\n if (integration !== \"manual\" && integration !== \"app\") throw new Error(\"Invalid authentication integration mode\");\n if (terminalId !== undefined && (typeof terminalId !== \"string\" || !terminalId)) throw new Error(\"Invalid authentication terminal identity\");\n const admittedAt = clock.now();\n if (!Number.isFinite(admittedAt) || admittedAt < 0) throw new Error(\"Invalid authentication clock\");\n const accounts = source.get(\"account\") ?? [];\n const selectAccount = (selector: unknown): string => {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Account selection is required\");\n const folded = selector.toLowerCase();\n const ids = accounts.filter(account => account.id.toLowerCase() === folded);\n const matches = ids.length ? ids : accounts.filter(account => [account.name, account.title, account.email, account.shorthand, account.url, account.address, account.user_uuid, account.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(\"Account selection is required\");\n return matches[0]!.id;\n };\n let account = request.flags.account === undefined ? undefined : selectAccount(request.flags.account);\n let session: OpSession | undefined;\n const sessions = (source.get(\"session\") ?? []) as OpSession[];\n if (request.flags.session !== undefined) {\n session = sessions.find(entry => entry.mode === \"manual\" && entry.token === request.flags.session);\n if (!session || (account !== undefined && account !== session.account)) throw new Error(\"Invalid session\");\n account = session.account;\n } else if (managed) {\n account ??= (integration === \"app\" ? source.get(\"app default\")?.[0]?.account : (source.get(\"session default\") ?? []).find(entry => entry.terminalId === terminalId)?.account) as string | undefined;\n if (!local || command === \"signin\") {\n if (local && !account && accounts.length === 1 && integration === \"manual\") account = accounts[0]!.id;\n if (!local && !account) throw new Error(\"Account selection is required\");\n session = integration === \"app\" ? sessions.filter(entry => entry.account === account && entry.mode === \"app\" && entry.terminalId === terminalId).sort((left, right) => right.issuedAt - left.issuedAt)[0] : undefined;\n if (!session && !local) throw new Error(\"No authenticated session\");\n }\n }\n if (session && suspendedUser(session, source)) throw new Error(\"Session user is suspended\");\n if (session && (session.revokedAt !== undefined || admittedAt < session.lastActivityAt || admittedAt - session.lastActivityAt >= (session.mode === \"manual\" ? 1_800_000 : 600_000) || (session.mode === \"app\" && admittedAt - session.issuedAt >= 43_200_000))) {\n if ([\"signin\", \"signout\", \"account forget\"].includes(command)) session = undefined;\n else throw new Error(\"Session expired or revoked\");\n }\n const global = request.resource === \"account\" && ([\"list\", \"add\"].includes(request.action) || request.action === \"forget\" && (request.args.length > 0 || request.flags.all === true)) || request.resource === \"signout\" && request.flags.all === true || request.resource === \"item template\";\n const scopedRequest = account !== undefined && !global ? { ...request, flags: { ...request.flags, account } } : request;\n if (managed && !global && account === undefined && (integration === \"app\" || ![\"signin\", \"signout\"].includes(command) || accounts.length > 1)) throw new Error(\"Account selection is required\");\n return { request: scopedRequest, session, command, local, admittedAt, account, terminalId, integration };\n}\n\nexport function beginAuthentication(request: OpBackendRequest, context: OpBackendContext, source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock) {\n const { request: scopedRequest, session, command, local, admittedAt, account, terminalId, integration } = inspectAuthentication(request, context, source, policy, clock);\n const original = structuredClone(source);\n const resources = structuredClone(source);\n let signedIn: { session: OpSession; nextId: () => string } | undefined;\n return {\n request: scopedRequest,\n resources,\n sessionId: session?.id,\n recordSignin(granted: OpSession, nextId: () => string) {\n if (![\"signin\", \"account add\"].includes(command)) throw new Error(\"Unexpected signin result\");\n signedIn = { session: structuredClone(granted), nextId };\n },\n commit() {\n context.signal.throwIfAborted();\n if (session && (suspendedUser(session, source) || !sameAuthorization(session, (source.get(\"session\") ?? []).find(entry => entry.id === session.id)))) throw new Error(\"Authorization changed during operation\");\n if ([\"signin\", \"account add\"].includes(command) && terminalId !== undefined) {\n const defaults = resources.get(\"session default\") ?? [];\n const selected = defaults.filter(entry => entry.terminalId === terminalId).at(-1);\n if (selected) resources.set(\"session default\", defaults.filter(entry => entry.terminalId !== terminalId || entry === selected));\n }\n validateAuthentication(resources, policy);\n const candidate = new Map(source);\n for (const [resource, objects] of resources) {\n const before = original.get(resource) ?? [];\n if (sameData(objects, before)) continue;\n const initial = new Map(before.map(entry => [entry.id.toLowerCase(), entry]));\n const proposed = new Map(objects.map(entry => [entry.id.toLowerCase(), entry]));\n const current = new Map((source.get(resource) ?? []).map(entry => [entry.id.toLowerCase(), entry]));\n for (const id of new Set([...initial.keys(), ...proposed.keys()])) {\n if (sameData(initial.get(id), proposed.get(id))) continue;\n if (!sameData(initial.get(id), current.get(id)) && !(resource === \"session\" && sameAuthorization(initial.get(id), current.get(id)))) throw new Error(command === \"plugin clear\" && resource === \"plugin\" ? \"Plugin changed during confirmation\" : \"Object changed during authenticated operation\");\n const replacement = proposed.get(id);\n if (replacement) current.set(id, resource === \"session\" && sameAuthorization(replacement, current.get(id)) ? { ...replacement, lastActivityAt: Math.max(Number(replacement.lastActivityAt), Number(current.get(id)!.lastActivityAt)) } : replacement);\n else current.delete(id);\n }\n candidate.set(resource, [...current.values()]);\n }\n const invalidatedUsers = new Set((candidate.get(\"user\") ?? []).filter(user => {\n const previous = (source.get(\"user\") ?? []).find(entry => entry.id === user.id);\n return previous?.state !== user.state && (previous?.state === \"SUSPENDED\" || user.state === \"SUSPENDED\");\n }).map(user => user.id));\n if (invalidatedUsers.size) candidate.set(\"session\", (candidate.get(\"session\") ?? []).filter(entry => typeof entry.user !== \"string\" || !invalidatedUsers.has(entry.user)));\n for (const entry of candidate.get(\"session\") ?? []) {\n if (suspendedUser(entry, candidate) && !sameAuthorization(entry, (source.get(\"session\") ?? []).find(existing => existing.id === entry.id))) throw new Error(\"Cannot authorize a suspended user\");\n }\n if (signedIn) {\n const grantedId = signedIn.session.id;\n const granted = (candidate.get(\"session\") ?? []).find(entry => entry.id === grantedId) as OpSession | undefined;\n const mode = request.flags.session === undefined ? integration : \"manual\";\n const signedInAt = clock.now();\n if (!Number.isFinite(signedInAt) || signedInAt < admittedAt || !granted || !sameAuthorization(granted, signedIn.session) || granted.mode !== mode || (account !== undefined && granted.account !== account) || suspendedUser(granted, candidate) || granted.revokedAt !== undefined || signedInAt < granted.lastActivityAt || signedInAt - granted.lastActivityAt >= (granted.mode === \"app\" ? 600_000 : 1_800_000) || (granted.mode === \"app\" && (terminalId === undefined || granted.terminalId !== terminalId || signedInAt - granted.issuedAt >= 43_200_000))) throw new Error(\"Invalid signin authorization\");\n const key = granted.mode === \"app\" ? \"app default\" : \"session default\";\n if (granted.mode === \"app\" || terminalId !== undefined) {\n const matches = (entries: readonly OpObject[]) => granted.mode === \"app\" ? entries : entries.filter(entry => entry.terminalId === terminalId);\n if (!sameData(matches(original.get(key) ?? []), matches(source.get(key) ?? []))) throw new Error(\"Account preference changed during signin\");\n const defaults = candidate.get(key) ?? [];\n const existing = matches(defaults)[0];\n let id = existing?.id;\n while (id === undefined) {\n const proposed = signedIn.nextId();\n if (![...candidate.values()].some(entries => entries.some(entry => entry.id.toLowerCase() === proposed.toLowerCase() || [entry.fields, entry.sections, entry.files].some(children => Array.isArray(children) && children.some(child => record(child) && typeof child.id === \"string\" && child.id.toLowerCase() === proposed.toLowerCase()))))) id = proposed;\n }\n const preference = { id, account: granted.account, ...(granted.mode === \"manual\" ? { terminalId } : {}) };\n candidate.set(key, [...(granted.mode === \"app\" ? [] : defaults.filter(entry => entry.terminalId !== terminalId)), preference]);\n }\n }\n if (session && (!local || command === \"signin\")) {\n const current = (candidate.get(\"session\") ?? []).find(entry => entry.id === session.id) as OpSession | undefined;\n if (current && current.revokedAt === undefined && sameAuthorization(current, session)) {\n candidate.set(\"session\", (candidate.get(\"session\") ?? []).map(entry => entry === current ? { ...current, lastActivityAt: Math.max(current.lastActivityAt, admittedAt) } : entry));\n }\n }\n validateAuthentication(candidate, policy);\n for (const [resource, objects] of candidate) source.set(resource, objects);\n },\n };\n}\n", "export const objectBatchCommands = Object.freeze([\n \"vault get\", \"vault edit\", \"vault delete\", \"item get\", \"item delete\", \"item move\", \"vault group list\", \"document delete\",\n \"group get\", \"group edit\", \"group delete\",\n \"user get\", \"user edit\", \"user delete\", \"user confirm\", \"user reactivate\", \"user suspend\"\n]);\n\nexport function parseObjectSelectors(input: unknown): string[] {\n const selectors: string[] = [];\n const invalid = () => new Error(\"Object selectors are required\");\n const collect = (value: unknown): void => {\n if (Array.isArray(value)) {\n for (const entry of value) collect(entry);\n return;\n }\n if (typeof value === \"string\") {\n if (!value.trim()) throw invalid();\n selectors.push(value);\n return;\n }\n if (value === null || typeof value !== \"object\" || (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)) throw invalid();\n const descriptor = Object.getOwnPropertyDescriptor(value, \"id\");\n if (!descriptor) return;\n if (!(\"value\" in descriptor) || typeof descriptor.value !== \"string\" || !descriptor.value.trim()) throw invalid();\n selectors.push(descriptor.value);\n };\n if (typeof input !== \"string\") collect(input);\n else {\n const source = input.trim();\n if (!source.startsWith(\"{\") && !source.startsWith(\"[\")) {\n for (const line of source.split(\"\\n\")) if (line.trim()) selectors.push(line.trim());\n } else {\n let start = 0;\n let depth = 0;\n let quoted = false;\n let escaped = false;\n for (let index = 0; index < source.length; index++) {\n const character = source[index]!;\n if (depth === 0) {\n if (!character.trim()) { start = index + 1; continue; }\n if (character !== \"{\" && character !== \"[\") throw invalid();\n }\n if (quoted) {\n if (escaped) escaped = false;\n else if (character === \"\\\\\") escaped = true;\n else if (character === '\"') quoted = false;\n } else if (character === '\"') quoted = true;\n else if (character === \"{\" || character === \"[\") depth++;\n else if (character === \"}\" || character === \"]\") {\n depth--;\n if (depth === 0) {\n let value: unknown;\n try { value = JSON.parse(source.slice(start, index + 1)); }\n catch { throw invalid(); }\n collect(value);\n start = index + 1;\n }\n }\n }\n if (depth !== 0 || quoted) throw invalid();\n }\n }\n if (!selectors.length) throw invalid();\n return selectors;\n}\n", "const prerequisites: Readonly<Record<string, readonly string[]>> = {\n view_items: [],\n create_items: [\"view_items\"],\n view_and_copy_passwords: [\"view_items\"],\n edit_items: [\"view_and_copy_passwords\", \"view_items\"],\n archive_items: [\"edit_items\", \"view_and_copy_passwords\", \"view_items\"],\n delete_items: [\"edit_items\", \"view_and_copy_passwords\", \"view_items\"],\n view_item_history: [\"view_and_copy_passwords\", \"view_items\"],\n import_items: [\"create_items\", \"view_items\"],\n export_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n copy_and_share_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n print_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n manage_vault: [],\n};\n\nconst umbrellas: Readonly<Record<string, readonly string[]>> = {\n allow_viewing: [\"view_items\", \"view_and_copy_passwords\", \"view_item_history\"],\n allow_editing: [\"create_items\", \"edit_items\", \"archive_items\", \"delete_items\", \"import_items\", \"export_items\", \"copy_and_share_items\", \"print_items\"],\n allow_managing: [\"manage_vault\"],\n};\n\nconst moveRequirements = [\"view_items\", \"edit_items\", \"archive_items\", \"view_and_copy_passwords\", \"view_item_history\", \"copy_and_share_items\"];\n\nexport function expandVaultPermissions(permissions: readonly string[]): string[] {\n const expanded = new Set<string>();\n for (const permission of permissions) {\n if (Object.hasOwn(umbrellas, permission)) {\n for (const granular of umbrellas[permission]!) expanded.add(granular);\n } else if (Object.hasOwn(prerequisites, permission) || permission === \"move_items\") expanded.add(permission);\n else throw new Error(\"Invalid vault permission\");\n }\n if (moveRequirements.every(permission => expanded.has(permission))) expanded.add(\"move_items\");\n return [...expanded];\n}\n\nexport function changeVaultPermissions(current: readonly string[], requested: readonly string[], action: \"grant\" | \"revoke\"): string[] {\n if (action === \"grant\" && !requested.length) throw new Error(\"Vault permissions are required\");\n if (action === \"revoke\" && !requested.length) return [];\n if (requested.includes(\"move_items\")) throw new Error(\"move_items is derived from its underlying vault permissions\");\n const existing = expandVaultPermissions(current).filter(permission => permission !== \"move_items\");\n const selected = expandVaultPermissions(requested).filter(permission => permission !== \"move_items\");\n const remaining = new Set(action === \"grant\" ? [...existing, ...selected] : existing.filter(permission => !selected.includes(permission)));\n const missing = new Set<string>();\n const dependent = new Set<string>();\n for (const permission of remaining) {\n for (const prerequisite of prerequisites[permission]!) {\n if (!remaining.has(prerequisite)) {\n missing.add(prerequisite);\n dependent.add(permission);\n }\n }\n }\n if (missing.size) {\n throw new Error(action === \"grant\"\n ? `Required vault permissions must be granted explicitly: ${[...missing].sort().join(\", \")}`\n : `Dependent vault permissions must also be revoked: ${[...dependent].sort().join(\", \")}`);\n }\n return expandVaultPermissions([...remaining]);\n}\n", "import type { OpBackendContext, OpObject, PluginDefault, PluginScope } from \"./types.js\";\n\nfunction object(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction absolutePath(value: unknown): { root: string; segments: string[] } {\n const invalid = () => new Error(\"Plugin scope requires normalized absolute paths\");\n if (typeof value !== \"string\" || value.includes(\"\\\\\") || [...value].some(character => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127)) throw invalid();\n let root: string;\n let remainder: string;\n let windows = false;\n if (value.startsWith(\"//\")) {\n const parts = value.slice(2).split(\"/\");\n if (parts.length < 2 || !parts[0] || !parts[1]) throw invalid();\n root = `//${parts[0]}/${parts[1]}`;\n remainder = value.slice(root.length + 1);\n if (value === `${root}/`) throw invalid();\n windows = true;\n } else if (value.startsWith(\"/\")) {\n root = \"/\";\n remainder = value.slice(1);\n } else if (value.length >= 3 && \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\".includes(value[0]!) && value.slice(1, 3) === \":/\") {\n root = value.slice(0, 3);\n remainder = value.slice(3);\n windows = true;\n } else throw invalid();\n const segments = remainder === \"\" ? [] : remainder.split(\"/\");\n const checked = windows && root.startsWith(\"//\") ? [...root.slice(2).split(\"/\"), ...segments] : segments;\n if (checked.some(segment => !segment || segment === \".\" || segment === \"..\" || (windows && ([...segment].some(character => '<>:\"|?*'.includes(character)) || segment.endsWith(\".\") || segment.endsWith(\" \"))))) throw invalid();\n return { root, segments };\n}\n\nfunction directoryChain(cwd: string, home: string): string[] {\n const current = absolutePath(cwd);\n absolutePath(home);\n const chain: string[] = [];\n for (let length = current.segments.length; length >= 0; length--) {\n const directory = current.root + (length && !current.root.endsWith(\"/\") ? \"/\" : \"\") + current.segments.slice(0, length).join(\"/\");\n chain.push(directory);\n if (directory === home) break;\n }\n return chain;\n}\n\nfunction parseScope(value: unknown): PluginScope {\n if (!object(value)) throw new Error(\"Invalid plugin default scope\");\n if (value.kind === \"global\") return { kind: \"global\" };\n if (value.kind === \"directory\" && typeof value.path === \"string\") {\n absolutePath(value.path);\n return { kind: \"directory\", path: value.path };\n }\n if (value.kind === \"terminal\" && typeof value.terminalSession === \"string\" && value.terminalSession.length > 0) return { kind: \"terminal\", terminalSession: value.terminalSession };\n throw new Error(\"Invalid plugin default scope\");\n}\n\nexport async function clearPluginDefaults(plugin: OpObject, context: OpBackendContext, all: boolean, force: boolean): Promise<OpObject> {\n context.signal.throwIfAborted();\n if (Object.hasOwn(plugin, \"configuration\")) throw new Error(\"Plugin configuration requires explicit scope migration\");\n const trustedScope = context.pluginScope;\n if (!trustedScope) throw new Error(\"Plugin scope context is unavailable\");\n const { cwd, home, terminalSession } = trustedScope;\n const chain = directoryChain(cwd, home);\n if (terminalSession !== undefined && (typeof terminalSession !== \"string\" || !terminalSession.length)) throw new Error(\"Invalid plugin terminal identity\");\n if (plugin.defaults !== undefined && !Array.isArray(plugin.defaults)) throw new Error(\"Invalid plugin defaults\");\n const ids = new Set<string>();\n const scopes = new Set<string>();\n const defaults: PluginDefault[] = (plugin.defaults ?? []).map((entry: unknown) => {\n if (!object(entry) || typeof entry.id !== \"string\" || !entry.id || !object(entry.configuration)) throw new Error(\"Invalid plugin default\");\n const scope = parseScope(entry.scope);\n const key = JSON.stringify(scope);\n if (ids.has(entry.id) || scopes.has(key)) throw new Error(\"Plugin defaults contain duplicate IDs or scopes\");\n ids.add(entry.id);\n scopes.add(key);\n return { id: entry.id, scope, configuration: entry.configuration };\n });\n const applicable = defaults.flatMap(entry => {\n const scope = entry.scope;\n const priority = scope.kind === \"global\" ? chain.length + 1 : scope.kind === \"terminal\" ? scope.terminalSession === terminalSession ? 0 : -1 : chain.indexOf(scope.path) < 0 ? -1 : chain.indexOf(scope.path) + 1;\n return priority < 0 ? [] : [{ entry, priority }];\n }).sort((left, right) => left.priority - right.priority);\n const selected = all ? applicable : applicable.slice(0, 1);\n if (!selected.length) return plugin;\n if (!force) {\n const confirm = context.confirmPluginClear;\n if (!confirm) throw new Error(\"Plugin clear confirmation capability is unavailable\");\n const confirmation = Object.freeze({ pluginId: plugin.id, defaults: Object.freeze(selected.map(({ entry }) => Object.freeze({ id: entry.id, scope: Object.freeze({ ...entry.scope }) }))) });\n let onAbort!: () => void;\n const aborted = new Promise<never>((_resolve, reject) => {\n onAbort = () => reject(new DOMException(\"Plugin clear aborted\", \"AbortError\"));\n context.signal.addEventListener(\"abort\", onAbort, { once: true });\n if (context.signal.aborted) onAbort();\n });\n let accepted: boolean;\n try {\n accepted = await Promise.race([aborted, Promise.resolve().then(() => {\n context.signal.throwIfAborted();\n return confirm(confirmation, Object.freeze({ signal: context.signal }));\n })]);\n } catch {\n if (context.signal.aborted) throw new DOMException(\"Plugin clear aborted\", \"AbortError\");\n throw new Error(\"Plugin clear confirmation failed\");\n } finally {\n context.signal.removeEventListener(\"abort\", onAbort);\n }\n if (accepted !== true) throw new Error(\"Plugin clear was not confirmed\");\n }\n context.signal.throwIfAborted();\n const removed = new Set(selected.map(({ entry }) => entry.id));\n return { ...plugin, defaults: (plugin.defaults as PluginDefault[]).filter(entry => !removed.has(entry.id)) };\n}\n", "import type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpClock, OpObject, OpSession, OpTerminalAccount } from \"./types.js\";\nimport { beginAuthentication, sameData } from \"./auth.js\";\nimport { objectBatchCommands, parseObjectSelectors } from \"./selectors.js\";\nimport { changeVaultPermissions, expandVaultPermissions } from \"./permissions.js\";\nimport { clearPluginDefaults } from \"./plugin-scopes.js\";\n\nexport interface OpAdminHookResult {\n value?: unknown;\n resources?: Readonly<Record<string, readonly OpObject[]>>;\n authentication?: {\n sessions?: readonly OpSession[];\n terminalAccounts?: readonly OpTerminalAccount[];\n signedInSession?: string;\n };\n}\n\nexport type OpAdminHook = (request: OpBackendRequest, context: OpBackendContext, resources: ReadonlyMap<string, readonly OpObject[]>) => Promise<OpAdminHookResult>;\n\nexport interface OpAdminContext extends OpBackendContext {\n adminHooks?: Readonly<Record<string, OpAdminHook>>;\n nextId?: () => string;\n authenticationPolicy?: OpAuthenticationPolicy;\n clock?: OpClock;\n}\n\nexport const externalCommands = new Set([\n \"account add\", \"signin\", \"service-account create\", \"service-account ratelimit\",\n \"connect server create\", \"connect token create\", \"events-api create\",\n \"user provision\", \"user recovery begin\", \"plugin init\", \"plugin run\",\n \"item share\", \"update\", \"plugin credential import\",\n]);\n\nconst relations: Readonly<Record<string, readonly [string, string, string, string]>> = {\n \"group user\": [\"group\", \"group\", \"user\", \"user\"],\n \"vault user\": [\"vault\", \"vault\", \"user\", \"user\"],\n \"vault group\": [\"vault\", \"vault\", \"group\", \"group\"],\n \"connect vault\": [\"server\", \"connect server\", \"vault\", \"vault\"],\n \"connect group\": [\"server\", \"connect server\", \"group\", \"group\"],\n};\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nfunction merge(target: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown> {\n const result = { ...target };\n for (const [key, value] of Object.entries(patch)) {\n Object.defineProperty(result, key, { value: record(value) && record(target[key]) ? merge(target[key], value) : structuredClone(value), enumerable: true, configurable: true, writable: true });\n }\n return result;\n}\n\nfunction select(objects: readonly OpObject[], selector: unknown): OpObject {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Object selector is required\");\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.email, object.shorthand, object.url, object.address, object.user_uuid, object.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n\nfunction selectors(request: OpBackendRequest): string[] {\n if (request.args.length === 1 && request.args[0] === \"-\") {\n return parseObjectSelectors(request.input);\n }\n if (request.args.length !== 1) throw new Error(\"One object selector is required\");\n return [...request.args];\n}\n\nfunction stringList(value: unknown): string[] {\n if (value === undefined) return [];\n const values = typeof value === \"string\" ? value.split(\",\") : value;\n if (!Array.isArray(values) || values.some(entry => typeof entry !== \"string\" || !entry)) throw new Error(\"Invalid list value\");\n return [...new Set(values as string[])];\n}\n\nfunction objectId(resources: ReadonlyMap<string, readonly OpObject[]>): string {\n const used = new Set<string>();\n for (const objects of resources.values()) {\n for (const object of objects) {\n used.add(object.id.toLowerCase());\n for (const children of [object.fields, object.sections, object.files]) {\n if (!Array.isArray(children)) continue;\n for (const child of children) {\n if (record(child) && typeof child.id === \"string\") used.add(child.id.toLowerCase());\n }\n }\n }\n }\n let sequence = 1;\n while (used.has(sequence.toString(36).padStart(26, \"a\"))) sequence++;\n return sequence.toString(36).padStart(26, \"a\");\n}\n\nexport function createAccountScope(request: OpBackendRequest, source: Map<string, OpObject[]>): { resources: Map<string, OpObject[]>; account?: string; commit: (value?: unknown) => void } {\n const accounts = source.get(\"account\") ?? [];\n const globalCommand = request.flags.account === undefined && (request.resource === \"account\" || (request.resource === \"signout\" && request.flags.all === true) || request.resource === \"item template\");\n let selected: OpObject | undefined;\n if (request.flags.account !== undefined) selected = select(accounts, request.flags.account);\n else if (!globalCommand && accounts.length) {\n const session = (source.get(\"session\") ?? []).at(-1);\n if (session) selected = select(accounts, record(session.account) ? session.account.id : session.account);\n else if (accounts.length === 1) selected = accounts[0];\n else throw new Error(\"Account selection is required\");\n }\n if (!selected) return { resources: source, commit() {} };\n const accountId = selected.id;\n const accountReference = (value: unknown): string => select(accounts, record(value) ? value.id : value).id;\n const ownership = (resource: string, object: OpObject, all: ReadonlyMap<string, readonly OpObject[]>, seen = new Set<OpObject>()): string | undefined => {\n if (resource === \"account\") return object.id;\n if (seen.has(object)) return undefined;\n seen.add(object);\n const owners = new Set<string>();\n if (object.account !== undefined) owners.add(accountReference(object.account));\n const links: [string, string][] = [];\n if (object.vault !== undefined) links.push([\"vault\", \"vault\"]);\n if (object.item !== undefined) links.push([\"item\", \"item\"]);\n const relation = relations[resource];\n if (relation) links.push([relation[0], relation[1]], [relation[2], relation[3]]);\n if (resource === \"connect token\") links.push([object.integrationId !== undefined ? \"integrationId\" : \"server\", \"connect server\"]);\n if (resource === \"session\" && object.user !== undefined) links.push([\"user\", \"user\"]);\n for (const [key, target] of links) {\n if (object[key] === undefined || object[key] === \"*\" || object[key] === \"managers\") continue;\n const value = object[key];\n const candidates = all.get(target) ?? [];\n const linked = select(candidates, record(value) ? value.id : value);\n const owner = ownership(target, linked, all, new Set(seen));\n if (owner === undefined) return undefined;\n owners.add(owner);\n }\n if (owners.size > 1) throw new Error(\"Object links cross account boundaries\");\n return owners.values().next().value ?? (accounts.length === 1 ? accountId : undefined);\n };\n const resources = new Map<string, OpObject[]>();\n for (const [resource, objects] of source) {\n const visible = objects.filter(object => {\n if (resource === \"item template\" && object.account === undefined) return true;\n const owner = ownership(resource, object, source);\n if (owner === undefined && resource === request.resource && request.action === \"list\") throw new Error(\"Account ownership is unavailable for this resource\");\n return owner === accountId;\n });\n resources.set(resource, structuredClone(visible));\n }\n for (const [flag, resource] of [[\"vault\", \"vault\"], [\"current-vault\", \"vault\"], [\"destination-vault\", \"vault\"], [\"group\", \"group\"], [\"user\", \"user\"], [\"server\", \"connect server\"]]) {\n const value = request.flags[flag!];\n if (value === undefined) continue;\n if (flag === \"vault\" && request.action === \"create\" && [\"service-account\", \"connect token\"].includes(request.resource)) {\n const grants = typeof value === \"string\" ? [value] : value;\n if (!Array.isArray(grants) || grants.some(grant => typeof grant !== \"string\")) throw new Error(\"Invalid vault grants\");\n for (const grant of grants as string[]) {\n const separator = request.resource === \"service-account\" ? grant.lastIndexOf(\":\") : grant.lastIndexOf(\",\");\n const hasPermissions = separator >= 0 && (request.resource === \"service-account\" || [\"r\", \"w\"].includes(grant.slice(separator + 1)));\n select(resources.get(\"vault\") ?? [], hasPermissions ? grant.slice(0, separator) : grant);\n }\n } else select(resources.get(resource!) ?? [], value);\n }\n if (request.resource === \"connect server\" && request.action === \"create\") {\n for (const vault of stringList(request.flags.vaults)) select(resources.get(\"vault\") ?? [], vault);\n }\n const batchInput = request.args.length === 1 && request.args[0] === \"-\" && objectBatchCommands.includes(`${request.resource} ${request.action}`);\n const inputs = request.resource === \"item\" && request.action === \"create\" && Array.isArray(request.input) ? request.input : [request.input];\n for (const input of batchInput ? [] : inputs) {\n if (!record(input)) continue;\n if (input.account !== undefined && accountReference(input.account) !== accountId) throw new Error(\"Object account differs from selected account\");\n if (input.vault !== undefined) select(resources.get(\"vault\") ?? [], record(input.vault) ? input.vault.id : input.vault);\n }\n const targetResource = request.resource === \"user recovery\" ? \"user\" : request.resource;\n if (request.resource !== \"item template\" && request.args[0] !== undefined && request.args[0] !== \"-\" && [\"get\", \"edit\", \"update\", \"delete\", \"move\", \"share\", \"suspend\", \"reactivate\", \"confirm\", \"inspect\", \"clear\", \"forget\", \"begin\"].includes(request.action)) {\n try { select(resources.get(targetResource) ?? [], request.args[0]); }\n catch (error) {\n let known = true;\n try { select(source.get(targetResource) ?? [], request.args[0]); }\n catch (lookupError) { if (lookupError instanceof Error && lookupError.message === \"Object not found\") known = false; }\n if (known) throw error;\n }\n }\n const initial = structuredClone(resources);\n return {\n resources,\n account: accountId,\n commit(value) {\n const projected = (request.resource === \"environment\" && request.action === \"read\") || (request.resource === \"item\" && request.flags.fields !== undefined);\n for (const entry of projected ? [] : Array.isArray(value) ? value : [value]) {\n if (!record(entry) || typeof entry.id !== \"string\") continue;\n if (entry.account !== undefined && accountReference(entry.account) !== accountId) throw new Error(\"Result account differs from selected account\");\n const id = entry.id.toLowerCase();\n const existing = (source.get(request.resource) ?? []).find(object => object.id.toLowerCase() === id);\n if (existing && ownership(request.resource, existing, source) !== accountId) throw new Error(\"Result belongs to a different account\");\n }\n const changes = new Map<string, OpObject[]>();\n for (const [resource, objects] of resources) {\n const before = initial.get(resource) ?? [];\n if (sameData(objects, before)) continue;\n const originals = new Map(before.map(object => [object.id.toLowerCase(), object]));\n const proposed = new Map(objects.map(object => [object.id.toLowerCase(), object]));\n const current = new Map((source.get(resource) ?? []).map(object => [object.id.toLowerCase(), object]));\n for (const id of new Set([...originals.keys(), ...proposed.keys()])) {\n const original = originals.get(id);\n const replacement = proposed.get(id);\n if (sameData(original, replacement)) continue;\n if (!sameData(current.get(id), original)) throw new Error(\"Object changed during scoped operation\");\n if (replacement === undefined) current.delete(id);\n else {\n const published = structuredClone(replacement);\n if (!original && published.account === undefined && resource !== \"account\" && resource !== \"item template\") published.account = accountId;\n current.set(id, published);\n }\n }\n changes.set(resource, [...current.values()]);\n }\n const candidate = new Map([...source, ...changes]);\n for (const [resource, objects] of changes) {\n const scopedIds = new Set((resources.get(resource) ?? []).map(object => object.id));\n for (const object of objects) {\n if (!scopedIds.has(object.id)) continue;\n if (resource === \"item template\" && object.account === undefined) continue;\n if (ownership(resource, object, candidate) !== accountId) throw new Error(\"Object account differs from selected account\");\n }\n }\n for (const [resource, objects] of changes) source.set(resource, objects);\n }\n };\n}\n\nexport async function executeAdminRequest(request: OpBackendRequest, context: OpAdminContext, resources: Map<string, OpObject[]>): Promise<{ handled: boolean; value?: unknown }> {\n context.signal.throwIfAborted();\n if (context.binding) throw new Error(\"Direct admin execution does not support bindings\");\n const adminContext = context as OpAdminContext;\n const authentication = beginAuthentication(request, context, resources, adminContext.authenticationPolicy ?? { mode: \"object-store\" }, adminContext.clock ?? { now: Date.now });\n request = authentication.request;\n const scope = createAccountScope(request, authentication.resources);\n const nextId = (context as OpAdminContext).nextId ?? (() => objectId(resources));\n const result = await executeAdmittedAdminRequest(request, context, scope.resources, nextId, scope.account, authentication.sessionId, authentication.recordSignin);\n context.signal.throwIfAborted();\n if (result.handled) {\n scope.commit(result.value);\n authentication.commit();\n }\n return result;\n}\n\nexport async function executeAdmittedAdminRequest(request: OpBackendRequest, context: OpBackendContext, resources: Map<string, OpObject[]>, nextId: () => string, selectedAccount?: string, sessionId?: string, recordSignin?: (session: OpSession, nextId: () => string) => void): Promise<{ handled: boolean; value?: unknown }> {\n const { resource, action, args, flags } = request;\n const owned = [\"account\", \"signin\", \"signout\", \"whoami\", \"group\", \"user\", \"user recovery\", \"service-account\", \"connect server\", \"connect token\", \"events-api\", \"environment\", \"plugin\"];\n context.signal.throwIfAborted();\n const command = action ? `${resource} ${action}` : resource;\n if (command === \"signin\" && sessionId !== undefined) {\n if (args.length) throw new Error(\"Unexpected arguments\");\n const session = (resources.get(\"session\") ?? []).find(entry => entry.id === sessionId)!;\n recordSignin?.(session as OpSession, nextId);\n return { handled: true, value: session.mode === \"manual\" ? session.token : undefined };\n }\n if (args.length === 1 && args[0] === \"-\" && objectBatchCommands.includes(command)) {\n const targetResource = resource === \"vault group\" ? \"vault\" : resource;\n const batch = parseObjectSelectors(request.input);\n let candidates = resources.get(targetResource) ?? [];\n if (resource === \"item\") {\n candidates = candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || batch.some(selector => object.id.toLowerCase() === selector.toLowerCase())));\n const vaultSelector = action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (vaultSelector !== undefined) {\n const vault = select(resources.get(\"vault\") ?? [], vaultSelector);\n candidates = candidates.filter(object => (record(object.vault) ? object.vault.id : object.vault) === vault.id);\n }\n }\n for (const selector of batch) select(candidates, selector);\n }\n const hook = (context as OpAdminContext).adminHooks?.[command];\n if (context.binding && (hook || externalCommands.has(command))) throw new Error(\"External admin hooks do not support bindings\");\n if (hook || externalCommands.has(command)) {\n if (!hook) throw new Error(\"Admin command requires an injected hook\");\n let result: OpAdminHookResult;\n try {\n const scope = context.pluginScope;\n const hookContext = Object.freeze({\n signal: context.signal,\n ...(context.authentication === undefined ? {} : { authentication: Object.freeze({ ...context.authentication }) }),\n ...(scope === undefined ? {} : { pluginScope: Object.freeze({ cwd: scope.cwd, home: scope.home, ...(scope.terminalSession === undefined ? {} : { terminalSession: scope.terminalSession }) }) }),\n });\n result = await hook(structuredClone(request), hookContext, structuredClone(resources));\n if (!record(result) || (result.resources !== undefined && !record(result.resources))) throw new Error();\n if (result.resources && [\"session\", \"session default\", \"app default\"].some(key => Object.hasOwn(result.resources!, key))) throw new Error(\"Use typed authentication hook state\");\n if (result.authentication !== undefined && (!record(result.authentication) || (result.authentication.sessions !== undefined && !Array.isArray(result.authentication.sessions)) || (result.authentication.terminalAccounts !== undefined && !Array.isArray(result.authentication.terminalAccounts)))) throw new Error();\n for (const entries of Object.values(result.resources ?? {})) {\n if (!Array.isArray(entries)) throw new Error();\n const ids = new Set<string>();\n for (const entry of entries) {\n if (!record(entry) || typeof entry.id !== \"string\" || !entry.id || ids.has(entry.id.toLowerCase())) throw new Error();\n ids.add(entry.id.toLowerCase());\n }\n }\n result = structuredClone(result);\n } catch {\n throw new Error(\"Admin hook failed\");\n }\n context.signal.throwIfAborted();\n for (const [key, entries] of Object.entries(result.resources ?? {})) resources.set(key, entries as OpObject[]);\n if (result.authentication?.sessions !== undefined) resources.set(\"session\", [...result.authentication.sessions]);\n if (result.authentication?.terminalAccounts !== undefined) resources.set(\"session default\", [...result.authentication.terminalAccounts]);\n if ([\"signin\", \"account add\"].includes(command) && result.authentication?.sessions?.length) {\n const mode = flags.session === undefined ? context.authentication?.integration ?? \"manual\" : \"manual\";\n const candidates = result.authentication.sessions.filter(session => session.mode === mode && (selectedAccount === undefined || session.account === selectedAccount) && (session.mode !== \"app\" || session.terminalId === context.authentication?.terminalId) && (result.authentication?.signedInSession === undefined || session.id === result.authentication.signedInSession));\n if (candidates.length !== 1) throw new Error(\"Signin hook must identify its authenticated session\");\n recordSignin?.(candidates[0]!, nextId);\n } else if (command === \"signin\") {\n throw new Error(\"Signin hook must provide authenticated session state\");\n }\n return { handled: true, value: structuredClone(result.value) };\n }\n\n if (!owned.includes(resource) && !Object.hasOwn(relations, resource) && !(resource === \"vault\" && action === \"list\" && (flags.user !== undefined || flags.group !== undefined))) return { handled: false };\n\n const working = structuredClone(resources);\n const entries = (key: string): OpObject[] => working.get(key) ?? [];\n const account = (): OpObject => {\n if (flags.account !== undefined) return select(entries(\"account\"), flags.account);\n const session = entries(\"session\").at(-1);\n if (session) return select(entries(\"account\"), session.account);\n if (entries(\"account\").length !== 1) throw new Error(\"Account selection is required\");\n return entries(\"account\")[0]!;\n };\n const session = (): OpObject => {\n const candidates = entries(\"session\").filter(entry => sessionId === undefined || entry.id === sessionId).filter(entry => flags.account === undefined || entry.account === account().id).filter(entry => flags.session === undefined || entry.token === flags.session);\n const selected = candidates.at(-1);\n if (!selected) throw new Error(\"No authenticated session\");\n return selected;\n };\n const remove = (key: string, objects: readonly OpObject[]) => {\n const ids = new Set(objects.map(object => object.id));\n working.set(key, entries(key).filter(object => !ids.has(object.id)));\n for (const [relation, [parent, parentResource, child, childResource]] of Object.entries(relations)) {\n working.set(relation, entries(relation).filter(entry => !(parentResource === key && ids.has(String(entry[parent]))) && !(childResource === key && ids.has(String(entry[child])))));\n }\n if (key === \"connect server\") working.set(\"connect token\", entries(\"connect token\").filter(entry => !ids.has(String(entry.integrationId ?? entry.server))));\n if (key === \"account\" || key === \"user\") working.set(\"session\", entries(\"session\").filter(entry => !ids.has(String(entry[key]))));\n if (key === \"account\") working.set(\"session default\", entries(\"session default\").filter(entry => !ids.has(String(entry.account))));\n if (key === \"account\") working.set(\"app default\", entries(\"app default\").filter(entry => !ids.has(String(entry.account))));\n };\n let value: unknown;\n if (resource === \"whoami\" && action === \"\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n const current = session();\n value = current.identity ?? select(entries(\"user\"), current.user);\n } else if (resource === \"signout\" && action === \"\") {\n if (args.length || (flags.all === true && flags.account !== undefined)) throw new Error(\"Conflicting account selection\");\n const selectedAccounts = flags.all === true ? entries(\"account\") : [account()];\n const ids = new Set(selectedAccounts.map(entry => entry.id));\n working.set(\"session\", entries(\"session\").filter(entry => !ids.has(String(entry.account))));\n working.set(\"session default\", entries(\"session default\").filter(entry => !ids.has(String(entry.account))));\n if (flags.forget === true) remove(\"account\", selectedAccounts);\n } else if (resource === \"account\") {\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n value = entries(\"account\");\n } else if (action === \"get\") {\n if (args.length > 1) throw new Error(\"One object selector is required\");\n value = args.length ? select(entries(\"account\"), args[0]) : account();\n } else if (action === \"forget\") {\n if (args.length > 1 || (flags.all === true && (args.length || flags.account !== undefined))) throw new Error(\"Conflicting account selection\");\n remove(\"account\", flags.all === true ? entries(\"account\") : [args.length ? select(entries(\"account\"), args[0]) : account()]);\n } else throw new Error(\"Unsupported admin action\");\n } else if (Object.hasOwn(relations, resource)) {\n const [parent, parentResource, child, childResource] = relations[resource]!;\n if (![\"grant\", \"revoke\", \"list\"].includes(action) || (action === \"list\" && resource.startsWith(\"connect\"))) throw new Error(\"Unsupported admin action\");\n if (action === \"list\") {\n if (args[0] === \"-\" && resource !== \"vault group\") throw new Error(\"Batch selectors are unsupported for this relationship\");\n const owners = selectors(request).map(selector => select(entries(parentResource), selector));\n value = owners.flatMap(owner => entries(resource).filter(entry => entry[parent] === owner.id).map(entry => ({ ...select(entries(childResource), entry[child]), ...(entry.role === undefined ? {} : { role: entry.role }), ...(entry.permissions === undefined ? {} : { permissions: entry.permissions }) })));\n } else {\n if (args.length) throw new Error(\"Unexpected arguments\");\n if (resource === \"connect group\" && flags[\"all-servers\"] === true && flags.server !== undefined) throw new Error(\"Conflicting server selection\");\n const owner = resource === \"connect group\" && flags.server === undefined ? flags[\"all-servers\"] === true ? \"*\" : \"managers\" : select(entries(parentResource), flags[parent]).id;\n const member = select(entries(childResource), flags[child]);\n const existing = entries(resource).find(entry => entry[parent] === owner && entry[child] === member.id);\n const permissions = stringList(flags.permissions);\n const role = typeof flags.role === \"string\" ? flags.role.toLowerCase() : flags.role ?? \"member\";\n if (resource === \"group user\" && (typeof role !== \"string\" || ![\"member\", \"manager\"].includes(role))) throw new Error(\"Invalid group role\");\n const remaining = resource.startsWith(\"vault \") ? changeVaultPermissions(stringList(existing?.permissions), permissions, action === \"grant\" ? \"grant\" : \"revoke\") : [];\n const relation: OpObject = { ...existing, id: existing?.id ?? nextId(), [parent]: owner, [child]: member.id, ...(resource === \"group user\" ? { role } : {}), ...(resource.startsWith(\"vault \") ? { permissions: remaining } : {}) };\n const others = entries(resource).filter(entry => entry !== existing);\n const keep = action === \"grant\" || (resource.startsWith(\"vault \") && remaining.length > 0);\n working.set(resource, keep ? [...others, relation] : others);\n value = keep ? relation : undefined;\n }\n } else if (resource === \"environment\" && action === \"read\") {\n const environment = select(entries(resource), selectors(request)[0]);\n if (!record(environment.variables)) throw new Error(\"Environment variables are unavailable\");\n value = environment.variables;\n } else if (resource === \"plugin\") {\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n value = entries(resource);\n } else if (action === \"inspect\") {\n if (!args.length) throw new Error(\"Plugin selection capability is unavailable\");\n value = select(entries(resource), selectors(request)[0]);\n } else if (action === \"clear\") {\n if (args.length !== 1 || args[0] === \"-\") throw new Error(\"Exactly one plugin is required\");\n const plugin = select(entries(resource), args[0]);\n const replacement = await clearPluginDefaults(plugin, context, flags.all === true, flags.force === true);\n context.signal.throwIfAborted();\n const current = resources.get(resource) ?? [];\n if (!sameData(current.find(entry => entry.id === plugin.id), plugin)) throw new Error(\"Plugin changed during confirmation\");\n resources.set(resource, current.map(entry => entry.id === plugin.id ? replacement : entry));\n return { handled: true };\n } else throw new Error(\"Unsupported admin action\");\n } else if ([\"group\", \"user\", \"connect server\", \"connect token\", \"vault\"].includes(resource)) {\n let candidates = entries(resource);\n if (resource === \"connect token\" && flags.server !== undefined) {\n const server = select(entries(\"connect server\"), flags.server);\n candidates = candidates.filter(entry => (entry.integrationId ?? entry.server) === server.id);\n }\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n for (const [relation, [parent, parentResource, child, childResource]] of Object.entries(relations)) {\n const filterKey = resource === parentResource ? child : resource === childResource ? parent : undefined;\n if (!filterKey || flags[filterKey] === undefined) continue;\n const filterResource = resource === parentResource ? childResource : parentResource;\n const filter = select(entries(filterResource), flags[filterKey]);\n candidates = candidates.flatMap(entry => {\n const grant = entries(relation).find(link => link[filterKey] === filter.id && link[resource === parentResource ? parent : child] === entry.id);\n if (resource === \"vault\" && !expandVaultPermissions(stringList(flags.permission)).every(permission => expandVaultPermissions(stringList(grant?.permissions)).includes(permission))) return [];\n return grant ? [{ ...entry, ...(relation === \"group user\" && resource === \"user\" ? { role: grant.role } : {}) }] : [];\n });\n }\n value = candidates;\n } else if (resource === \"group\" && action === \"create\") {\n if (args.length > 1 || (request.input !== undefined && !record(request.input))) throw new Error(\"Create requires an object input\");\n const input = record(request.input) ? request.input : {};\n const name = args[0] ?? input.name;\n const id = input.id ?? nextId();\n if (typeof name !== \"string\" || !name || typeof id !== \"string\" || !id || candidates.some(entry => entry.id.toLowerCase() === id.toLowerCase())) throw new Error(\"Invalid or duplicate object\");\n const created = { ...input, id, name, ...(selectedAccount === undefined ? {} : { account: selectedAccount }), ...(flags.description === undefined ? {} : { description: flags.description }) };\n working.set(resource, [...candidates, created]);\n value = created;\n } else {\n const supported = resource === \"user\" ? [\"get\", \"edit\", \"delete\", \"confirm\", \"suspend\", \"reactivate\"] : [\"get\", \"edit\", \"delete\"];\n if (!supported.includes(action) || resource === \"vault\") throw new Error(\"Unsupported admin action\");\n if (flags.all === true && args.length) throw new Error(\"Conflicting user selection\");\n const targets = resource === \"user\" && action === \"confirm\" && flags.all === true ? candidates.filter(entry => entry.state === \"PENDING\") : resource === \"user\" && flags.me === true && action === \"get\" ? [select(candidates, session().user)] : selectors(request).map(selector => select(candidates, selector));\n if (action === \"get\") {\n value = targets.map(target => {\n const attribute = flags[\"public-key\"] === true ? \"public_key\" : flags.fingerprint === true ? \"fingerprint\" : undefined;\n if (attribute && target[attribute] === undefined) throw new Error(\"User key material is unavailable\");\n return attribute ? target[attribute] : target;\n });\n } else if (action === \"delete\") {\n if (resource === \"connect token\") {\n working.set(resource, entries(resource).map(entry => targets.includes(entry) ? { ...entry, state: \"REVOKED\" } : entry));\n } else remove(resource, targets);\n }\n else {\n const patch = args[0] === \"-\" ? {} : request.input ?? {};\n if (!record(patch)) throw new Error(\"Update requires an object input\");\n value = targets.map(target => {\n if (Object.hasOwn(patch, \"id\") && patch.id !== target.id) throw new Error(\"Object IDs cannot be changed\");\n const updated = merge(target, patch) as OpObject;\n for (const key of [\"name\", \"description\", \"travel-mode\"]) if (flags[key] !== undefined) updated[key] = flags[key];\n if (updated[\"travel-mode\"] !== undefined && ![\"on\", \"off\"].includes(String(updated[\"travel-mode\"]))) throw new Error(\"Invalid travel mode\");\n if (action === \"confirm\" || action === \"reactivate\") {\n if (target.state !== (action === \"confirm\" ? \"PENDING\" : \"SUSPENDED\")) throw new Error(\"Invalid user state transition\");\n updated.state = \"ACTIVE\";\n }\n if (action === \"suspend\") {\n if (target.state !== \"ACTIVE\") throw new Error(\"Invalid user state transition\");\n if (flags[\"deauthorize-devices-after\"] !== undefined) throw new Error(\"Admin command requires an injected hook\");\n updated.state = \"SUSPENDED\";\n working.set(\"session\", entries(\"session\").filter(entry => entry.user !== target.id));\n }\n working.set(resource, entries(resource).map(entry => entry.id === target.id ? updated : entry));\n return updated;\n });\n }\n if (Array.isArray(value) && args[0] !== \"-\" && flags.all !== true) value = value[0];\n }\n } else throw new Error(\"Unsupported admin action\");\n context.signal.throwIfAborted();\n for (const [key, objects] of working) resources.set(key, objects);\n return { handled: true, value: structuredClone(value) };\n}\n", "const icons = new Set([\n \"airplane\", \"application\", \"art-supplies\", \"bankers-box\", \"brown-briefcase\",\n \"brown-gate\", \"buildings\", \"cabin\", \"castle\", \"circle-of-dots\", \"coffee\",\n \"color-wheel\", \"curtained-window\", \"document\", \"doughnut\", \"fence\", \"galaxy\",\n \"gears\", \"globe\", \"green-backpack\", \"green-gem\", \"handshake\", \"heart-with-monitor\",\n \"house\", \"id-card\", \"jet\", \"large-ship\", \"luggage\", \"plant\", \"porthole\", \"puzzle\",\n \"rainbow\", \"record\", \"round-door\", \"sandals\", \"scales\", \"screwdriver\", \"shop\",\n \"tall-window\", \"treasure-chest\", \"vault-door\", \"vehicle\", \"wallet\", \"wrench\"\n]);\n\nexport function validateVaultOptions(value: Readonly<Record<string, unknown>>): void {\n if (value.icon !== undefined && (typeof value.icon !== \"string\" || !icons.has(value.icon))) throw new Error(\"Invalid vault icon\");\n if (value[\"travel-mode\"] !== undefined && value[\"travel-mode\"] !== \"on\" && value[\"travel-mode\"] !== \"off\") throw new Error(\"Invalid travel mode\");\n}\n", "import type { OpField, OpObject, OpSection } from \"./types.js\";\n\nexport interface OpItemTemplate {\n title: string;\n category: string;\n fields: OpField[];\n sections?: OpSection[];\n [key: string]: unknown;\n}\n\nconst login: OpItemTemplate = {\n title: \"\",\n category: \"LOGIN\",\n fields: [\n { id: \"username\", type: \"STRING\", purpose: \"USERNAME\", label: \"username\", value: \"\" },\n { id: \"password\", type: \"CONCEALED\", purpose: \"PASSWORD\", label: \"password\", password_details: { strength: \"TERRIBLE\" }, value: \"\" },\n { id: \"notesPlain\", type: \"STRING\", purpose: \"NOTES\", label: \"notesPlain\", value: \"\" }\n ]\n};\n\nfunction normalize(value: string): string {\n return value.toUpperCase().split(\" \").join(\"_\");\n}\n\nexport function getItemTemplate(category: string, templates: readonly OpObject[] = [], fallback?: OpObject): OpItemTemplate {\n const selector = normalize(category);\n const matches = templates.filter(template => [template.id, template.name, template.category].some(value => typeof value === \"string\" && normalize(value) === selector));\n if (matches.length > 1) throw new Error(\"Ambiguous item template\");\n let selected = matches[0];\n if (!selected) {\n if (selector === \"LOGIN\") return structuredClone(login);\n if (typeof fallback?.category === \"string\" && normalize(fallback.category) === selector) selected = fallback;\n else throw new Error(\"Item template schema is unavailable\");\n }\n if (typeof selected.category !== \"string\" || !selected.category || typeof selected.title !== \"string\" || !Array.isArray(selected.fields) || selected.fields.some(field => field === null || typeof field !== \"object\" || typeof field.id !== \"string\" || typeof field.type !== \"string\")) throw new Error(\"Invalid item template schema\");\n const result: Record<string, unknown> = structuredClone(selected);\n delete result.id;\n delete result.name;\n return result as OpItemTemplate;\n}\n\nexport function listItemTemplates(templates: readonly OpObject[] = []): string[] {\n const names = new Map<string, string>([[\"LOGIN\", \"Login\"]]);\n for (const template of templates) {\n const schema = getItemTemplate(template.id, templates);\n names.set(normalize(schema.category), template.name ?? schema.category);\n }\n return [...names.values()];\n}\n", "import type { OpBackendContext, OpObject } from \"./types.js\";\nimport { availablePlugins } from \"./plugin-catalog.js\";\n\nexport async function selectPluginId(plugins: readonly OpObject[], context: OpBackendContext, accountId: string | null): Promise<string> {\n const { signal, selectPlugin } = context;\n signal.throwIfAborted();\n if (!selectPlugin) throw new Error(\"Plugin selection capability is unavailable\");\n const candidates = Object.freeze(availablePlugins(plugins).flatMap(plugin => {\n const id = plugin.executable ?? plugin.id;\n return id === undefined ? [] : [Object.freeze({ id, name: plugin.plugin_name ?? plugin.name ?? id })];\n }));\n let abort!: () => void;\n let selected: unknown;\n try {\n selected = await Promise.race([\n new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"Plugin selection cancelled\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n }),\n Promise.resolve().then(() => {\n signal.throwIfAborted();\n return selectPlugin(candidates, Object.freeze({ signal, accountId }));\n })\n ]);\n signal.throwIfAborted();\n } catch {\n signal.throwIfAborted();\n throw new Error(\"Plugin selection failed\");\n } finally { signal.removeEventListener(\"abort\", abort); }\n if (selected === undefined) throw new Error(\"Plugin selection cancelled\");\n if (typeof selected !== \"string\" || !candidates.some(candidate => candidate.id === selected)) throw new Error(\"Invalid plugin selection\");\n const configured = plugins.find(plugin => plugin.id.toLowerCase() === selected.toLowerCase());\n if (!configured) throw new Error(\"Plugin configuration is unavailable\");\n return configured.id;\n}\n", "import type { OpObject } from \"./types.js\";\n\nexport function selectCreationVault(vaults: readonly OpObject[], selector: unknown, defaultVault?: string): OpObject {\n if (selector === undefined) {\n if (defaultVault !== undefined) {\n const vault = vaults.find(vault => vault.id === defaultVault);\n if (!vault) throw new Error(\"Default vault is unavailable in the selected scope\");\n return vault;\n }\n if (vaults.length !== 1) throw new Error(\"Select a vault or configure defaultVault\");\n return vaults[0]!;\n }\n if (selector !== null && typeof selector === \"object\" && !Array.isArray(selector)) selector = (selector as Record<string, unknown>).id;\n if (typeof selector !== \"string\" || !selector) throw new Error(\"A vault is required\");\n const folded = selector.toLowerCase();\n const ids = vaults.filter(vault => vault.id.toLowerCase() === folded);\n const matches = ids.length ? ids : vaults.filter(vault => typeof vault.name === \"string\" && vault.name.toLowerCase() === folded);\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n", "import { createAccountScope, externalCommands } from \"./admin.js\";\nimport { opCrypto } from \"#op-crypto\";\nimport { inspectAuthentication, sameData } from \"./auth.js\";\nimport { parseSecretReference } from \"./references.js\";\nimport { parseObjectSelectors } from \"./selectors.js\";\nimport { selectPluginId } from \"./plugin-selection.js\";\nimport { selectCreationVault } from \"./object-vaults.js\";\nimport type { OpAdminContext } from \"./admin.js\";\nimport type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpBindingHandle, OpBindingPrepareContext, OpBindingRequestMetadata, OpBindingTarget, OpClock, OpObject, OpPreparedBinding } from \"./types.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nexport function normalizeObjectRequest(request: OpBackendRequest): OpBackendRequest {\n if (request.resource === \"item\" && request.action === \"get\" && request.args.length === 0 && request.input !== undefined) request = { ...request, args: [\"-\"] };\n if (request.resource === \"item\" && request.action === \"create\" && typeof request.flags.account === \"string\" && typeof request.flags.vault === \"string\" && request.input !== undefined) {\n const inputs = Array.isArray(request.input) ? request.input : [request.input];\n const normalized = inputs.map(input => record(input) ? { ...input, account: request.flags.account, vault: request.flags.vault } : input);\n request = { ...request, input: Array.isArray(request.input) ? normalized : normalized[0] };\n }\n return request;\n}\n\nfunction select(objects: readonly OpObject[], selector: unknown): OpObject {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Binding target is required\");\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.label, object.email, object.shorthand, object.url, object.address, object.user_uuid, object.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(\"Binding target is missing or ambiguous\");\n return matches[0]!;\n}\n\nfunction metadata(source: Map<string, OpObject[]>): Map<string, OpObject[]> {\n const section = (value: unknown) => {\n if (!record(value)) throw new Error(\"Invalid section metadata\");\n return { id: value.id, ...(value.label === undefined ? {} : { label: value.label }) };\n };\n const keys = [\"id\", \"name\", \"title\", \"label\", \"email\", \"shorthand\", \"url\", \"address\", \"user_uuid\", \"userId\", \"account\", \"vault\", \"state\", \"category\", \"favorite\", \"tags\", \"group\", \"user\", \"server\", \"integrationId\", \"item\", \"permissions\", \"terminalId\"];\n return new Map([...source].map(([resource, objects]) => [resource, objects.map(object => {\n const result = Object.fromEntries(keys.filter(key => Object.hasOwn(object, key)).map(key => [key, structuredClone(object[key])])) as OpObject;\n if (resource === \"item\") {\n result.fields = (object.fields as OpObject[] | undefined)?.map(field => ({ ...Object.fromEntries([\"id\", \"label\", \"name\", \"type\", \"purpose\"].filter(key => Object.hasOwn(field, key)).map(key => [key, structuredClone(field[key])])), ...(field.section === undefined ? {} : { section: section(field.section) }) }));\n result.files = (object.files as OpObject[] | undefined)?.map(file => ({ id: file.id, name: file.name, ...(file.section === undefined ? {} : { section: section(file.section) }) }));\n result.sections = (object.sections as OpObject[] | undefined)?.map(section);\n }\n return result;\n })]));\n}\n\ninterface Step {\n original: OpBackendRequest;\n resolved: OpBackendRequest;\n dependencies: { resource: string; id?: string }[];\n status: \"pending\" | \"running\" | \"complete\";\n}\n\ninterface Binding {\n generation: number;\n expiresAt: number;\n signal: AbortSignal;\n authentication: OpBackendContext[\"authentication\"];\n pluginScope: OpBackendContext[\"pluginScope\"];\n steps: Step[];\n cancelled: boolean;\n staged?: Map<string, OpObject[]>;\n queue: Promise<void>;\n abort: () => void;\n}\n\nexport function createBindingManager(source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock, hasHook: (command: string, context: OpBackendContext) => boolean, defaultVault?: string) {\n const backendId = opCrypto.randomUUID();\n let generation = 0;\n const bindings = new WeakMap<OpBindingHandle, Binding>();\n const environmentMetadata = new WeakMap<OpObject, OpBindingRequestMetadata>();\n function indexEnvironments(): void {\n for (const resource of [\"environment\", \"environment snapshot\"]) {\n for (const object of source.get(resource) ?? []) {\n if (environmentMetadata.has(object)) continue;\n const snapshot = resource === \"environment snapshot\";\n const value = snapshot ? object.snapshot : object;\n let metadata: OpBindingRequestMetadata = {};\n if (record(value) && record(value.variables) && (!snapshot || (value.version === 1 && [\"complete\", \"selected\"].includes(String(value.scope))))) {\n const entries = Object.entries(value.variables);\n if (entries.every(([key, value]) => key && !key.includes(\"=\") && !key.includes(\"\\0\") && (typeof value === \"string\" && !value.includes(\"\\0\") || snapshot && value === null))) {\n metadata = { environment: Object.freeze({\n names: Object.freeze(entries.map(([key]) => key)),\n ...(snapshot ? { unsetNames: Object.freeze(entries.filter(([, value]) => value === null).map(([key]) => key)), scope: value.scope as \"complete\" | \"selected\" } : {}),\n dependenciesComplete: snapshot || entries.every(([, value]) => typeof value === \"string\" && !value.toLowerCase().includes(\"op://\"))\n }) };\n }\n }\n environmentMetadata.set(object, Object.freeze(metadata));\n }\n }\n }\n indexEnvironments();\n function published(before: ReadonlyMap<string, OpObject[]>): void {\n if (before.size !== source.size || [...source].some(([key, objects]) => before.get(key) !== objects)) {\n indexEnvironments();\n generation++;\n }\n }\n const invalid = () => new Error(\"Binding is invalid or no longer current\");\n function cancel(binding: Binding): void {\n binding.cancelled = true;\n binding.staged = undefined;\n binding.steps = [];\n binding.signal.removeEventListener(\"abort\", binding.abort);\n }\n function validate(handle: OpBindingHandle, context: OpBackendContext): Binding {\n const binding = bindings.get(handle);\n if (!binding) throw invalid();\n try {\n context.signal.throwIfAborted();\n binding.signal.throwIfAborted();\n const now = clock.now();\n if (binding.cancelled || generation !== binding.generation || !Number.isFinite(now) || now >= binding.expiresAt || !sameData(binding.authentication, context.authentication) || !sameData(binding.pluginScope, context.pluginScope)) throw invalid();\n for (const step of binding.steps) inspectAuthentication(step.resolved, context, source, policy, clock);\n return binding;\n } catch {\n cancel(binding);\n throw invalid();\n }\n }\n return {\n async prepareBinding(requests: readonly OpBackendRequest[], context: OpBindingPrepareContext): Promise<OpPreparedBinding> {\n context.signal.throwIfAborted();\n if (context.binding || requests.length > 1024) throw new Error(\"Invalid binding plan\");\n context = Object.freeze({ ...context, authentication: structuredClone(context.authentication), pluginScope: structuredClone(context.pluginScope) });\n const preparedGeneration = generation;\n const now = clock.now();\n const expiresAt = context.expiresAt ?? now + 60_000;\n if (!Number.isFinite(now) || !Number.isFinite(expiresAt) || expiresAt <= now) throw new Error(\"Invalid binding deadline\");\n const targets: OpBindingTarget[] = [];\n const requestMetadata: OpBindingRequestMetadata[] = requests.map(() => Object.freeze({}));\n const accounts = new Set<string | null>();\n const view = requests.length ? metadata(source) : new Map<string, OpObject[]>();\n const steps: Step[] = [];\n for (const [requestIndex, detached] of structuredClone(requests).entries()) {\n let request = normalizeObjectRequest(detached);\n const command = `${request.resource} ${request.action}`.trim();\n if (request.action === \"create\" && request.input !== undefined && !(record(request.input) || request.resource === \"item\" && Array.isArray(request.input) && request.input.length > 0 && request.input.every(record))) throw new Error(\"Create requires an object input\");\n const pluginInspect = request.resource === \"plugin\" && request.action === \"inspect\";\n if (hasHook(command, context) || externalCommands.has(command) || request.flags[\"ssh-generate-key\"] !== undefined && request.flags[\"ssh-generate-key\"] !== false || request.flags[\"ssh-format\"] || request.resource === \"plugin\" && !pluginInspect || [\"session\", \"session default\", \"app default\"].includes(request.resource)) throw new Error(\"Operation does not support bindings\");\n if (!pluginInspect && ![\"list\", \"get\", \"create\", \"edit\", \"update\", \"delete\", \"move\", \"read\"].includes(request.action) || request.resource.includes(\" \") && request.resource !== \"environment snapshot\") throw new Error(\"Operation does not support bindings\");\n request = inspectAuthentication(request, context, source, policy, clock).request;\n const scope = createAccountScope(request, view);\n const resources = scope.resources;\n const account = scope.account;\n if (pluginInspect) {\n if (request.args.length > 1 || request.args[0] === \"-\") throw new Error(\"Exactly one plugin is required\");\n if (!request.args.length) request = { ...request, args: [await selectPluginId(resources.get(\"plugin\") ?? [], context, account ?? null)] };\n context.signal.throwIfAborted();\n if (generation !== preparedGeneration) throw invalid();\n }\n accounts.add(account ?? null);\n const dependencies: Step[\"dependencies\"] = [];\n const add = (resource: string, object: OpObject, kind: OpBindingTarget[\"kind\"] = \"object\", parentId?: string): void => {\n targets.push(Object.freeze({ requestIndex, resource, kind, id: object.id, ...(account === undefined ? {} : { account }), ...(parentId === undefined ? {} : { parentId }), revision: String(generation) }));\n if (kind === \"object\") dependencies.push({ resource, id: object.id });\n };\n const flags: Record<string, string | boolean | readonly string[]> = { ...request.flags, ...(account === undefined ? {} : { account }) };\n if (account !== undefined) add(\"account\", select(resources.get(\"account\") ?? [], account));\n for (const key of [\"vault\", \"current-vault\", \"destination-vault\"]) {\n if (flags[key] !== undefined) {\n const vault = select(resources.get(\"vault\") ?? [], flags[key]);\n flags[key] = vault.id;\n add(\"vault\", vault);\n }\n }\n request = { ...request, flags };\n if (request.resource === \"secret\" && request.action === \"read\") {\n if (request.args.length !== 1) throw new Error(\"One secret reference is required\");\n const reference = parseSecretReference(request.args[0]!);\n if (reference.query?.[\"ssh-format\"] !== undefined) throw new Error(\"SSH hooks do not support bindings\");\n const vault = select(resources.get(\"vault\") ?? [], reference.vault);\n const item = select((resources.get(\"item\") ?? []).filter(object => (record(object.vault) ? object.vault.id : object.vault) === vault.id && object.state !== \"ARCHIVED\" && object.state !== \"DELETED\"), reference.item);\n let fields = [...item.fields as OpObject[] ?? [], ...item.files as OpObject[] ?? []];\n let section: OpObject | undefined;\n if (reference.section !== undefined) {\n const sections = new Map((item.sections as OpObject[] ?? []).map(entry => [entry.id, entry]));\n for (const field of fields) if (record(field.section) && typeof field.section.id === \"string\" && !sections.has(field.section.id)) sections.set(field.section.id, field.section as OpObject);\n section = select([...sections.values()], reference.section);\n fields = fields.filter(field => record(field.section) && field.section.id === section!.id);\n add(\"item\", section, \"section\", item.id);\n }\n const field = select(fields, reference.field);\n add(\"vault\", vault);\n add(\"item\", item);\n add(\"item\", field, \"field\", item.id);\n const query = request.args[0]!.indexOf(\"?\");\n request = { ...request, args: [`op://${[vault.id, item.id, ...(section ? [section.id] : []), field.id].join(\"/\")}${query < 0 ? \"\" : request.args[0]!.slice(query)}`] };\n } else {\n const objects = resources.get(request.resource) ?? [];\n const vaulted = [\"item\", \"document\"].includes(request.resource);\n let candidates = objects;\n const vaultId = request.action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (vaulted && vaultId !== undefined) candidates = candidates.filter(object => (record(object.vault) ? object.vault.id : object.vault) === vaultId);\n const selected: OpObject[] = [];\n if ([\"list\", \"create\"].includes(request.action)) {\n targets.push(Object.freeze({ requestIndex, resource: request.resource, kind: \"collection\", ...(account === undefined ? {} : { account }), revision: String(generation) }));\n dependencies.push({ resource: request.resource });\n if (request.action === \"list\") {\n if (vaulted) candidates = candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true));\n if (request.resource === \"item\") {\n const strings = (value: unknown): readonly string[] => typeof value === \"string\" ? value.split(\",\") : Array.isArray(value) ? value : [];\n const categories = strings(flags.categories).map(value => value.toUpperCase().split(\" \").join(\"_\"));\n const tags = strings(flags.tags);\n candidates = candidates.filter(object => (!categories.length || categories.includes(String(object.category))) && (!flags.favorite || object.favorite === true) && (!tags.length || tags.some(tag => Array.isArray(object.tags) && object.tags.some(value => typeof value === \"string\" && (value === tag || value.startsWith(`${tag}/`))))));\n }\n selected.push(...candidates);\n }\n else if (vaulted) {\n const inputs = Array.isArray(request.input) ? request.input : [request.input];\n const resolvedInputs: unknown[] = [];\n for (const input of inputs) {\n const selector = flags.vault ?? (record(input) ? input.vault : undefined);\n const vault = selectCreationVault(resources.get(\"vault\") ?? [], selector, defaultVault);\n add(\"vault\", vault);\n resolvedInputs.push({ ...(record(input) ? input : {}), vault: vault.id });\n }\n request = { ...request, input: Array.isArray(request.input) ? resolvedInputs : resolvedInputs[0] };\n }\n } else {\n const batch = request.args[0] === \"-\";\n const selectors = batch ? parseObjectSelectors(request.input) : request.args.length ? [request.args[0]!] : request.resource === \"account\" && account !== undefined ? [account] : [];\n if (!selectors.length) throw new Error(\"Binding target is required\");\n for (const selector of selectors) {\n const candidatesForSelector = vaulted ? candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || object.id.toLowerCase() === selector.toLowerCase())) : candidates;\n selected.push(select(candidatesForSelector, selector));\n }\n if (batch) request = { ...request, input: selected.map(object => ({ id: object.id })) };\n else if (request.args.length) request = { ...request, args: [selected[0]!.id, ...request.args.slice(1)] };\n }\n for (const object of selected) {\n add(request.resource, object);\n if ([\"environment\", \"environment snapshot\"].includes(request.resource) && [\"get\", \"read\"].includes(request.action)) {\n const original = source.get(request.resource)?.find(entry => entry.id === object.id);\n requestMetadata[requestIndex] = original ? environmentMetadata.get(original) ?? Object.freeze({}) : Object.freeze({});\n }\n if (vaulted && object.vault !== undefined) add(\"vault\", select(resources.get(\"vault\") ?? [], record(object.vault) ? object.vault.id : object.vault));\n if (request.resource === \"item\" && request.action === \"get\") {\n const fields = object.fields as OpObject[] ?? [];\n let selectedFields = fields;\n if (flags.fields !== undefined) {\n const selectors = typeof flags.fields === \"string\" ? flags.fields.split(\",\") : Array.isArray(flags.fields) ? flags.fields : [];\n selectedFields = selectors.flatMap(selector => {\n const separator = selector.indexOf(\"=\");\n const key = separator < 0 ? \"label\" : selector.slice(0, separator);\n const value = (separator < 0 ? selector : selector.slice(separator + 1)).toLowerCase();\n if (![\"label\", \"type\"].includes(key)) throw new Error(\"Unsupported field selector\");\n const matches = fields.filter(field => String(field[key] ?? (key === \"label\" ? field.id : \"\")).toLowerCase() === value);\n if (!matches.length) throw new Error(\"Field not found\");\n return matches;\n });\n } else if (flags.otp) selectedFields = fields.filter(field => field.type === \"OTP\").slice(0, 1);\n for (const field of selectedFields) {\n if (record(field.section) && typeof field.section.id === \"string\") add(\"item\", field.section as OpObject, \"section\", object.id);\n add(\"item\", field, \"field\", object.id);\n }\n }\n }\n }\n steps.push({ original: detached, resolved: request, dependencies, status: \"pending\" });\n }\n if (generation !== preparedGeneration) throw invalid();\n if (accounts.size > 1) throw new Error(\"A binding requires one account scope\");\n const handle = Object.freeze({}) as OpBindingHandle;\n const binding: Binding = { generation, expiresAt, signal: context.signal, authentication: structuredClone(context.authentication), pluginScope: structuredClone(context.pluginScope), steps, cancelled: false, queue: Promise.resolve(), abort: () => cancel(binding) };\n bindings.set(handle, binding);\n context.signal.addEventListener(\"abort\", binding.abort, { once: true });\n validate(handle, context);\n return Object.freeze({ backendId, accountId: accounts.values().next().value ?? null, handle, targets: Object.freeze(targets), metadata: Object.freeze(requestMetadata) });\n },\n validateBinding(handle: OpBindingHandle, context: OpBackendContext): void { validate(handle, context); },\n cancelBinding(handle: OpBindingHandle): void {\n const binding = bindings.get(handle);\n if (!binding) throw invalid();\n cancel(binding);\n },\n published,\n async execute(request: OpBackendRequest, context: OpAdminContext, operation: (request: OpBackendRequest, resources: Map<string, OpObject[]>) => Promise<unknown>): Promise<unknown> {\n const handle = context.binding!;\n const binding = validate(handle, context);\n const step = binding.steps.find(candidate => candidate.status === \"pending\" && sameData(candidate.original, request));\n if (!step || hasHook(`${request.resource} ${request.action}`.trim(), context)) { cancel(binding); throw invalid(); }\n step.status = \"running\";\n const previous = binding.queue;\n let release!: () => void;\n binding.queue = new Promise<void>(resolve => { release = resolve; });\n try {\n await previous;\n validate(handle, context);\n binding.staged ??= structuredClone(source);\n for (const dependency of step.dependencies) {\n const original = source.get(dependency.resource);\n const staged = binding.staged.get(dependency.resource);\n if (!sameData(dependency.id === undefined ? original : original?.find(object => object.id === dependency.id), dependency.id === undefined ? staged : staged?.find(object => object.id === dependency.id))) throw invalid();\n }\n const result = await operation(structuredClone(step.resolved), binding.staged);\n validate(handle, context);\n step.status = \"complete\";\n if (binding.steps.every(candidate => candidate.status === \"complete\")) {\n const before = new Map(source);\n for (const [resource, objects] of binding.staged) if (!sameData(source.get(resource), objects)) source.set(resource, objects);\n published(before);\n binding.generation = generation;\n binding.staged = undefined;\n }\n return result;\n } catch (error) {\n cancel(binding);\n throw error;\n } finally { release(); }\n }\n };\n}\n", "import { deriveItemFieldReferences, parseSecretReference } from \"./references.js\";\nimport { opCrypto } from \"#op-crypto\";\nimport { generateOtp } from \"./otp.js\";\nimport { createAccountScope, executeAdmittedAdminRequest } from \"./admin.js\";\nimport { beginAuthentication, validateAuthentication } from \"./auth.js\";\nimport { objectBatchCommands, parseObjectSelectors } from \"./selectors.js\";\nimport { validateVaultOptions } from \"./vault-options.js\";\nimport { getItemTemplate, listItemTemplates } from \"./templates.js\";\nimport { createBindingManager, normalizeObjectRequest } from \"./bindings.js\";\nimport { availablePlugins } from \"./plugin-catalog.js\";\nimport { selectCreationVault } from \"./object-vaults.js\";\nimport type { OpAdminContext } from \"./admin.js\";\nimport type { OpBackendRequest, OpField, OpFile, OpItem, OpObject, OpObjectBackend, OpObjectBackendOptions, OpSection } from \"./types.js\";\n\nfunction strings(value: OpBackendRequest[\"flags\"][string]): readonly string[] {\n return typeof value === \"string\" ? value === \"\" ? [] : value.split(\",\") : Array.isArray(value) ? value : [];\n}\n\nfunction generatePassword(recipe: string | boolean | readonly string[]): string {\n const alphabets: Record<string, string> = { letters: \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", digits: \"0123456789\", symbols: \"!@.-_*\" };\n let length = 32;\n let alphabet = \"\";\n let hasLength = false;\n for (const part of recipe === true || recipe === \"\" ? [\"letters\", \"digits\", \"symbols\"] : strings(recipe)) {\n const label = part.toLowerCase();\n const digits = part.startsWith(\"+\") ? part.slice(1) : part;\n if (Object.hasOwn(alphabets, label)) alphabet += alphabets[label];\n else if (digits.length && [...digits].every(character => \"0123456789\".includes(character)) && !hasLength) { length = Number(digits); hasLength = true; }\n else throw new Error(\"Invalid password recipe\");\n }\n if (!Number.isInteger(length) || length < 1 || length > 64) throw new Error(\"Password length must be between 1 and 64\");\n if (!alphabet) alphabet = Object.values(alphabets).join(\"\");\n alphabet = [...new Set(alphabet)].join(\"\");\n const cutoff = 256 - (256 % alphabet.length);\n let password = \"\";\n while (password.length < length) {\n for (const byte of opCrypto.getRandomValues(new Uint8Array(64))) {\n if (byte < cutoff) password += alphabet[byte % alphabet.length];\n if (password.length === length) break;\n }\n }\n return password;\n}\n\nexport function parseAssignment(source: string): { section?: string; field: string; type?: string; value?: string } {\n const names: string[] = [];\n let name = \"\";\n let offset = 0;\n for (; offset < source.length; offset++) {\n const character = source[offset]!;\n if (character === \"\\\\\") {\n const next = source[++offset];\n if (!next || !\".\\\\=\".includes(next)) throw new Error(\"Invalid field name escape\");\n name += next;\n } else if (character === \".\") { names.push(name); name = \"\"; }\n else if (character === \"=\" || character === \"[\") break;\n else name += character;\n }\n names.push(name);\n if (names.length > 2 || names.some(part => !part)) throw new Error(\"Invalid field assignment\");\n let type: string | undefined;\n if (source[offset] === \"[\") {\n const closing = source.indexOf(\"]\", offset);\n if (closing < 0) throw new Error(\"Invalid field type\");\n type = source.slice(offset + 1, closing);\n offset = closing + 1;\n }\n if (offset < source.length && source[offset] !== \"=\") throw new Error(\"Invalid field assignment\");\n if (offset === source.length && !type) throw new Error(\"Assignment requires a value or type\");\n return { ...(names.length === 2 ? { section: names[0]! } : {}), field: names.at(-1)!, ...(type === undefined ? {} : { type }), ...(source[offset] === \"=\" ? { value: source.slice(offset + 1) } : {}) };\n}\n\nfunction itemPatch(input: Record<string, unknown>, args: readonly string[], flags: OpBackendRequest[\"flags\"], nextId: () => string): Record<string, unknown> {\n const result = structuredClone(input);\n for (const key of [\"title\", \"category\"]) if (typeof flags[key] === \"string\") result[key] = flags[key];\n if (typeof result.category === \"string\") result.category = result.category.toUpperCase().split(\" \").join(\"_\");\n if (flags.tags !== undefined) result.tags = [...strings(flags.tags)];\n if (flags.favorite !== undefined) result.favorite = flags.favorite === true || flags.favorite === \"true\";\n if (typeof flags.url === \"string\") result.urls = [{ href: flags.url, primary: true }];\n if (flags[\"ssh-generate-key\"]) throw new Error(\"SSH generation is not supported by the object backend\");\n const fields = structuredClone(result.fields ?? []) as OpField[];\n const files = structuredClone(result.files ?? []) as OpFile[];\n let sections = structuredClone(result.sections ?? []) as OpSection[];\n if (!Array.isArray(fields) || !Array.isArray(files) || !Array.isArray(sections)) throw new Error(\"Item fields, files and sections must be arrays\");\n for (const field of fields) if (record(field)) delete field.reference;\n for (const section of sections) {\n if (!record(section)) throw new Error(\"Invalid item section\");\n if (section.id === undefined) section.id = nextId();\n if (typeof section.id !== \"string\" || !section.id) throw new Error(\"Invalid item section ID\");\n }\n for (const member of [...fields, ...files]) {\n if (!record(member)) throw new Error(\"Invalid item field or file\");\n if (member.id === undefined) member.id = nextId();\n if (typeof member.id !== \"string\" || !member.id) throw new Error(\"Invalid item field or file ID\");\n if (member.section === undefined) continue;\n const reference = member.section;\n if (!record(reference) || (typeof reference.id !== \"string\" && typeof reference.label !== \"string\")) throw new Error(\"Invalid item section reference\");\n const matches = sections.filter(section => typeof reference.id === \"string\" ? section.id === reference.id : section.label?.split(\" \").join(\"\").toLowerCase() === reference.label?.split(\" \").join(\"\").toLowerCase());\n if (matches.length > 1) throw new Error(\"Ambiguous section\");\n const section = matches[0] ?? { ...reference, id: reference.id ?? nextId() };\n if (!matches.length) sections.push(section);\n member.section = { ...section };\n }\n const types: Record<string, string> = { text: \"STRING\", password: \"CONCEALED\", email: \"EMAIL\", url: \"URL\", phone: \"PHONE\", otp: \"OTP\", date: \"DATE\", monthyear: \"MONTH_YEAR\", address: \"ADDRESS\", reference: \"REFERENCE\", menu: \"MENU\", concealed: \"CONCEALED\" };\n for (const source of args) {\n const parsed = parseAssignment(source);\n let section: OpSection | undefined;\n if (parsed.section) {\n const matches = sections.filter(entry => entry.id === parsed.section || entry.label?.split(\" \").join(\"\").toLowerCase() === parsed.section!.split(\" \").join(\"\").toLowerCase());\n if (matches.length > 1) throw new Error(\"Ambiguous section\");\n section = matches[0];\n if (!section) { section = { id: nextId(), label: parsed.section }; sections.push(section); }\n }\n const matches = fields.filter(field => (!section || field.section?.id === section.id) && [field.id, field.label, field.name, field.n].some(value => typeof value === \"string\" && value.split(\" \").join(\"\").toLowerCase() === parsed.field.split(\" \").join(\"\").toLowerCase()));\n if (matches.length > 1) throw new Error(\"Ambiguous field\");\n let field = matches[0];\n if (parsed.type === \"delete\") {\n if (!field) throw new Error(\"Field not found\");\n if (field.purpose) throw new Error(\"Built-in fields cannot be deleted\");\n fields.splice(fields.indexOf(field), 1);\n if (field.section && ![...fields, ...files].some(entry => entry.section?.id === field!.section!.id)) sections = sections.filter(entry => entry.id !== field!.section!.id);\n continue;\n }\n if (parsed.type && !Object.hasOwn(types, parsed.type)) throw new Error(\"Unsupported field type\");\n if (!field) {\n const purpose = !section && [\"username\", \"password\", \"notesPlain\"].includes(parsed.field) ? ({ username: \"USERNAME\", password: \"PASSWORD\", notesPlain: \"NOTES\" } as Record<string, string>)[parsed.field] : undefined;\n field = { id: purpose ? parsed.field : nextId(), label: parsed.field, type: parsed.field === \"password\" ? \"CONCEALED\" : \"STRING\", ...(purpose ? { purpose } : {}), ...(section ? { section } : {}) };\n fields.push(field);\n }\n if (parsed.type) field.type = types[parsed.type];\n if (parsed.value !== undefined) field.value = parsed.value;\n }\n result.fields = fields;\n if (result.files !== undefined) result.files = files;\n result.sections = sections;\n if (flags[\"generate-password\"] !== undefined && flags[\"generate-password\"] !== false) {\n if (![\"LOGIN\", \"PASSWORD\"].includes(String(result.category))) throw new Error(\"Password generation requires a Login or Password item\");\n let password = fields.find(field => field.purpose === \"PASSWORD\" || field.id === \"password\");\n if (!password) { password = { id: \"password\", label: \"password\", purpose: \"PASSWORD\", type: \"CONCEALED\" }; fields.push(password); }\n password.value = generatePassword(flags[\"generate-password\"]);\n }\n return result;\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nfunction merge(target: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown> {\n const result = { ...target };\n for (const [key, value] of Object.entries(patch)) {\n Object.defineProperty(result, key, { value: record(value) && record(target[key]) ? merge(target[key], value) : structuredClone(value), writable: true, enumerable: true, configurable: true });\n }\n return result;\n}\n\nfunction select<T extends OpObject>(objects: readonly T[], selector: string): T {\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.label].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n\nexport function createObjectBackend(options: OpObjectBackendOptions = {}): OpObjectBackend {\n const resources = new Map<string, OpObject[]>();\n const adminHooks = { ...options.adminHooks };\n const authenticationPolicy = { ...options.authentication ?? { mode: \"object-store\" as const } };\n const clock = options.clock ?? { now: Date.now };\n const ssh = options.ssh === undefined ? undefined : { ...options.ssh };\n let sequence = 0;\n function nextId(): string {\n let id: string;\n do { id = (++sequence).toString(36).padStart(26, \"a\"); } while ([...resources.values()].some(entries => entries.some(entry => entry.id.toLowerCase() === id || [entry.fields, entry.sections, entry.files].some(children => Array.isArray(children) && children.some(child => record(child) && typeof child.id === \"string\" && child.id.toLowerCase() === id)))));\n return id;\n }\n for (const [resource, objects] of Object.entries({ ...options.resources, vault: options.vaults ?? options.resources?.vault ?? [], item: options.items ?? options.resources?.item ?? [], document: options.documents ?? options.resources?.document ?? [], account: options.accounts ?? options.resources?.account ?? [] })) {\n const entries = structuredClone(objects) as OpObject[];\n const ids = new Set<string>();\n for (const entry of entries) {\n if (!record(entry) || typeof entry.id !== \"string\" || !entry.id || ids.has(entry.id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n ids.add(entry.id.toLowerCase());\n }\n resources.set(resource, entries);\n }\n\n let defaultVault: string | undefined;\n if (options.defaultVault !== undefined) {\n const supplied = options.defaultVault;\n const vault = typeof supplied === \"string\" && supplied ? resources.get(\"vault\")?.find(vault => vault.id.toLowerCase() === supplied.toLowerCase()) : undefined;\n if (!vault) throw new Error(\"defaultVault must identify an existing vault ID\");\n defaultVault = vault.id;\n }\n validateAuthentication(resources, authenticationPolicy);\n\n function vaultReference(value: unknown, source = resources): { id: string; name?: string } {\n const selector = typeof value === \"string\" ? value : record(value) ? value.id : undefined;\n if (typeof selector !== \"string\" || !selector) throw new Error(\"A vault is required\");\n const vault = select(source.get(\"vault\") ?? [], selector);\n return { id: vault.id, ...(vault.name === undefined ? {} : { name: vault.name }) };\n }\n\n for (const item of resources.get(\"item\") ?? []) item.vault = vaultReference(item.vault);\n for (const document of resources.get(\"document\") ?? []) if (document.vault !== undefined) document.vault = vaultReference(document.vault);\n\n const bindings = createBindingManager(resources, authenticationPolicy, clock, (command, context) => Object.hasOwn(adminHooks, command) || Object.hasOwn((context as OpAdminContext).adminHooks ?? {}, command), defaultVault);\n\n return {\n prepareBinding: bindings.prepareBinding,\n validateBinding: bindings.validateBinding,\n cancelBinding: bindings.cancelBinding,\n snapshot() {\n const { vault, item, document, account, ...extensions } = Object.fromEntries(resources);\n return structuredClone({ vaults: vault, items: item, documents: document, accounts: account, resources: extensions, ...(defaultVault === undefined ? {} : { defaultVault }), ...(authenticationPolicy.mode === \"managed\" ? { authentication: authenticationPolicy } : {}) }) as unknown as OpObjectBackendOptions;\n },\n async execute(request, context) {\n context.signal.throwIfAborted();\n const prepared = !context.binding && request.resource === \"plugin\" && request.action === \"inspect\" && request.args.length === 0\n ? await bindings.prepareBinding([request], context) : undefined;\n if (prepared) context = { ...context, binding: prepared.handle };\n async function executeOperation(request: OpBackendRequest, executionResources: Map<string, OpObject[]>): Promise<unknown> {\n request = normalizeObjectRequest(request);\n const authentication = beginAuthentication(request, context, executionResources, authenticationPolicy, clock);\n request = authentication.request;\n const scope = createAccountScope(request, authentication.resources);\n async function executeScoped(resources: Map<string, OpObject[]>): Promise<unknown> {\n const { resource, action, args, flags } = request;\n if ([\"session\", \"session default\"].includes(resource)) throw new Error(\"Session state requires typed authentication hooks\");\n const command = action ? `${resource} ${action}` : resource;\n const batch = args.length === 1 && args[0] === \"-\" && objectBatchCommands.includes(command);\n const targetSelectors = batch ? parseObjectSelectors(request.input) : args;\n const vaulted = resource === \"item\" || resource === \"document\";\n const invocationHooks = { ...adminHooks, ...context.adminHooks };\n if (resource === \"plugin\" && !Object.hasOwn(invocationHooks, command)) {\n const configured = resources.get(\"plugin\") ?? [];\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n return availablePlugins(configured);\n }\n if (action === \"inspect\" && args.length === 1 && !configured.some(plugin => plugin.id.toLowerCase() === args[0]!.toLowerCase()) && availablePlugins([]).some(plugin => plugin.executable?.toLowerCase() === args[0]!.toLowerCase())) throw new Error(\"Plugin configuration is unavailable\");\n }\n if (Object.hasOwn(invocationHooks, command) || !(resource === \"account\" && [\"create\", \"edit\", \"update\", \"delete\"].includes(action))) {\n const adminContext = { ...context, adminHooks: invocationHooks, nextId };\n const admin = await executeAdmittedAdminRequest(action === \"update\" ? { ...request, action: \"edit\" } : request, adminContext, resources, nextId, scope.account, authentication.sessionId, authentication.recordSignin);\n context.signal.throwIfAborted();\n if (admin.handled) return admin.value;\n }\n if (resource === \"item template\") {\n const templates = resources.get(resource) ?? [];\n if (action === \"list\" && !args.length) return listItemTemplates(templates);\n if (action === \"get\" && args.length === 1) return getItemTemplate(args[0]!, templates);\n throw new Error(\"Invalid item template request\");\n }\n if (resource === \"secret\" && action === \"read\") {\n if (args.length !== 1) throw new Error(\"One secret reference is required\");\n const reference = parseSecretReference(args[0]!);\n const vault = select(resources.get(\"vault\") ?? [], reference.vault);\n const items = (resources.get(\"item\") ?? []).filter(item => item.state !== \"DELETED\" && item.state !== \"ARCHIVED\" && record(item.vault) && item.vault.id === vault.id) as OpItem[];\n const item = select(items, reference.item);\n let candidates: (OpField | OpFile)[] = [...item.fields ?? [], ...item.files ?? []];\n if (reference.section) {\n const sections = new Map<string, OpSection>();\n for (const section of item.sections ?? []) sections.set(section.id, section);\n for (const field of candidates) if (field.section) sections.set(field.section.id, { ...field.section, ...sections.get(field.section.id) });\n const section = select([...sections.values()], reference.section);\n candidates = candidates.filter(field => field.section?.id === section.id);\n }\n const field = select(candidates, reference.field);\n const attribute = reference.query?.attribute ?? reference.query?.attr ?? (Object.hasOwn(field, \"content\") ? \"content\" : \"value\");\n const sshFormat = reference.query?.[\"ssh-format\"];\n if (sshFormat !== undefined) {\n if (!ssh) throw new Error(\"SSH transformation requires an injected hook\");\n if (sshFormat !== \"openssh\" && sshFormat !== \"pkcs1\" && sshFormat !== \"pkcs8\") throw new Error(\"Unsupported SSH format\");\n if (attribute !== \"value\" || field.type !== \"SSHKEY\" || typeof field.value !== \"string\") throw new Error(\"SSH private key field is unavailable\");\n context.signal.throwIfAborted();\n try { return await ssh.transform(field.value, sshFormat); }\n finally { context.signal.throwIfAborted(); }\n }\n if (attribute === \"otp\") {\n if (field.type !== \"OTP\" || typeof field.value !== \"string\") throw new Error(\"OTP field is unavailable\");\n const code = await generateOtp(field.value);\n context.signal.throwIfAborted();\n return code;\n }\n const attributes = item.files?.some(file => file === field) ? [\"type\", \"content\", \"size\", \"id\", \"name\"] : [\"type\", \"value\", \"id\", \"purpose\"];\n if (!attributes.includes(attribute) || !Object.hasOwn(field, attribute)) throw new Error(\"Secret attribute is unavailable\");\n return structuredClone(field[attribute]);\n }\n if (![\"list\", \"get\", \"create\", \"edit\", \"update\", \"delete\", ...(resource === \"item\" ? [\"move\"] : [])].includes(action)) throw new Error(\"Unsupported backend action\");\n if (!resource) throw new Error(\"Resource is required\");\n const objects = resources.get(resource) ?? [];\n let candidates = vaulted ? objects.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || (action !== \"list\" && targetSelectors.some(selector => object.id.toLowerCase() === selector.toLowerCase())))) : objects;\n const vaultSelector = action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (typeof vaultSelector === \"string\") {\n const vault = vaultReference(vaultSelector, resources);\n candidates = candidates.filter(object => record(object.vault) ? object.vault.id === vault.id : object.vault === vault.id);\n }\n if (action === \"list\") {\n if (args.length) throw new Error(\"List does not accept a selector\");\n if (resource === \"item\") {\n const categories = strings(flags.categories).map(value => value.toUpperCase().split(\" \").join(\"_\"));\n const tags = strings(flags.tags);\n candidates = candidates.filter(object => (!categories.length || categories.includes(String(object.category))) && (!flags.favorite || object.favorite === true) && (!tags.length || tags.some(tag => Array.isArray(object.tags) && object.tags.some(value => typeof value === \"string\" && (value === tag || value.startsWith(`${tag}/`))))));\n }\n return structuredClone(candidates);\n }\n if (action === \"create\") {\n const bulk = resource === \"item\" && Array.isArray(request.input);\n const inputs = bulk ? request.input as unknown[] : [request.input ?? {}];\n if (!inputs.length || inputs.some(input => !record(input))) throw new Error(\"Create requires an object input\");\n const createdItems: OpObject[] = [];\n for (const source of inputs) {\n let input = structuredClone(source) as Record<string, unknown>;\n if (resource === \"item\") {\n const copying = input.id !== undefined;\n for (const key of [\"id\", \"version\", \"created_at\", \"updated_at\", \"last_edited_by\"]) delete input[key];\n const keyType = flags[\"ssh-generate-key\"];\n if (keyType !== undefined && keyType !== false) {\n if (!ssh) throw new Error(\"SSH generation requires an injected hook\");\n let type = keyType === true || keyType === \"\" ? \"ed25519\" : keyType;\n if (typeof type === \"string\") {\n type = type.toLowerCase();\n if (type.startsWith(\"rsa-\")) type = `rsa${type.slice(4)}`;\n }\n if (typeof type !== \"string\" || ![\"ed25519\", \"rsa\", \"rsa2048\", \"rsa3072\", \"rsa4096\"].includes(type)) throw new Error(\"Unsupported SSH key type\");\n const category = flags.category ?? input.category;\n if (category !== undefined && (typeof category !== \"string\" || category.toUpperCase().split(\" \").join(\"_\") !== \"SSH_KEY\")) throw new Error(\"SSH generation requires the SSH Key category\");\n context.signal.throwIfAborted();\n let generated: Awaited<ReturnType<NonNullable<OpObjectBackendOptions[\"ssh\"]>[\"generate\"]>>;\n try { generated = await ssh.generate(type); }\n finally { context.signal.throwIfAborted(); }\n if (generated.category !== \"SSH_KEY\" || !Array.isArray(generated.fields)) throw new Error(\"Invalid generated SSH key\");\n const fields = new Map((Array.isArray(input.fields) ? input.fields : []).map((field: OpField) => [field.id, field]));\n for (const field of generated.fields) fields.set(field.id, structuredClone(field));\n input = { ...input, category: generated.category, fields: [...fields.values()] };\n }\n const category = flags.category ?? input.category;\n if (typeof category === \"string\") {\n if (input.title !== undefined && typeof input.title !== \"string\") throw new Error(\"Item title must be a string\");\n const supplied = typeof input.category === \"string\" && Array.isArray(input.fields) ? { ...input, id: input.category, title: typeof input.title === \"string\" ? input.title : \"\" } : undefined;\n const template = getItemTemplate(category, resources.get(\"item template\") ?? [], supplied);\n const fields = new Map(template.fields.map(field => [field.id, field]));\n if (input.fields !== undefined && !Array.isArray(input.fields)) throw new Error(\"Item fields must be an array\");\n for (const field of input.fields as unknown[] ?? []) {\n if (!record(field) || typeof field.id !== \"string\") throw new Error(\"Item fields require IDs\");\n fields.set(field.id, merge(fields.get(field.id) ?? {}, field) as OpField);\n }\n input = { ...merge(template, input), category: template.category, fields: [...fields.values()] };\n }\n input = itemPatch(input, args[0] === \"-\" ? args.slice(1) : args, { ...flags, \"ssh-generate-key\": false, ...(typeof input.category === \"string\" ? { category: input.category } : {}) }, nextId);\n if (copying) {\n const sectionIds = new Map<string, string>();\n for (const section of input.sections as OpSection[]) {\n const folded = section.id.toLowerCase();\n if (sectionIds.has(folded)) throw new Error(\"Duplicate item section ID\");\n const id = nextId();\n sectionIds.set(folded, id);\n section.id = id;\n }\n for (const field of input.fields as OpField[]) {\n if (!field.purpose && ![\"username\", \"password\", \"notesPlain\"].includes(field.id)) field.id = nextId();\n }\n for (const file of input.files as OpFile[] ?? []) file.id = nextId();\n for (const member of [...input.fields as OpField[], ...input.files as OpFile[] ?? []]) {\n if (member.section) member.section.id = sectionIds.get(member.section.id.toLowerCase()) ?? member.section.id;\n }\n }\n }\n else if (resource === \"vault\") {\n if (args.length > 1) throw new Error(\"One vault name is required\");\n if (args[0] !== undefined) input.name = args[0];\n for (const key of [\"description\", \"icon\", \"allow-admins-to-manage\"]) if (flags[key] !== undefined) input[key] = flags[key];\n validateVaultOptions(input);\n } else if (args.length || request.input === undefined) throw new Error(\"Create requires an object input\");\n let id = input.id;\n if (id === undefined) {\n id = nextId();\n }\n if (typeof id !== \"string\" || !id || objects.some(object => object.id.toLowerCase() === id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n const created: OpObject = { ...input, id, ...(scope.account !== undefined && resource !== \"account\" ? { account: scope.account } : {}) };\n if (vaulted) {\n created.vault = vaultReference(selectCreationVault(resources.get(\"vault\") ?? [], flags.vault ?? input.vault, defaultVault).id, resources);\n created.state = \"ACTIVE\";\n }\n context.signal.throwIfAborted();\n const current = [...resources.get(resource) ?? [], ...createdItems];\n if (current.some(entry => entry.id.toLowerCase() === created.id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n createdItems.push(created);\n }\n if (!flags[\"dry-run\"]) resources.set(resource, [...resources.get(resource) ?? [], ...createdItems]);\n return structuredClone(bulk ? createdItems : createdItems[0]);\n }\n if (args.length < 1 || (args.length > 1 && !(resource === \"item\" && [\"edit\", \"update\"].includes(action)))) throw new Error(\"One object selector is required\");\n const targets = (batch ? targetSelectors : [args[0]!]).map(selector => select(candidates, selector));\n if (action === \"get\") {\n const values = await Promise.all(targets.map(async object => {\n if (resource === \"item\") object = deriveItemFieldReferences(object as OpItem);\n if (resource === \"item\" && flags.fields !== undefined) {\n const fields = (object as OpItem).fields ?? [];\n const selected: OpField[] = [];\n for (const selector of strings(flags.fields)) {\n const separator = selector.indexOf(\"=\");\n const key = separator < 0 ? \"label\" : selector.slice(0, separator);\n const value = (separator < 0 ? selector : selector.slice(separator + 1)).toLowerCase();\n if (![\"label\", \"type\"].includes(key)) throw new Error(\"Unsupported field selector\");\n const matches = fields.filter(field => String(field[key] ?? (key === \"label\" ? field.id : \"\")).toLowerCase() === value);\n if (!matches.length) throw new Error(\"Field not found\");\n for (const field of matches) if (!selected.includes(field)) selected.push(field);\n }\n return structuredClone(selected);\n }\n if (resource === \"item\" && flags.otp) {\n const field = (object as OpItem).fields?.find(candidate => candidate.type === \"OTP\");\n if (typeof field?.value !== \"string\") throw new Error(\"OTP field is unavailable\");\n const code = await generateOtp(field.value);\n context.signal.throwIfAborted();\n return code;\n }\n return structuredClone(object);\n }));\n return batch ? resource === \"item\" && flags.fields !== undefined ? values.flat() : values : values[0];\n }\n if (action === \"delete\") {\n if (resource === \"vault\" && targets.some(object => [...resources.values()].some(entries => entries.some(entry => entry.state !== \"DELETED\" && (record(entry.vault) ? entry.vault.id === object.id : entry.vault === object.id))))) throw new Error(\"Vault is not empty\");\n resources.set(resource, vaulted ? objects.map(entry => targets.includes(entry) ? { ...entry, state: flags.archive ? \"ARCHIVED\" : \"DELETED\" } : entry) : objects.filter(entry => !targets.includes(entry)));\n return undefined;\n }\n if (action === \"move\") {\n const destination = vaultReference(flags[\"destination-vault\"], resources);\n const moved = [...new Set(targets)].map(object => {\n const item = { ...structuredClone(object), id: nextId(), vault: destination } as OpItem;\n for (const field of item.fields ?? []) delete field.reference;\n return item;\n });\n resources.set(resource, [...objects.map(entry => targets.includes(entry) ? { ...entry, state: \"DELETED\" } : entry), ...moved]);\n return structuredClone(batch ? moved : moved[0]);\n }\n if (!batch && request.input !== undefined && !record(request.input)) throw new Error(\"Update requires an object input\");\n const patch = (batch ? {} : request.input ?? {}) as Record<string, unknown>;\n const updates = new Map(targets.map(object => {\n if (Object.hasOwn(patch, \"id\") && patch.id !== object.id) throw new Error(\"Object IDs cannot be changed\");\n let updated = merge(object, patch) as OpObject;\n if (resource === \"item\") updated = itemPatch(updated, args.slice(1), flags, nextId) as OpObject;\n if (resource === \"vault\") {\n for (const key of [\"name\", \"description\", \"icon\", \"travel-mode\"]) if (flags[key] !== undefined) updated[key] = flags[key];\n validateVaultOptions(updated);\n }\n if (vaulted) updated.vault = vaultReference(updated.vault, resources);\n return [object, updated] as const;\n }));\n context.signal.throwIfAborted();\n if (!flags[\"dry-run\"]) resources.set(resource, objects.map(entry => updates.get(entry) ?? entry));\n return structuredClone(batch ? targets.map(object => updates.get(object)!) : updates.get(targets[0]!));\n }\n const result = await executeScoped(scope.resources);\n context.signal.throwIfAborted();\n if (context.binding) bindings.validateBinding(context.binding, context);\n scope.commit(result);\n if (defaultVault !== undefined && !authentication.resources.get(\"vault\")?.some(vault => vault.id === defaultVault)) throw new Error(\"Cannot remove the configured default vault\");\n const beforeCommit = new Map(executionResources);\n authentication.commit();\n if (!context.binding) bindings.published(beforeCommit);\n return result;\n }\n try { return await (context.binding ? bindings.execute(request, context, executeOperation) : executeOperation(request, resources)); }\n finally { if (prepared) bindings.cancelBinding(prepared.handle); }\n }\n };\n}\n", "import { parseAssignment } from \"./backend.js\";\nimport { renderOpOutput, selectOpBackendContext, type OpCommandContext, type OpCommandOptions } from \"./cli.js\";\nimport type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createHandlerPreparation, createSourceSnapshot } from \"./handler-preparation.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && !(value instanceof Uint8Array);\n}\n\nasync function cancellable<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nasync function stdinText(context: OpCommandContext, encoding: unknown): Promise<string> {\n const decoder = createOpTextCodec(encoding).decoder({ fatal: true });\n const iterator = context.stdin[Symbol.asyncIterator]();\n let source = \"\";\n let length = 0;\n while (true) {\n const next = await cancellable(context.signal, () => iterator.next());\n if (next.done) break;\n length += next.value.byteLength;\n if (length > 16 * 1024 * 1024) throw new Error(\"Item template stdin exceeds 16 MiB\");\n source += decoder.decode(next.value, { stream: true });\n }\n return (source + decoder.decode()).trim();\n}\n\nfunction metadata(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(metadata);\n if (!record(value) || !Array.isArray(value.files)) return value;\n return {\n ...value,\n files: value.files.map(file => record(file) ? Object.fromEntries(Object.entries(file).filter(([key]) => key !== \"content\")) : file)\n };\n}\n\nexport function createItemHandlers(backend: OpBackend): NonNullable<OpCommandOptions[\"handlers\"]> {\n const handlers: Record<string, NonNullable<OpCommandOptions[\"handlers\"]>[string]> = {};\n for (const action of [\"create\", \"edit\"] as const) {\n const mutation = async (request: OpBackendRequest, context: OpCommandContext): Promise<OpBackendRequest> => {\n context.signal.throwIfAborted();\n const args = [...request.args];\n const positional: string[] = [];\n let stdinMarker = false;\n if (action === \"edit\") {\n const selector = args.shift();\n if (!selector || selector === \"-\") throw new Error(\"item edit requires an item selector\");\n positional.push(selector);\n } else if (args[0] === \"-\") {\n args.shift();\n stdinMarker = true;\n }\n const assignments = args.map(source => ({ source, parsed: parseAssignment(source) }));\n for (const { parsed } of assignments) {\n if (parsed.type === \"file\" && !parsed.value) throw new Error(\"File assignments require a file path\");\n }\n const path = request.flags.template;\n if (path !== undefined && (typeof path !== \"string\" || !path)) throw new Error(\"--template requires a file path\");\n if (path !== undefined && (stdinMarker || request.input !== undefined)) throw new Error(\"Cannot combine --template with stdin item templates\");\n const piped = await stdinText(context, request.flags.encoding);\n if (piped && (path !== undefined || request.input !== undefined)) throw new Error(\"Cannot combine multiple item template sources\");\n if (stdinMarker && !piped && request.input === undefined) throw new Error(\"Expected an item JSON template on stdin\");\n let source = piped;\n if (typeof path === \"string\") {\n if (!context.readFile) throw new Error(\"Item templates require a host readFile capability\");\n const bytes = await cancellable(context.signal, () => context.readFile!(path));\n source = createOpTextCodec(request.flags.encoding).decoder({ fatal: true }).decode(bytes);\n }\n let input: Record<string, unknown> | Record<string, unknown>[] | undefined;\n if (source || path !== undefined || request.input !== undefined) {\n let parsed: unknown;\n try { parsed = request.input === undefined ? JSON.parse(source) : request.input; }\n catch { throw new Error(\"Invalid item JSON template\"); }\n if (Array.isArray(parsed)) {\n if (action !== \"create\" || path !== undefined || !parsed.length || parsed.some(value => !record(value))) throw new Error(\"Item JSON templates must be a nonempty array of objects on create stdin\");\n } else if (!record(parsed)) throw new Error(\"Item JSON template must be an object\");\n input = structuredClone(parsed);\n }\n for (const { source: assignment, parsed } of assignments) {\n if (parsed.type !== \"file\") {\n positional.push(assignment);\n continue;\n }\n if (!context.readFile) throw new Error(\"File attachments require a host readFile capability\");\n const bytes = await cancellable(context.signal, () => context.readFile!(parsed.value!));\n input ??= {};\n for (const item of Array.isArray(input) ? input : [input]) {\n if (item.files !== undefined && !Array.isArray(item.files)) throw new Error(\"Item files must be an array\");\n item.files = [...(item.files as unknown[] | undefined) ?? [], {\n name: parsed.field,\n size: bytes.byteLength,\n content: Uint8Array.from(bytes),\n ...(parsed.section === undefined ? {} : { section: { label: parsed.section } })\n }];\n }\n }\n const flags = { ...request.flags };\n delete flags.template;\n return { ...request, args: positional, flags, ...(input === undefined ? {} : { input }) };\n };\n handlers[`item ${action}`] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n const prepared = await mutation(request, context);\n const result = await cancellable(context.signal, () => backend.execute(prepared, selectOpBackendContext(context)));\n const output = renderOpOutput(metadata(result), request);\n if (output !== undefined) await cancellable(context.signal, () => context.stdout.write(output));\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context);\n await source.input();\n const prepared = await mutation(request, { ...source.context, readFile: source.file });\n return createHandlerPreparation([prepared], source.context, [{ kind: \"stdout\" }]);\n },\n });\n }\n return handlers;\n}\n", "import { createOpCommand, type OpCommandOptions } from \"./cli.js\";\nimport { createSecretHandlers } from \"./secrets.js\";\nimport { createCompletionHandler } from \"./completion.js\";\nimport { createEnvironmentHandlers } from \"./environment-commands.js\";\nimport { createDocumentHandlers } from \"./documents.js\";\nimport { createItemHandlers } from \"./items.js\";\n\nexport * from \"./types.js\";\nexport * from \"./cli.js\";\nexport type { OpConfirmOverwrite, OpSelectPlugin } from \"./host-contracts.js\";\nexport type { OpAdminHook, OpAdminHookResult, OpAdminContext } from \"./admin.js\";\nexport type { OpItemTemplate } from \"./templates.js\";\nexport { createObjectBackend } from \"./backend.js\";\nexport { parseSecretReference } from \"./references.js\";\nexport { createSecretHandlers } from \"./secrets.js\";\nexport { captureEnvironment, restoreEnvironment, type EnvironmentSnapshot } from \"./environment.js\";\nexport { createEnvironmentHandlers, type EnvironmentCommandContext } from \"./environment-commands.js\";\nexport { createDocumentHandlers, type OpDocumentHandlerOptions } from \"./documents.js\";\nexport { createItemHandlers } from \"./items.js\";\n\nexport function createOp(options: OpCommandOptions) {\n return createOpCommand({\n ...options,\n handlers: { ...createSecretHandlers(options.backend), ...createDocumentHandlers(options.backend), ...createItemHandlers(options.backend), ...createEnvironmentHandlers(options.backend), completion: createCompletionHandler(options.channel), ...options.handlers },\n });\n}\n", "import { collectBytes, readBytes } from \"poe-code/safe-fs/core\";\nimport type { ByteSource, CollectOptions } from \"poe-code/safe-fs/core\";\nexport { collectBytes, readBytes, toByteSource } from \"poe-code/safe-fs/core\";\nexport type { ByteSource, CollectOptions } from \"poe-code/safe-fs/core\";\nimport { TransformStream } from \"node:stream/web\";\nimport { FsError } from \"./errors.js\";\n\nexport const outputFailure = Symbol(\"output failure\");\n\nexport interface ByteSink {\n write(chunk: Uint8Array): Promise<void>;\n readonly [outputFailure]?: (reason: unknown) => Promise<void>;\n readonly ownedOutput?: {\n readonly consumerClosed: AbortSignal;\n write(chunk: Uint8Array): Promise<void>;\n };\n}\n\nexport interface BytePipe {\n readonly readable: ByteSource;\n readonly writable: ByteSink;\n close(): Promise<void>;\n abort(reason?: unknown): Promise<void>;\n}\n\nexport interface BytePipeOptions {\n readonly highWaterMark?: number;\n readonly signal?: AbortSignal;\n}\n\nexport function createBytePipe(options: BytePipeOptions = {}): BytePipe {\n const highWaterMark = options.highWaterMark ?? 64 * 1024;\n const signal = options.signal;\n if (!Number.isSafeInteger(highWaterMark) || highWaterMark < 1) {\n throw new RangeError(\"highWaterMark must be a positive safe integer\");\n }\n const stream = new TransformStream<Uint8Array, Uint8Array>(\n undefined,\n { highWaterMark: 1 },\n { highWaterMark, size: (chunk) => chunk.byteLength },\n );\n const reader = stream.readable.getReader();\n const writer = stream.writable.getWriter();\n let ended = false;\n let failed = false;\n let failure: unknown;\n let closePromise: Promise<void> | undefined;\n let abortPromise: Promise<void> | undefined;\n let finished = false;\n const consumer = new AbortController();\n const abort = (reason: unknown = new FsError(\"EPIPE\", { syscall: \"pipe\" })): Promise<void> => {\n if (abortPromise) return abortPromise;\n if (finished) return Promise.resolve();\n failed = true;\n failure = reason;\n ended = true;\n consumer.abort(reason);\n abortPromise = Promise.allSettled([reader.cancel(reason), writer.abort(reason)]).then(() => {});\n return abortPromise;\n };\n const onAbort = (): void => { void abort(signal?.reason); };\n const cleanup = (): void => signal?.removeEventListener(\"abort\", onAbort);\n void writer.closed.catch(() => {});\n void reader.closed.then(cleanup, cleanup);\n if (signal?.aborted) onAbort();\n else signal?.addEventListener(\"abort\", onAbort, { once: true });\n const iterator = (async function* (): AsyncGenerator<Uint8Array> {\n try {\n while (true) {\n if (failed) throw failure;\n const result = await reader.read();\n if (failed) throw failure;\n if (result.done) {\n finished = true;\n return;\n }\n yield result.value;\n }\n } finally {\n if (!finished) await abort();\n reader.releaseLock();\n }\n })();\n const readable: AsyncIterableIterator<Uint8Array> = {\n [Symbol.asyncIterator]() { return this; },\n next() { return iterator.next(); },\n async return() {\n if (!finished) await abort();\n try {\n return await iterator.return(undefined);\n } finally {\n reader.releaseLock();\n }\n },\n async throw(reason) {\n await abort(reason);\n try {\n return await iterator.throw(reason);\n } finally {\n reader.releaseLock();\n }\n },\n };\n const write = async (chunk: Uint8Array): Promise<void> => {\n if (failed) throw failure;\n if (ended) throw new FsError(\"EPIPE\", { syscall: \"write\" });\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Byte sinks require Uint8Array chunks\");\n if (chunk.byteLength > 0) await writer.write(new Uint8Array(chunk));\n };\n return {\n readable,\n writable: {\n write,\n [outputFailure]: abort,\n ownedOutput: { consumerClosed: consumer.signal, write },\n },\n close() {\n if (failed) return Promise.reject(failure);\n ended = true;\n closePromise ??= writer.close();\n return closePromise;\n },\n abort,\n };\n}\n\nexport async function writeText(sink: ByteSink, text: string): Promise<void> {\n await sink.write(new TextEncoder().encode(text));\n}\n\nexport async function writeBytes(sink: ByteSink, chunk: Uint8Array, signal?: AbortSignal): Promise<void> {\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Byte sinks require Uint8Array chunks\");\n await abortable(() => sink.write(chunk), signal);\n}\n\nexport async function pipeBytes(source: ByteSource, sink: ByteSink, signal?: AbortSignal): Promise<void> {\n signal?.throwIfAborted();\n for await (const chunk of readBytes(source, signal)) {\n await writeBytes(sink, chunk, signal);\n }\n signal?.throwIfAborted();\n}\n\nexport async function collectText(source: ByteSource, options: CollectOptions): Promise<string> {\n return new TextDecoder().decode(await collectBytes(source, options));\n}\n\nasync function abortable<Result>(operation: () => PromiseLike<Result>, signal?: AbortSignal): Promise<Result> {\n signal?.throwIfAborted();\n if (!signal) return operation();\n return new Promise<Result>((resolve, reject) => {\n const onAbort = (): void => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n Promise.resolve(operation()).then(\n (result) => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve(result);\n },\n (error: unknown) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n },\n );\n } catch (error) {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n }\n });\n}\n", "export { validatePath, resolvePath, normalizePath, relativePath, isPathWithin, assertPathWithin, basename, dirname, extname, joinPath, isAbsolutePath, posixPath } from \"poe-code/safe-fs/core\";\n", "import { createOp, type OpCommandContext, type OpCommandOptions } from \"@poe-platform/op\";\nimport { readBytes, resolvePath, type CommandDefinition, type VirtualShellPlugin } from \"../../contracts/index.js\";\n\nexport { createObjectBackend } from \"@poe-platform/op\";\nexport type { OpBackend, OpObjectBackendOptions, OpBackendRequest, OpResolvedApproval } from \"@poe-platform/op\";\n\nexport interface OpCommandsOptions extends OpCommandOptions {\n readonly replace?: boolean;\n readonly authentication?: OpCommandContext[\"authentication\"];\n readonly pluginScope?: OpCommandContext[\"pluginScope\"];\n readonly confirmPluginClear?: OpCommandContext[\"confirmPluginClear\"];\n readonly selectPlugin?: OpCommandContext[\"selectPlugin\"];\n}\n\nexport function createOpCommand(options: OpCommandsOptions): CommandDefinition {\n const command = createOp(options);\n const authentication = options.authentication === undefined ? undefined : Object.freeze({ ...options.authentication });\n const pluginScope = options.pluginScope === undefined ? undefined : Object.freeze({ ...options.pluginScope });\n const confirmPluginClear = options.confirmPluginClear;\n const selectPlugin = options.selectPlugin;\n return {\n name: \"op\",\n description: \"Object-backed secrets with explicitly granted virtual shell capabilities\",\n async execute(context) {\n const { fs, signal, cwd } = context;\n const invocation: OpCommandContext = {\n args: context.args,\n env: { ...context.env },\n signal,\n stdin: readBytes(context.stdin, signal),\n stdout: context.stdout,\n stderr: context.stderr,\n ...(authentication === undefined ? {} : { authentication }),\n ...(pluginScope === undefined ? {} : { pluginScope }),\n ...(confirmPluginClear === undefined ? {} : { confirmPluginClear }),\n ...(selectPlugin === undefined ? {} : { selectPlugin }),\n async readFile(path) {\n signal.throwIfAborted();\n const resolved = resolvePath(cwd, path);\n const capabilities = fs.capabilitiesFor ? await fs.capabilitiesFor(resolved, { signal }) : fs.capabilities;\n if (capabilities.read !== true) throw new Error(\"op requires VFS read capability\");\n const bytes = await fs.readFile(resolved, { signal, maxBytes: 16 * 1024 * 1024 });\n signal.throwIfAborted();\n return Uint8Array.from(bytes);\n },\n async writeFile(path, bytes, settings = {}) {\n signal.throwIfAborted();\n const resolved = resolvePath(cwd, path);\n const capabilities = fs.capabilitiesFor ? await fs.capabilitiesFor(resolved, { signal }) : fs.capabilities;\n if (capabilities.readOnly || capabilities.write !== true || capabilities.permissions !== true || capabilities.exclusiveCreate !== true) {\n throw new Error(\"op requires VFS write, permissions and exclusive-create capabilities\");\n }\n const mode = settings.mode ?? 0o600;\n const data = Uint8Array.from(bytes);\n signal.throwIfAborted();\n try {\n await fs.writeFile(resolved, data, { signal, mode, flag: \"wx\" });\n } catch (error) {\n if (!settings.overwrite || !error || typeof error !== \"object\" || !(\"code\" in error) || error.code !== \"EEXIST\") throw error;\n if (!fs.chmod || capabilities.stat !== true) throw new Error(\"op requires VFS chmod and stat capabilities to overwrite\");\n const status = await fs.lstat(resolved, { signal });\n if (status.type !== \"file\") throw new Error(\"op output must be a regular file\");\n await fs.chmod(resolved, mode, { signal });\n signal.throwIfAborted();\n await fs.writeFile(resolved, data, { signal, mode, flag: \"w\" });\n }\n signal.throwIfAborted();\n },\n ...(context.invoke === undefined ? {} : {\n async invoke(name, args, settings) {\n signal.throwIfAborted();\n const result = await context.invoke!(name, args, {\n signal, cwd, stdin: context.stdin, stdinIsDefault: context.stdinIsDefault ?? false,\n env: { ...settings.env }, replaceEnv: true,\n stdout: settings.stdout ?? context.stdout,\n stderr: settings.stderr ?? context.stderr,\n });\n signal.throwIfAborted();\n return result;\n },\n } satisfies Pick<OpCommandContext, \"invoke\">),\n };\n return command.execute(invocation);\n },\n };\n}\n\nexport function opCommands(options: OpCommandsOptions): VirtualShellPlugin {\n const definition = createOpCommand(options);\n const replace = options.replace ?? false;\n return {\n name: \"op-commands\",\n setup(host) {\n if (!replace && host.commands.has(\"op\")) throw new Error(\"Command already registered: op\");\n host.commands.register(definition, { replace });\n },\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Keep encoding registration and implementation types out of the public codec declaration.\nimport \"@kayahr/text-encoding/encodings/shift_jis\";\nimport \"@kayahr/text-encoding/encodings/gbk\";\nexport { TextDecoder, createTextEncoder } from \"@kayahr/text-encoding/no-encodings\";\n", "import { TextDecoder, createTextEncoder } from \"./encoding-runtime.js\";\n\nexport interface OpTextCodec {\n encode(input?: string): Uint8Array<ArrayBuffer>;\n decoder(options?: { fatal?: boolean; ignoreBOM?: boolean }): {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n decode(input?: ArrayBufferLike | ArrayBufferView, options?: { stream?: boolean }): string;\n };\n}\n\nexport function createOpTextCodec(value: unknown): OpTextCodec {\n const aliases: Readonly<Record<string, string>> = {\n \"\": \"utf-8\", shift_jis: \"shift_jis\", \"shift-jis\": \"shift_jis\",\n shiftjis: \"shift_jis\", sjis: \"shift_jis\", gbk: \"gbk\",\n };\n const label = value === undefined ? \"\" : typeof value === \"string\" ? value.toLowerCase() : undefined;\n if (label === undefined || !Object.hasOwn(aliases, label)) throw new Error(\"unsupported character-encoding\");\n const encoding = aliases[label]!;\n const encoder = createTextEncoder(encoding);\n return {\n encode: encoder.encode.bind(encoder),\n decoder: (options) => new TextDecoder(encoding, options),\n };\n}\n", "export type OpFlagKind = \"string\" | \"boolean\" | \"optional\" | \"array\" | \"csv\";\n\nexport interface OpFlagDefinition {\n readonly kind: OpFlagKind;\n readonly alias?: string;\n readonly env?: string;\n readonly invalidEnv?: \"ignore\";\n readonly longAliases?: readonly string[];\n readonly availability?: \"beta\";\n readonly description?: string;\n readonly metavar?: string;\n readonly defaultDisplay?: string;\n readonly helpVisible?: boolean;\n readonly completionVisible?: boolean;\n readonly completionRequired?: boolean;\n readonly completionRejectEmpty?: boolean;\n readonly allowedValues?: readonly string[];\n readonly normalizeValues?: \"trim-lowercase\" | \"lowercase\";\n readonly valueSyntax?: \"duration\" | \"go-duration\" | \"file-mode\" | \"csv\" | \"password-recipe\";\n}\n\nexport interface OpCatalogCommand {\n readonly path: readonly string[];\n readonly flags: Readonly<Record<string, OpFlagDefinition>>;\n readonly aliases: readonly string[];\n readonly availability: \"stable\" | \"beta\" | \"extension\";\n readonly summary: string;\n readonly description: string;\n readonly synopsis: string;\n readonly examples?: string;\n readonly helpGroup: \"management\" | \"commands\";\n readonly helpOrder: number;\n readonly args?: Readonly<{ min: number; max?: number; stdinAlternative?: boolean }>;\n}\n\ninterface NodeDeclaration {\n readonly path: string;\n readonly summary: string;\n readonly description?: string;\n readonly synopsis?: string;\n readonly examples?: string;\n readonly helpGroup?: \"management\" | \"commands\";\n readonly helpOrder?: number;\n readonly flags?: string;\n readonly flagOverrides?: Readonly<Record<string, { [Key in keyof OpFlagDefinition]?: OpFlagDefinition[Key] | null }>>;\n readonly aliases?: readonly string[];\n readonly availability?: OpCatalogCommand[\"availability\"];\n readonly args?: OpCatalogCommand[\"args\"];\n}\n\nexport const opReferenceUrl = \"https://www.1password.dev/cli/reference\";\nexport const opMetadataVersion = \"2.39.0\";\n\nfunction freezeFlag(flag: OpFlagDefinition): OpFlagDefinition {\n return Object.freeze({ ...flag, ...(flag.longAliases ? { longAliases: Object.freeze([...flag.longAliases]) } : {}), ...(flag.allowedValues ? { allowedValues: Object.freeze([...flag.allowedValues]) } : {}) });\n}\n\nconst vaultPermissionValues = Object.freeze([\n \"allow_viewing\", \"allow_editing\", \"allow_managing\", \"view_items\", \"create_items\",\n \"view_and_copy_passwords\", \"edit_items\", \"archive_items\", \"delete_items\",\n \"view_item_history\", \"import_items\", \"export_items\", \"copy_and_share_items\",\n \"print_items\", \"manage_vault\", \"read_items\", \"write_items\", \"share_items\",\n]);\n\nexport const opGlobalFlags: Readonly<Record<string, OpFlagDefinition>> = Object.freeze(Object.fromEntries(\n Object.entries({\n \"account\": {\n \"kind\": \"string\",\n \"env\": \"OP_ACCOUNT\",\n \"description\": \"Select the account to execute the command by account shorthand, sign-in address, account ID, or user ID. For a list of available accounts, run 'op account list'. Can be set as the OP_ACCOUNT environment variable.\",\n \"metavar\": \"account\"\n },\n \"cache\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_CACHE\",\n \"description\": \"Store and use cached information. Caching is enabled by default on UNIX-like systems. Caching is not available on Windows. Options: true, false. Can also be set with the OP_CACHE environment variable.\",\n \"metavar\": \"\",\n \"defaultDisplay\": \"true\"\n },\n \"config\": {\n \"kind\": \"string\",\n \"env\": \"OP_CONFIG_DIR\",\n \"description\": \"Use this configuration directory.\",\n \"metavar\": \"directory\"\n },\n \"debug\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_DEBUG\",\n \"description\": \"Enable debug mode. Can also be enabled by setting the OP_DEBUG environment variable to true.\",\n \"metavar\": \"\"\n },\n \"encoding\": {\n \"kind\": \"string\",\n \"description\": \"Use this character encoding type. Default: UTF-8. Supported: SHIFT_JIS, gbk.\",\n \"metavar\": \"type\"\n },\n \"format\": {\n \"kind\": \"string\",\n \"env\": \"OP_FORMAT\",\n \"description\": \"Use this output format. Can be 'human-readable' or 'json'. Can be set as the OP_FORMAT environment variable.\",\n \"metavar\": \"string\",\n \"defaultDisplay\": \"\\\"human-readable\\\"\"\n },\n \"help\": {\n \"kind\": \"boolean\",\n \"alias\": \"h\",\n \"description\": \"Get help for op.\",\n \"metavar\": \"\"\n },\n \"iso-timestamps\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_ISO_TIMESTAMPS\",\n \"invalidEnv\": \"ignore\",\n \"description\": \"Format timestamps according to ISO 8601 / RFC 3339. Can be set as the OP_ISO_TIMESTAMPS environment variable.\",\n \"metavar\": \"\"\n },\n \"no-color\": {\n \"kind\": \"boolean\",\n \"description\": \"Print output without color.\",\n \"metavar\": \"\"\n },\n \"session\": {\n \"kind\": \"string\",\n \"env\": \"OP_SESSION\",\n \"description\": \"Authenticate with this session token. 1Password CLI outputs session tokens for successful 'op signin' commands when 1Password app integration is not enabled.\",\n \"metavar\": \"token\"\n }\n} satisfies Record<string, OpFlagDefinition>).map(([name, flag]) => [name, freezeFlag(flag)]),\n));\n\nexport const opRootFlags: Readonly<Record<string, OpFlagDefinition>> = Object.freeze(Object.fromEntries(\n Object.entries({\n \"version\": {\n \"kind\": \"boolean\",\n \"alias\": \"v\",\n \"description\": \"version for op\",\n \"metavar\": \"\"\n }\n} satisfies Record<string, OpFlagDefinition>).map(([name, flag]) => [name, freezeFlag(flag)]),\n));\n\nconst definitions: Readonly<Record<string, OpFlagDefinition>> = {\n \"environment\": { \"kind\": \"array\", \"availability\": \"beta\", \"description\": \"Read variables from these Environments before starting the process.\", \"metavar\": \"strings\" },\n \"file-mode\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"file-mode\",\n \"description\": \"Set filemode for the output file. It is ignored without the --out-file flag.\",\n \"metavar\": \"filemode\",\n \"defaultDisplay\": \"0600\"\n },\n \"force\": {\n \"kind\": \"boolean\",\n \"alias\": \"f\",\n \"description\": \"Do not prompt for confirmation.\",\n \"metavar\": \"\"\n },\n \"in-file\": {\n \"kind\": \"string\",\n \"alias\": \"i\",\n \"description\": \"The filename of a template file to inject.\",\n \"metavar\": \"string\"\n },\n \"out-file\": {\n \"kind\": \"string\",\n \"alias\": \"o\",\n \"description\": \"Write the injected template to a file instead of stdout.\",\n \"metavar\": \"string\"\n },\n \"no-newline\": {\n \"kind\": \"boolean\",\n \"alias\": \"n\",\n \"description\": \"Do not print a new line after the secret.\",\n \"metavar\": \"\"\n },\n \"env-file\": {\n \"kind\": \"array\",\n \"description\": \"Enable Dotenv integration with specific Dotenv files to parse. For example: --env-file=.env.\",\n \"metavar\": \"stringArray\"\n },\n \"no-masking\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_RUN_NO_MASKING\",\n \"description\": \"Disable masking of secrets on stdout and stderr.\",\n \"metavar\": \"\"\n },\n \"raw\": {\n \"kind\": \"boolean\",\n \"description\": \"Only return the session token.\",\n \"metavar\": \"\"\n },\n \"all\": {\n \"kind\": \"boolean\",\n \"description\": \"Sign out of all signed-in accounts.\",\n \"metavar\": \"\"\n },\n \"forget\": {\n \"kind\": \"boolean\",\n \"description\": \"Remove the details for a 1Password account from this device.\",\n \"metavar\": \"\"\n },\n \"channel\": {\n \"kind\": \"string\",\n \"description\": \"Look for updates from a specific channel. allowed: stable, beta\",\n \"metavar\": \"string\"\n },\n \"directory\": {\n \"kind\": \"string\",\n \"description\": \"Download the update to this ''path''.\",\n \"metavar\": \"string\"\n },\n \"address\": {\n \"kind\": \"string\",\n \"description\": \"The sign-in address for your account.\",\n \"metavar\": \"string\"\n },\n \"email\": {\n \"kind\": \"string\",\n \"description\": \"The email address associated with your account.\",\n \"metavar\": \"string\"\n },\n \"shorthand\": {\n \"kind\": \"string\",\n \"description\": \"Set a custom account shorthand for your account.\",\n \"metavar\": \"string\"\n },\n \"signin\": {\n \"kind\": \"boolean\",\n \"description\": \"Immediately sign in to the added account.\",\n \"metavar\": \"\"\n },\n \"file-name\": {\n \"kind\": \"string\",\n \"description\": \"Set the file's name.\",\n \"metavar\": \"name\"\n },\n \"tags\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Set the tags to the specified (comma-separated) values.\",\n \"metavar\": \"tags\"\n },\n \"title\": {\n \"kind\": \"string\",\n \"description\": \"Set the document item's title.\",\n \"metavar\": \"title\"\n },\n \"vault\": {\n \"kind\": \"string\",\n \"description\": \"Look for the item in this vault.\",\n \"metavar\": \"string\"\n },\n \"include-archive\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_INCLUDE_ARCHIVE\",\n \"description\": \"Include document items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\",\n \"metavar\": \"\"\n },\n \"archive\": {\n \"kind\": \"boolean\",\n \"description\": \"Move the document to the Archive.\",\n \"metavar\": \"\"\n },\n \"expires-in\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"duration\",\n \"description\": \"Set how the long the events-api token is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\",\n \"metavar\": \"duration\"\n },\n \"features\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Set the comma-separated list of features the integration token can be used for. Options: 'signinattempts', 'itemusages', 'auditevents'.\",\n \"metavar\": \"features\"\n },\n \"description\": {\n \"kind\": \"string\",\n \"description\": \"Set the group's description.\",\n \"metavar\": \"string\"\n },\n \"name\": {\n \"kind\": \"string\",\n \"description\": \"Change the group's name.\",\n \"metavar\": \"name\"\n },\n \"user\": {\n \"kind\": \"string\",\n \"description\": \"List groups that a user belongs to.\",\n \"metavar\": \"user\"\n },\n \"category\": {\n \"kind\": \"string\",\n \"description\": \"Set the item's category.\",\n \"metavar\": \"category\"\n },\n \"dry-run\": {\n \"kind\": \"boolean\",\n \"description\": \"Test the command and output a preview of the resulting item.\",\n \"metavar\": \"\"\n },\n \"favorite\": {\n \"kind\": \"boolean\",\n \"description\": \"Add item to favorites.\",\n \"metavar\": \"\"\n },\n \"generate-password\": {\n \"kind\": \"optional\",\n \"valueSyntax\": \"password-recipe\",\n \"description\": \"Add a randomly-generated password to a Login or Password item.\",\n \"metavar\": \"recipe\"\n },\n \"reveal\": {\n \"kind\": \"boolean\",\n \"description\": \"Don't conceal sensitive fields.\",\n \"metavar\": \"\"\n },\n \"ssh-generate-key\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"ed25519\", \"rsa\", \"rsa2048\", \"rsa3072\", \"rsa4096\", \"rsa-2048\", \"rsa-3072\", \"rsa-4096\"],\n \"normalizeValues\": \"lowercase\",\n \"description\": \"The type of SSH key to create: Ed25519 or RSA. For RSA, specify 2048, 3072, or 4096 (default) bits. Possible values: 'ed25519', 'rsa', 'rsa2048', 'rsa3072', 'rsa4096'.\",\n \"metavar\": \"\",\n \"defaultDisplay\": \"Ed25519\"\n },\n \"template\": {\n \"kind\": \"string\",\n \"description\": \"Specify the file path to read an item template from.\",\n \"metavar\": \"string\"\n },\n \"url\": {\n \"kind\": \"string\",\n \"description\": \"Set the URL associated with the item\",\n \"metavar\": \"URL\"\n },\n \"fields\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"longAliases\": [\n \"field\"\n ],\n \"description\": \"Return data from specific fields. Use 'label=' to get the field by name or 'type=' to filter fields by type. Specify multiple in a comma-separated list.\",\n \"metavar\": \"strings\"\n },\n \"otp\": {\n \"kind\": \"boolean\",\n \"description\": \"Output the primary one-time password for this item.\",\n \"metavar\": \"\"\n },\n \"share-link\": {\n \"kind\": \"boolean\",\n \"description\": \"Get a shareable link for the item.\",\n \"metavar\": \"\"\n },\n \"categories\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Only list items in these categories (comma-separated).\",\n \"metavar\": \"categories\"\n },\n \"long\": {\n \"kind\": \"boolean\",\n \"description\": \"Output a more detailed item list.\",\n \"metavar\": \"\"\n },\n \"current-vault\": {\n \"kind\": \"string\",\n \"description\": \"Vault where the item is currently saved.\",\n \"metavar\": \"string\"\n },\n \"destination-vault\": {\n \"kind\": \"string\",\n \"description\": \"The vault you want to move the item to.\",\n \"metavar\": \"string\"\n },\n \"emails\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Email addresses to share with.\",\n \"metavar\": \"strings\"\n },\n \"view-once\": {\n \"kind\": \"boolean\",\n \"description\": \"Expire link after a single view.\",\n \"metavar\": \"\"\n },\n \"can-create-vaults\": {\n \"kind\": \"boolean\",\n \"description\": \"Allow the service account to create new vaults.\",\n \"metavar\": \"\"\n },\n \"language\": {\n \"kind\": \"string\",\n \"description\": \"Provide the user's account language.\",\n \"metavar\": \"string\",\n \"defaultDisplay\": \"\\\"en\\\"\"\n },\n \"fingerprint\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the user's public key fingerprint.\",\n \"metavar\": \"\"\n },\n \"me\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the authenticated user's details.\",\n \"metavar\": \"\"\n },\n \"public-key\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the user's public key.\",\n \"metavar\": \"\"\n },\n \"travel-mode\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"on\", \"off\"],\n \"description\": \"Turn Travel Mode on or off for the user.\",\n \"metavar\": \"on|off\",\n \"defaultDisplay\": \"off\"\n },\n \"deauthorize-devices-after\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"go-duration\",\n \"description\": \"Deauthorize the user's devices after a time (rounded down to seconds).\",\n \"metavar\": \"duration\"\n },\n \"group\": {\n \"kind\": \"string\",\n \"description\": \"The group to receive access.\",\n \"metavar\": \"group\"\n },\n \"allow-admins-to-manage\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"true\", \"false\", \"TRUE\", \"FALSE\", \"True\", \"False\", \"t\", \"f\", \"T\", \"F\", \"1\", \"0\"],\n \"description\": \"Set whether administrators can manage the vault. If not provided, the default policy for the account applies.\",\n \"metavar\": \"true|false\"\n },\n \"icon\": {\n \"kind\": \"string\",\n \"description\": \"Set the vault icon.\",\n \"metavar\": \"string\"\n },\n \"permission\": {\n \"kind\": \"csv\",\n \"allowedValues\": vaultPermissionValues,\n \"normalizeValues\": \"trim-lowercase\",\n \"description\": \"List only vaults that the specified user/group has this permission for.\",\n \"metavar\": \"permissions\"\n },\n \"all-servers\": {\n \"kind\": \"boolean\",\n \"description\": \"Grant access to all current and future servers in the authenticated account.\",\n \"metavar\": \"\"\n },\n \"server\": {\n \"kind\": \"string\",\n \"description\": \"Only look for tokens for this 1Password Connect server.\",\n \"metavar\": \"string\"\n },\n \"vaults\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Grant the Connect server access to these vaults.\",\n \"metavar\": \"strings\"\n },\n \"role\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"manager\", \"member\"],\n \"normalizeValues\": \"lowercase\",\n \"description\": \"Specify the user's role as a member or manager. Default: member.\",\n \"metavar\": \"string\"\n },\n \"no-input\": {\n \"kind\": \"boolean\",\n \"description\": \"Do not prompt for input on interactive terminal.\",\n \"metavar\": \"input\"\n },\n \"permissions\": {\n \"kind\": \"csv\",\n \"allowedValues\": vaultPermissionValues,\n \"normalizeValues\": \"trim-lowercase\",\n \"description\": \"The permissions to grant to the group.\",\n \"metavar\": \"permissions\"\n },\n \"vars\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Capture only these comma-separated variable names, including names that are unset.\",\n \"metavar\": \"strings\"\n },\n \"shell\": {\n \"kind\": \"string\",\n \"description\": \"Print restoration commands for bash, zsh, sh, fish, or powershell.\",\n \"metavar\": \"string\"\n }\n};\n\nconst declarations: readonly NodeDeclaration[] = [\n {\"path\":\"\",\"summary\":\"Portable op-compatible command interface\",\"description\":\"This portable implementation exposes an op-compatible command interface with a configurable backend and host approval policies.\\n\\nStable command metadata targets 1Password CLI 2.39.0. Beta commands and local extensions are identified separately.\"},\n {\"path\":\"account\",\"summary\":\"Manage your locally configured 1Password accounts\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"connect\",\"summary\":\"Manage Connect server instances and tokens in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"document\",\"summary\":\"Perform CRUD operations on Document items in your vaults\",\"helpGroup\":\"management\",\"helpOrder\":2},\n {\"path\":\"events-api\",\"summary\":\"Manage Events API integrations in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":3},\n {\"path\":\"group\",\"summary\":\"Manage the groups in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":4},\n {\"path\":\"item\",\"summary\":\"Perform CRUD operations on the 1Password items in your vaults\",\"helpGroup\":\"management\",\"helpOrder\":5},\n {\"path\":\"plugin\",\"summary\":\"Manage the shell plugins you use to authenticate third-party CLIs\",\"helpGroup\":\"management\",\"helpOrder\":6},\n {\"path\":\"service-account\",\"summary\":\"Manage service accounts\",\"helpGroup\":\"management\",\"helpOrder\":7},\n {\"path\":\"user\",\"summary\":\"Manage users within this 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":8},\n {\"path\":\"vault\",\"summary\":\"Manage permissions and perform CRUD operations on your 1Password vaults\",\"helpGroup\":\"management\",\"helpOrder\":9},\n {\"path\":\"completion\",\"summary\":\"Generate shell completion information\",\"synopsis\":\"<shell> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"description\":\"Print a shell adapter for Bash, Zsh, fish, or PowerShell. Source the generated text in the selected shell to activate command and flag completion.\\n\\nCompletion callbacks return catalog metadata without loading a backend. Backend-backed argument suggestions are not provided.\",\"examples\":\"Load Bash completions:\\n\\n\\tsource <(op completion bash)\\n\\nLoad fish completions:\\n\\n\\top completion fish | source\"},\n {\"path\":\"inject\",\"summary\":\"Inject secrets into a config file\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"file-mode force in-file out-file\",\"description\":\"Substitute secret references inside a template. Templates come from stdin or --in-file; output goes to stdout or --out-file.\\n\\nThe result can contain plaintext secrets. Host authorization may deny the operation before resolution begins.\",\"examples\":\"Render a template into a separate file:\\n\\n\\top inject --in-file ./example.conf.tpl --out-file ./example.conf\"},\n {\"path\":\"read\",\"summary\":\"Read a secret reference\",\"synopsis\":\"<reference> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"file-mode force no-newline out-file\",\"flagOverrides\":{\"out-file\":{\"description\":\"Write the secret to a file instead of stdout.\"}},\"description\":\"Resolve an op:// secret reference and write its value. References may address fields or attachments and can include supported attribute queries.\\n\\nOutput is plaintext or raw attachment bytes, not a secrecy boundary. --out-file redirects the result to a file, and --no-newline suppresses a trailing newline for text.\",\"examples\":\"Resolve a password field:\\n\\n\\top read op://example-vault/example-item/password\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"run\",\"summary\":\"Pass secrets as environment variables to a process\",\"synopsis\":\"-- <command> <command>... [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"env-file environment no-masking\",\"description\":\"Start a child command with resolved secret values in its environment. Put -- before the child command so its options are not parsed as op flags.\\n\\nDotenv input remains UTF-8. Output masking is enabled unless --no-masking is requested; masking is not a substitute for keeping child output confidential.\",\"examples\":\"Pass resolved environment values to a child:\\n\\n\\top run --env-file ./example.env -- ./example-worker\",\"args\":{\"min\":1}},\n {\"path\":\"signin\",\"summary\":\"Sign in to a 1Password account\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"force raw\",\"flagOverrides\":{\"force\":{\"description\":\"Ignore warnings and print raw output from this command.\"}},\"description\":\"Request authentication from the configured backend. Manual mode returns a session token for subsequent operations; app integration delegates authentication to a configured host hook. Backend capabilities determine which authentication methods are available.\"},\n {\"path\":\"signout\",\"summary\":\"Sign out of a 1Password account\",\"helpGroup\":\"commands\",\"helpOrder\":5,\"flags\":\"all forget\"},\n {\"path\":\"update\",\"summary\":\"Check for and download updates.\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"flags\":\"channel directory\"},\n {\"path\":\"whoami\",\"summary\":\"Get information about a signed-in account\",\"helpGroup\":\"commands\",\"helpOrder\":7,\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"account add\",\"summary\":\"Add an account to sign in to for the first time\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"address email raw shorthand signin\"},\n {\"path\":\"account get\",\"summary\":\"Get details about your account\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"account list\",\"summary\":\"List users and accounts set up on this device\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"account forget\",\"summary\":\"Remove a 1Password account from this device\",\"synopsis\":\"[ <account> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"all\",\"flagOverrides\":{\"all\":{\"description\":\"Forget all authenticated accounts.\"}}},\n {\"path\":\"connect group\",\"summary\":\"Manage group access to Secrets Automation\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"connect server\",\"summary\":\"Manage Connect servers\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"connect token\",\"summary\":\"Manage Connect server tokens\",\"helpGroup\":\"management\",\"helpOrder\":2},\n {\"path\":\"connect vault\",\"summary\":\"Manage Connect server vault access\",\"helpGroup\":\"management\",\"helpOrder\":3},\n {\"path\":\"document create\",\"summary\":\"Create a document item\",\"synopsis\":\"[{ <file> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"file-name tags title vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Save the document in this vault. Default: Private, Personal, or Employee, depending on your account type.\",\"metavar\":\"vault\"}},\"description\":\"Upload file bytes or read them from stdin when no file is given or the file argument is -. The file name and title can be supplied explicitly. Choose the destination with --vault.\\n\\nDocument uploads preserve their binary content.\"},\n {\"path\":\"document get\",\"summary\":\"Download a document\",\"synopsis\":\"{ <itemName> | <itemID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"file-mode force include-archive out-file vault\",\"flagOverrides\":{\"force\":{\"alias\":null,\"description\":\"Forcibly print an unintelligible document to an interactive terminal. If --out-file is specified, save the document to a file without prompting for confirmation.\"},\"out-file\":{\"description\":\"Save the document to the file path instead of stdout.\",\"metavar\":\"path\"},\"vault\":{\"description\":\"Look for the document in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Download the document as bytes. With no output path, bytes go to stdout; --out-file writes a file instead. --file-mode controls the output file mode.\\n\\n--force permits binary output to an interactive terminal and skips overwrite confirmation for a destination file. Document bytes are not text-transcoded.\",\"examples\":\"Save a document without interpreting its contents as text:\\n\\n\\top document get 'Example document' --out-file ./example-document.bin\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"document edit\",\"summary\":\"Edit a document item\",\"synopsis\":\"{ <itemName> | <itemID> } [{ <file> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"file-name tags title vault\",\"flagOverrides\":{\"tags\":{\"description\":\"Set the tags to the specified (comma-separated) values. An empty value removes all tags.\"},\"vault\":{\"description\":\"Look up document in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Replace the selected document's content using file bytes or stdin. File name, title, tags, and vault selectors remain separate from the binary payload.\"},\n {\"path\":\"document delete\",\"summary\":\"Delete or archive a document item\",\"synopsis\":\"[{ <itemName> | <itemID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"archive vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Delete the document in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"document list\",\"summary\":\"Get a list of documents\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"include-archive vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Only list documents in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"events-api create\",\"summary\":\"Set up an integration with the Events API\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"expires-in features\"},\n {\"path\":\"group user\",\"summary\":\"Manage group membership\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"group create\",\"summary\":\"Create a group\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"description\"},\n {\"path\":\"group get\",\"summary\":\"Get details about a group\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"group edit\",\"summary\":\"Edit a group's name or description\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"description name\",\"flagOverrides\":{\"description\":{\"description\":\"Change the group's description.\",\"metavar\":\"description\"}}},\n {\"path\":\"group delete\",\"summary\":\"Remove a group\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"group list\",\"summary\":\"List groups\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"user vault\",\"flagOverrides\":{\"vault\":{\"description\":\"List groups that have direct access to a vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"item template\",\"summary\":\"Manage templates\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"item create\",\"summary\":\"Create an item\",\"synopsis\":\"[ - ] [ <assignment>... ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"category dry-run favorite generate-password reveal ssh-generate-key tags template title url vault\",\"flagOverrides\":{\"title\":{\"description\":\"Set the item's title.\"},\"vault\":{\"description\":\"Save the item in this vault. Default: Private, Personal, or Employee, depending on your account type.\",\"metavar\":\"vault\"}},\"description\":\"Create an item from assignments, a JSON template file, or JSON received on stdin. A leading - selects stdin; it cannot be combined with --template. Assignments override matching template fields.\\n\\nAssignment syntax is [section.]field[type]=value. Escape punctuation in field and section names with a backslash. For confidential values, prefer a template or stdin over command-line assignments, which may remain in shell history.\\n\\nPassword generation accepts a recipe of length and character classes. SSH key generation accepts an explicit key type.\",\"examples\":\"Prepare a JSON template and create an item from it:\\n\\n\\top item template get Login --out-file ./example-login.json\\n\\top item create --template ./example-login.json --vault 'Example vault'\"},\n {\"path\":\"item get\",\"summary\":\"Get an item's details\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"fields include-archive otp reveal share-link vault\",\"flagOverrides\":{\"include-archive\":{\"description\":\"Include items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\"}},\"description\":\"Choose an item using its name, ID, or sharing link. The --vault selector narrows the lookup; service-account requests need a vault selection.\\n\\nFor batch input, pass - and provide selectors on stdin. JSON objects with id properties can also identify the requested items.\\n\\nUse --fields to select labels or types, --otp for the primary one-time password, and --format=json for structured output. Human output conceals sensitive fields unless --reveal is supplied. Use op read for the value behind a secret reference.\",\"examples\":\"Select fields by their labels:\\n\\n\\top item get 'Example item' --fields label=username,label=password --format=json\\n\\nSelect concealed fields:\\n\\n\\top item get 'Example item' --fields type=concealed\\n\\nRead a batch of item IDs:\\n\\n\\top item list --vault 'Example vault' --format=json | op item get -\",\"args\":{\"min\":0,\"max\":1,\"stdinAlternative\":true}},\n {\"path\":\"item edit\",\"summary\":\"Edit an item's details\",\"synopsis\":\"{ <itemName> | <itemID> | <shareLink> } [ <assignment> ... ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"dry-run favorite generate-password reveal tags template title url vault\",\"flagOverrides\":{\"dry-run\":{\"description\":\"Perform a dry run of the command and output a preview of the resulting item.\"},\"favorite\":{\"description\":\"Whether this item is a favorite item. Options: true, false\"},\"generate-password\":{\"description\":\"Give the item a randomly generated password.\"},\"tags\":{\"description\":\"Set the tags to the specified (comma-separated) values. An empty value will remove all tags.\"},\"template\":{\"description\":\"Specify the filepath to read an item template from.\"},\"title\":{\"description\":\"Set the item's title.\"},\"vault\":{\"description\":\"Edit the item in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Select the item first, then provide assignments or a JSON template containing the changes. Existing fields remain unless the update replaces or removes them. Use --dry-run to inspect the resulting item before writing it.\\n\\nAvoid placing confidential values directly in command arguments.\"},\n {\"path\":\"item delete\",\"summary\":\"Delete or archive an item\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"archive vault\",\"flagOverrides\":{\"archive\":{\"description\":\"Move the item to the Archive.\"}},\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"item list\",\"summary\":\"List items\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"categories favorite include-archive long tags vault\",\"flagOverrides\":{\"favorite\":{\"description\":\"Only list favorite items\"},\"include-archive\":{\"description\":\"Include items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\"},\"tags\":{\"description\":\"Only list items with these tags (comma-separated).\"},\"vault\":{\"description\":\"Only list items in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"item move\",\"summary\":\"Move an item between vaults\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":5,\"flags\":\"current-vault destination-vault reveal\",\"aliases\":[\"mv\"],\"flagOverrides\":{\"destination-vault\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"item share\",\"summary\":\"Share an item\",\"synopsis\":\"{ <itemName> | <itemID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"flags\":\"emails expires-in vault view-once\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Expire link after the duration specified in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\",\"longAliases\":[\"expiry\"],\"defaultDisplay\":\"7d\"}}},\n {\"path\":\"plugin credential\",\"summary\":\"Manage credentials for shell plugins\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"plugin list\",\"summary\":\"List all available shell plugins\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"aliases\":[\"ls\"]},\n {\"path\":\"plugin clear\",\"summary\":\"Clear shell plugin configuration\",\"synopsis\":\"<plugin-name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all force\",\"flagOverrides\":{\"all\":{\"description\":\"Clear all configurations for this plugin that apply to this directory and/or terminal session, including the global default.\"},\"force\":{\"description\":\"Apply immediately without asking for confirmation.\"}},\"aliases\":[\"reset\"],\"description\":\"Remove applicable plugin defaults. A single clear removes the active scope; --all includes the other applicable directory, terminal, and global defaults. Confirmation and host authorization are separate decisions: --force does not override authorization.\"},\n {\"path\":\"plugin init\",\"summary\":\"Configure a shell plugin\",\"synopsis\":\"[ <plugin-executable> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2},\n {\"path\":\"plugin inspect\",\"summary\":\"Inspect your existing shell plugin configurations\",\"synopsis\":\"[ <plugin-name> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"info\"]},\n {\"path\":\"plugin run\",\"summary\":\"Provision credentials from 1Password and run this command\",\"synopsis\":\"<command>... [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":4},\n {\"path\":\"service-account create\",\"summary\":\"Create a service account\",\"synopsis\":\"<serviceAccountName> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"can-create-vaults expires-in raw vault\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Set how long the service account is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, or (w)eeks.\"},\"raw\":{\"description\":\"Only return the service account token.\"},\"vault\":{\"kind\":\"array\",\"description\":\"Give access to this vault with a set of permissions. Has syntax <vault-name>:<permission>[,<permission>]\",\"metavar\":\"stringArray\"}}},\n {\"path\":\"service-account ratelimit\",\"summary\":\"Retrieve rate limit usage for a service account\",\"synopsis\":\"[{ <serviceAccountName> | <serviceAccountID> }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"aliases\":[\"ratelimits\"]},\n {\"path\":\"user recovery\",\"summary\":\"Manage user recovery in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"user provision\",\"summary\":\"Provision a user in the authenticated account\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"email language name\",\"flagOverrides\":{\"email\":{\"description\":\"Provide the user's email address.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"name\":{\"description\":\"Provide the user's name.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"user confirm\",\"summary\":\"Confirm a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all\",\"flagOverrides\":{\"all\":{\"description\":\"Confirm all unconfirmed users.\"}}},\n {\"path\":\"user get\",\"summary\":\"Get details about a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | --me | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"fingerprint me public-key\"},\n {\"path\":\"user edit\",\"summary\":\"Edit a user's name or Travel Mode status\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"name travel-mode\",\"flagOverrides\":{\"name\":{\"description\":\"Set the user's name.\",\"metavar\":\"string\"}}},\n {\"path\":\"user suspend\",\"summary\":\"Suspend a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"deauthorize-devices-after\"},\n {\"path\":\"user reactivate\",\"summary\":\"Reactivate a suspended user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":5},\n {\"path\":\"user delete\",\"summary\":\"Remove a user and all their data from the account\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"user list\",\"summary\":\"List users\",\"helpGroup\":\"commands\",\"helpOrder\":7,\"flags\":\"group vault\",\"flagOverrides\":{\"group\":{\"description\":\"List users who belong to a group.\"},\"vault\":{\"description\":\"List users who have direct access to vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"vault group\",\"summary\":\"Manage group vault access\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"vault user\",\"summary\":\"Manage user vault access\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"vault create\",\"summary\":\"Create a new vault\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"allow-admins-to-manage description icon\",\"flagOverrides\":{\"description\":{\"metavar\":\"description\"}}},\n {\"path\":\"vault get\",\"summary\":\"Get details about a vault\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"vault edit\",\"summary\":\"Edit a vault's name, description, icon, or Travel Mode status\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"description icon name travel-mode\",\"flagOverrides\":{\"description\":{\"description\":\"Change the vault's description.\",\"metavar\":\"description\"},\"icon\":{\"description\":\"Change the vault's icon.\",\"metavar\":\"icon\"},\"name\":{\"description\":\"Change the vault's name.\"},\"travel-mode\":{\"description\":\"Turn Travel Mode on or off for the vault.\"}}},\n {\"path\":\"vault delete\",\"summary\":\"Remove a vault\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"vault list\",\"summary\":\"List all vaults in the account\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"group permission user\",\"flagOverrides\":{\"group\":{\"description\":\"List vaults a group has access to.\",\"metavar\":\"string\"},\"user\":{\"description\":\"List vaults that a given user has access to.\",\"metavar\":\"string\"}},\"aliases\":[\"ls\"],\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"connect group grant\",\"summary\":\"Grant a group access to manage Secrets Automation\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"all-servers group server\",\"flagOverrides\":{\"server\":{\"description\":\"The server to grant access to.\",\"metavar\":\"server\"},\"group\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"connect group revoke\",\"summary\":\"Revoke a group's access to manage Secrets Automation\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all-servers group server\",\"flagOverrides\":{\"all-servers\":{\"description\":\"Revoke access to all current and future servers in the authenticated account.\"},\"group\":{\"description\":\"The group to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"server\":{\"description\":\"The server to revoke access to.\",\"metavar\":\"server\"}}},\n {\"path\":\"connect server create\",\"summary\":\"Set up a Connect server\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"force vaults\",\"flagOverrides\":{\"force\":{\"description\":\"Do not prompt for confirmation when overwriting credential files.\"}}},\n {\"path\":\"connect server get\",\"summary\":\"Get a Connect server\",\"synopsis\":\"[{ <serverName> | <serverID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"connect server edit\",\"summary\":\"Rename a Connect server\",\"synopsis\":\"{ <serverName> | <serverID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"name\",\"flagOverrides\":{\"name\":{\"description\":\"Change the server's name.\"}}},\n {\"path\":\"connect server delete\",\"summary\":\"Remove a Connect server\",\"synopsis\":\"[{ <serverName> | <serverID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"connect server list\",\"summary\":\"List Connect servers\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"aliases\":[\"ls\"]},\n {\"path\":\"connect token create\",\"summary\":\"Issue a token for a 1Password Connect server\",\"synopsis\":\"<tokenName> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"expires-in server vault\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Set how long the Connect token is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\"},\"server\":{\"description\":\"Issue a token for this server.\",\"completionRequired\":true},\"vault\":{\"kind\":\"array\",\"description\":\"Issue a token on these vaults.\",\"metavar\":\"stringArray\"}}},\n {\"path\":\"connect token edit\",\"summary\":\"Rename a Connect server token\",\"synopsis\":\"<token> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"name server\",\"flagOverrides\":{\"name\":{\"description\":\"Change the token's name.\",\"metavar\":\"string\"}}},\n {\"path\":\"connect token delete\",\"summary\":\"Revoke a token for a Connect server\",\"synopsis\":\"[ <token> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"server\",\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"connect token list\",\"summary\":\"Get a list of tokens\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"server\",\"flagOverrides\":{\"server\":{\"description\":\"Only list tokens for this Connect server.\",\"metavar\":\"server\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"connect vault grant\",\"summary\":\"Grant a Connect server access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"server vault\",\"flagOverrides\":{\"server\":{\"description\":\"The server to be granted access.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to grant access to.\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"connect vault revoke\",\"summary\":\"Revoke a Connect server's access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"server vault\",\"flagOverrides\":{\"server\":{\"description\":\"The server to revoke access from.\",\"metavar\":\"server\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to revoke a server's access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user grant\",\"summary\":\"Add a user to a group\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"group role user\",\"flagOverrides\":{\"group\":{\"description\":\"Specify the group to add the user to.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"Specify the user to add to the group.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user revoke\",\"summary\":\"Remove a user from a group\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"group user\",\"flagOverrides\":{\"group\":{\"description\":\"Specify the group to remove the user from.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"Specify the user to remove from the group.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user list\",\"summary\":\"Retrieve users that belong to a group\",\"synopsis\":\"<group> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"item template get\",\"summary\":\"Get an item template\",\"synopsis\":\"[{ <category> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"file-mode force out-file\",\"flagOverrides\":{\"out-file\":{\"description\":\"Write the template to a file instead of stdout.\"}}},\n {\"path\":\"item template list\",\"summary\":\"Get a list of templates\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"aliases\":[\"ls\"],\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"plugin credential import\",\"summary\":\"Import credentials for a shell plugin\",\"synopsis\":\"<plugin-name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0},\n {\"path\":\"user recovery begin\",\"summary\":\"Begin recovery for users in your 1Password account\",\"synopsis\":\"[ { <email> | <name> | <userID> } ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0},\n {\"path\":\"vault group grant\",\"summary\":\"Grant a group permissions to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"group no-input permissions vault\",\"flagOverrides\":{\"vault\":{\"description\":\"The vault to grant group permissions to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"group\":{\"completionRequired\":true,\"completionRejectEmpty\":true},\"permissions\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault group revoke\",\"summary\":\"Revoke a portion or the entire access of a group to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"group no-input permissions vault\",\"flagOverrides\":{\"group\":{\"description\":\"The group to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"permissions\":{\"description\":\"The permissions to revoke from the group.\"},\"vault\":{\"description\":\"The vault to revoke access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault group list\",\"summary\":\"List all the groups that have access to the given vault\",\"synopsis\":\"[{ <vault> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"vault user grant\",\"summary\":\"Grant a user access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"no-input permissions user vault\",\"flagOverrides\":{\"permissions\":{\"description\":\"The permissions to grant to the user.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"The user to receive access.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to grant access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault user revoke\",\"summary\":\"Revoke a portion or the entire access of a user to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"no-input permissions user vault\",\"flagOverrides\":{\"permissions\":{\"description\":\"The permissions to revoke from the user.\"},\"user\":{\"description\":\"The user to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to revoke access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault user list\",\"summary\":\"List all users with access to the vault and their permissions\",\"synopsis\":\"<vault> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"environment read\",\"summary\":\"Read an Environment\",\"synopsis\":\"<environment> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"beta\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot create\",\"summary\":\"Capture an environment snapshot\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"flags\":\"vars\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot get\",\"summary\":\"Get an environment snapshot\",\"synopsis\":\"<snapshot> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot list\",\"summary\":\"List environment snapshots\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"environment snapshot delete\",\"summary\":\"Delete an environment snapshot\",\"synopsis\":\"<snapshot> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot restore\",\"summary\":\"Restore an environment snapshot\",\"synopsis\":\"<snapshot> [-- command args...] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"flags\":\"shell no-masking\",\"flagOverrides\":{\"no-masking\":{\"env\":null,\"description\":\"Do not conceal captured values in child process output.\"}},\"description\":\"Restore the snapshot through a host callback, start a child with the restored environment, or print shell commands with --shell.\\n\\nSelected snapshots affect only captured names; null entries explicitly remove those names. Complete snapshots also remove known current extras. Shell evaluation is not atomic, and readonly variables may prevent changes.\",\"examples\":\"Print commands for restoring captured variables:\\n\\n\\top environment snapshot restore example --shell=bash\",\"args\":{\"min\":1}},\n {\"path\":\"environment\",\"summary\":\"Manage Environments and local snapshots\",\"synopsis\":\"[command] [flags]\",\"helpGroup\":\"management\",\"helpOrder\":99,\"availability\":\"extension\"},\n {\"path\":\"environment snapshot\",\"summary\":\"Manage local environment snapshots\",\"synopsis\":\"[command] [flags]\",\"helpGroup\":\"management\",\"helpOrder\":99,\"availability\":\"extension\"},\n];\n\nexport const opCatalogNodes: readonly OpCatalogCommand[] = Object.freeze(declarations.map(declaration => {\n const { flags: names = \"\", flagOverrides = {}, path: name, ...metadata } = declaration;\n const path = name ? name.split(\" \") : [];\n const group = declarations.some(child => name ? child.path.startsWith(name + \" \") : child.path !== \"\");\n const flags = Object.fromEntries(names.split(\" \").filter(Boolean).map(flag => {\n const merged = { ...(definitions[flag] ?? opGlobalFlags[flag]), ...flagOverrides[flag] };\n return [flag, freezeFlag(Object.fromEntries(Object.entries(merged).filter(([, value]) => value !== null)) as unknown as OpFlagDefinition)];\n }));\n return Object.freeze({\n ...metadata,\n path: Object.freeze(path),\n flags: Object.freeze(flags),\n aliases: Object.freeze([...(metadata.aliases ?? [])]),\n availability: metadata.availability ?? \"stable\",\n description: metadata.description ?? metadata.summary,\n synopsis: metadata.synopsis ?? (group ? \"[command] [flags]\" : \"[flags]\"),\n helpGroup: metadata.helpGroup ?? \"commands\",\n helpOrder: metadata.helpOrder ?? 0,\n ...(metadata.args ? { args: Object.freeze({ ...metadata.args }) } : {}),\n });\n}));\n\nexport const opCommandCatalog: readonly OpCatalogCommand[] = Object.freeze(opCatalogNodes.filter(node =>\n node.path.length > 0 && !opCatalogNodes.some(child =>\n child.path.length > node.path.length && node.path.every((part, index) => child.path[index] === part),\n ),\n));\n\nexport function getOpCommandFlags(path: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): Readonly<Record<string, OpFlagDefinition>> {\n const node = opCatalogNodes.find(entry => entry.path.join(\" \") === path.join(\" \"));\n return Object.freeze(Object.fromEntries(Object.entries({\n ...opGlobalFlags,\n ...(path.length === 0 ? opRootFlags : {}),\n ...node?.flags,\n ...(path.length ? { help: freezeFlag({ ...opGlobalFlags.help!, description: `help for ${path.at(-1)}` }) } : {}),\n }).filter(([, flag]) => channel === \"beta\" || flag.availability !== \"beta\")));\n}\n", "const magnitudeLimit = 1n << 63n;\nconst nanoseconds: Readonly<Record<string, bigint>> = Object.freeze({\n ns: 1n, us: 1000n, \"\u00B5s\": 1000n, \"\u03BCs\": 1000n, ms: 1000000n,\n s: 1000000000n, m: 60000000000n, h: 3600000000000n,\n});\n\nfunction isDigit(character: string | undefined): boolean {\n return character !== undefined && character >= \"0\" && character <= \"9\";\n}\n\nfunction roundedHundredths(value: number): bigint {\n if (value === 0) return 0n;\n const buffer = new DataView(new ArrayBuffer(8));\n buffer.setFloat64(0, value);\n const bits = buffer.getBigUint64(0);\n const exponent = Number(bits >> 52n);\n const significand = (bits & ((1n << 52n) - 1n)) + (exponent === 0 ? 0n : 1n << 52n);\n const shift = (exponent === 0 ? 1 : exponent) - 1023 - 52;\n const numerator = significand * 100n;\n if (shift >= 0) return numerator << BigInt(shift);\n const denominator = 1n << BigInt(-shift);\n const quotient = numerator / denominator;\n const remainder = numerator % denominator;\n return quotient + (remainder * 2n > denominator || remainder * 2n === denominator && quotient % 2n !== 0n ? 1n : 0n);\n}\n\nexport function isOpDuration(value: string, extendedUnits = true): boolean {\n const negative = value[0] === \"-\";\n let cursor = value[0] === \"+\" || negative ? 1 : 0;\n if (value.slice(cursor) === \"0\") return true;\n if (cursor === value.length) return false;\n let total = 0n;\n while (cursor < value.length) {\n const start = cursor;\n while (isDigit(value[cursor])) cursor++;\n const integerEnd = cursor;\n if (value[cursor] === \".\") cursor++;\n const fractionStart = cursor;\n while (isDigit(value[cursor])) cursor++;\n const numberEnd = cursor;\n if (integerEnd === start && fractionStart === numberEnd) return false;\n while (cursor < value.length && !isDigit(value[cursor]) && value[cursor] !== \".\") cursor++;\n const unitName = value.slice(numberEnd, cursor);\n let component: bigint;\n if (extendedUnits && (unitName === \"d\" || unitName === \"w\")) {\n const hours = Number(value.slice(start, numberEnd)) * (unitName === \"d\" ? 24 : 168);\n if (!Number.isFinite(hours) || hours > Number(magnitudeLimit) / Number(nanoseconds.h!) + 1) return false;\n component = roundedHundredths(hours) * 36000000000n;\n } else {\n if (!Object.hasOwn(nanoseconds, unitName)) return false;\n const unit = nanoseconds[unitName]!;\n let integer = 0n;\n for (let index = start; index < integerEnd; index++) {\n integer = integer * 10n + BigInt(value[index]!);\n if (integer > magnitudeLimit) return false;\n }\n component = integer * unit;\n if (component > magnitudeLimit) return false;\n let fraction = 0n;\n let scale = 1;\n for (let index = fractionStart; index < numberEnd; index++) {\n const next = fraction * 10n + BigInt(value[index]!);\n if (fraction > (magnitudeLimit - 1n) / 10n || next > magnitudeLimit) break;\n fraction = next;\n scale *= 10;\n }\n component += BigInt(Math.trunc(Number(fraction) * (Number(unit) / scale)));\n }\n if (component > magnitudeLimit) return false;\n total = BigInt.asUintN(64, total + component);\n if (total > magnitudeLimit) return false;\n }\n return total <= magnitudeLimit - (negative ? 0n : 1n);\n}\n", "export function parseOpFileMode(value: unknown): number {\n if (value === undefined) return 0o600;\n if (typeof value !== \"string\" || value.length < 3) throw new Error(\"file-mode requires at least three octal digits\");\n let mode = 0;\n for (const character of value) {\n if (character < \"0\" || character > \"7\") throw new Error(\"file-mode must be an octal permission mode\");\n mode = mode * 8 + Number(character);\n if (mode > 0xffffffff) throw new Error(\"file-mode exceeds uint32 range\");\n }\n return mode;\n}\n", "export function parseOpCsv(value: string): string[] {\n if (value === \"\") return [];\n let input = \"\";\n for (let index = 0; index < value.length; index++) {\n if (value[index] === \"\\r\" && (value[index + 1] === \"\\n\" || index === value.length - 1)) continue;\n input += value[index];\n }\n let cursor = 0;\n while (input[cursor] === \"\\n\") cursor++;\n if (cursor === input.length) throw new Error(\"CSV flag requires a record\");\n const fields: string[] = [];\n let field = \"\";\n let quoted = false;\n let closed = false;\n for (; cursor < input.length; cursor++) {\n const character = input[cursor]!;\n if (quoted) {\n if (character !== '\"') field += character;\n else if (input[cursor + 1] === '\"') { field += '\"'; cursor++; }\n else { quoted = false; closed = true; }\n } else if (character === \"\\n\") return [...fields, field];\n else if (character === \",\") { fields.push(field); field = \"\"; closed = false; }\n else if (closed || character === '\"' && field.length !== 0) throw new Error(\"Invalid CSV quoting\");\n else if (character === '\"') quoted = true;\n else field += character;\n }\n if (quoted) throw new Error(\"Unterminated quoted CSV field\");\n return [...fields, field];\n}\n", "import type { OpFlagDefinition } from \"./catalog.js\";\nimport { isOpDuration } from \"./duration.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { parseOpCsv } from \"./csv-values.js\";\n\nfunction isPasswordRecipe(value: string): boolean {\n let lengthSeen = false;\n for (const part of value.split(\",\")) {\n if ([\"letters\", \"digits\", \"symbols\"].includes(part.toLowerCase())) continue;\n const digits = part.startsWith(\"+\") ? part.slice(1) : part;\n if (!digits || !Array.from(digits).every(character => character >= \"0\" && character <= \"9\")) return false;\n const length = Number(digits);\n if (lengthSeen || length < 1 || length > 64) return false;\n lengthSeen = true;\n }\n return true;\n}\n\nexport function validateOpFlagValue(name: string, definition: OpFlagDefinition, value: string): void {\n if (definition.valueSyntax === \"password-recipe\" && !isPasswordRecipe(value)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"csv\") parseOpCsv(value);\n if (definition.valueSyntax === \"duration\" && !isOpDuration(value)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"go-duration\" && !isOpDuration(value, false)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"file-mode\") {\n try { parseOpFileMode(value); } catch { throw new Error(`invalid value for --${name}`); }\n }\n if (!definition.allowedValues) return;\n const values = definition.kind === \"csv\" ? value.split(\",\") : [value];\n for (const entry of values) {\n const normalized = definition.normalizeValues === \"trim-lowercase\" ? entry.trim().toLowerCase() : definition.normalizeValues === \"lowercase\" ? entry.toLowerCase() : entry;\n if (!definition.allowedValues.includes(normalized)) throw new Error(`invalid value for --${name}`);\n }\n}\n", "import { getOpCommandFlags, opCatalogNodes, opCommandCatalog, opGlobalFlags, type OpCatalogCommand, type OpFlagDefinition } from \"./catalog.js\";\nimport { validateOpFlagValue } from \"./flag-values.js\";\n\nexport interface OpCompletionResult {\n readonly candidates: readonly { readonly value: string; readonly description: string }[];\n readonly directive: 0 | 4;\n}\n\nexport function resolveOpCompletion(words: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): OpCompletionResult {\n const catalog = opCommandCatalog.filter(command => channel === \"beta\" || command.availability !== \"beta\");\n const previous = words.slice(0, -1);\n const current = words.at(-1) ?? \"\";\n const path: string[] = [];\n const used = new Set<string>();\n let command: OpCatalogCommand | undefined;\n let pending: string | undefined;\n let stopped = false;\n let invalid = false;\n let help = false;\n const available = () => getOpCommandFlags(path, channel);\n const consume = (name: string, definition: OpFlagDefinition, value: string | undefined, spelling: string) => {\n used.add(definition.longAliases?.includes(spelling) ? spelling : name);\n if (name === \"help\" || name === \"version\") help = true;\n if (definition.kind === \"boolean\") {\n if (value !== undefined && ![\"true\", \"false\", \"1\", \"0\", \"t\", \"f\", \"TRUE\", \"FALSE\", \"True\", \"False\", \"T\", \"F\"].includes(value)) invalid = true;\n } else if (definition.kind !== \"optional\" && value === undefined) pending = name;\n if (name === \"format\" && value !== undefined && ![\"json\", \"human-readable\"].includes(value)) invalid = true;\n if (definition.completionRejectEmpty && value === \"\") invalid = true;\n if (value !== undefined) {\n try { validateOpFlagValue(name, definition, value); } catch { invalid = true; }\n }\n };\n for (const token of previous) {\n if (pending !== undefined) {\n if (pending === \"format\" && ![\"json\", \"human-readable\"].includes(token)) invalid = true;\n if (available()[pending]?.completionRejectEmpty && token === \"\") invalid = true;\n const definition = available()[pending];\n if (definition) {\n try { validateOpFlagValue(pending, definition, token); } catch { invalid = true; }\n }\n pending = undefined;\n continue;\n }\n if (stopped || invalid) break;\n if (token === \"--\") { stopped = true; break; }\n if (token.startsWith(\"-\") && token !== \"-\") {\n const flags = available();\n if (token.startsWith(\"--\")) {\n const equal = token.indexOf(\"=\");\n const spelling = token.slice(2, equal < 0 ? undefined : equal);\n const name = Object.hasOwn(flags, spelling) ? spelling : Object.keys(flags).find(key => flags[key]!.longAliases?.includes(spelling));\n if (!name) { invalid = true; break; }\n consume(name, flags[name]!, equal < 0 ? undefined : token.slice(equal + 1), spelling);\n } else {\n for (let index = 1; index < token.length; index++) {\n const name = Object.keys(flags).find(key => flags[key]!.alias === token[index]);\n if (!name) { invalid = true; break; }\n const definition = flags[name]!;\n const remainder = token.slice(index + 1);\n const attached = remainder.startsWith(\"=\") || definition.kind !== \"boolean\";\n consume(name, definition, attached && remainder ? remainder.startsWith(\"=\") ? remainder.slice(1) : remainder : undefined, name);\n if (attached) break;\n }\n }\n continue;\n }\n if (command) continue;\n if (path.length === 0 && token === \"help\") { stopped = true; break; }\n const candidates = catalog.filter(entry => path.every((part, index) => entry.path[index] === part) && (entry.path[path.length] === token || entry.path.length === path.length + 1 && entry.aliases.includes(token)));\n if (!candidates.length) { invalid = true; break; }\n path.push(candidates[0]!.path[path.length]!);\n command = candidates.find(entry => entry.path.length === path.length);\n }\n if (invalid || pending !== undefined || stopped) return { candidates: [], directive: 0 };\n if (help) return { candidates: [], directive: 4 };\n if (current.startsWith(\"-\")) {\n if (current.includes(\"=\")) return { candidates: [], directive: 0 };\n const flags = available();\n const inherited = path.length ? Object.keys(opGlobalFlags).filter(name => name !== \"help\") : [];\n const local = Object.keys(flags).filter(name => !inherited.includes(name));\n const candidates: { value: string; description: string }[] = [];\n const required: { value: string; description: string }[] = [];\n for (const name of [...inherited.sort(), ...local.sort()]) {\n const definition = flags[name];\n if (!definition || definition.completionVisible === false || used.has(name) && definition.kind !== \"array\" && definition.valueSyntax !== \"csv\") continue;\n for (const value of [`--${name}`, ...(definition.alias ? [`-${definition.alias}`] : [])]) {\n if (value.startsWith(current)) {\n const candidate = { value, description: definition.description ?? \"\" };\n candidates.push(candidate);\n if (definition.completionRequired && !used.has(name)) required.push(candidate);\n }\n }\n }\n return { candidates: required.length ? required : candidates, directive: 4 };\n }\n if (command) return { candidates: [], directive: 0 };\n const names = new Set(catalog.filter(entry => path.every((part, index) => entry.path[index] === part)).map(entry => entry.path[path.length]!));\n if (!path.length) names.add(\"help\");\n return { candidates: [...names].sort().filter(value => value.startsWith(current)).map(value => ({ value, description: opCatalogNodes.find(node => node.path.join(\" \") === [...path, value].join(\" \"))?.summary ?? \"Help about any command\" })), directive: 4 };\n}\n", "import type { OpCommandContext } from \"./cli.js\";\nimport type { OpBackendRequest } from \"./types.js\";\nimport { resolveOpCompletion } from \"./completion-resolver.js\";\n\nexport function createCompletionCallbackHandler(channel: \"stable\" | \"beta\" = \"stable\") {\n return async (request: OpBackendRequest, context: OpCommandContext): Promise<{ exitCode: number }> => {\n if (request.resource !== \"__complete\" && request.resource !== \"__completeNoDesc\") throw new Error(\"Invalid completion callback\");\n context.signal.throwIfAborted();\n const result = resolveOpCompletion(request.args, channel);\n const lines = result.candidates.map(candidate => request.resource === \"__complete\" ? `${candidate.value}\\t${candidate.description}` : candidate.value);\n lines.push(`:${result.directive}`);\n await context.stdout.write(new TextEncoder().encode(`${lines.join(\"\\n\")}\\n`));\n return { exitCode: 0 };\n };\n}\n\nexport function createCompletionHandler(channel: \"stable\" | \"beta\" = \"stable\") {\n if (channel !== \"stable\" && channel !== \"beta\") throw new Error(\"Invalid completion channel\");\n return async (request: OpBackendRequest, context: OpCommandContext): Promise<{ exitCode: number }> => {\n const shell = request.args[0];\n if (request.args.length !== 1 || ![\"bash\", \"zsh\", \"fish\", \"powershell\"].includes(shell)) {\n throw new Error(\"completion requires one shell: bash, zsh, fish, or powershell\");\n }\n context.signal.throwIfAborted();\n let lines: string[];\n if (shell === \"bash\") {\n lines = [\n \"_op() {\",\n \" local response directive choice current op_cword\",\n \" local -a op_words\",\n ' if declare -F _get_comp_words_by_ref >/dev/null; then',\n ' _get_comp_words_by_ref -n =: -w op_words -i op_cword -c current || return',\n ' else',\n ' op_words=(\"${COMP_WORDS[@]}\")',\n ' op_cword=$COMP_CWORD',\n ' current=\"${op_words[op_cword]}\"',\n ' fi',\n ' op_words[op_cword]=\"$current\"',\n ' COMPREPLY=()',\n ' response=$(OP_COMPATIBILITY_CHANNEL=' + channel + ' \"${op_words[0]}\" __completeNoDesc \"${op_words[@]:1:op_cword}\" 2>/dev/null) || return',\n ' directive=\"${response##*$\\'\\\\n\\'}\"',\n ' case \"$directive\" in',\n ' :0) while IFS= read -r choice; do COMPREPLY+=(\"$choice\"); done < <(compgen -f -- \"$current\") ;;',\n ' :4) while IFS= read -r choice; do [[ \"$choice\" == :4 ]] || COMPREPLY+=(\"$choice\"); done <<< \"$response\" ;;',\n ' esac',\n '}',\n 'complete -o filenames -F _op op',\n ];\n } else if (shell === \"zsh\") {\n lines = [\n '#compdef op',\n '_op() {',\n ' local line directive',\n ' local -a response candidates descriptions',\n ' response=(\"${(@f)$(OP_COMPATIBILITY_CHANNEL=' + channel + ' \"${words[1]}\" __complete \"${(@)words[2,CURRENT]}\" 2>/dev/null)}\")',\n ' directive=\"${response[-1]}\"',\n ' case \"$directive\" in',\n ' :0) _files ;;',\n ' :4)',\n ' for line in \"${response[@]}\"; do',\n ' [[ \"$line\" == :4 ]] && continue',\n ' candidates+=(\"${line%%$\\'\\\\t\\'*}\")',\n ' descriptions+=(\"${line#*$\\'\\\\t\\'}\")',\n ' done',\n ' (( ${#candidates} )) && compadd -d descriptions -- \"${candidates[@]}\"',\n ' ;;',\n ' esac',\n ' return 0',\n '}',\n 'compdef _op op',\n ];\n } else if (shell === \"fish\") {\n lines = [\n 'function __op_candidates',\n ' set -lx OP_COMPATIBILITY_CHANNEL ' + channel,\n ' set -l tokens (commandline -opc)',\n ' set -l current (commandline -ct)',\n ' set -l response ($tokens[1] __complete $tokens[2..-1] \"$current\" 2>/dev/null)',\n ' set -l directive $response[-1]',\n ' switch \"$directive\"',\n ' case :0',\n ' __fish_complete_path \"$current\"',\n ' case :4',\n ' set -e response[-1]',\n ' for candidate in $response',\n ' printf \"%s\\\\n\" \"$candidate\"',\n ' end',\n ' end',\n 'end',\n \"complete -c op -f -a '(__op_candidates)'\",\n ];\n } else {\n lines = [\n 'Register-ArgumentCompleter -Native -CommandName op -ScriptBlock {',\n ' param($wordToComplete, $commandAst, $cursorPosition)',\n ' $program = $commandAst.CommandElements[0].Value',\n ' $arguments = @()',\n ' foreach ($element in ($commandAst.CommandElements | Select-Object -Skip 1)) {',\n ' if ($element.Extent.EndOffset -ge $cursorPosition) { break }',\n ' if ($element -is [System.Management.Automation.Language.StringConstantExpressionAst]) { $arguments += $element.Value }',\n ' else { $arguments += $element.Extent.Text }',\n ' }',\n ' $current = $wordToComplete',\n ' if ($current -eq \"\" -and ($PSVersionTable.PSVersion -lt [version]\"7.3\" -or $PSNativeCommandArgumentPassing -eq \"Legacy\")) { $current = \\'\"\"\\' }',\n ' $previousChannel = $env:OP_COMPATIBILITY_CHANNEL',\n ' try {',\n \" $env:OP_COMPATIBILITY_CHANNEL = '\" + channel + \"'\",\n ' $response = @(& $program __complete @arguments $current 2>$null)',\n ' } finally { $env:OP_COMPATIBILITY_CHANNEL = $previousChannel }',\n ' if ($response.Count -eq 0) { return }',\n ' $directive = $response[-1]',\n ' if ($directive -eq \":0\") { return }',\n ' if ($directive -ne \":4\") { \"\"; return }',\n ' if ($response.Count -eq 1) { \"\"; return }',\n ' foreach ($line in $response[0..($response.Count - 2)]) {',\n ' $parts = $line.Split([char]9, 2)',\n ' $description = if ($parts.Count -gt 1) { $parts[1] } else { \" \" }',\n \" [System.Management.Automation.CompletionResult]::new($parts[0], $parts[0], 'ParameterValue', $description)\",\n ' }',\n '}',\n ];\n }\n await context.stdout.write(new TextEncoder().encode(`${lines.join(\"\\n\")}\\n`));\n return { exitCode: 0 };\n };\n}\n", "import { getOpCommandFlags, opCatalogNodes, type OpFlagDefinition } from \"./catalog.js\";\n\nfunction wrap(text: string, width: number): string[] {\n const lines: string[] = [];\n let line = \"\";\n for (const word of text.split(\" \").filter(Boolean)) {\n if (line && line.length + word.length + 1 > width) { lines.push(line); line = \"\"; }\n line += (line ? \" \" : \"\") + word;\n }\n if (line) lines.push(line);\n return lines;\n}\n\nfunction flagSyntax(name: string, flag: OpFlagDefinition): string {\n const value = flag.metavar ?? (flag.kind === \"boolean\" ? \"\" : \"string\");\n return `${flag.alias ? `-${flag.alias}, ` : \" \"}--${name}${flag.kind === \"optional\" ? `[=${value}]` : value ? ` ${value}` : \"\"}`;\n}\n\nexport function renderOpHelp(path: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): string {\n const node = opCatalogNodes.find(entry => entry.path.join(\" \") === path.join(\" \") && (channel === \"beta\" || entry.availability !== \"beta\"));\n if (!node) throw new Error(\"Unknown help topic\");\n const children = opCatalogNodes.filter(entry => entry.path.length === path.length + 1 && path.every((part, index) => entry.path[index] === part) && (channel === \"beta\" || entry.availability !== \"beta\"));\n const prefix = `op${path.length ? ` ${path.join(\" \")}` : \"\"}`;\n const lines = [node.description, \"\", `Usage: ${prefix} ${node.synopsis}`, \"\"];\n if (node.availability !== \"stable\") lines.push(`Availability: ${node.availability}`, \"\");\n if (node.aliases.length) lines.push(\"Aliases:\", ` ${[path.at(-1), ...node.aliases].join(\", \")}`, \"\");\n for (const group of [\"management\", \"commands\"] as const) {\n const entries = children.filter(child => child.helpGroup === group).sort((first, second) => first.helpOrder - second.helpOrder || first.path.at(-1)!.localeCompare(second.path.at(-1)!));\n if (!entries.length) continue;\n lines.push(group === \"management\" ? \"Management Commands:\" : \"Commands:\");\n const width = Math.max(...entries.map(child => child.path.at(-1)!.length)) + 1;\n for (const child of entries) {\n lines.push(` ${child.path.at(-1)!.padEnd(width)} ${child.summary}${child.availability === \"stable\" ? \"\" : ` [${child.availability}]`}`);\n }\n lines.push(\"\");\n }\n if (node.examples) lines.push(\"Examples:\", node.examples, \"\");\n const flags = Object.entries(getOpCommandFlags(path, channel)).filter(([name, flag]) => flag.helpVisible !== false && (!path.length || name === \"help\" || Object.hasOwn(node.flags, name))).sort(([first], [second]) => first.localeCompare(second));\n lines.push(path.length ? \"Flags:\" : \"Global Flags:\");\n const width = Math.max(...flags.map(([name, flag]) => flagSyntax(name, flag).length)) + 3;\n for (const [name, flag] of flags) {\n const description = `${flag.description ?? \"\"}${flag.defaultDisplay === undefined ? \"\" : ` (default ${flag.defaultDisplay})`}${flag.availability === \"beta\" ? \" [beta]\" : \"\"}`;\n const wrapped = wrap(description, Math.max(20, 143 - width - 2));\n lines.push(` ${flagSyntax(name, flag).padEnd(width)}${wrapped[0] ?? \"\"}`.trimEnd());\n for (const continuation of wrapped.slice(1)) lines.push(`${\" \".repeat(width + 2)}${continuation}`);\n }\n lines.push(\"\");\n if (path.length) lines.push(\"To list the global flags available on every command, run 'op --help'.\");\n if (children.length) lines.push(...(path.length ? [\"\"] : []), `Run '${prefix} [command] --help' for more information on the command.`);\n return `${lines.join(\"\\n\")}\\n`;\n}\n", "import type { OpObject } from \"./types.js\";\n\nexport const pluginRequiredFieldLabels: Readonly<Record<string, string>> = Object.freeze({\n \"akamai\": \"Client Secret, Host, Access Token, Client Token\",\n \"claude\": \"API Key\",\n \"argocd\": \"Auth Token\",\n \"aws\": \"Access Key ID, Secret Access Key\",\n \"cdk\": \"Access Key ID, Secret Access Key\",\n \"sam\": \"Access Key ID, Secret Access Key\",\n \"eksctl\": \"Access Key ID, Secret Access Key\",\n \"awslogs\": \"Access Key ID, Secret Access Key\",\n \"axiom\": \"Token, Organization\",\n \"binance-cli\": \"API Key, API Secret\",\n \"cachix\": \"Token\",\n \"cargo\": \"Token\",\n \"circleci\": \"Token\",\n \"civo\": \"API Key\",\n \"cline\": \"API Key\",\n \"wrangler\": \"Token\",\n \"crash\": \"Host, Username, Password\",\n \"crowdin\": \"Token\",\n \"agent\": \"API Key\",\n \"databricks\": \"Host, Token\",\n \"dog\": \"API Key, App Key\",\n \"descope\": \"Project ID, Management Key\",\n \"doctl\": \"Token\",\n \"exercism\": \"URL, API Key, Directory\",\n \"expo\": \"Token\",\n \"eas\": \"Token\",\n \"fastly\": \"Token\",\n \"flyctl\": \"Token\",\n \"fly\": \"Token\",\n \"fossa\": \"API Key\",\n \"tea\": \"Token, Host Address, User\",\n \"gh\": \"Token\",\n \"copilot\": \"Token\",\n \"glab\": \"Token\",\n \"gemini\": \"API Key\",\n \"vault\": \"Token\",\n \"heroku\": \"API Key\",\n \"hcloud\": \"Token\",\n \"brew\": \"Token\",\n \"huggingface-cli\": \"User Access Token\",\n \"influx\": \"Host, Organization, Access Token\",\n \"junie\": \"API Key\",\n \"kaggle\": \"Token, Username\",\n \"kiro-cli\": \"API Key\",\n \"lacework\": \"Account, API Key ID, API Secret\",\n \"forge\": \"Token\",\n \"vapor\": \"Token\",\n \"linode-cli\": \"Token\",\n \"localstack\": \"API Key\",\n \"atlas\": \"Public Key, Private Key\",\n \"mysql\": \"Password\",\n \"ngrok\": \"Authtoken\",\n \"ohdear\": \"Token\",\n \"okta\": \"Token, Org URL\",\n \"openai\": \"API Key\",\n \"oaieval\": \"API Key\",\n \"oaievalset\": \"API Key\",\n \"codex\": \"API Key\",\n \"opencode\": \"API Key\",\n \"tofu\": \"Depends on configured credentials\",\n \"pd\": \"API Key\",\n \"psql\": \"Host, User, Password\",\n \"pg_dump\": \"Host, User, Password\",\n \"pg_restore\": \"Host, User, Password\",\n \"pgcli\": \"Host, User, Password\",\n \"pulumi\": \"Token\",\n \"twine\": \"Token\",\n \"flit\": \"Token\",\n \"hatch\": \"Token\",\n \"rdme\": \"API Key\",\n \"redis-cli\": \"Password\",\n \"rediscloud\": \"Account Key, User Key\",\n \"scw\": \"Access Key ID, Secret Access Key\",\n \"sentry-cli\": \"Token\",\n \"snowsql\": \"Account, Username, Password\",\n \"snyk\": \"Token\",\n \"src\": \"Token\",\n \"stripe\": \"Key\",\n \"todoist\": \"Token\",\n \"td\": \"API Key\",\n \"tugboat\": \"Token\",\n \"twilio\": \"Account SID, API Key, API Secret\",\n \"upctl\": \"Username, Password\",\n \"upstash\": \"API Key, Email\",\n \"vercel\": \"Token\",\n \"vsql\": \"Username, Password, Database\",\n \"vultr-cli\": \"API Key\",\n \"ysqlsh\": \"Host, Username, Password\",\n \"zapier\": \"Key\",\n \"zcli\": \"Subdomain, Email, Token\",\n});\n\nexport interface OpPluginAvailability {\n readonly source?: string;\n readonly name?: string;\n readonly executable?: string;\n readonly plugin_name?: string;\n readonly id?: string;\n}\n\nconst nativePlugins: readonly OpPluginAvailability[] = Object.freeze([\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Akamai CLI\",\"executable\":\"akamai\",\"plugin_name\":\"Akamai\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Claude Code\",\"executable\":\"claude\",\"plugin_name\":\"Anthropic\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Argo CD CLI\",\"executable\":\"argocd\",\"plugin_name\":\"Argo CD\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS CLI\",\"executable\":\"aws\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS CDK Toolkit\",\"executable\":\"cdk\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS SAM CLI\",\"executable\":\"sam\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"eksctl CLI\",\"executable\":\"eksctl\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"awslogs\",\"executable\":\"awslogs\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Axiom CLI\",\"executable\":\"axiom\",\"plugin_name\":\"Axiom\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Binance CLI\",\"executable\":\"binance-cli\",\"plugin_name\":\"Binance\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cachix CLI\",\"executable\":\"cachix\",\"plugin_name\":\"Cachix\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cargo CLI\",\"executable\":\"cargo\",\"plugin_name\":\"Cargo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"CircleCI CLI\",\"executable\":\"circleci\",\"plugin_name\":\"CircleCI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Civo CLI\",\"executable\":\"civo\",\"plugin_name\":\"Civo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cline CLI\",\"executable\":\"cline\",\"plugin_name\":\"Cline\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cloudflare Workers CLI\",\"executable\":\"wrangler\",\"plugin_name\":\"Cloudflare Workers\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"CrateDB Shell\",\"executable\":\"crash\",\"plugin_name\":\"CrateDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Crowdin CLI\",\"executable\":\"crowdin\",\"plugin_name\":\"Crowdin\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cursor CLI\",\"executable\":\"agent\",\"plugin_name\":\"Cursor\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Databricks CLI\",\"executable\":\"databricks\",\"plugin_name\":\"Databricks\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Dogshell\",\"executable\":\"dog\",\"plugin_name\":\"Datadog\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Descope CLI\",\"executable\":\"descope\",\"plugin_name\":\"Descope\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"DigitalOcean CLI\",\"executable\":\"doctl\",\"plugin_name\":\"DigitalOcean\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Exercism CLI\",\"executable\":\"exercism\",\"plugin_name\":\"Exercism\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Expo CLI\",\"executable\":\"expo\",\"plugin_name\":\"Expo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"EAS CLI\",\"executable\":\"eas\",\"plugin_name\":\"Expo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Fastly CLI\",\"executable\":\"fastly\",\"plugin_name\":\"Fastly\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Flyctl\",\"executable\":\"flyctl\",\"plugin_name\":\"Fly.io\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Fly\",\"executable\":\"fly\",\"plugin_name\":\"Fly.io\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"FOSSA CLI\",\"executable\":\"fossa\",\"plugin_name\":\"FOSSA\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Gitea CLI\",\"executable\":\"tea\",\"plugin_name\":\"Gitea\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitHub CLI\",\"executable\":\"gh\",\"plugin_name\":\"GitHub\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitHub Copilot CLI\",\"executable\":\"copilot\",\"plugin_name\":\"GitHub Copilot\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitLab CLI\",\"executable\":\"glab\",\"plugin_name\":\"GitLab\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Google Gemini CLI\",\"executable\":\"gemini\",\"plugin_name\":\"Google Gemini CLI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vault CLI\",\"executable\":\"vault\",\"plugin_name\":\"HashiCorp Vault\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Heroku CLI\",\"executable\":\"heroku\",\"plugin_name\":\"Heroku\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Hetzner Cloud CLI\",\"executable\":\"hcloud\",\"plugin_name\":\"Hetzner Cloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Homebrew CLI\",\"executable\":\"brew\",\"plugin_name\":\"Homebrew\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"HuggingFace CLI\",\"executable\":\"huggingface-cli\",\"plugin_name\":\"Hugging Face\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"InfluxDB CLI\",\"executable\":\"influx\",\"plugin_name\":\"InfluxDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"JetBrains Junie CLI\",\"executable\":\"junie\",\"plugin_name\":\"JetBrains Junie\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Kaggle CLI\",\"executable\":\"kaggle\",\"plugin_name\":\"Kaggle\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Kiro CLI\",\"executable\":\"kiro-cli\",\"plugin_name\":\"Kiro\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Lacework CLI\",\"executable\":\"lacework\",\"plugin_name\":\"Lacework\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Laravel Forge CLI\",\"executable\":\"forge\",\"plugin_name\":\"Laravel Forge\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Laravel Vapor CLI\",\"executable\":\"vapor\",\"plugin_name\":\"Laravel Vapor\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Linode CLI\",\"executable\":\"linode-cli\",\"plugin_name\":\"Linode\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"LocalStack CLI\",\"executable\":\"localstack\",\"plugin_name\":\"LocalStack\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"MongoDB Atlas CLI\",\"executable\":\"atlas\",\"plugin_name\":\"MongoDB Atlas\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"mysql\",\"executable\":\"mysql\",\"plugin_name\":\"MySQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"ngrok CLI\",\"executable\":\"ngrok\",\"plugin_name\":\"ngrok\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Oh Dear CLI\",\"executable\":\"ohdear\",\"plugin_name\":\"Oh Dear\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Okta CLI\",\"executable\":\"okta\",\"plugin_name\":\"Okta\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI CLI\",\"executable\":\"openai\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Evals CLI\",\"executable\":\"oaieval\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Eval Set CLI\",\"executable\":\"oaievalset\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Codex\",\"executable\":\"codex\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenCode CLI\",\"executable\":\"opencode\",\"plugin_name\":\"OpenCode\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenTofu\",\"executable\":\"tofu\",\"plugin_name\":\"OpenTofu\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Pipedream CLI\",\"executable\":\"pd\",\"plugin_name\":\"Pipedream\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"psql\",\"executable\":\"psql\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pg_dump\",\"executable\":\"pg_dump\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pg_restore\",\"executable\":\"pg_restore\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pgcli\",\"executable\":\"pgcli\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Pulumi CLI\",\"executable\":\"pulumi\",\"plugin_name\":\"Pulumi\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Twine\",\"executable\":\"twine\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Flit\",\"executable\":\"flit\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Hatch\",\"executable\":\"hatch\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"ReadMe CLI\",\"executable\":\"rdme\",\"plugin_name\":\"ReadMe\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Redis CLI\",\"executable\":\"redis-cli\",\"plugin_name\":\"Redis\"}),\n Object.freeze({\"source\":\"1password-registry\",\"plugin_name\":\"rediscloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Scaleway CLI\",\"executable\":\"scw\",\"plugin_name\":\"Scaleway\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Sentry CLI\",\"executable\":\"sentry-cli\",\"plugin_name\":\"Sentry\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Snowflake CLI\",\"executable\":\"snowsql\",\"plugin_name\":\"Snowflake\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Snyk CLI\",\"executable\":\"snyk\",\"plugin_name\":\"Snyk\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Sourcegraph CLI\",\"executable\":\"src\",\"plugin_name\":\"Sourcegraph\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Stripe CLI\",\"executable\":\"stripe\",\"plugin_name\":\"Stripe\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Todoist CLI\",\"executable\":\"todoist\",\"plugin_name\":\"Todoist\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Treasure Data Toolbelt\",\"executable\":\"td\",\"plugin_name\":\"Treasure Data\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Tugboat CLI\",\"executable\":\"tugboat\",\"plugin_name\":\"Tugboat\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Twilio CLI\",\"executable\":\"twilio\",\"plugin_name\":\"Twilio\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"UpCloud CLI\",\"executable\":\"upctl\",\"plugin_name\":\"UpCloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Upstash CLI\",\"executable\":\"upstash\",\"plugin_name\":\"Upstash\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vercel CLI\",\"executable\":\"vercel\",\"plugin_name\":\"Vercel\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vertica CLI\",\"executable\":\"vsql\",\"plugin_name\":\"Vertica\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vultr CLI\",\"executable\":\"vultr-cli\",\"plugin_name\":\"Vultr\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"YugabyteDB SQL Shell\",\"executable\":\"ysqlsh\",\"plugin_name\":\"YugabyteDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Zapier CLI\",\"executable\":\"zapier\",\"plugin_name\":\"Zapier\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Zendesk CLI\",\"executable\":\"zcli\",\"plugin_name\":\"Zendesk\"}),\n]);\n\nexport function availablePlugins(configured: readonly OpObject[]): OpPluginAvailability[] {\n const entries = nativePlugins.map(plugin => ({ ...plugin }));\n const executables = new Set(nativePlugins.flatMap(plugin => plugin.executable ? [plugin.executable.toLowerCase()] : []));\n for (const plugin of configured) {\n if (executables.has(plugin.id.toLowerCase())) continue;\n executables.add(plugin.id.toLowerCase());\n entries.push({ id: plugin.id, name: typeof plugin.name === \"string\" ? plugin.name : plugin.id });\n }\n return entries;\n}\n", "import { pluginRequiredFieldLabels } from \"./plugin-catalog.js\";\n\nexport function renderPluginList(plugins: readonly Record<string, unknown>[]): string {\n if (!plugins.length) return \"\";\n const rows = [[\"EXECUTABLE\", \"NAME\", \"REQUIRED FIELDS\"], ...plugins.map(plugin => {\n const executable = typeof plugin.executable === \"string\" ? plugin.executable : typeof plugin.id === \"string\" ? plugin.id : \"-\";\n const name = typeof plugin.plugin_name === \"string\" ? plugin.plugin_name : typeof plugin.name === \"string\" ? plugin.name : executable;\n const key = typeof plugin.executable === \"string\" ? plugin.executable : typeof plugin.plugin_name === \"string\" ? plugin.plugin_name : \"\";\n const requiredFields = plugin.source === \"1password-registry\" && Object.hasOwn(pluginRequiredFieldLabels, key) ? pluginRequiredFieldLabels[key]! : \"-\";\n return [executable, name, requiredFields];\n })];\n const executableWidth = Math.max(...rows.map(row => row[0]!.length)) + 4;\n const nameWidth = Math.max(...rows.map(row => row[1]!.length)) + 4;\n return rows.map(row => `${row[0]!.padEnd(executableWidth)}${row[1]!.padEnd(nameWidth)}${row[2]}`).join(\"\\n\") + \"\\n\";\n}\n", "import type { OpBackend, OpBackendContext, OpBackendRequest, OpBindingTarget, OpPreparedBinding } from \"./types.js\";\nimport type { OpHandlerPreparation, OpPreparedEffect, OpPreparedHandler } from \"./handler-preparation.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createCompletionCallbackHandler } from \"./completion.js\";\nimport { renderOpHelp } from \"./help-renderer.js\";\nimport { renderPluginList } from \"./plugin-list-output.js\";\nimport { validateOpFlagValue } from \"./flag-values.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { parseOpCsv } from \"./csv-values.js\";\nexport { parseOpFileMode } from \"./file-mode.js\";\nexport { createOpTextCodec } from \"./encoding.js\";\nimport { opCommandCatalog, opGlobalFlags, opRootFlags, type OpCatalogCommand, type OpFlagDefinition } from \"./catalog.js\";\n\nexport interface OpOutputSink {\n isTTY?: boolean;\n write(data: Uint8Array): Promise<void>;\n}\n\nexport interface OpFileWriteOptions {\n mode?: number;\n overwrite?: boolean;\n}\n\nexport interface OpCommandContext {\n args: readonly string[];\n env: Record<string, string>;\n signal: AbortSignal;\n binding?: OpBackendContext[\"binding\"];\n authentication?: OpBackendContext[\"authentication\"];\n pluginScope?: OpBackendContext[\"pluginScope\"];\n confirmPluginClear?: OpBackendContext[\"confirmPluginClear\"];\n selectPlugin?: OpBackendContext[\"selectPlugin\"];\n stdin: AsyncIterable<Uint8Array>;\n stdout: OpOutputSink;\n stderr: OpOutputSink;\n invoke?: (command: string, args: readonly string[], options: {\n env: Readonly<Record<string, string>>;\n stdout?: OpOutputSink;\n stderr?: OpOutputSink;\n }) => Promise<{ exitCode: number }>;\n readFile?: (path: string) => Promise<Uint8Array>;\n writeFile?: (path: string, data: Uint8Array, options?: OpFileWriteOptions) => Promise<void>;\n}\n\nexport interface OpCommandOptions {\n backend: OpBackend;\n version?: string;\n channel?: \"stable\" | \"beta\";\n authorize?: (request: OpBackendRequest, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) =>\n \"allow\" | \"deny\" | \"ask\" | Promise<\"allow\" | \"deny\" | \"ask\">;\n approve?: (request: OpBackendRequest, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) => boolean | Promise<boolean>;\n approvalMode?: \"resolved\" | \"literal\";\n authorizeResolution?: OpCommandOptions[\"approve\"];\n approveResolved?: (approval: OpResolvedApproval, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) => boolean | Promise<boolean>;\n handlers?: Readonly<Record<string, (request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>>>;\n}\n\nexport interface OpResolvedApproval {\n readonly operation: Readonly<{ resource: string; action: string }>;\n readonly backendId: string;\n readonly accountId: string | null;\n readonly targets: readonly OpBindingTarget[];\n readonly optionNames: readonly string[];\n readonly mutation: Readonly<{ requested: boolean; propertyNames: readonly string[]; assignmentNames: readonly string[]; batchSize?: number }>;\n readonly output: Readonly<{ kind: \"none\" | \"stdout\" | \"file\"; destination?: string }>;\n readonly child?: Readonly<{ executable: string; argv: readonly string[]; environmentNames: readonly string[] }>;\n}\n\ntype FlagValue = string | boolean | readonly string[];\n\nexport function selectOpGlobalFlags(flags: OpBackendRequest[\"flags\"]): OpBackendRequest[\"flags\"] {\n return Object.freeze(Object.fromEntries(Object.entries(flags).filter(([name]) => Object.hasOwn(opGlobalFlags, name))));\n}\n\nexport function selectOpBackendContext(context: OpCommandContext): OpBackendContext {\n return Object.freeze({\n signal: context.signal,\n ...(context.binding === undefined ? {} : { binding: context.binding }),\n ...(context.authentication === undefined ? {} : { authentication: context.authentication }),\n ...(context.pluginScope === undefined ? {} : { pluginScope: context.pluginScope }),\n ...(context.confirmPluginClear === undefined ? {} : { confirmPluginClear: context.confirmPluginClear }),\n ...(context.selectPlugin === undefined ? {} : { selectPlugin: context.selectPlugin }),\n });\n}\n\nfunction booleanValue(value: string): boolean | undefined {\n if ([\"true\", \"1\", \"t\", \"TRUE\", \"True\", \"T\"].includes(value)) return true;\n if ([\"false\", \"0\", \"f\", \"FALSE\", \"False\", \"F\"].includes(value)) return false;\n return undefined;\n}\n\nfunction flagValue(name: string, definition: OpFlagDefinition, value: string | undefined): FlagValue {\n if (definition.kind === \"boolean\") {\n if (value === undefined) return true;\n const parsed = booleanValue(value);\n if (parsed !== undefined) return parsed;\n throw new Error(`invalid boolean value for --${name}`);\n }\n if (definition.kind === \"optional\" && value === undefined) return true;\n if (value === undefined) throw new Error(`flag needs a value: --${name}`);\n validateOpFlagValue(name, definition, value);\n if (definition.kind === \"array\") return [value];\n if (definition.kind === \"csv\") return definition.valueSyntax === \"csv\" ? parseOpCsv(value) : value.split(\",\");\n return value;\n}\n\nfunction commandFlags(command: OpCatalogCommand | undefined, channel: \"stable\" | \"beta\", root: boolean): Record<string, OpFlagDefinition> {\n return Object.fromEntries(Object.entries({ ...opGlobalFlags, ...(root ? opRootFlags : {}), ...command?.flags }).filter(([, flag]) => channel === \"beta\" || flag.availability !== \"beta\"));\n}\n\nfunction scanCommand(argv: readonly string[], channel: \"stable\" | \"beta\", resolvedFlags?: Record<string, OpFlagDefinition>) {\n const tokens = [...argv];\n const path: string[] = [];\n const args: string[] = [];\n const flags: Record<string, FlagValue> = Object.create(null);\n let command: OpCatalogCommand | undefined;\n let candidates = opCommandCatalog.filter(entry => channel === \"beta\" || entry.availability !== \"beta\");\n let literal = false;\n let help = argv[0] === \"help\";\n for (let index = help ? 1 : 0; index < tokens.length; index++) {\n const token = tokens[index]!;\n if (literal) { args.push(token); continue; }\n if (token === \"--\") { literal = true; continue; }\n if (token.startsWith(\"-\") && token !== \"-\") {\n const available = resolvedFlags ?? {};\n if (!resolvedFlags) {\n for (const candidate of candidates) {\n for (const [name, definition] of Object.entries(commandFlags(candidate, channel, path.length === 0))) {\n const previous = available[name];\n available[name] = { ...definition,\n alias: previous?.alias ?? definition.alias,\n longAliases: [...new Set([...(previous?.longAliases ?? []), ...(definition.longAliases ?? [])])],\n };\n }\n }\n }\n if (!token.startsWith(\"--\") && token.length > 2 && token[2] !== \"=\") {\n const firstName = Object.keys(available).find(key => available[key]!.alias === token[1]);\n if (!firstName) throw new Error(`unknown shorthand flag: ${token[1]}`);\n const first = available[firstName]!;\n tokens.splice(index, 1, ...(first.kind === \"boolean\" ? [token.slice(0, 2), `-${token.slice(2)}`] : [`${token.slice(0, 2)}=${token.slice(2)}`]));\n index--;\n continue;\n }\n const equal = token.indexOf(\"=\");\n const long = token.startsWith(\"--\");\n const spelling = token.slice(long ? 2 : 1, equal < 0 ? undefined : equal);\n const name = long ? Object.hasOwn(available, spelling) ? spelling : Object.keys(available).find(key => available[key]!.longAliases?.includes(spelling))\n : Object.keys(available).find(key => available[key]!.alias === spelling);\n const definition = name === undefined || !Object.hasOwn(available, name) ? undefined : available[name];\n if (!name || !definition) throw new Error(`unknown flag: ${token.slice(0, equal < 0 ? undefined : equal)}`);\n if (!resolvedFlags && !command && equal < 0 && !Object.hasOwn(commandFlags(undefined, channel, path.length === 0), name)) {\n index++;\n continue;\n }\n let value = equal < 0 ? undefined : token.slice(equal + 1);\n if (value === undefined && definition.kind !== \"boolean\" && definition.kind !== \"optional\") {\n value = tokens[++index];\n if (value === undefined) throw new Error(`flag needs a value: --${name}`);\n }\n const parsed = flagValue(name, definition, value);\n const previous = flags[name];\n flags[name] = Array.isArray(previous) && Array.isArray(parsed) ? [...previous, ...parsed] : parsed;\n continue;\n }\n if (command) { args.push(token); continue; }\n if (token === \"help\" && path.length === 0) { help = true; continue; }\n candidates = candidates.filter(entry => entry.path[path.length] === token || (entry.path.length === path.length + 1 && entry.aliases.includes(token)));\n if (candidates.length === 0) throw new Error(`unknown command: ${[...path, token].join(\" \")}`);\n path.push(candidates[0]!.path[path.length]!);\n command = candidates.find(entry => entry.path.length === path.length);\n }\n help ||= flags.help === true || path.length === 0 || (!command && args.length === 0);\n return { path, args, flags, command, help };\n}\n\nfunction parseCommand(argv: readonly string[], env: Readonly<Record<string, string>>, channel: \"stable\" | \"beta\") {\n const resolved = scanCommand(argv, channel);\n const parsed = scanCommand(argv, channel, commandFlags(resolved.command, channel, resolved.path.length === 0));\n const { path, flags, command } = parsed;\n if (path.length > 0 && flags.version !== undefined) throw new Error(\"unknown flag: --version\");\n const available = commandFlags(command, channel, path.length === 0);\n for (const [name, definition] of Object.entries(available)) {\n const value = definition.env === undefined ? undefined : env[definition.env];\n if (flags[name] === undefined && value !== undefined && value !== \"\") {\n if (definition.invalidEnv === \"ignore\" && definition.kind === \"boolean\" && booleanValue(value) === undefined) continue;\n flags[name] = flagValue(name, definition, value);\n }\n }\n if (flags.format !== undefined && flags.format !== \"json\" && flags.format !== \"human-readable\") throw new Error(\"format must be json or human-readable\");\n return parsed;\n}\n\nfunction freezeJson(value: unknown): unknown {\n if (value !== null && typeof value === \"object\") {\n for (const child of Object.values(value)) freezeJson(child);\n Object.freeze(value);\n }\n return value;\n}\n\nasync function readInput(context: OpCommandContext, encoding: unknown): Promise<{ input: unknown; chunks: Uint8Array[] }> {\n const chunks: Uint8Array[] = [];\n let length = 0;\n for await (const chunk of context.stdin) {\n context.signal.throwIfAborted();\n length += chunk.byteLength;\n if (length > 16 * 1024 * 1024) throw new Error(\"stdin exceeds 16 MiB\");\n chunks.push(Uint8Array.from(chunk));\n }\n if (length === 0) return { input: undefined, chunks };\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n const text = createOpTextCodec(encoding).decoder().decode(bytes);\n try { return { input: freezeJson(JSON.parse(text)), chunks }; } catch { return { input: text, chunks }; }\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && !(value instanceof Uint8Array);\n}\n\nfunction conceal(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(conceal);\n if (!record(value)) return value;\n const hidden = [\"CONCEALED\", \"OTP\", \"SSHKEY\"].includes(String(value.type).toUpperCase()) || value.purpose === \"PASSWORD\";\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key,\n hidden && key === \"value\" ? \"(use 'op item get --reveal' to reveal)\" : conceal(entry),\n ]));\n}\n\nfunction metadata(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(metadata);\n if (!record(value)) return value;\n return Object.fromEntries(Object.entries(value).filter(([key]) => key !== \"content\").map(([key, entry]) => [key, metadata(entry)]));\n}\n\nexport function renderOpOutput(result: unknown, request: OpBackendRequest): Uint8Array | undefined {\n const encoder = createOpTextCodec(request.flags.encoding);\n const { resource, action, flags } = request;\n const format = flags.format;\n let value = result;\n if (resource === \"plugin\" && action === \"list\" && format !== \"json\" && Array.isArray(value) && value.every(record)) return encoder.encode(renderPluginList(value));\n if (resource === \"document\" && action === \"get\") {\n const content = record(value) ? value.content : value;\n if (content instanceof Uint8Array) return content;\n if (typeof content === \"string\") return new TextEncoder().encode(content);\n throw new Error(\"document backend did not return document content\");\n }\n if (resource === \"item\" || resource === \"document\") value = metadata(value);\n if (resource === \"item\" && flags.otp === true) {\n const values = request.args.length === 1 && request.args[0] === \"-\" && Array.isArray(value) ? value : [value];\n const codes: string[] = [];\n for (const entry of values) {\n if (typeof entry !== \"string\" || ![6, 8].includes(entry.trim().length) || !Array.from(entry.trim()).every(character => character >= \"0\" && character <= \"9\")) {\n throw new Error(\"backend did not return a generated one-time password\");\n }\n codes.push(entry.trim());\n }\n if (!codes.length) throw new Error(\"backend did not return a generated one-time password\");\n return encoder.encode(`${codes.join(\"\\n\")}\\n`);\n }\n if (resource === \"item\" && flags.fields !== undefined) {\n const selectors = typeof flags.fields === \"string\" ? parseOpCsv(flags.fields) : flags.fields;\n if (!Array.isArray(selectors)) throw new Error(\"fields must be a list\");\n const fields = record(value) && Array.isArray(value.fields) ? value.fields : Array.isArray(value) ? value : [value];\n const selected = selectors.flatMap(selector => {\n const equal = selector.indexOf(\"=\");\n const key = equal < 0 ? \"label\" : selector.slice(0, equal);\n const match = (equal < 0 ? selector : selector.slice(equal + 1)).toLowerCase();\n if (key !== \"label\" && key !== \"type\") throw new Error(\"field selectors must use label or type\");\n const matches = fields.filter(field => record(field) && (String(field[key] ?? \"\").toLowerCase() === match || (key === \"label\" && String(field.id ?? \"\").toLowerCase() === match)));\n if (!matches.length) throw new Error(\"selected field was not found\");\n return matches;\n });\n if (format === \"json\") value = selected.length === 1 ? selected[0] : selected;\n else {\n const visible = flags.reveal === true ? selected : selected.map(conceal);\n const values = visible.map(field => {\n const text = String(record(field) ? field.value ?? \"\" : field);\n return Array.from(text).some(character => ',\"\\r\\n'.includes(character)) ? `\"${text.split('\"').join('\"\"')}\"` : text;\n });\n return encoder.encode(`${values.join(\",\")}\\n`);\n }\n }\n if (resource === \"item\" && format !== \"json\" && flags.reveal !== true) value = conceal(value);\n if (value === undefined) return undefined;\n if (value instanceof Uint8Array) return value;\n if (format === \"json\") return encoder.encode(`${JSON.stringify(value, null, 2)}\\n`);\n if (typeof value === \"string\") return encoder.encode(value.endsWith(\"\\n\") ? value : `${value}\\n`);\n if (Array.isArray(value)) {\n if (value.length === 0) return new Uint8Array();\n if (value.every(row => row !== null && typeof row === \"object\" && !Array.isArray(row))) {\n const keys = [...new Set(value.flatMap(row => Object.keys(row)))];\n return encoder.encode(`${keys.join(\"\\t\")}\\n${value.map(row => keys.map(key => typeof row[key] === \"object\" ? JSON.stringify(row[key]) : String(row[key] ?? \"\")).join(\"\\t\")).join(\"\\n\")}\\n`);\n }\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n return encoder.encode(`${Object.entries(value).map(([key, entry]) => `${key}: ${typeof entry === \"object\" ? JSON.stringify(entry) : String(entry)}`).join(\"\\n\")}\\n`);\n }\n return encoder.encode(`${JSON.stringify(value)}\\n`);\n}\n\nasync function policyResult<Value>(callback: () => Value | Promise<Value>, signal: AbortSignal): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"operation aborted\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n return await Promise.race([Promise.resolve().then(() => {\n signal.throwIfAborted();\n return callback();\n }), cancelled]);\n } catch {\n throw new Error(\"authorization failed\");\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nfunction approvalManifest(request: OpBackendRequest, requests: readonly OpBackendRequest[], prepared: OpPreparedBinding, effects: readonly OpPreparedEffect[]): OpResolvedApproval {\n if (typeof prepared.backendId !== \"string\" || (prepared.accountId !== null && typeof prepared.accountId !== \"string\")) throw new Error(\"Invalid binding metadata\");\n const targets = prepared.targets.map(target => {\n if (!Number.isInteger(target.requestIndex) || target.requestIndex < 0 || target.requestIndex >= requests.length || typeof target.resource !== \"string\" || typeof target.revision !== \"string\" || ![\"object\", \"collection\", \"field\", \"section\"].includes(target.kind)) throw new Error(\"Invalid binding target metadata\");\n for (const name of [\"id\", \"account\", \"parentId\"] as const) if (target[name] !== undefined && typeof target[name] !== \"string\") throw new Error(\"Invalid binding target metadata\");\n return { requestIndex: target.requestIndex, resource: target.resource, kind: target.kind, revision: target.revision,\n ...(target.id === undefined ? {} : { id: target.id }), ...(target.account === undefined ? {} : { account: target.account }), ...(target.parentId === undefined ? {} : { parentId: target.parentId }) };\n });\n const file = effects.find(effect => effect.kind === \"file\");\n const child = effects.find(effect => effect.kind === \"invoke\");\n if (effects.filter(effect => effect.kind === \"file\").length > 1 || effects.filter(effect => effect.kind === \"invoke\").length > 1) throw new Error(\"Multiple output destinations are unsupported\");\n if (file && typeof file.path !== \"string\") throw new Error(\"Invalid output metadata\");\n if (child && (typeof child.command !== \"string\" || !Number.isSafeInteger(child.argumentCount) || child.argumentCount! < 0 || !Array.isArray(child.environmentNames) || !child.environmentNames.every(name => typeof name === \"string\"))) throw new Error(\"Invalid child metadata\");\n const mutations = requests.filter(entry => ![\"get\", \"list\", \"read\", \"inspect\", \"ratelimit\"].includes(entry.action));\n const inputs = mutations.flatMap(entry => Array.isArray(entry.input) ? entry.input : entry.input === undefined ? [] : [entry.input]);\n const propertyNames = [...new Set(inputs.flatMap(input => record(input) ? Object.keys(input) : []))].sort();\n const assignmentNames = [...new Set(mutations.filter(entry => entry.resource === \"item\" && [\"create\", \"edit\", \"update\"].includes(entry.action)).flatMap(entry => entry.args.filter(arg => arg.includes(\"=\")).map(arg => arg.slice(0, arg.indexOf(\"=\")))))].sort();\n const manifest: OpResolvedApproval = {\n operation: { resource: request.resource, action: request.action }, backendId: prepared.backendId, accountId: prepared.accountId, targets,\n optionNames: Object.keys(request.flags).sort(),\n mutation: { requested: mutations.length > 0, propertyNames, assignmentNames,\n ...(requests.some(entry => Array.isArray(entry.input)) ? { batchSize: inputs.length } : {}) },\n output: file ? { kind: \"file\", destination: file.path } : { kind: effects.some(effect => effect.kind === \"stdout\") ? \"stdout\" : \"none\" },\n ...(child ? { child: { executable: child.command!, argv: Array.from({ length: child.argumentCount! }, () => \"[redacted]\"), environmentNames: [...child.environmentNames!] } } : {}),\n };\n return freezeJson(manifest) as OpResolvedApproval;\n}\n\nexport function createOpCommand(options: OpCommandOptions): { name: \"op\"; execute(context: OpCommandContext): Promise<{ exitCode: number }> } {\n const { backend, authorize, approve, authorizeResolution, approveResolved, approvalMode = \"resolved\", version = \"0.0.1\", channel = \"stable\" } = options;\n const handlers = { ...options.handlers };\n const planners = new Map(Object.entries(handlers).flatMap(([key, handler]) => typeof (handler as Partial<OpPreparedHandler>).prepare === \"function\" ? [[key, (handler as OpPreparedHandler).prepare.bind(handler)] as const] : []));\n return {\n name: \"op\",\n async execute(callerContext) {\n const context: OpCommandContext = {\n ...callerContext,\n binding: undefined,\n args: Object.freeze([...callerContext.args]),\n env: Object.freeze({ ...callerContext.env }),\n ...(callerContext.pluginScope === undefined ? {} : { pluginScope: Object.freeze({ ...callerContext.pluginScope }) }),\n };\n let binding: OpPreparedBinding | undefined;\n let finished = false;\n let approved = false;\n const original = { ...context,\n stdin: { [Symbol.asyncIterator]: context.stdin[Symbol.asyncIterator].bind(context.stdin) },\n stdout: { isTTY: context.stdout.isTTY, write: context.stdout.write.bind(context.stdout) },\n stderr: { isTTY: context.stderr.isTTY, write: context.stderr.write.bind(context.stderr) },\n ...(context.readFile ? { readFile: context.readFile.bind(context) } : {}),\n ...(context.writeFile ? { writeFile: context.writeFile.bind(context) } : {}),\n ...(context.invoke ? { invoke: context.invoke.bind(context) } : {}),\n };\n try {\n context.signal.throwIfAborted();\n const biometric = context.env.OP_BIOMETRIC_UNLOCK_ENABLED;\n if (biometric !== undefined && biometric !== \"true\" && biometric !== \"false\") throw new Error(\"OP_BIOMETRIC_UNLOCK_ENABLED must be true or false.\");\n const integration = biometric === undefined ? callerContext.authentication?.integration ?? \"manual\" : biometric === \"true\" ? \"app\" : \"manual\";\n context.authentication = Object.freeze({ ...callerContext.authentication, integration });\n if (context.args[0] === \"__complete\" || context.args[0] === \"__completeNoDesc\") {\n return await createCompletionCallbackHandler(channel)({ resource: context.args[0], action: \"\", args: context.args.slice(1), flags: {} }, context);\n }\n const parsed = parseCommand(context.args, context.env, channel);\n if (parsed.flags.version === true) {\n await context.stdout.write(new TextEncoder().encode(`${version}\\n`));\n return { exitCode: 0 };\n }\n if (parsed.flags.help !== true) createOpTextCodec(parsed.flags.encoding);\n if (parsed.help) {\n await context.stdout.write(new TextEncoder().encode(renderOpHelp(parsed.path, channel)));\n return { exitCode: 0 };\n }\n const codec = createOpTextCodec(parsed.flags.encoding);\n const decodeArgument = (value: string) => codec.decoder().decode(new TextEncoder().encode(value));\n parsed.args = parsed.args.map(decodeArgument);\n for (const [name, value] of Object.entries(parsed.flags)) {\n if (name === \"encoding\") continue;\n if (typeof value === \"string\") parsed.flags[name] = decodeArgument(value);\n else if (Array.isArray(value)) parsed.flags[name] = value.map(decodeArgument);\n }\n if (!parsed.command) throw new Error(\"a command is required\");\n const limits = parsed.command.args;\n if (limits && parsed.args.length < limits.min) throw new Error(`expected at least ${limits.min} arguments but got ${parsed.args.length} instead`);\n if (limits?.max !== undefined && parsed.args.length > limits.max) throw new Error(`expected at most ${limits.max} arguments but got ${parsed.args.length} instead`);\n const key = parsed.path.join(\" \");\n const handler = Object.hasOwn(handlers, key) ? handlers[key] : undefined;\n const requiresInput = limits?.stdinAlternative === true && parsed.args.length === 0;\n for (const value of Object.values(parsed.flags)) if (Array.isArray(value)) Object.freeze(value);\n const literalRequest: OpBackendRequest = Object.freeze({\n resource: parsed.path.length === 1 ? parsed.path[0]! : parsed.path.slice(0, -1).join(\" \"),\n action: parsed.path.length === 1 ? \"\" : parsed.path.at(-1)!,\n args: Object.freeze(parsed.args), flags: Object.freeze({ ...parsed.flags }),\n });\n const executionContext = Object.freeze({\n signal: context.signal,\n ...(context.authentication === undefined ? {} : { authentication: context.authentication }),\n ...(context.pluginScope === undefined ? {} : { pluginScope: context.pluginScope }),\n });\n const decision = authorize ? await policyResult(() => authorize(literalRequest, executionContext), context.signal) : \"allow\";\n context.signal.throwIfAborted();\n if (decision !== \"allow\" && decision !== \"ask\") throw new Error(\"permission denied\");\n if (approvalMode !== \"resolved\" && approvalMode !== \"literal\") throw new Error(\"Unsupported approval mode\");\n const resolved = decision === \"ask\" && approvalMode === \"resolved\";\n if (decision === \"ask\") {\n if (!resolved) {\n if (!approve || await policyResult(() => approve(literalRequest, executionContext), context.signal) !== true) throw new Error(\"permission denied\");\n } else {\n if (!authorizeResolution || !approveResolved || !backend.prepareBinding || !backend.validateBinding || !backend.cancelBinding || (handler && !planners.has(key))) throw new Error(\"Resolved approval is unsupported\");\n if (await policyResult(() => authorizeResolution(literalRequest, executionContext), context.signal) !== true) throw new Error(\"Resolution permission denied\");\n }\n }\n context.signal.throwIfAborted();\n context.stdin = original.stdin;\n context.readFile = original.readFile;\n const buffered = !handler || requiresInput ? await readInput(context, parsed.flags.encoding) : undefined;\n const input = buffered?.input;\n if (requiresInput && input === undefined) throw new Error(\"An object selector or piped input is required\");\n if (handler && buffered) context.stdin = { async *[Symbol.asyncIterator]() { yield* buffered.chunks; } };\n const request: OpBackendRequest = input === undefined ? literalRequest : Object.freeze({ ...literalRequest, input });\n if (resolved) {\n const validate = (): void | Promise<void> => {\n context.signal.throwIfAborted();\n if (!approved || !binding || finished) throw new Error(\"Resolved approval is not active\");\n const pending = backend.validateBinding!(binding.handle, selectOpBackendContext(context));\n if (pending !== undefined) return Promise.resolve(pending).then(() => { context.signal.throwIfAborted(); });\n context.signal.throwIfAborted();\n };\n const handoff = <Value>(effect: () => Promise<Value>): Promise<Value> => {\n const pending = validate();\n return pending === undefined ? effect() : pending.then(effect);\n };\n context.stdout = { isTTY: original.stdout.isTTY, async write(bytes) { return handoff(() => original.stdout.write(bytes)); } };\n context.stderr = { isTTY: original.stderr.isTTY, async write(bytes) { return handoff(() => original.stderr.write(bytes)); } };\n if (original.writeFile) context.writeFile = async (path, bytes, writeOptions) => handoff(() => original.writeFile!(path, bytes, writeOptions));\n if (original.invoke) context.invoke = async (command, args, invokeOptions) => handoff(() => original.invoke!(command, args, invokeOptions));\n const restoration = original as OpCommandContext & { restoreEnvironment?: (snapshot: unknown, context: { signal: AbortSignal }) => Promise<void> };\n if (restoration.restoreEnvironment) Object.assign(context, { async restoreEnvironment(snapshot: unknown) { return handoff(() => restoration.restoreEnvironment!(snapshot, { signal: context.signal })); } });\n let preparation: OpHandlerPreparation | undefined;\n if (handler) preparation = await policyResult(() => planners.get(key)!(request, context), context.signal);\n const requests = preparation?.requests ?? [request];\n const pending = Promise.resolve().then(() => {\n context.signal.throwIfAborted();\n return backend.prepareBinding!(requests, selectOpBackendContext(context));\n }).then(value => {\n if (finished || context.signal.aborted) backend.cancelBinding!(value.handle);\n else binding = value;\n return value;\n });\n const prepared = await policyResult(() => pending, context.signal);\n const manifest = await policyResult(() => {\n const destination = request.flags[\"out-file\"];\n const effects: readonly OpPreparedEffect[] = preparation ? preparation.complete(prepared.metadata) : [typeof destination === \"string\" ? { kind: \"file\", path: destination } : { kind: \"stdout\" }];\n return approvalManifest(literalRequest, requests, prepared, effects);\n }, context.signal);\n if (await policyResult(() => approveResolved!(manifest, executionContext), context.signal) !== true) throw new Error(\"permission denied\");\n if (preparation) Object.assign(context, preparation.context, { authentication: executionContext.authentication, pluginScope: executionContext.pluginScope });\n context.binding = prepared.handle;\n approved = true;\n await validate();\n }\n if (handler) return await handler(request, context);\n const destination = parsed.flags[\"out-file\"];\n const writeOptions = typeof destination === \"string\" ? { mode: parseOpFileMode(parsed.flags[\"file-mode\"]), overwrite: parsed.flags.force === true } : undefined;\n if (typeof destination === \"string\" && !context.writeFile) throw new Error(\"file output requires a host writeFile capability\");\n const result = await backend.execute(request, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const output = renderOpOutput(result, request);\n if (output !== undefined) {\n if (typeof destination === \"string\") {\n await context.writeFile!(destination, output, writeOptions);\n } else await context.stdout.write(output);\n }\n return { exitCode: 0 };\n } catch (error) {\n await original.stderr.write(new TextEncoder().encode(`op: ${context.signal.aborted ? \"operation aborted\" : error instanceof Error ? error.message : \"operation failed\"}\\n`));\n return { exitCode: context.signal.aborted ? 130 : 1 };\n } finally {\n finished = true;\n if (binding) backend.cancelBinding!(binding.handle);\n }\n },\n };\n}\n", "import type { OpCommandContext, OpFileWriteOptions } from \"./cli.js\";\nimport type { OpBackendRequest } from \"./types.js\";\nimport type { EnvironmentSnapshot } from \"./environment.js\";\n\nexport interface OpPreparedEffect {\n readonly kind: \"stdout\" | \"file\" | \"invoke\" | \"restore\";\n readonly path?: string;\n readonly options?: Readonly<OpFileWriteOptions>;\n readonly command?: string;\n readonly argumentCount?: number;\n readonly environmentNames?: readonly string[];\n readonly unsetNames?: readonly string[];\n readonly masking?: boolean;\n}\n\nexport interface OpEffectIntent extends OpPreparedEffect {\n readonly args?: readonly string[];\n}\n\nexport interface OpHandlerRequestMetadata {\n readonly environment?: {\n readonly names: readonly string[];\n readonly unsetNames?: readonly string[];\n readonly scope?: \"complete\" | \"selected\";\n readonly dependenciesComplete: boolean;\n };\n}\n\nexport interface OpHandlerPreparation {\n readonly requests: readonly OpBackendRequest[];\n readonly context: OpCommandContext;\n readonly effects: readonly OpPreparedEffect[];\n complete(metadata: readonly OpHandlerRequestMetadata[]): readonly OpPreparedEffect[];\n}\n\nexport type OpPreparedHandler = ((request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>) & {\n prepare(request: OpBackendRequest, context: OpCommandContext): Promise<OpHandlerPreparation>;\n};\n\nasync function acquire<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"Operation aborted\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nexport function createSourceSnapshot(source: OpCommandContext, maxBytes = 16 * 1024 * 1024) {\n const signal = source.signal;\n const readFile = source.readFile?.bind(source);\n const stdin = source.stdin;\n const files = new Map<string, Uint8Array>();\n let input: Promise<Uint8Array> | undefined;\n const context: OpCommandContext = {\n ...source,\n args: Object.freeze([...source.args]),\n env: Object.freeze({ ...source.env }),\n stdout: Object.freeze({ isTTY: source.stdout.isTTY, write: source.stdout.write.bind(source.stdout) }),\n stderr: Object.freeze({ isTTY: source.stderr.isTTY, write: source.stderr.write.bind(source.stderr) }),\n ...(source.writeFile ? { writeFile: source.writeFile.bind(source) } : {}),\n ...(source.invoke ? { invoke: source.invoke.bind(source) } : {}),\n ...(source.authentication ? { authentication: Object.freeze({ ...source.authentication }) } : {}),\n ...(source.pluginScope ? { pluginScope: Object.freeze({ ...source.pluginScope }) } : {}),\n async readFile(path) {\n signal.throwIfAborted();\n const bytes = files.get(path);\n if (!bytes) throw new Error(\"Unplanned file acquisition\");\n return Uint8Array.from(bytes);\n },\n stdin: {\n async *[Symbol.asyncIterator]() {\n signal.throwIfAborted();\n if (!input) throw new Error(\"Unplanned stdin acquisition\");\n yield Uint8Array.from(await input);\n },\n },\n };\n return {\n context,\n async file(path: string): Promise<Uint8Array> {\n signal.throwIfAborted();\n if (!files.has(path)) {\n if (!readFile) throw new Error(\"Host readFile capability is required\");\n const bytes = await acquire(signal, () => readFile(path));\n if (bytes.byteLength > maxBytes) throw new Error(\"Prepared source exceeds byte limit\");\n files.set(path, Uint8Array.from(bytes));\n }\n return Uint8Array.from(files.get(path)!);\n },\n input(): Promise<Uint8Array> {\n input ??= (async () => {\n const chunks: Uint8Array[] = [];\n let size = 0;\n const iterator = stdin[Symbol.asyncIterator]();\n while (true) {\n const next = await acquire(signal, () => iterator.next());\n if (next.done) break;\n if (next.value.byteLength > maxBytes - size) throw new Error(\"Prepared source exceeds byte limit\");\n chunks.push(Uint8Array.from(next.value));\n size += next.value.byteLength;\n }\n const bytes = new Uint8Array(size);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }\n return bytes;\n })();\n return input.then(bytes => Uint8Array.from(bytes));\n },\n };\n}\n\nfunction freezeTree<Value>(value: Value): Value {\n if (value !== null && typeof value === \"object\" && !(value instanceof Uint8Array)) {\n for (const child of Object.values(value)) freezeTree(child);\n Object.freeze(value);\n }\n return value;\n}\n\nfunction effectMetadata(effects: readonly OpEffectIntent[]): readonly OpPreparedEffect[] {\n return freezeTree(effects.map(effect => {\n const { args, ...metadata } = effect;\n return structuredClone({ ...metadata, ...(args === undefined ? {} : { argumentCount: args.length }) });\n }));\n}\n\nexport function createHandlerPreparation(\n requests: readonly OpBackendRequest[], context: OpCommandContext, effects: readonly OpEffectIntent[],\n complete: (metadata: readonly OpHandlerRequestMetadata[]) => readonly OpEffectIntent[] = () => effects,\n): OpHandlerPreparation {\n let admitted: readonly OpEffectIntent[] | undefined;\n const signal = context.signal;\n const allowed = (kind: OpPreparedEffect[\"kind\"]) => {\n signal.throwIfAborted();\n if (!admitted) throw new Error(\"Preparation is incomplete\");\n return admitted.filter(effect => effect.kind === kind);\n };\n const same = (first: readonly string[], second: readonly string[]) => first.length === second.length && first.every((value, index) => value === second[index]);\n const namesMatch = (expected: readonly string[] | undefined, env: Readonly<Record<string, unknown>>) => expected !== undefined && same([...expected].sort(), Object.keys(env).sort());\n const guarded: OpCommandContext = {\n ...context,\n stdout: {\n isTTY: context.stdout.isTTY,\n async write(bytes) {\n if (!allowed(\"stdout\").length && !allowed(\"invoke\").length) throw new Error(\"Unplanned output\");\n await acquire(signal, () => context.stdout.write(Uint8Array.from(bytes)));\n },\n },\n stderr: {\n isTTY: context.stderr.isTTY,\n async write(bytes) {\n if (!allowed(\"invoke\").length) throw new Error(\"Unplanned error output\");\n await acquire(signal, () => context.stderr.write(Uint8Array.from(bytes)));\n },\n },\n ...(context.writeFile ? { async writeFile(path: string, bytes: Uint8Array, options?: OpFileWriteOptions) {\n if (!allowed(\"file\").some(effect => effect.path === path && effect.options?.mode === options?.mode && effect.options?.overwrite === options?.overwrite)) throw new Error(\"Unplanned file output\");\n await acquire(signal, () => context.writeFile!(path, Uint8Array.from(bytes), options ? { ...options } : undefined));\n } } : {}),\n ...(context.invoke ? { async invoke(command: string, args: readonly string[], options: Parameters<NonNullable<OpCommandContext[\"invoke\"]>>[2]) {\n if (!allowed(\"invoke\").some(effect => effect.command === command && same(effect.args ?? [], args) && namesMatch(effect.environmentNames, options.env))) throw new Error(\"Unplanned child invocation\");\n return acquire(signal, () => context.invoke!(command, Object.freeze([...args]), { ...options, env: Object.freeze({ ...options.env }) }));\n } } : {}),\n };\n const restoration = context as OpCommandContext & { restoreEnvironment?: (snapshot: EnvironmentSnapshot, context: { signal: AbortSignal }) => Promise<void> };\n if (restoration.restoreEnvironment) {\n const restore = restoration.restoreEnvironment.bind(context);\n Object.assign(guarded, { async restoreEnvironment(snapshot: EnvironmentSnapshot) {\n const values = Object.fromEntries(Object.entries(snapshot.variables).filter(([, value]) => value !== null));\n const unsets = Object.entries(snapshot.variables).filter(([, value]) => value === null).map(([key]) => key);\n if (!allowed(\"restore\").some(effect => namesMatch(effect.environmentNames, values) && unsets.every(key => effect.unsetNames?.includes(key)))) throw new Error(\"Unplanned environment restoration\");\n await acquire(signal, () => restore(structuredClone(snapshot), { signal }));\n } });\n }\n return Object.freeze({\n requests: freezeTree(requests.map(request => structuredClone(request))),\n context: guarded,\n effects: effectMetadata(effects),\n complete(metadata: readonly OpHandlerRequestMetadata[]) {\n context.signal.throwIfAborted();\n if (metadata.length !== requests.length) throw new Error(\"Incomplete binding metadata\");\n admitted = freezeTree(complete(metadata).map(effect => structuredClone(effect)));\n return effectMetadata(admitted);\n },\n });\n}\n", "import type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { selectOpBackendContext, selectOpGlobalFlags, type OpCommandContext } from \"./cli.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { createHandlerPreparation, createSourceSnapshot, type OpEffectIntent } from \"./handler-preparation.js\";\n\ntype SecretHandler = (request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>;\n\nfunction word(character: string): boolean {\n return character.length === 1 && ((character >= \"a\" && character <= \"z\") || (character >= \"A\" && character <= \"Z\") || (character >= \"0\" && character <= \"9\") || character === \"_\");\n}\n\nfunction expand(value: string, env: Readonly<Record<string, string>>, escapes = true): string {\n let output = \"\";\n for (let position = 0; position < value.length;) {\n const character = value[position]!;\n if (escapes && character === \"\\\\\" && position + 1 < value.length) {\n output += value[position + 1];\n position += 2;\n continue;\n }\n if (character !== \"$\") {\n output += character;\n position++;\n continue;\n }\n let end = position + 1;\n let name: string;\n let fallback = \"\";\n if (value[end] === \"{\") {\n end = value.indexOf(\"}\", end + 1);\n if (end < 0) throw new Error(\"Unclosed environment variable\");\n name = value.slice(position + 2, end).trim();\n const separator = name.indexOf(\":-\");\n if (separator >= 0) {\n fallback = name.slice(separator + 2);\n name = name.slice(0, separator).trim();\n }\n end++;\n } else {\n while (end < value.length && word(value[end]!)) end++;\n name = value.slice(position + 1, end);\n }\n if (!name || !Array.from(name).every(word) || (name[0]! >= \"0\" && name[0]! <= \"9\")) {\n output += character;\n position++;\n continue;\n }\n const key = Object.keys(env).find(candidate => candidate.toLowerCase() === name.toLowerCase());\n output += key === undefined ? fallback : env[key];\n position = end;\n }\n return output;\n}\n\nasync function cancellable<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nasync function template(value: string, env: Readonly<Record<string, string>>, resolve: (reference: string) => Promise<string>, variables = true): Promise<string> {\n let output = \"\";\n let position = 0;\n while (position < value.length) {\n if (value.startsWith(\"{{\", position)) {\n let start = position + 2;\n while (value[start] === \" \") start++;\n if (value[start] === '\"') {\n let end = start + 1;\n let escaped = false;\n for (; end < value.length; end++) {\n if (!escaped && value[end] === '\"') break;\n if (!escaped && value[end] === \"\\\\\") escaped = true;\n else escaped = false;\n }\n const literal = JSON.parse(value.slice(start, end + 1)) as string;\n let close = end + 1;\n while (value[close] === \" \") close++;\n if (!value.startsWith(\"}}\", close)) throw new Error(\"Invalid template literal\");\n output += literal;\n position = close + 2;\n continue;\n }\n const end = value.indexOf(\"}}\", start);\n if (end < 0) throw new Error(\"Unclosed secret template\");\n const content = value.slice(start, end).trim();\n const reference = variables ? expand(content, env) : content;\n if (!reference.startsWith(\"op://\")) throw new Error(\"Expected a secret reference in template\");\n output += await resolve(reference);\n position = end + 2;\n continue;\n }\n const previous = value[position - 1] ?? \"\";\n if (value.startsWith(\"op://\", position) && !(word(previous) || (previous !== \"\" && \"-+\\\\.\".includes(previous)))) {\n let end = position + 5;\n while (end < value.length) {\n const character = value[end]!;\n if (character === \"$\") {\n if (value[end + 1] === \"{\") {\n const close = value.indexOf(\"}\", end + 2);\n if (close < 0) throw new Error(\"Unclosed environment variable\");\n end = close + 1;\n continue;\n }\n end++;\n continue;\n }\n if (!word(character) && !\"/-?_.=&%\".includes(character)) break;\n end++;\n }\n const reference = value.slice(position, end);\n output += await resolve(variables ? expand(reference, env) : reference);\n position = end;\n continue;\n }\n if (variables && value[position] === \"$\") {\n let end = position + 1;\n if (value[end] === \"{\") {\n const close = value.indexOf(\"}\", end + 1);\n if (close < 0) throw new Error(\"Unclosed environment variable\");\n end = close + 1;\n } else {\n while (end < value.length && word(value[end]!)) end++;\n }\n output += expand(value.slice(position, end), env);\n position = end;\n continue;\n }\n output += value[position];\n position++;\n }\n return output;\n}\n\nfunction dotenv(source: string, env: Record<string, string>): Set<string> {\n const keys = new Set<string>();\n let position = 0;\n while (position < source.length) {\n while (position < source.length && source[position]!.trim() === \"\") position++;\n if (position === source.length) break;\n if (source[position] === \"#\") {\n while (position < source.length && source[position] !== \"\\n\") position++;\n continue;\n }\n const start = position;\n while (position < source.length && source[position] !== \"=\" && source[position] !== \"\\n\") position++;\n if (source[position] !== \"=\") throw new Error(\"Invalid dotenv assignment\");\n let key = source.slice(start, position).trim();\n if (key.startsWith(\"export \")) key = key.slice(7).trim();\n key = expand(key, env);\n if (!key || key.includes(\"\\0\") || key.includes(\"=\") || key.includes(\"op://\")) throw new Error(\"Invalid dotenv key\");\n position++;\n while (source[position] === \" \" || source[position] === \"\\t\") position++;\n const quote = source[position] === \"'\" || source[position] === '\"' ? source[position++]! : undefined;\n let raw = \"\";\n let closed = quote === undefined;\n while (position < source.length) {\n const character = source[position]!;\n if (quote !== undefined && character === quote) {\n closed = true;\n position++;\n break;\n }\n if (quote === undefined && (character === \"\\n\" || character === \"\\r\" || character === \"#\")) break;\n if (character === \"\\\\\" && quote !== \"'\" && position + 1 < source.length) {\n raw += character + source[position + 1];\n position += 2;\n } else {\n raw += character;\n position++;\n }\n }\n if (!closed) throw new Error(\"Unclosed dotenv quote\");\n if (quote !== undefined) {\n while (source[position] === \" \" || source[position] === \"\\t\" || source[position] === \"\\r\") position++;\n if (position < source.length && source[position] !== \"#\" && source[position] !== \"\\n\") throw new Error(\"Unexpected text after dotenv quote\");\n }\n while (position < source.length && source[position] !== \"\\n\") position++;\n const value = quote === undefined ? raw.trim() : raw;\n Object.defineProperty(env, key, { value: quote === \"'\" ? value : expand(value, env), enumerable: true, writable: true, configurable: true });\n keys.add(key);\n }\n return keys;\n}\n\nexport function createMaskedSink(sink: OpCommandContext[\"stdout\"], secrets: readonly string[], signal: AbortSignal) {\n const encoder = new TextEncoder();\n const patterns = [...new Set(secrets)].filter(Boolean).map(secret => encoder.encode(secret)).sort((left, right) => right.length - left.length);\n const replacement = encoder.encode(\"<concealed by 1Password>\");\n let pending = new Uint8Array();\n let queue = Promise.resolve();\n async function drain(final: boolean) {\n const output: number[] = [];\n let position = 0;\n while (position < pending.length) {\n const remaining = pending.length - position;\n const matches = patterns.filter(pattern => pattern.subarray(0, Math.min(pattern.length, remaining)).every((byte, offset) => byte === pending[position + offset]));\n if (!final && matches.some(pattern => pattern.length > remaining)) break;\n const match = matches.find(pattern => pattern.length <= remaining);\n if (match) {\n for (const byte of replacement) output.push(byte);\n position += match.length;\n } else output.push(pending[position++]!);\n }\n pending = pending.slice(position);\n if (output.length) await cancellable(signal, () => sink.write(new Uint8Array(output)));\n }\n return {\n sink: {\n write(data: Uint8Array): Promise<void> {\n const copy = Uint8Array.from(data);\n queue = queue.then(async () => {\n signal.throwIfAborted();\n const next = new Uint8Array(pending.length + copy.length);\n next.set(pending);\n next.set(copy, pending.length);\n pending = next;\n await drain(false);\n });\n return queue;\n }\n },\n async flush() {\n await queue;\n await drain(true);\n }\n };\n}\n\nfunction outputFile(request: OpBackendRequest, context: OpCommandContext): { path: string; options: { mode: number; overwrite: boolean } } | undefined {\n const path = request.flags[\"out-file\"];\n if (typeof path !== \"string\" || !path) return undefined;\n if (!context.writeFile) throw new Error(\"Host writeFile capability is required\");\n const mode = parseOpFileMode(request.flags[\"file-mode\"]);\n return { path, options: { mode, overwrite: request.flags.force === true } };\n}\n\nexport function createSecretHandlers(backend: OpBackend): Record<string, SecretHandler> {\n function resolver(request: OpBackendRequest, context: OpCommandContext, secrets: string[] = []) {\n return async (reference: string): Promise<string> => {\n const result = await cancellable(context.signal, () => backend.execute({ resource: \"secret\", action: \"read\", args: [reference], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n if (typeof result !== \"string\") throw new Error(\"Backend read must resolve to text\");\n secrets.push(result);\n return result;\n };\n }\n const handlers: Record<string, SecretHandler> = {\n async read(request, context) {\n context.signal.throwIfAborted();\n if (request.args.length !== 1) throw new Error(\"read requires one secret reference\");\n const output = outputFile(request, context);\n const value = await cancellable(context.signal, () => backend.execute({ resource: \"secret\", action: \"read\", args: [request.args[0]!], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n let bytes: Uint8Array;\n if (value instanceof Uint8Array) {\n bytes = Uint8Array.from(value);\n } else {\n if (typeof value !== \"string\" && !(typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0)) throw new Error(\"Backend read must resolve to text, bytes, or a nonnegative safe integer\");\n bytes = createOpTextCodec(request.flags.encoding).encode(String(value) + (output || request.flags[\"no-newline\"] === true ? \"\" : \"\\n\"));\n }\n await cancellable(context.signal, () => output ? context.writeFile!(output.path, bytes, output.options) : context.stdout.write(bytes));\n return { exitCode: 0 };\n },\n async inject(request, context) {\n context.signal.throwIfAborted();\n if (request.args.length) throw new Error(\"inject does not accept positional arguments\");\n const output = outputFile(request, context);\n const input = request.flags[\"in-file\"];\n let source = \"\";\n const decoder = createOpTextCodec(request.flags.encoding).decoder();\n if (typeof input === \"string\" && input) {\n if (!context.readFile) throw new Error(\"Host readFile capability is required\");\n source = decoder.decode(await cancellable(context.signal, () => context.readFile!(input)));\n } else {\n const iterator = context.stdin[Symbol.asyncIterator]();\n while (true) {\n const next = await cancellable(context.signal, () => iterator.next());\n if (next.done) break;\n source += decoder.decode(next.value, { stream: true });\n }\n source += decoder.decode();\n }\n const value = await template(source, context.env, resolver(request, context));\n const bytes = createOpTextCodec(request.flags.encoding).encode(value);\n await cancellable(context.signal, () => output ? context.writeFile!(output.path, bytes, output.options) : context.stdout.write(bytes));\n return { exitCode: 0 };\n },\n async run(request, context) {\n context.signal.throwIfAborted();\n if (!request.args.length) throw new Error(\"run requires a command\");\n if (!context.invoke) throw new Error(\"Host invoke capability is required\");\n const env = { ...context.env };\n const parsedKeys = new Set<string>();\n const files = request.flags[\"env-file\"];\n for (const path of typeof files === \"string\" ? [files] : Array.isArray(files) ? files : []) {\n if (!context.readFile) throw new Error(\"Host readFile capability is required\");\n const source = new TextDecoder().decode(await cancellable(context.signal, () => context.readFile!(path)));\n for (const key of dotenv(source, env)) parsedKeys.add(key);\n }\n const secrets: string[] = [];\n const resolve = resolver(request, context, secrets);\n const environmentKeys = new Set<string>();\n const environments = request.flags.environment ?? request.flags.environments;\n for (const id of typeof environments === \"string\" ? [environments] : Array.isArray(environments) ? environments : []) {\n const result = await cancellable(context.signal, () => backend.execute({ resource: \"environment\", action: \"read\", args: [id], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n let values: Record<string, string>;\n if (typeof result === \"string\") {\n values = {};\n dotenv(result, values);\n } else {\n if (result === null || typeof result !== \"object\" || (Object.getPrototypeOf(result) !== Object.prototype && Object.getPrototypeOf(result) !== null)) throw new Error(\"Backend environment read must resolve to a string record or dotenv text\");\n const entries = Object.entries(result);\n if (entries.some(([, value]) => typeof value !== \"string\")) throw new Error(\"Backend environment values must be strings\");\n values = Object.fromEntries(entries);\n }\n for (const [key, value] of Object.entries(values)) {\n Object.defineProperty(env, key, { value, enumerable: true, writable: true, configurable: true });\n secrets.push(value);\n environmentKeys.add(key);\n }\n }\n const variables = { ...env };\n for (const [key, value] of Object.entries(env)) {\n if (environmentKeys.has(key)) continue;\n const resolveValue = (reference: string) => resolve(parsedKeys.has(key) ? reference : expand(reference, variables, false));\n env[key] = value.startsWith(\"op://\") ? await resolveValue(value) : await template(value, variables, resolveValue, false);\n }\n if (request.flags[\"no-masking\"] === true) return cancellable(context.signal, () => context.invoke!(request.args[0]!, request.args.slice(1), { env, stdout: context.stdout, stderr: context.stderr }));\n const stdout = createMaskedSink(context.stdout, secrets, context.signal);\n const stderr = createMaskedSink(context.stderr, secrets, context.signal);\n try {\n return await cancellable(context.signal, () => context.invoke!(request.args[0]!, request.args.slice(1), { env, stdout: stdout.sink, stderr: stderr.sink }));\n } finally {\n await Promise.all([stdout.flush(), stderr.flush()]);\n }\n }\n };\n for (const [name, handler] of Object.entries(handlers)) {\n Object.assign(handler, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context);\n const requests: OpBackendRequest[] = [];\n const flags = selectOpGlobalFlags(request.flags);\n const collect = async (reference: string) => {\n requests.push({ resource: \"secret\", action: \"read\", args: [reference], flags });\n return \"\";\n };\n if (name === \"read\") {\n if (request.args.length !== 1) throw new Error(\"read requires one secret reference\");\n await collect(request.args[0]!);\n } else if (name === \"inject\") {\n if (request.args.length) throw new Error(\"inject does not accept positional arguments\");\n const path = request.flags[\"in-file\"];\n const bytes = typeof path === \"string\" && path ? await source.file(path) : await source.input();\n await template(createOpTextCodec(request.flags.encoding).decoder().decode(bytes), source.context.env, collect);\n } else {\n if (!request.args.length) throw new Error(\"run requires a command\");\n const env = { ...source.context.env };\n const parsedKeys = new Set<string>();\n const files = request.flags[\"env-file\"];\n for (const path of typeof files === \"string\" ? [files] : Array.isArray(files) ? files : []) {\n for (const key of dotenv(new TextDecoder().decode(await source.file(path)), env)) parsedKeys.add(key);\n }\n const environments = request.flags.environment;\n const ids = typeof environments === \"string\" ? [environments] : Array.isArray(environments) ? environments : [];\n for (const id of ids) requests.push({ resource: \"environment\", action: \"read\", args: [id], flags });\n let dependent = false;\n const referenceKeys = new Set<string>();\n for (const [key, value] of Object.entries(env)) {\n const resolveValue = async (reference: string) => {\n referenceKeys.add(key);\n if (!parsedKeys.has(key) && reference.includes(\"$\")) dependent = true;\n return collect(parsedKeys.has(key) ? reference : expand(reference, env, false));\n };\n if (value.startsWith(\"op://\")) await resolveValue(value);\n else await template(value, env, resolveValue, false);\n }\n const effect: OpEffectIntent = { kind: \"invoke\", command: request.args[0]!, args: request.args.slice(1), environmentNames: Object.keys(env), masking: request.flags[\"no-masking\"] !== true };\n return createHandlerPreparation(requests, source.context, [effect], metadata => {\n const names = new Set(Object.keys(env));\n for (let index = 0; index < ids.length; index++) {\n const environment = metadata[index]?.environment;\n if (!environment || !environment.dependenciesComplete) throw new Error(\"Environment dependency metadata is unavailable\");\n if (dependent) throw new Error(\"Secret-dependent lookup targets are unsupported\");\n for (const key of environment.names) {\n if (referenceKeys.has(key)) throw new Error(\"Environment overrides a planned secret source\");\n names.add(key);\n }\n }\n return [{ ...effect, environmentNames: [...names] }];\n });\n }\n const output = outputFile(request, source.context);\n return createHandlerPreparation(requests, source.context, [output ? { kind: \"file\", ...output } : { kind: \"stdout\" }]);\n },\n });\n }\n return handlers;\n}\n", "export interface EnvironmentSnapshot {\n readonly version: 1;\n readonly scope: \"complete\" | \"selected\";\n readonly variables: Readonly<Record<string, string | null>>;\n}\n\nfunction variableEntries(value: unknown, allowUnset: boolean): [string, string | null][] {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) throw new Error(\"Invalid environment variables\");\n const entries: [string, string | null][] = [];\n for (const name of Reflect.ownKeys(value)) {\n if (typeof name !== \"string\" || !name || name.includes(\"=\") || name.includes(\"\\0\")) throw new Error(\"Invalid environment variable name\");\n const descriptor = Object.getOwnPropertyDescriptor(value, name)!;\n if (!Object.hasOwn(descriptor, \"value\")) throw new Error(\"Environment variables must be data properties\");\n const content: unknown = descriptor.value;\n if (content === undefined || (allowUnset && content === null)) {\n if (allowUnset) entries.push([name, null]);\n continue;\n }\n if (typeof content !== \"string\" || content.includes(\"\\0\")) throw new Error(\"Invalid environment variable value\");\n entries.push([name, content]);\n }\n return entries;\n}\n\nexport function captureEnvironment(\n environment: Readonly<Record<string, string | undefined>>,\n options: { readonly names?: readonly string[] } = {},\n): EnvironmentSnapshot {\n const entries = new Map(variableEntries(environment, false));\n let captured = [...entries];\n if (options.names !== undefined) {\n captured = [...new Set(options.names)].map(name => [name, entries.get(name) ?? null]);\n variableEntries(Object.fromEntries(captured), true);\n }\n return Object.freeze({\n version: 1,\n scope: options.names === undefined ? \"complete\" : \"selected\",\n variables: Object.freeze(Object.fromEntries(captured)),\n });\n}\n\nexport function restoreEnvironment(\n snapshot: unknown,\n current: Readonly<Record<string, string | undefined>>,\n): Record<string, string> {\n if (snapshot === null || typeof snapshot !== \"object\" || Array.isArray(snapshot)) throw new Error(\"Invalid environment snapshot\");\n const descriptors = Object.getOwnPropertyDescriptors(snapshot);\n const version = descriptors.version?.value;\n const scope = descriptors.scope?.value;\n if (version !== 1 || (scope !== \"complete\" && scope !== \"selected\") || !Object.hasOwn(descriptors.variables ?? {}, \"value\")) {\n throw new Error(\"Invalid environment snapshot\");\n }\n const variables = variableEntries(descriptors.variables.value, true);\n const result = new Map(scope === \"selected\" ? variableEntries(current, false) : []);\n for (const [name, value] of variables) {\n if (value === null) result.delete(name);\n else result.set(name, value);\n }\n return Object.fromEntries(result) as Record<string, string>;\n}\n", "import type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { selectOpBackendContext, selectOpGlobalFlags, type OpCommandContext } from \"./cli.js\";\nimport { captureEnvironment, restoreEnvironment, type EnvironmentSnapshot } from \"./environment.js\";\nimport { createMaskedSink } from \"./secrets.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createHandlerPreparation, createSourceSnapshot, type OpEffectIntent } from \"./handler-preparation.js\";\n\nexport interface EnvironmentCommandContext extends OpCommandContext {\n restoreEnvironment?: (snapshot: EnvironmentSnapshot, context: { signal: AbortSignal }) => Promise<void>;\n}\n\nfunction metadata(value: unknown): { id: string; name: string; variables: number; scope: string } {\n if (value === null || typeof value !== \"object\" || !(\"snapshot\" in value) || !(\"id\" in value) || typeof value.id !== \"string\") throw new Error(\"Invalid stored environment snapshot\");\n restoreEnvironment(value.snapshot, {});\n const snapshot = value.snapshot as EnvironmentSnapshot;\n return { id: value.id, name: \"name\" in value && typeof value.name === \"string\" ? value.name : value.id, variables: Object.keys(snapshot.variables).length, scope: snapshot.scope };\n}\n\nfunction shellScript(shell: string, snapshot: EnvironmentSnapshot, current: Record<string, string>): string {\n if (![\"bash\", \"zsh\", \"sh\", \"fish\", \"powershell\"].includes(shell)) throw new Error(\"Unsupported restoration shell\");\n const names = new Set([...(snapshot.scope === \"complete\" ? Object.keys(current) : []), ...Object.keys(snapshot.variables)]);\n for (const name of names) {\n if (![...name].every((character, index) => character === \"_\" || (character >= \"A\" && character <= \"Z\") || (character >= \"a\" && character <= \"z\") || (index > 0 && character >= \"0\" && character <= \"9\"))) {\n throw new Error(\"Environment contains a name that cannot be restored by a shell script\");\n }\n }\n const lines: string[] = [];\n for (const name of names) {\n const value = Object.hasOwn(snapshot.variables, name) ? snapshot.variables[name] : undefined;\n if (value === null || value === undefined) {\n lines.push(shell === \"fish\" ? `set -e ${name}` : shell === \"powershell\" ? `Remove-Item Env:${name} -ErrorAction SilentlyContinue` : `unset ${name}`);\n continue;\n }\n if (shell === \"powershell\") lines.push(`$env:${name} = '${value.split(\"'\").join(\"''\")}'`);\n else if (shell === \"fish\") lines.push(`set -gx ${name} '${value.split(\"\\\\\").join(\"\\\\\\\\\").split(\"'\").join(\"\\\\'\")}'`);\n else lines.push(`export ${name}='${value.split(\"'\").join(\"'\\\\''\")}'`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function createEnvironmentHandlers(backend: OpBackend) {\n const handlers: Record<string, (request: OpBackendRequest, context: EnvironmentCommandContext) => Promise<{ exitCode: number }>> = {};\n for (const action of [\"create\", \"get\", \"list\", \"delete\", \"restore\"]) {\n handlers[`environment snapshot ${action}`] = Object.assign(async (request: OpBackendRequest, context: EnvironmentCommandContext) => {\n context.signal.throwIfAborted();\n if (action === \"list\" ? request.args.length !== 0 : action === \"restore\" ? request.args.length < 1 : request.args.length !== 1) throw new Error(\"Invalid environment snapshot arguments\");\n let value: unknown;\n if (action === \"create\") {\n const selected = request.flags.vars;\n if (selected !== undefined && (!Array.isArray(selected) || selected.some(name => typeof name !== \"string\"))) throw new Error(\"Invalid snapshot variable selection\");\n const snapshot = captureEnvironment(context.env, { names: selected as readonly string[] | undefined });\n value = metadata(await backend.execute({ ...request, resource: \"environment snapshot\", args: [], input: { name: request.args[0], snapshot } }, selectOpBackendContext(context)));\n } else if (action === \"restore\") {\n const stored = await backend.execute({ resource: \"environment snapshot\", action: \"get\", args: [request.args[0]], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context));\n metadata(stored);\n const snapshot = structuredClone((stored as { snapshot: EnvironmentSnapshot }).snapshot);\n const variables = restoreEnvironment(snapshot, context.env);\n context.signal.throwIfAborted();\n if (request.flags.shell !== undefined) {\n if (typeof request.flags.shell !== \"string\" || request.args.length !== 1) throw new Error(\"Shell output cannot be combined with a child command\");\n await context.stdout.write(createOpTextCodec(request.flags.encoding).encode(shellScript(request.flags.shell, snapshot, context.env)));\n } else if (request.args.length > 1) {\n if (!context.invoke) throw new Error(\"Environment restoration requires a host invocation capability\");\n if (request.flags[\"no-masking\"] === true) {\n const result = await context.invoke(request.args[1], request.args.slice(2), { env: variables });\n context.signal.throwIfAborted();\n return result;\n }\n const values = Object.values(snapshot.variables).filter((value): value is string => typeof value === \"string\");\n const stdout = createMaskedSink(context.stdout, values, context.signal);\n const stderr = createMaskedSink(context.stderr, values, context.signal);\n const result = await context.invoke(request.args[1], request.args.slice(2), { env: variables, stdout: stdout.sink, stderr: stderr.sink });\n context.signal.throwIfAborted();\n await stdout.flush();\n await stderr.flush();\n return result;\n } else {\n if (!context.restoreEnvironment) throw new Error(\"Host environment restoration is unavailable; use --shell or supply a child command after --\");\n await context.restoreEnvironment(snapshot, { signal: context.signal });\n context.signal.throwIfAborted();\n }\n return { exitCode: 0 };\n } else {\n value = await backend.execute({ ...request, resource: \"environment snapshot\" }, selectOpBackendContext(context));\n if (action === \"list\") {\n if (!Array.isArray(value)) throw new Error(\"Invalid snapshot collection\");\n value = value.map(metadata);\n } else if (action === \"get\") metadata(value);\n }\n context.signal.throwIfAborted();\n if (value !== undefined) await context.stdout.write(createOpTextCodec(request.flags.encoding).encode(`${JSON.stringify(value, null, 2)}\\n`));\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: EnvironmentCommandContext) {\n const source = createSourceSnapshot(context);\n if (action === \"list\" ? request.args.length !== 0 : action === \"restore\" ? request.args.length < 1 : request.args.length !== 1) throw new Error(\"Invalid environment snapshot arguments\");\n if (action === \"create\") {\n const selected = request.flags.vars;\n if (selected !== undefined && (!Array.isArray(selected) || selected.some(name => typeof name !== \"string\"))) throw new Error(\"Invalid snapshot variable selection\");\n const snapshot = captureEnvironment(source.context.env, { names: selected as readonly string[] | undefined });\n return createHandlerPreparation([{ ...request, resource: \"environment snapshot\", args: [], input: { name: request.args[0], snapshot } }], source.context, [{ kind: \"stdout\", environmentNames: Object.keys(snapshot.variables), unsetNames: Object.entries(snapshot.variables).filter(([, value]) => value === null).map(([key]) => key) }]);\n }\n if (action !== \"restore\") return createHandlerPreparation([{ ...request, resource: \"environment snapshot\" }], source.context, [{ kind: \"stdout\" }]);\n const nested = { resource: \"environment snapshot\", action: \"get\", args: [request.args[0]!], flags: selectOpGlobalFlags(request.flags) };\n const effect: OpEffectIntent = request.flags.shell !== undefined ? { kind: \"stdout\" } : request.args.length > 1 ? { kind: \"invoke\", command: request.args[1]!, args: request.args.slice(2), masking: request.flags[\"no-masking\"] !== true } : { kind: \"restore\" };\n return createHandlerPreparation([nested], source.context, [effect], metadata => {\n const environment = metadata[0]?.environment;\n if (!environment || !environment.dependenciesComplete || !environment.scope || !environment.unsetNames) throw new Error(\"Snapshot key metadata is unavailable\");\n const unsetNames = new Set(environment.unsetNames);\n if (environment.scope === \"complete\") for (const key of Object.keys(source.context.env)) if (!environment.names.includes(key)) unsetNames.add(key);\n const names = new Set(environment.scope === \"selected\" && effect.kind === \"invoke\" ? Object.keys(source.context.env) : []);\n for (const key of environment.names) if (!unsetNames.has(key)) names.add(key);\n for (const key of unsetNames) names.delete(key);\n return [{ ...effect, environmentNames: [...names], unsetNames: [...unsetNames] }];\n });\n },\n });\n }\n return handlers;\n}\n", "import { parseOpFileMode, renderOpOutput, selectOpBackendContext, type OpCommandContext, type OpCommandOptions } from \"./cli.js\";\nimport type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { createHandlerPreparation, createSourceSnapshot } from \"./handler-preparation.js\";\n\nexport interface OpDocumentHandlerOptions {\n maxBytes?: number;\n}\n\nfunction textFlag(request: OpBackendRequest, name: string): string | undefined {\n const value = request.flags[name];\n if (value === undefined) return undefined;\n if (typeof value !== \"string\") throw new Error(`--${name} requires a string`);\n return value;\n}\n\nasync function uploadBytes(context: OpCommandContext, path: string | undefined, maxBytes: number): Promise<Uint8Array> {\n context.signal.throwIfAborted();\n if (path !== undefined && path !== \"-\") {\n if (!context.readFile) throw new Error(\"document upload requires a host readFile capability\");\n const bytes = await context.readFile(path);\n context.signal.throwIfAborted();\n if (bytes.byteLength > maxBytes) throw new Error(\"document exceeds byte limit\");\n return Uint8Array.from(bytes);\n }\n const chunks: Uint8Array[] = [];\n let length = 0;\n for await (const chunk of context.stdin) {\n context.signal.throwIfAborted();\n if (chunk.byteLength > maxBytes - length) throw new Error(\"document exceeds byte limit\");\n length += chunk.byteLength;\n chunks.push(Uint8Array.from(chunk));\n }\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n return bytes;\n}\n\nfunction readable(bytes: Uint8Array): boolean {\n try {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n return Array.from(text).every(character => {\n const code = character.codePointAt(0)!;\n return code === 9 || code === 10 || code === 13 || (code >= 32 && code !== 127 && (code < 128 || code > 159));\n });\n } catch { return false; }\n}\n\nexport function createDocumentHandlers(backend: OpBackend, options: OpDocumentHandlerOptions = {}): NonNullable<OpCommandOptions[\"handlers\"]> {\n const maxBytes = options.maxBytes ?? 16 * 1024 * 1024;\n if (!Number.isSafeInteger(maxBytes) || maxBytes < 0) throw new Error(\"maxBytes must be a nonnegative safe integer\");\n const handlers: Record<string, NonNullable<OpCommandOptions[\"handlers\"]>[string]> = {};\n for (const action of [\"create\", \"edit\"] as const) {\n const mutation = async (request: OpBackendRequest, context: OpCommandContext): Promise<OpBackendRequest> => {\n if (request.args.length > (action === \"create\" ? 1 : 2) || (action === \"edit\" && !request.args[0])) throw new Error(`invalid arguments for document ${action}`);\n const path = request.args[action === \"create\" ? 0 : 1];\n const explicitName = textFlag(request, \"file-name\");\n const title = textFlag(request, \"title\");\n const vault = textFlag(request, \"vault\");\n const filename = explicitName ?? (path !== undefined && path !== \"-\" ? path.split(\"\\\\\").join(\"/\").split(\"/\").at(-1) : undefined);\n if (filename === \"\") throw new Error(\"document filename must not be empty\");\n const content = await uploadBytes(context, path, maxBytes);\n const input = {\n content,\n ...(filename === undefined ? action === \"create\" ? { name: \"stdin\" } : {} : { name: filename }),\n ...(title === undefined ? action === \"create\" ? { title: filename ?? \"stdin\" } : {} : { title }),\n ...(action === \"create\" && vault !== undefined ? { vault } : {}),\n ...(request.flags.tags === undefined ? {} : { tags: request.flags.tags }),\n };\n context.signal.throwIfAborted();\n return { ...request, resource: \"document\", action, args: action === \"create\" ? [] : [request.args[0]!], input };\n };\n handlers[`document ${action}`] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n const prepared = await mutation(request, context);\n const result = await backend.execute(prepared, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const output = renderOpOutput(result, request);\n if (output !== undefined) await context.stdout.write(output);\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context, maxBytes);\n const path = request.args[action === \"create\" ? 0 : 1];\n if (path === undefined || path === \"-\") await source.input();\n const prepared = await mutation(request, { ...source.context, readFile: source.file });\n return createHandlerPreparation([prepared], source.context, [{ kind: \"stdout\" }]);\n },\n });\n }\n handlers[\"document get\"] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n if (request.args.length !== 1 || !request.args[0] || request.args[0] === \"-\") throw new Error(\"document get requires one document name or ID\");\n const path = textFlag(request, \"out-file\");\n const mode = path === undefined ? undefined : parseOpFileMode(request.flags[\"file-mode\"]);\n if (path !== undefined && !context.writeFile) throw new Error(\"document output requires a host writeFile capability\");\n context.signal.throwIfAborted();\n const result = await backend.execute(request, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const bytes = renderOpOutput(result, request);\n if (!(bytes instanceof Uint8Array)) throw new Error(\"document backend did not return content\");\n if (bytes.byteLength > maxBytes) throw new Error(\"document exceeds byte limit\");\n if (path !== undefined) await context.writeFile!(path, bytes, { mode, overwrite: request.flags.force === true });\n else {\n if (context.stdout.isTTY && request.flags.force !== true && !readable(bytes)) throw new Error(\"refusing binary document output to terminal; use --force or --out-file\");\n await context.stdout.write(bytes);\n }\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context, maxBytes);\n const path = textFlag(request, \"out-file\");\n return createHandlerPreparation([request], source.context, [path === undefined ? { kind: \"stdout\" } : { kind: \"file\", path, options: { mode: parseOpFileMode(request.flags[\"file-mode\"]), overwrite: request.flags.force === true } }]);\n },\n });\n return Object.freeze(handlers);\n}\n", "import type { OpBackend, OpBackendContext, OpItem, OpSecretReference } from \"./types.js\";\n\nexport function parseSecretReference(reference: string): OpSecretReference {\n if (reference.slice(0, 5).toLowerCase() !== \"op://\") throw new Error(\"Invalid secret reference scheme\");\n const queryStart = reference.indexOf(\"?\");\n const path = reference.slice(5, queryStart < 0 ? undefined : queryStart);\n const parts = path.split(\"/\");\n const allowed = \"abcdefghijklmnopqrstuvwxyz0123456789-_. \\t\\n\\r\\v\\f\";\n if ((parts.length !== 3 && parts.length !== 4) || parts.some(part => !part || [...part.toLowerCase()].some(character => !allowed.includes(character)))) {\n throw new Error(\"Invalid secret reference path; use IDs for unsupported names\");\n }\n const result: OpSecretReference = { vault: parts[0]!, item: parts[1]!, field: parts[parts.length - 1]! };\n if (parts.length === 4) result.section = parts[2]!;\n if (queryStart >= 0) {\n const query: Record<string, string> = {};\n for (const entry of reference.slice(queryStart + 1).split(\"&\")) {\n const separator = entry.indexOf(\"=\");\n const key = entry.slice(0, separator);\n const value = entry.slice(separator + 1);\n if (separator < 1 || !value || ![\"attribute\", \"attr\", \"ssh-format\"].includes(key) || Object.hasOwn(query, key)) throw new Error(\"Invalid secret reference query\");\n query[key] = value;\n }\n if (query.attribute && query.attr) throw new Error(\"Conflicting attribute parameters\");\n result.query = query;\n }\n return result;\n}\n\nexport function deriveItemFieldReferences(item: OpItem): OpItem {\n const result = structuredClone(item);\n if (result.fields === undefined) return result;\n result.fields = result.fields.map(field => {\n try {\n const parts = [result.vault.id, result.id, ...(field.section === undefined ? [] : [field.section.id]), field.id];\n if (parts.some(part => typeof part !== \"string\" || !part)) throw new Error();\n const reference = `op://${parts.join(\"/\")}`;\n const parsed = parseSecretReference(reference);\n if (parsed.vault !== result.vault.id || parsed.item !== result.id || parsed.section !== field.section?.id || parsed.field !== field.id || parsed.query !== undefined) throw new Error();\n return { ...field, reference };\n } catch {\n throw new Error(\"Cannot derive field reference from item IDs\");\n }\n });\n return result;\n}\n\nexport async function resolveSecretReference(reference: string, backend: OpBackend, context: OpBackendContext): Promise<unknown> {\n context.signal.throwIfAborted();\n parseSecretReference(reference);\n const value = await backend.execute({ resource: \"secret\", action: \"read\", args: [reference], flags: {} }, context);\n context.signal.throwIfAborted();\n return value;\n}\n", "export { webcrypto as opCrypto } from \"node:crypto\";\n", "import { opCrypto } from \"#op-crypto\";\n\nfunction decodeBase32(value: string): Uint8Array<ArrayBuffer> {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n const bytes: number[] = [];\n let pending = 0;\n let count = 0;\n let padding = false;\n for (const character of value.toUpperCase()) {\n if (character === \" \" || character === \"\\t\" || character === \"\\n\" || character === \"\\r\") continue;\n if (character === \"=\") { padding = true; continue; }\n const digit = alphabet.indexOf(character);\n if (digit < 0 || padding) throw new Error(\"Invalid OTP secret encoding\");\n pending = (pending << 5) | digit;\n count += 5;\n if (count >= 8) {\n count -= 8;\n bytes.push((pending >>> count) & 255);\n pending &= (1 << count) - 1;\n }\n }\n if (bytes.length === 0 || pending !== 0) throw new Error(\"Invalid OTP secret encoding\");\n return Uint8Array.from(bytes);\n}\n\nexport async function generateOtp(value: string, now = Date.now()): Promise<string> {\n let secret = value;\n let digits = 6;\n let period = 30;\n let algorithm = \"SHA1\";\n if (value.startsWith(\"otpauth://\")) {\n let uri: URL;\n try { uri = new URL(value); } catch { throw new Error(\"Invalid OTP configuration\"); }\n if (uri.hostname !== \"totp\" || uri.username || uri.password || uri.port) throw new Error(\"Invalid OTP configuration\");\n secret = uri.searchParams.get(\"secret\") ?? \"\";\n digits = Number(uri.searchParams.get(\"digits\") ?? \"6\");\n period = Number(uri.searchParams.get(\"period\") ?? \"30\");\n algorithm = (uri.searchParams.get(\"algorithm\") ?? \"SHA1\").toUpperCase();\n }\n if (![6, 8].includes(digits) || !Number.isSafeInteger(period) || period < 1 || !Number.isSafeInteger(now) || now < 0) {\n throw new Error(\"Invalid OTP configuration\");\n }\n const hashes: Record<string, string> = { SHA1: \"SHA-1\", SHA256: \"SHA-256\", SHA512: \"SHA-512\" };\n if (!Object.hasOwn(hashes, algorithm)) throw new Error(\"Invalid OTP algorithm\");\n const rawKey = decodeBase32(secret);\n const counter = new Uint8Array(8);\n new DataView(counter.buffer).setBigUint64(0, BigInt(Math.floor(now / 1000 / period)));\n try {\n const key = await opCrypto.subtle.importKey(\"raw\", rawKey, { name: \"HMAC\", hash: hashes[algorithm] }, false, [\"sign\"]);\n const digest = new Uint8Array(await opCrypto.subtle.sign(\"HMAC\", key, counter));\n const offset = digest[digest.length - 1] & 15;\n const binary = new DataView(digest.buffer).getUint32(offset) & 0x7fffffff;\n return String(binary % 10 ** digits).padStart(digits, \"0\");\n } finally {\n rawKey.fill(0);\n }\n}\n", "import type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpClock, OpObject, OpSession } from \"./types.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nexport function sameData(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true;\n if (left instanceof Uint8Array && right instanceof Uint8Array) return left.length === right.length && left.every((value, index) => value === right[index]);\n if (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();\n if (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => sameData(value, right[index]));\n if (!record(left) || !record(right)) return false;\n const keys = Object.keys(left);\n return keys.length === Object.keys(right).length && keys.every(key => Object.hasOwn(right, key) && sameData(left[key], right[key]));\n}\n\nfunction sameAuthorization(left: OpObject | undefined, right: OpObject | undefined): boolean {\n return left !== undefined && right !== undefined && sameData({ ...left, lastActivityAt: 0 }, { ...right, lastActivityAt: 0 });\n}\n\nfunction suspendedUser(session: OpObject, resources: ReadonlyMap<string, readonly OpObject[]>): boolean {\n return typeof session.user === \"string\" && (resources.get(\"user\") ?? []).some(user => user.id === session.user && user.state === \"SUSPENDED\");\n}\n\nexport function validateAuthentication(resources: ReadonlyMap<string, readonly OpObject[]>, policy: OpAuthenticationPolicy): void {\n if (![\"managed\", \"object-store\"].includes(policy.mode)) throw new Error(\"Invalid authentication policy\");\n const sessions = resources.get(\"session\") ?? [];\n const defaults = resources.get(\"session default\") ?? [];\n const appDefaults = resources.get(\"app default\") ?? [];\n if (policy.mode !== \"managed\" && (sessions.length || defaults.length || appDefaults.length)) throw new Error(\"Session state requires explicit managed authentication migration\");\n const accounts = resources.get(\"account\") ?? [];\n if (appDefaults.length > 1 || appDefaults.some(entry => typeof entry.id !== \"string\" || !entry.id || !accounts.some(account => account.id === entry.account))) throw new Error(\"Invalid app account preference\");\n const tokens = new Set<string>();\n const ids = new Set<string>();\n for (const session of sessions) {\n if (typeof session.id !== \"string\" || !session.id || ids.has(session.id.toLowerCase())) throw new Error(\"Invalid session ID\");\n ids.add(session.id.toLowerCase());\n if (typeof session.account !== \"string\" || !accounts.some(account => account.id === session.account)) throw new Error(\"Invalid session account\");\n if (![session.issuedAt, session.lastActivityAt].every(value => typeof value === \"number\" && Number.isFinite(value) && value >= 0) || Number(session.lastActivityAt) < Number(session.issuedAt)) throw new Error(\"Session timestamps require explicit migration\");\n if (session.revokedAt !== undefined && (typeof session.revokedAt !== \"number\" || !Number.isFinite(session.revokedAt) || session.revokedAt < Number(session.issuedAt))) throw new Error(\"Invalid session revocation\");\n if (session.mode === \"manual\") {\n if (typeof session.token !== \"string\" || !session.token || tokens.has(session.token)) throw new Error(\"Invalid manual session token\");\n tokens.add(session.token);\n } else if (session.mode === \"app\") {\n if (typeof session.terminalId !== \"string\" || !session.terminalId || session.token !== undefined) throw new Error(\"Invalid app authorization\");\n } else throw new Error(\"Session mode requires explicit migration\");\n if (session.user !== undefined && (typeof session.user !== \"string\" || !(resources.get(\"user\") ?? []).some(user => user.id === session.user))) throw new Error(\"Invalid session user\");\n }\n const terminals = new Set<string>();\n for (const entry of defaults) {\n if (typeof entry.terminalId !== \"string\" || !entry.terminalId || terminals.has(entry.terminalId) || !accounts.some(account => account.id === entry.account)) throw new Error(\"Invalid terminal account selection\");\n terminals.add(entry.terminalId);\n }\n}\n\nexport function inspectAuthentication(request: OpBackendRequest, context: OpBackendContext, source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock) {\n if (request.resource === \"app default\") throw new Error(\"App preference is updated only by signin\");\n validateAuthentication(source, policy);\n const managed = policy.mode === \"managed\";\n const command = request.action ? `${request.resource} ${request.action}` : request.resource;\n const local = [\"signin\", \"signout\", \"account add\", \"account list\", \"account forget\", \"item template list\", \"item template get\", \"plugin list\", \"plugin inspect\", \"plugin clear\", \"completion\"].includes(command);\n const terminalId = context.authentication?.terminalId;\n const integration = context.authentication?.integration === undefined ? \"manual\" : context.authentication.integration;\n if (integration !== \"manual\" && integration !== \"app\") throw new Error(\"Invalid authentication integration mode\");\n if (terminalId !== undefined && (typeof terminalId !== \"string\" || !terminalId)) throw new Error(\"Invalid authentication terminal identity\");\n const admittedAt = clock.now();\n if (!Number.isFinite(admittedAt) || admittedAt < 0) throw new Error(\"Invalid authentication clock\");\n const accounts = source.get(\"account\") ?? [];\n const selectAccount = (selector: unknown): string => {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Account selection is required\");\n const folded = selector.toLowerCase();\n const ids = accounts.filter(account => account.id.toLowerCase() === folded);\n const matches = ids.length ? ids : accounts.filter(account => [account.name, account.title, account.email, account.shorthand, account.url, account.address, account.user_uuid, account.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(\"Account selection is required\");\n return matches[0]!.id;\n };\n let account = request.flags.account === undefined ? undefined : selectAccount(request.flags.account);\n let session: OpSession | undefined;\n const sessions = (source.get(\"session\") ?? []) as OpSession[];\n if (request.flags.session !== undefined) {\n session = sessions.find(entry => entry.mode === \"manual\" && entry.token === request.flags.session);\n if (!session || (account !== undefined && account !== session.account)) throw new Error(\"Invalid session\");\n account = session.account;\n } else if (managed) {\n account ??= (integration === \"app\" ? source.get(\"app default\")?.[0]?.account : (source.get(\"session default\") ?? []).find(entry => entry.terminalId === terminalId)?.account) as string | undefined;\n if (!local || command === \"signin\") {\n if (local && !account && accounts.length === 1 && integration === \"manual\") account = accounts[0]!.id;\n if (!local && !account) throw new Error(\"Account selection is required\");\n session = integration === \"app\" ? sessions.filter(entry => entry.account === account && entry.mode === \"app\" && entry.terminalId === terminalId).sort((left, right) => right.issuedAt - left.issuedAt)[0] : undefined;\n if (!session && !local) throw new Error(\"No authenticated session\");\n }\n }\n if (session && suspendedUser(session, source)) throw new Error(\"Session user is suspended\");\n if (session && (session.revokedAt !== undefined || admittedAt < session.lastActivityAt || admittedAt - session.lastActivityAt >= (session.mode === \"manual\" ? 1_800_000 : 600_000) || (session.mode === \"app\" && admittedAt - session.issuedAt >= 43_200_000))) {\n if ([\"signin\", \"signout\", \"account forget\"].includes(command)) session = undefined;\n else throw new Error(\"Session expired or revoked\");\n }\n const global = request.resource === \"account\" && ([\"list\", \"add\"].includes(request.action) || request.action === \"forget\" && (request.args.length > 0 || request.flags.all === true)) || request.resource === \"signout\" && request.flags.all === true || request.resource === \"item template\";\n const scopedRequest = account !== undefined && !global ? { ...request, flags: { ...request.flags, account } } : request;\n if (managed && !global && account === undefined && (integration === \"app\" || ![\"signin\", \"signout\"].includes(command) || accounts.length > 1)) throw new Error(\"Account selection is required\");\n return { request: scopedRequest, session, command, local, admittedAt, account, terminalId, integration };\n}\n\nexport function beginAuthentication(request: OpBackendRequest, context: OpBackendContext, source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock) {\n const { request: scopedRequest, session, command, local, admittedAt, account, terminalId, integration } = inspectAuthentication(request, context, source, policy, clock);\n const original = structuredClone(source);\n const resources = structuredClone(source);\n let signedIn: { session: OpSession; nextId: () => string } | undefined;\n return {\n request: scopedRequest,\n resources,\n sessionId: session?.id,\n recordSignin(granted: OpSession, nextId: () => string) {\n if (![\"signin\", \"account add\"].includes(command)) throw new Error(\"Unexpected signin result\");\n signedIn = { session: structuredClone(granted), nextId };\n },\n commit() {\n context.signal.throwIfAborted();\n if (session && (suspendedUser(session, source) || !sameAuthorization(session, (source.get(\"session\") ?? []).find(entry => entry.id === session.id)))) throw new Error(\"Authorization changed during operation\");\n if ([\"signin\", \"account add\"].includes(command) && terminalId !== undefined) {\n const defaults = resources.get(\"session default\") ?? [];\n const selected = defaults.filter(entry => entry.terminalId === terminalId).at(-1);\n if (selected) resources.set(\"session default\", defaults.filter(entry => entry.terminalId !== terminalId || entry === selected));\n }\n validateAuthentication(resources, policy);\n const candidate = new Map(source);\n for (const [resource, objects] of resources) {\n const before = original.get(resource) ?? [];\n if (sameData(objects, before)) continue;\n const initial = new Map(before.map(entry => [entry.id.toLowerCase(), entry]));\n const proposed = new Map(objects.map(entry => [entry.id.toLowerCase(), entry]));\n const current = new Map((source.get(resource) ?? []).map(entry => [entry.id.toLowerCase(), entry]));\n for (const id of new Set([...initial.keys(), ...proposed.keys()])) {\n if (sameData(initial.get(id), proposed.get(id))) continue;\n if (!sameData(initial.get(id), current.get(id)) && !(resource === \"session\" && sameAuthorization(initial.get(id), current.get(id)))) throw new Error(command === \"plugin clear\" && resource === \"plugin\" ? \"Plugin changed during confirmation\" : \"Object changed during authenticated operation\");\n const replacement = proposed.get(id);\n if (replacement) current.set(id, resource === \"session\" && sameAuthorization(replacement, current.get(id)) ? { ...replacement, lastActivityAt: Math.max(Number(replacement.lastActivityAt), Number(current.get(id)!.lastActivityAt)) } : replacement);\n else current.delete(id);\n }\n candidate.set(resource, [...current.values()]);\n }\n const invalidatedUsers = new Set((candidate.get(\"user\") ?? []).filter(user => {\n const previous = (source.get(\"user\") ?? []).find(entry => entry.id === user.id);\n return previous?.state !== user.state && (previous?.state === \"SUSPENDED\" || user.state === \"SUSPENDED\");\n }).map(user => user.id));\n if (invalidatedUsers.size) candidate.set(\"session\", (candidate.get(\"session\") ?? []).filter(entry => typeof entry.user !== \"string\" || !invalidatedUsers.has(entry.user)));\n for (const entry of candidate.get(\"session\") ?? []) {\n if (suspendedUser(entry, candidate) && !sameAuthorization(entry, (source.get(\"session\") ?? []).find(existing => existing.id === entry.id))) throw new Error(\"Cannot authorize a suspended user\");\n }\n if (signedIn) {\n const grantedId = signedIn.session.id;\n const granted = (candidate.get(\"session\") ?? []).find(entry => entry.id === grantedId) as OpSession | undefined;\n const mode = request.flags.session === undefined ? integration : \"manual\";\n const signedInAt = clock.now();\n if (!Number.isFinite(signedInAt) || signedInAt < admittedAt || !granted || !sameAuthorization(granted, signedIn.session) || granted.mode !== mode || (account !== undefined && granted.account !== account) || suspendedUser(granted, candidate) || granted.revokedAt !== undefined || signedInAt < granted.lastActivityAt || signedInAt - granted.lastActivityAt >= (granted.mode === \"app\" ? 600_000 : 1_800_000) || (granted.mode === \"app\" && (terminalId === undefined || granted.terminalId !== terminalId || signedInAt - granted.issuedAt >= 43_200_000))) throw new Error(\"Invalid signin authorization\");\n const key = granted.mode === \"app\" ? \"app default\" : \"session default\";\n if (granted.mode === \"app\" || terminalId !== undefined) {\n const matches = (entries: readonly OpObject[]) => granted.mode === \"app\" ? entries : entries.filter(entry => entry.terminalId === terminalId);\n if (!sameData(matches(original.get(key) ?? []), matches(source.get(key) ?? []))) throw new Error(\"Account preference changed during signin\");\n const defaults = candidate.get(key) ?? [];\n const existing = matches(defaults)[0];\n let id = existing?.id;\n while (id === undefined) {\n const proposed = signedIn.nextId();\n if (![...candidate.values()].some(entries => entries.some(entry => entry.id.toLowerCase() === proposed.toLowerCase() || [entry.fields, entry.sections, entry.files].some(children => Array.isArray(children) && children.some(child => record(child) && typeof child.id === \"string\" && child.id.toLowerCase() === proposed.toLowerCase()))))) id = proposed;\n }\n const preference = { id, account: granted.account, ...(granted.mode === \"manual\" ? { terminalId } : {}) };\n candidate.set(key, [...(granted.mode === \"app\" ? [] : defaults.filter(entry => entry.terminalId !== terminalId)), preference]);\n }\n }\n if (session && (!local || command === \"signin\")) {\n const current = (candidate.get(\"session\") ?? []).find(entry => entry.id === session.id) as OpSession | undefined;\n if (current && current.revokedAt === undefined && sameAuthorization(current, session)) {\n candidate.set(\"session\", (candidate.get(\"session\") ?? []).map(entry => entry === current ? { ...current, lastActivityAt: Math.max(current.lastActivityAt, admittedAt) } : entry));\n }\n }\n validateAuthentication(candidate, policy);\n for (const [resource, objects] of candidate) source.set(resource, objects);\n },\n };\n}\n", "export const objectBatchCommands = Object.freeze([\n \"vault get\", \"vault edit\", \"vault delete\", \"item get\", \"item delete\", \"item move\", \"vault group list\", \"document delete\",\n \"group get\", \"group edit\", \"group delete\",\n \"user get\", \"user edit\", \"user delete\", \"user confirm\", \"user reactivate\", \"user suspend\"\n]);\n\nexport function parseObjectSelectors(input: unknown): string[] {\n const selectors: string[] = [];\n const invalid = () => new Error(\"Object selectors are required\");\n const collect = (value: unknown): void => {\n if (Array.isArray(value)) {\n for (const entry of value) collect(entry);\n return;\n }\n if (typeof value === \"string\") {\n if (!value.trim()) throw invalid();\n selectors.push(value);\n return;\n }\n if (value === null || typeof value !== \"object\" || (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)) throw invalid();\n const descriptor = Object.getOwnPropertyDescriptor(value, \"id\");\n if (!descriptor) return;\n if (!(\"value\" in descriptor) || typeof descriptor.value !== \"string\" || !descriptor.value.trim()) throw invalid();\n selectors.push(descriptor.value);\n };\n if (typeof input !== \"string\") collect(input);\n else {\n const source = input.trim();\n if (!source.startsWith(\"{\") && !source.startsWith(\"[\")) {\n for (const line of source.split(\"\\n\")) if (line.trim()) selectors.push(line.trim());\n } else {\n let start = 0;\n let depth = 0;\n let quoted = false;\n let escaped = false;\n for (let index = 0; index < source.length; index++) {\n const character = source[index]!;\n if (depth === 0) {\n if (!character.trim()) { start = index + 1; continue; }\n if (character !== \"{\" && character !== \"[\") throw invalid();\n }\n if (quoted) {\n if (escaped) escaped = false;\n else if (character === \"\\\\\") escaped = true;\n else if (character === '\"') quoted = false;\n } else if (character === '\"') quoted = true;\n else if (character === \"{\" || character === \"[\") depth++;\n else if (character === \"}\" || character === \"]\") {\n depth--;\n if (depth === 0) {\n let value: unknown;\n try { value = JSON.parse(source.slice(start, index + 1)); }\n catch { throw invalid(); }\n collect(value);\n start = index + 1;\n }\n }\n }\n if (depth !== 0 || quoted) throw invalid();\n }\n }\n if (!selectors.length) throw invalid();\n return selectors;\n}\n", "const prerequisites: Readonly<Record<string, readonly string[]>> = {\n view_items: [],\n create_items: [\"view_items\"],\n view_and_copy_passwords: [\"view_items\"],\n edit_items: [\"view_and_copy_passwords\", \"view_items\"],\n archive_items: [\"edit_items\", \"view_and_copy_passwords\", \"view_items\"],\n delete_items: [\"edit_items\", \"view_and_copy_passwords\", \"view_items\"],\n view_item_history: [\"view_and_copy_passwords\", \"view_items\"],\n import_items: [\"create_items\", \"view_items\"],\n export_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n copy_and_share_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n print_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n manage_vault: [],\n};\n\nconst umbrellas: Readonly<Record<string, readonly string[]>> = {\n allow_viewing: [\"view_items\", \"view_and_copy_passwords\", \"view_item_history\"],\n allow_editing: [\"create_items\", \"edit_items\", \"archive_items\", \"delete_items\", \"import_items\", \"export_items\", \"copy_and_share_items\", \"print_items\"],\n allow_managing: [\"manage_vault\"],\n};\n\nconst moveRequirements = [\"view_items\", \"edit_items\", \"archive_items\", \"view_and_copy_passwords\", \"view_item_history\", \"copy_and_share_items\"];\n\nexport function expandVaultPermissions(permissions: readonly string[]): string[] {\n const expanded = new Set<string>();\n for (const permission of permissions) {\n if (Object.hasOwn(umbrellas, permission)) {\n for (const granular of umbrellas[permission]!) expanded.add(granular);\n } else if (Object.hasOwn(prerequisites, permission) || permission === \"move_items\") expanded.add(permission);\n else throw new Error(\"Invalid vault permission\");\n }\n if (moveRequirements.every(permission => expanded.has(permission))) expanded.add(\"move_items\");\n return [...expanded];\n}\n\nexport function changeVaultPermissions(current: readonly string[], requested: readonly string[], action: \"grant\" | \"revoke\"): string[] {\n if (action === \"grant\" && !requested.length) throw new Error(\"Vault permissions are required\");\n if (action === \"revoke\" && !requested.length) return [];\n if (requested.includes(\"move_items\")) throw new Error(\"move_items is derived from its underlying vault permissions\");\n const existing = expandVaultPermissions(current).filter(permission => permission !== \"move_items\");\n const selected = expandVaultPermissions(requested).filter(permission => permission !== \"move_items\");\n const remaining = new Set(action === \"grant\" ? [...existing, ...selected] : existing.filter(permission => !selected.includes(permission)));\n const missing = new Set<string>();\n const dependent = new Set<string>();\n for (const permission of remaining) {\n for (const prerequisite of prerequisites[permission]!) {\n if (!remaining.has(prerequisite)) {\n missing.add(prerequisite);\n dependent.add(permission);\n }\n }\n }\n if (missing.size) {\n throw new Error(action === \"grant\"\n ? `Required vault permissions must be granted explicitly: ${[...missing].sort().join(\", \")}`\n : `Dependent vault permissions must also be revoked: ${[...dependent].sort().join(\", \")}`);\n }\n return expandVaultPermissions([...remaining]);\n}\n", "import type { OpBackendContext, OpObject, PluginDefault, PluginScope } from \"./types.js\";\n\nfunction object(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction absolutePath(value: unknown): { root: string; segments: string[] } {\n const invalid = () => new Error(\"Plugin scope requires normalized absolute paths\");\n if (typeof value !== \"string\" || value.includes(\"\\\\\") || [...value].some(character => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127)) throw invalid();\n let root: string;\n let remainder: string;\n let windows = false;\n if (value.startsWith(\"//\")) {\n const parts = value.slice(2).split(\"/\");\n if (parts.length < 2 || !parts[0] || !parts[1]) throw invalid();\n root = `//${parts[0]}/${parts[1]}`;\n remainder = value.slice(root.length + 1);\n if (value === `${root}/`) throw invalid();\n windows = true;\n } else if (value.startsWith(\"/\")) {\n root = \"/\";\n remainder = value.slice(1);\n } else if (value.length >= 3 && \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\".includes(value[0]!) && value.slice(1, 3) === \":/\") {\n root = value.slice(0, 3);\n remainder = value.slice(3);\n windows = true;\n } else throw invalid();\n const segments = remainder === \"\" ? [] : remainder.split(\"/\");\n const checked = windows && root.startsWith(\"//\") ? [...root.slice(2).split(\"/\"), ...segments] : segments;\n if (checked.some(segment => !segment || segment === \".\" || segment === \"..\" || (windows && ([...segment].some(character => '<>:\"|?*'.includes(character)) || segment.endsWith(\".\") || segment.endsWith(\" \"))))) throw invalid();\n return { root, segments };\n}\n\nfunction directoryChain(cwd: string, home: string): string[] {\n const current = absolutePath(cwd);\n absolutePath(home);\n const chain: string[] = [];\n for (let length = current.segments.length; length >= 0; length--) {\n const directory = current.root + (length && !current.root.endsWith(\"/\") ? \"/\" : \"\") + current.segments.slice(0, length).join(\"/\");\n chain.push(directory);\n if (directory === home) break;\n }\n return chain;\n}\n\nfunction parseScope(value: unknown): PluginScope {\n if (!object(value)) throw new Error(\"Invalid plugin default scope\");\n if (value.kind === \"global\") return { kind: \"global\" };\n if (value.kind === \"directory\" && typeof value.path === \"string\") {\n absolutePath(value.path);\n return { kind: \"directory\", path: value.path };\n }\n if (value.kind === \"terminal\" && typeof value.terminalSession === \"string\" && value.terminalSession.length > 0) return { kind: \"terminal\", terminalSession: value.terminalSession };\n throw new Error(\"Invalid plugin default scope\");\n}\n\nexport async function clearPluginDefaults(plugin: OpObject, context: OpBackendContext, all: boolean, force: boolean): Promise<OpObject> {\n context.signal.throwIfAborted();\n if (Object.hasOwn(plugin, \"configuration\")) throw new Error(\"Plugin configuration requires explicit scope migration\");\n const trustedScope = context.pluginScope;\n if (!trustedScope) throw new Error(\"Plugin scope context is unavailable\");\n const { cwd, home, terminalSession } = trustedScope;\n const chain = directoryChain(cwd, home);\n if (terminalSession !== undefined && (typeof terminalSession !== \"string\" || !terminalSession.length)) throw new Error(\"Invalid plugin terminal identity\");\n if (plugin.defaults !== undefined && !Array.isArray(plugin.defaults)) throw new Error(\"Invalid plugin defaults\");\n const ids = new Set<string>();\n const scopes = new Set<string>();\n const defaults: PluginDefault[] = (plugin.defaults ?? []).map((entry: unknown) => {\n if (!object(entry) || typeof entry.id !== \"string\" || !entry.id || !object(entry.configuration)) throw new Error(\"Invalid plugin default\");\n const scope = parseScope(entry.scope);\n const key = JSON.stringify(scope);\n if (ids.has(entry.id) || scopes.has(key)) throw new Error(\"Plugin defaults contain duplicate IDs or scopes\");\n ids.add(entry.id);\n scopes.add(key);\n return { id: entry.id, scope, configuration: entry.configuration };\n });\n const applicable = defaults.flatMap(entry => {\n const scope = entry.scope;\n const priority = scope.kind === \"global\" ? chain.length + 1 : scope.kind === \"terminal\" ? scope.terminalSession === terminalSession ? 0 : -1 : chain.indexOf(scope.path) < 0 ? -1 : chain.indexOf(scope.path) + 1;\n return priority < 0 ? [] : [{ entry, priority }];\n }).sort((left, right) => left.priority - right.priority);\n const selected = all ? applicable : applicable.slice(0, 1);\n if (!selected.length) return plugin;\n if (!force) {\n const confirm = context.confirmPluginClear;\n if (!confirm) throw new Error(\"Plugin clear confirmation capability is unavailable\");\n const confirmation = Object.freeze({ pluginId: plugin.id, defaults: Object.freeze(selected.map(({ entry }) => Object.freeze({ id: entry.id, scope: Object.freeze({ ...entry.scope }) }))) });\n let onAbort!: () => void;\n const aborted = new Promise<never>((_resolve, reject) => {\n onAbort = () => reject(new DOMException(\"Plugin clear aborted\", \"AbortError\"));\n context.signal.addEventListener(\"abort\", onAbort, { once: true });\n if (context.signal.aborted) onAbort();\n });\n let accepted: boolean;\n try {\n accepted = await Promise.race([aborted, Promise.resolve().then(() => {\n context.signal.throwIfAborted();\n return confirm(confirmation, Object.freeze({ signal: context.signal }));\n })]);\n } catch {\n if (context.signal.aborted) throw new DOMException(\"Plugin clear aborted\", \"AbortError\");\n throw new Error(\"Plugin clear confirmation failed\");\n } finally {\n context.signal.removeEventListener(\"abort\", onAbort);\n }\n if (accepted !== true) throw new Error(\"Plugin clear was not confirmed\");\n }\n context.signal.throwIfAborted();\n const removed = new Set(selected.map(({ entry }) => entry.id));\n return { ...plugin, defaults: (plugin.defaults as PluginDefault[]).filter(entry => !removed.has(entry.id)) };\n}\n", "import type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpClock, OpObject, OpSession, OpTerminalAccount } from \"./types.js\";\nimport { beginAuthentication, sameData } from \"./auth.js\";\nimport { objectBatchCommands, parseObjectSelectors } from \"./selectors.js\";\nimport { changeVaultPermissions, expandVaultPermissions } from \"./permissions.js\";\nimport { clearPluginDefaults } from \"./plugin-scopes.js\";\n\nexport interface OpAdminHookResult {\n value?: unknown;\n resources?: Readonly<Record<string, readonly OpObject[]>>;\n authentication?: {\n sessions?: readonly OpSession[];\n terminalAccounts?: readonly OpTerminalAccount[];\n signedInSession?: string;\n };\n}\n\nexport type OpAdminHook = (request: OpBackendRequest, context: OpBackendContext, resources: ReadonlyMap<string, readonly OpObject[]>) => Promise<OpAdminHookResult>;\n\nexport interface OpAdminContext extends OpBackendContext {\n adminHooks?: Readonly<Record<string, OpAdminHook>>;\n nextId?: () => string;\n authenticationPolicy?: OpAuthenticationPolicy;\n clock?: OpClock;\n}\n\nexport const externalCommands = new Set([\n \"account add\", \"signin\", \"service-account create\", \"service-account ratelimit\",\n \"connect server create\", \"connect token create\", \"events-api create\",\n \"user provision\", \"user recovery begin\", \"plugin init\", \"plugin run\",\n \"item share\", \"update\", \"plugin credential import\",\n]);\n\nconst relations: Readonly<Record<string, readonly [string, string, string, string]>> = {\n \"group user\": [\"group\", \"group\", \"user\", \"user\"],\n \"vault user\": [\"vault\", \"vault\", \"user\", \"user\"],\n \"vault group\": [\"vault\", \"vault\", \"group\", \"group\"],\n \"connect vault\": [\"server\", \"connect server\", \"vault\", \"vault\"],\n \"connect group\": [\"server\", \"connect server\", \"group\", \"group\"],\n};\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nfunction merge(target: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown> {\n const result = { ...target };\n for (const [key, value] of Object.entries(patch)) {\n Object.defineProperty(result, key, { value: record(value) && record(target[key]) ? merge(target[key], value) : structuredClone(value), enumerable: true, configurable: true, writable: true });\n }\n return result;\n}\n\nfunction select(objects: readonly OpObject[], selector: unknown): OpObject {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Object selector is required\");\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.email, object.shorthand, object.url, object.address, object.user_uuid, object.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n\nfunction selectors(request: OpBackendRequest): string[] {\n if (request.args.length === 1 && request.args[0] === \"-\") {\n return parseObjectSelectors(request.input);\n }\n if (request.args.length !== 1) throw new Error(\"One object selector is required\");\n return [...request.args];\n}\n\nfunction stringList(value: unknown): string[] {\n if (value === undefined) return [];\n const values = typeof value === \"string\" ? value.split(\",\") : value;\n if (!Array.isArray(values) || values.some(entry => typeof entry !== \"string\" || !entry)) throw new Error(\"Invalid list value\");\n return [...new Set(values as string[])];\n}\n\nfunction objectId(resources: ReadonlyMap<string, readonly OpObject[]>): string {\n const used = new Set<string>();\n for (const objects of resources.values()) {\n for (const object of objects) {\n used.add(object.id.toLowerCase());\n for (const children of [object.fields, object.sections, object.files]) {\n if (!Array.isArray(children)) continue;\n for (const child of children) {\n if (record(child) && typeof child.id === \"string\") used.add(child.id.toLowerCase());\n }\n }\n }\n }\n let sequence = 1;\n while (used.has(sequence.toString(36).padStart(26, \"a\"))) sequence++;\n return sequence.toString(36).padStart(26, \"a\");\n}\n\nexport function createAccountScope(request: OpBackendRequest, source: Map<string, OpObject[]>): { resources: Map<string, OpObject[]>; account?: string; commit: (value?: unknown) => void } {\n const accounts = source.get(\"account\") ?? [];\n const globalCommand = request.flags.account === undefined && (request.resource === \"account\" || (request.resource === \"signout\" && request.flags.all === true) || request.resource === \"item template\");\n let selected: OpObject | undefined;\n if (request.flags.account !== undefined) selected = select(accounts, request.flags.account);\n else if (!globalCommand && accounts.length) {\n const session = (source.get(\"session\") ?? []).at(-1);\n if (session) selected = select(accounts, record(session.account) ? session.account.id : session.account);\n else if (accounts.length === 1) selected = accounts[0];\n else throw new Error(\"Account selection is required\");\n }\n if (!selected) return { resources: source, commit() {} };\n const accountId = selected.id;\n const accountReference = (value: unknown): string => select(accounts, record(value) ? value.id : value).id;\n const ownership = (resource: string, object: OpObject, all: ReadonlyMap<string, readonly OpObject[]>, seen = new Set<OpObject>()): string | undefined => {\n if (resource === \"account\") return object.id;\n if (seen.has(object)) return undefined;\n seen.add(object);\n const owners = new Set<string>();\n if (object.account !== undefined) owners.add(accountReference(object.account));\n const links: [string, string][] = [];\n if (object.vault !== undefined) links.push([\"vault\", \"vault\"]);\n if (object.item !== undefined) links.push([\"item\", \"item\"]);\n const relation = relations[resource];\n if (relation) links.push([relation[0], relation[1]], [relation[2], relation[3]]);\n if (resource === \"connect token\") links.push([object.integrationId !== undefined ? \"integrationId\" : \"server\", \"connect server\"]);\n if (resource === \"session\" && object.user !== undefined) links.push([\"user\", \"user\"]);\n for (const [key, target] of links) {\n if (object[key] === undefined || object[key] === \"*\" || object[key] === \"managers\") continue;\n const value = object[key];\n const candidates = all.get(target) ?? [];\n const linked = select(candidates, record(value) ? value.id : value);\n const owner = ownership(target, linked, all, new Set(seen));\n if (owner === undefined) return undefined;\n owners.add(owner);\n }\n if (owners.size > 1) throw new Error(\"Object links cross account boundaries\");\n return owners.values().next().value ?? (accounts.length === 1 ? accountId : undefined);\n };\n const resources = new Map<string, OpObject[]>();\n for (const [resource, objects] of source) {\n const visible = objects.filter(object => {\n if (resource === \"item template\" && object.account === undefined) return true;\n const owner = ownership(resource, object, source);\n if (owner === undefined && resource === request.resource && request.action === \"list\") throw new Error(\"Account ownership is unavailable for this resource\");\n return owner === accountId;\n });\n resources.set(resource, structuredClone(visible));\n }\n for (const [flag, resource] of [[\"vault\", \"vault\"], [\"current-vault\", \"vault\"], [\"destination-vault\", \"vault\"], [\"group\", \"group\"], [\"user\", \"user\"], [\"server\", \"connect server\"]]) {\n const value = request.flags[flag!];\n if (value === undefined) continue;\n if (flag === \"vault\" && request.action === \"create\" && [\"service-account\", \"connect token\"].includes(request.resource)) {\n const grants = typeof value === \"string\" ? [value] : value;\n if (!Array.isArray(grants) || grants.some(grant => typeof grant !== \"string\")) throw new Error(\"Invalid vault grants\");\n for (const grant of grants as string[]) {\n const separator = request.resource === \"service-account\" ? grant.lastIndexOf(\":\") : grant.lastIndexOf(\",\");\n const hasPermissions = separator >= 0 && (request.resource === \"service-account\" || [\"r\", \"w\"].includes(grant.slice(separator + 1)));\n select(resources.get(\"vault\") ?? [], hasPermissions ? grant.slice(0, separator) : grant);\n }\n } else select(resources.get(resource!) ?? [], value);\n }\n if (request.resource === \"connect server\" && request.action === \"create\") {\n for (const vault of stringList(request.flags.vaults)) select(resources.get(\"vault\") ?? [], vault);\n }\n const batchInput = request.args.length === 1 && request.args[0] === \"-\" && objectBatchCommands.includes(`${request.resource} ${request.action}`);\n const inputs = request.resource === \"item\" && request.action === \"create\" && Array.isArray(request.input) ? request.input : [request.input];\n for (const input of batchInput ? [] : inputs) {\n if (!record(input)) continue;\n if (input.account !== undefined && accountReference(input.account) !== accountId) throw new Error(\"Object account differs from selected account\");\n if (input.vault !== undefined) select(resources.get(\"vault\") ?? [], record(input.vault) ? input.vault.id : input.vault);\n }\n const targetResource = request.resource === \"user recovery\" ? \"user\" : request.resource;\n if (request.resource !== \"item template\" && request.args[0] !== undefined && request.args[0] !== \"-\" && [\"get\", \"edit\", \"update\", \"delete\", \"move\", \"share\", \"suspend\", \"reactivate\", \"confirm\", \"inspect\", \"clear\", \"forget\", \"begin\"].includes(request.action)) {\n try { select(resources.get(targetResource) ?? [], request.args[0]); }\n catch (error) {\n let known = true;\n try { select(source.get(targetResource) ?? [], request.args[0]); }\n catch (lookupError) { if (lookupError instanceof Error && lookupError.message === \"Object not found\") known = false; }\n if (known) throw error;\n }\n }\n const initial = structuredClone(resources);\n return {\n resources,\n account: accountId,\n commit(value) {\n const projected = (request.resource === \"environment\" && request.action === \"read\") || (request.resource === \"item\" && request.flags.fields !== undefined);\n for (const entry of projected ? [] : Array.isArray(value) ? value : [value]) {\n if (!record(entry) || typeof entry.id !== \"string\") continue;\n if (entry.account !== undefined && accountReference(entry.account) !== accountId) throw new Error(\"Result account differs from selected account\");\n const id = entry.id.toLowerCase();\n const existing = (source.get(request.resource) ?? []).find(object => object.id.toLowerCase() === id);\n if (existing && ownership(request.resource, existing, source) !== accountId) throw new Error(\"Result belongs to a different account\");\n }\n const changes = new Map<string, OpObject[]>();\n for (const [resource, objects] of resources) {\n const before = initial.get(resource) ?? [];\n if (sameData(objects, before)) continue;\n const originals = new Map(before.map(object => [object.id.toLowerCase(), object]));\n const proposed = new Map(objects.map(object => [object.id.toLowerCase(), object]));\n const current = new Map((source.get(resource) ?? []).map(object => [object.id.toLowerCase(), object]));\n for (const id of new Set([...originals.keys(), ...proposed.keys()])) {\n const original = originals.get(id);\n const replacement = proposed.get(id);\n if (sameData(original, replacement)) continue;\n if (!sameData(current.get(id), original)) throw new Error(\"Object changed during scoped operation\");\n if (replacement === undefined) current.delete(id);\n else {\n const published = structuredClone(replacement);\n if (!original && published.account === undefined && resource !== \"account\" && resource !== \"item template\") published.account = accountId;\n current.set(id, published);\n }\n }\n changes.set(resource, [...current.values()]);\n }\n const candidate = new Map([...source, ...changes]);\n for (const [resource, objects] of changes) {\n const scopedIds = new Set((resources.get(resource) ?? []).map(object => object.id));\n for (const object of objects) {\n if (!scopedIds.has(object.id)) continue;\n if (resource === \"item template\" && object.account === undefined) continue;\n if (ownership(resource, object, candidate) !== accountId) throw new Error(\"Object account differs from selected account\");\n }\n }\n for (const [resource, objects] of changes) source.set(resource, objects);\n }\n };\n}\n\nexport async function executeAdminRequest(request: OpBackendRequest, context: OpAdminContext, resources: Map<string, OpObject[]>): Promise<{ handled: boolean; value?: unknown }> {\n context.signal.throwIfAborted();\n if (context.binding) throw new Error(\"Direct admin execution does not support bindings\");\n const adminContext = context as OpAdminContext;\n const authentication = beginAuthentication(request, context, resources, adminContext.authenticationPolicy ?? { mode: \"object-store\" }, adminContext.clock ?? { now: Date.now });\n request = authentication.request;\n const scope = createAccountScope(request, authentication.resources);\n const nextId = (context as OpAdminContext).nextId ?? (() => objectId(resources));\n const result = await executeAdmittedAdminRequest(request, context, scope.resources, nextId, scope.account, authentication.sessionId, authentication.recordSignin);\n context.signal.throwIfAborted();\n if (result.handled) {\n scope.commit(result.value);\n authentication.commit();\n }\n return result;\n}\n\nexport async function executeAdmittedAdminRequest(request: OpBackendRequest, context: OpBackendContext, resources: Map<string, OpObject[]>, nextId: () => string, selectedAccount?: string, sessionId?: string, recordSignin?: (session: OpSession, nextId: () => string) => void): Promise<{ handled: boolean; value?: unknown }> {\n const { resource, action, args, flags } = request;\n const owned = [\"account\", \"signin\", \"signout\", \"whoami\", \"group\", \"user\", \"user recovery\", \"service-account\", \"connect server\", \"connect token\", \"events-api\", \"environment\", \"plugin\"];\n context.signal.throwIfAborted();\n const command = action ? `${resource} ${action}` : resource;\n if (command === \"signin\" && sessionId !== undefined) {\n if (args.length) throw new Error(\"Unexpected arguments\");\n const session = (resources.get(\"session\") ?? []).find(entry => entry.id === sessionId)!;\n recordSignin?.(session as OpSession, nextId);\n return { handled: true, value: session.mode === \"manual\" ? session.token : undefined };\n }\n if (args.length === 1 && args[0] === \"-\" && objectBatchCommands.includes(command)) {\n const targetResource = resource === \"vault group\" ? \"vault\" : resource;\n const batch = parseObjectSelectors(request.input);\n let candidates = resources.get(targetResource) ?? [];\n if (resource === \"item\") {\n candidates = candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || batch.some(selector => object.id.toLowerCase() === selector.toLowerCase())));\n const vaultSelector = action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (vaultSelector !== undefined) {\n const vault = select(resources.get(\"vault\") ?? [], vaultSelector);\n candidates = candidates.filter(object => (record(object.vault) ? object.vault.id : object.vault) === vault.id);\n }\n }\n for (const selector of batch) select(candidates, selector);\n }\n const hook = (context as OpAdminContext).adminHooks?.[command];\n if (context.binding && (hook || externalCommands.has(command))) throw new Error(\"External admin hooks do not support bindings\");\n if (hook || externalCommands.has(command)) {\n if (!hook) throw new Error(\"Admin command requires an injected hook\");\n let result: OpAdminHookResult;\n try {\n const scope = context.pluginScope;\n const hookContext = Object.freeze({\n signal: context.signal,\n ...(context.authentication === undefined ? {} : { authentication: Object.freeze({ ...context.authentication }) }),\n ...(scope === undefined ? {} : { pluginScope: Object.freeze({ cwd: scope.cwd, home: scope.home, ...(scope.terminalSession === undefined ? {} : { terminalSession: scope.terminalSession }) }) }),\n });\n result = await hook(structuredClone(request), hookContext, structuredClone(resources));\n if (!record(result) || (result.resources !== undefined && !record(result.resources))) throw new Error();\n if (result.resources && [\"session\", \"session default\", \"app default\"].some(key => Object.hasOwn(result.resources!, key))) throw new Error(\"Use typed authentication hook state\");\n if (result.authentication !== undefined && (!record(result.authentication) || (result.authentication.sessions !== undefined && !Array.isArray(result.authentication.sessions)) || (result.authentication.terminalAccounts !== undefined && !Array.isArray(result.authentication.terminalAccounts)))) throw new Error();\n for (const entries of Object.values(result.resources ?? {})) {\n if (!Array.isArray(entries)) throw new Error();\n const ids = new Set<string>();\n for (const entry of entries) {\n if (!record(entry) || typeof entry.id !== \"string\" || !entry.id || ids.has(entry.id.toLowerCase())) throw new Error();\n ids.add(entry.id.toLowerCase());\n }\n }\n result = structuredClone(result);\n } catch {\n throw new Error(\"Admin hook failed\");\n }\n context.signal.throwIfAborted();\n for (const [key, entries] of Object.entries(result.resources ?? {})) resources.set(key, entries as OpObject[]);\n if (result.authentication?.sessions !== undefined) resources.set(\"session\", [...result.authentication.sessions]);\n if (result.authentication?.terminalAccounts !== undefined) resources.set(\"session default\", [...result.authentication.terminalAccounts]);\n if ([\"signin\", \"account add\"].includes(command) && result.authentication?.sessions?.length) {\n const mode = flags.session === undefined ? context.authentication?.integration ?? \"manual\" : \"manual\";\n const candidates = result.authentication.sessions.filter(session => session.mode === mode && (selectedAccount === undefined || session.account === selectedAccount) && (session.mode !== \"app\" || session.terminalId === context.authentication?.terminalId) && (result.authentication?.signedInSession === undefined || session.id === result.authentication.signedInSession));\n if (candidates.length !== 1) throw new Error(\"Signin hook must identify its authenticated session\");\n recordSignin?.(candidates[0]!, nextId);\n } else if (command === \"signin\") {\n throw new Error(\"Signin hook must provide authenticated session state\");\n }\n return { handled: true, value: structuredClone(result.value) };\n }\n\n if (!owned.includes(resource) && !Object.hasOwn(relations, resource) && !(resource === \"vault\" && action === \"list\" && (flags.user !== undefined || flags.group !== undefined))) return { handled: false };\n\n const working = structuredClone(resources);\n const entries = (key: string): OpObject[] => working.get(key) ?? [];\n const account = (): OpObject => {\n if (flags.account !== undefined) return select(entries(\"account\"), flags.account);\n const session = entries(\"session\").at(-1);\n if (session) return select(entries(\"account\"), session.account);\n if (entries(\"account\").length !== 1) throw new Error(\"Account selection is required\");\n return entries(\"account\")[0]!;\n };\n const session = (): OpObject => {\n const candidates = entries(\"session\").filter(entry => sessionId === undefined || entry.id === sessionId).filter(entry => flags.account === undefined || entry.account === account().id).filter(entry => flags.session === undefined || entry.token === flags.session);\n const selected = candidates.at(-1);\n if (!selected) throw new Error(\"No authenticated session\");\n return selected;\n };\n const remove = (key: string, objects: readonly OpObject[]) => {\n const ids = new Set(objects.map(object => object.id));\n working.set(key, entries(key).filter(object => !ids.has(object.id)));\n for (const [relation, [parent, parentResource, child, childResource]] of Object.entries(relations)) {\n working.set(relation, entries(relation).filter(entry => !(parentResource === key && ids.has(String(entry[parent]))) && !(childResource === key && ids.has(String(entry[child])))));\n }\n if (key === \"connect server\") working.set(\"connect token\", entries(\"connect token\").filter(entry => !ids.has(String(entry.integrationId ?? entry.server))));\n if (key === \"account\" || key === \"user\") working.set(\"session\", entries(\"session\").filter(entry => !ids.has(String(entry[key]))));\n if (key === \"account\") working.set(\"session default\", entries(\"session default\").filter(entry => !ids.has(String(entry.account))));\n if (key === \"account\") working.set(\"app default\", entries(\"app default\").filter(entry => !ids.has(String(entry.account))));\n };\n let value: unknown;\n if (resource === \"whoami\" && action === \"\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n const current = session();\n value = current.identity ?? select(entries(\"user\"), current.user);\n } else if (resource === \"signout\" && action === \"\") {\n if (args.length || (flags.all === true && flags.account !== undefined)) throw new Error(\"Conflicting account selection\");\n const selectedAccounts = flags.all === true ? entries(\"account\") : [account()];\n const ids = new Set(selectedAccounts.map(entry => entry.id));\n working.set(\"session\", entries(\"session\").filter(entry => !ids.has(String(entry.account))));\n working.set(\"session default\", entries(\"session default\").filter(entry => !ids.has(String(entry.account))));\n if (flags.forget === true) remove(\"account\", selectedAccounts);\n } else if (resource === \"account\") {\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n value = entries(\"account\");\n } else if (action === \"get\") {\n if (args.length > 1) throw new Error(\"One object selector is required\");\n value = args.length ? select(entries(\"account\"), args[0]) : account();\n } else if (action === \"forget\") {\n if (args.length > 1 || (flags.all === true && (args.length || flags.account !== undefined))) throw new Error(\"Conflicting account selection\");\n remove(\"account\", flags.all === true ? entries(\"account\") : [args.length ? select(entries(\"account\"), args[0]) : account()]);\n } else throw new Error(\"Unsupported admin action\");\n } else if (Object.hasOwn(relations, resource)) {\n const [parent, parentResource, child, childResource] = relations[resource]!;\n if (![\"grant\", \"revoke\", \"list\"].includes(action) || (action === \"list\" && resource.startsWith(\"connect\"))) throw new Error(\"Unsupported admin action\");\n if (action === \"list\") {\n if (args[0] === \"-\" && resource !== \"vault group\") throw new Error(\"Batch selectors are unsupported for this relationship\");\n const owners = selectors(request).map(selector => select(entries(parentResource), selector));\n value = owners.flatMap(owner => entries(resource).filter(entry => entry[parent] === owner.id).map(entry => ({ ...select(entries(childResource), entry[child]), ...(entry.role === undefined ? {} : { role: entry.role }), ...(entry.permissions === undefined ? {} : { permissions: entry.permissions }) })));\n } else {\n if (args.length) throw new Error(\"Unexpected arguments\");\n if (resource === \"connect group\" && flags[\"all-servers\"] === true && flags.server !== undefined) throw new Error(\"Conflicting server selection\");\n const owner = resource === \"connect group\" && flags.server === undefined ? flags[\"all-servers\"] === true ? \"*\" : \"managers\" : select(entries(parentResource), flags[parent]).id;\n const member = select(entries(childResource), flags[child]);\n const existing = entries(resource).find(entry => entry[parent] === owner && entry[child] === member.id);\n const permissions = stringList(flags.permissions);\n const role = typeof flags.role === \"string\" ? flags.role.toLowerCase() : flags.role ?? \"member\";\n if (resource === \"group user\" && (typeof role !== \"string\" || ![\"member\", \"manager\"].includes(role))) throw new Error(\"Invalid group role\");\n const remaining = resource.startsWith(\"vault \") ? changeVaultPermissions(stringList(existing?.permissions), permissions, action === \"grant\" ? \"grant\" : \"revoke\") : [];\n const relation: OpObject = { ...existing, id: existing?.id ?? nextId(), [parent]: owner, [child]: member.id, ...(resource === \"group user\" ? { role } : {}), ...(resource.startsWith(\"vault \") ? { permissions: remaining } : {}) };\n const others = entries(resource).filter(entry => entry !== existing);\n const keep = action === \"grant\" || (resource.startsWith(\"vault \") && remaining.length > 0);\n working.set(resource, keep ? [...others, relation] : others);\n value = keep ? relation : undefined;\n }\n } else if (resource === \"environment\" && action === \"read\") {\n const environment = select(entries(resource), selectors(request)[0]);\n if (!record(environment.variables)) throw new Error(\"Environment variables are unavailable\");\n value = environment.variables;\n } else if (resource === \"plugin\") {\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n value = entries(resource);\n } else if (action === \"inspect\") {\n if (!args.length) throw new Error(\"Plugin selection capability is unavailable\");\n value = select(entries(resource), selectors(request)[0]);\n } else if (action === \"clear\") {\n if (args.length !== 1 || args[0] === \"-\") throw new Error(\"Exactly one plugin is required\");\n const plugin = select(entries(resource), args[0]);\n const replacement = await clearPluginDefaults(plugin, context, flags.all === true, flags.force === true);\n context.signal.throwIfAborted();\n const current = resources.get(resource) ?? [];\n if (!sameData(current.find(entry => entry.id === plugin.id), plugin)) throw new Error(\"Plugin changed during confirmation\");\n resources.set(resource, current.map(entry => entry.id === plugin.id ? replacement : entry));\n return { handled: true };\n } else throw new Error(\"Unsupported admin action\");\n } else if ([\"group\", \"user\", \"connect server\", \"connect token\", \"vault\"].includes(resource)) {\n let candidates = entries(resource);\n if (resource === \"connect token\" && flags.server !== undefined) {\n const server = select(entries(\"connect server\"), flags.server);\n candidates = candidates.filter(entry => (entry.integrationId ?? entry.server) === server.id);\n }\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n for (const [relation, [parent, parentResource, child, childResource]] of Object.entries(relations)) {\n const filterKey = resource === parentResource ? child : resource === childResource ? parent : undefined;\n if (!filterKey || flags[filterKey] === undefined) continue;\n const filterResource = resource === parentResource ? childResource : parentResource;\n const filter = select(entries(filterResource), flags[filterKey]);\n candidates = candidates.flatMap(entry => {\n const grant = entries(relation).find(link => link[filterKey] === filter.id && link[resource === parentResource ? parent : child] === entry.id);\n if (resource === \"vault\" && !expandVaultPermissions(stringList(flags.permission)).every(permission => expandVaultPermissions(stringList(grant?.permissions)).includes(permission))) return [];\n return grant ? [{ ...entry, ...(relation === \"group user\" && resource === \"user\" ? { role: grant.role } : {}) }] : [];\n });\n }\n value = candidates;\n } else if (resource === \"group\" && action === \"create\") {\n if (args.length > 1 || (request.input !== undefined && !record(request.input))) throw new Error(\"Create requires an object input\");\n const input = record(request.input) ? request.input : {};\n const name = args[0] ?? input.name;\n const id = input.id ?? nextId();\n if (typeof name !== \"string\" || !name || typeof id !== \"string\" || !id || candidates.some(entry => entry.id.toLowerCase() === id.toLowerCase())) throw new Error(\"Invalid or duplicate object\");\n const created = { ...input, id, name, ...(selectedAccount === undefined ? {} : { account: selectedAccount }), ...(flags.description === undefined ? {} : { description: flags.description }) };\n working.set(resource, [...candidates, created]);\n value = created;\n } else {\n const supported = resource === \"user\" ? [\"get\", \"edit\", \"delete\", \"confirm\", \"suspend\", \"reactivate\"] : [\"get\", \"edit\", \"delete\"];\n if (!supported.includes(action) || resource === \"vault\") throw new Error(\"Unsupported admin action\");\n if (flags.all === true && args.length) throw new Error(\"Conflicting user selection\");\n const targets = resource === \"user\" && action === \"confirm\" && flags.all === true ? candidates.filter(entry => entry.state === \"PENDING\") : resource === \"user\" && flags.me === true && action === \"get\" ? [select(candidates, session().user)] : selectors(request).map(selector => select(candidates, selector));\n if (action === \"get\") {\n value = targets.map(target => {\n const attribute = flags[\"public-key\"] === true ? \"public_key\" : flags.fingerprint === true ? \"fingerprint\" : undefined;\n if (attribute && target[attribute] === undefined) throw new Error(\"User key material is unavailable\");\n return attribute ? target[attribute] : target;\n });\n } else if (action === \"delete\") {\n if (resource === \"connect token\") {\n working.set(resource, entries(resource).map(entry => targets.includes(entry) ? { ...entry, state: \"REVOKED\" } : entry));\n } else remove(resource, targets);\n }\n else {\n const patch = args[0] === \"-\" ? {} : request.input ?? {};\n if (!record(patch)) throw new Error(\"Update requires an object input\");\n value = targets.map(target => {\n if (Object.hasOwn(patch, \"id\") && patch.id !== target.id) throw new Error(\"Object IDs cannot be changed\");\n const updated = merge(target, patch) as OpObject;\n for (const key of [\"name\", \"description\", \"travel-mode\"]) if (flags[key] !== undefined) updated[key] = flags[key];\n if (updated[\"travel-mode\"] !== undefined && ![\"on\", \"off\"].includes(String(updated[\"travel-mode\"]))) throw new Error(\"Invalid travel mode\");\n if (action === \"confirm\" || action === \"reactivate\") {\n if (target.state !== (action === \"confirm\" ? \"PENDING\" : \"SUSPENDED\")) throw new Error(\"Invalid user state transition\");\n updated.state = \"ACTIVE\";\n }\n if (action === \"suspend\") {\n if (target.state !== \"ACTIVE\") throw new Error(\"Invalid user state transition\");\n if (flags[\"deauthorize-devices-after\"] !== undefined) throw new Error(\"Admin command requires an injected hook\");\n updated.state = \"SUSPENDED\";\n working.set(\"session\", entries(\"session\").filter(entry => entry.user !== target.id));\n }\n working.set(resource, entries(resource).map(entry => entry.id === target.id ? updated : entry));\n return updated;\n });\n }\n if (Array.isArray(value) && args[0] !== \"-\" && flags.all !== true) value = value[0];\n }\n } else throw new Error(\"Unsupported admin action\");\n context.signal.throwIfAborted();\n for (const [key, objects] of working) resources.set(key, objects);\n return { handled: true, value: structuredClone(value) };\n}\n", "const icons = new Set([\n \"airplane\", \"application\", \"art-supplies\", \"bankers-box\", \"brown-briefcase\",\n \"brown-gate\", \"buildings\", \"cabin\", \"castle\", \"circle-of-dots\", \"coffee\",\n \"color-wheel\", \"curtained-window\", \"document\", \"doughnut\", \"fence\", \"galaxy\",\n \"gears\", \"globe\", \"green-backpack\", \"green-gem\", \"handshake\", \"heart-with-monitor\",\n \"house\", \"id-card\", \"jet\", \"large-ship\", \"luggage\", \"plant\", \"porthole\", \"puzzle\",\n \"rainbow\", \"record\", \"round-door\", \"sandals\", \"scales\", \"screwdriver\", \"shop\",\n \"tall-window\", \"treasure-chest\", \"vault-door\", \"vehicle\", \"wallet\", \"wrench\"\n]);\n\nexport function validateVaultOptions(value: Readonly<Record<string, unknown>>): void {\n if (value.icon !== undefined && (typeof value.icon !== \"string\" || !icons.has(value.icon))) throw new Error(\"Invalid vault icon\");\n if (value[\"travel-mode\"] !== undefined && value[\"travel-mode\"] !== \"on\" && value[\"travel-mode\"] !== \"off\") throw new Error(\"Invalid travel mode\");\n}\n", "import type { OpField, OpObject, OpSection } from \"./types.js\";\n\nexport interface OpItemTemplate {\n title: string;\n category: string;\n fields: OpField[];\n sections?: OpSection[];\n [key: string]: unknown;\n}\n\nconst login: OpItemTemplate = {\n title: \"\",\n category: \"LOGIN\",\n fields: [\n { id: \"username\", type: \"STRING\", purpose: \"USERNAME\", label: \"username\", value: \"\" },\n { id: \"password\", type: \"CONCEALED\", purpose: \"PASSWORD\", label: \"password\", password_details: { strength: \"TERRIBLE\" }, value: \"\" },\n { id: \"notesPlain\", type: \"STRING\", purpose: \"NOTES\", label: \"notesPlain\", value: \"\" }\n ]\n};\n\nfunction normalize(value: string): string {\n return value.toUpperCase().split(\" \").join(\"_\");\n}\n\nexport function getItemTemplate(category: string, templates: readonly OpObject[] = [], fallback?: OpObject): OpItemTemplate {\n const selector = normalize(category);\n const matches = templates.filter(template => [template.id, template.name, template.category].some(value => typeof value === \"string\" && normalize(value) === selector));\n if (matches.length > 1) throw new Error(\"Ambiguous item template\");\n let selected = matches[0];\n if (!selected) {\n if (selector === \"LOGIN\") return structuredClone(login);\n if (typeof fallback?.category === \"string\" && normalize(fallback.category) === selector) selected = fallback;\n else throw new Error(\"Item template schema is unavailable\");\n }\n if (typeof selected.category !== \"string\" || !selected.category || typeof selected.title !== \"string\" || !Array.isArray(selected.fields) || selected.fields.some(field => field === null || typeof field !== \"object\" || typeof field.id !== \"string\" || typeof field.type !== \"string\")) throw new Error(\"Invalid item template schema\");\n const result: Record<string, unknown> = structuredClone(selected);\n delete result.id;\n delete result.name;\n return result as OpItemTemplate;\n}\n\nexport function listItemTemplates(templates: readonly OpObject[] = []): string[] {\n const names = new Map<string, string>([[\"LOGIN\", \"Login\"]]);\n for (const template of templates) {\n const schema = getItemTemplate(template.id, templates);\n names.set(normalize(schema.category), template.name ?? schema.category);\n }\n return [...names.values()];\n}\n", "import type { OpBackendContext, OpObject } from \"./types.js\";\nimport { availablePlugins } from \"./plugin-catalog.js\";\n\nexport async function selectPluginId(plugins: readonly OpObject[], context: OpBackendContext, accountId: string | null): Promise<string> {\n const { signal, selectPlugin } = context;\n signal.throwIfAborted();\n if (!selectPlugin) throw new Error(\"Plugin selection capability is unavailable\");\n const candidates = Object.freeze(availablePlugins(plugins).flatMap(plugin => {\n const id = plugin.executable ?? plugin.id;\n return id === undefined ? [] : [Object.freeze({ id, name: plugin.plugin_name ?? plugin.name ?? id })];\n }));\n let abort!: () => void;\n let selected: unknown;\n try {\n selected = await Promise.race([\n new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"Plugin selection cancelled\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n }),\n Promise.resolve().then(() => {\n signal.throwIfAborted();\n return selectPlugin(candidates, Object.freeze({ signal, accountId }));\n })\n ]);\n signal.throwIfAborted();\n } catch {\n signal.throwIfAborted();\n throw new Error(\"Plugin selection failed\");\n } finally { signal.removeEventListener(\"abort\", abort); }\n if (selected === undefined) throw new Error(\"Plugin selection cancelled\");\n if (typeof selected !== \"string\" || !candidates.some(candidate => candidate.id === selected)) throw new Error(\"Invalid plugin selection\");\n const configured = plugins.find(plugin => plugin.id.toLowerCase() === selected.toLowerCase());\n if (!configured) throw new Error(\"Plugin configuration is unavailable\");\n return configured.id;\n}\n", "import type { OpObject } from \"./types.js\";\n\nexport function selectCreationVault(vaults: readonly OpObject[], selector: unknown, defaultVault?: string): OpObject {\n if (selector === undefined) {\n if (defaultVault !== undefined) {\n const vault = vaults.find(vault => vault.id === defaultVault);\n if (!vault) throw new Error(\"Default vault is unavailable in the selected scope\");\n return vault;\n }\n if (vaults.length !== 1) throw new Error(\"Select a vault or configure defaultVault\");\n return vaults[0]!;\n }\n if (selector !== null && typeof selector === \"object\" && !Array.isArray(selector)) selector = (selector as Record<string, unknown>).id;\n if (typeof selector !== \"string\" || !selector) throw new Error(\"A vault is required\");\n const folded = selector.toLowerCase();\n const ids = vaults.filter(vault => vault.id.toLowerCase() === folded);\n const matches = ids.length ? ids : vaults.filter(vault => typeof vault.name === \"string\" && vault.name.toLowerCase() === folded);\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n", "import { createAccountScope, externalCommands } from \"./admin.js\";\nimport { opCrypto } from \"#op-crypto\";\nimport { inspectAuthentication, sameData } from \"./auth.js\";\nimport { parseSecretReference } from \"./references.js\";\nimport { parseObjectSelectors } from \"./selectors.js\";\nimport { selectPluginId } from \"./plugin-selection.js\";\nimport { selectCreationVault } from \"./object-vaults.js\";\nimport type { OpAdminContext } from \"./admin.js\";\nimport type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpBindingHandle, OpBindingPrepareContext, OpBindingRequestMetadata, OpBindingTarget, OpClock, OpObject, OpPreparedBinding } from \"./types.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nexport function normalizeObjectRequest(request: OpBackendRequest): OpBackendRequest {\n if (request.resource === \"item\" && request.action === \"get\" && request.args.length === 0 && request.input !== undefined) request = { ...request, args: [\"-\"] };\n if (request.resource === \"item\" && request.action === \"create\" && typeof request.flags.account === \"string\" && typeof request.flags.vault === \"string\" && request.input !== undefined) {\n const inputs = Array.isArray(request.input) ? request.input : [request.input];\n const normalized = inputs.map(input => record(input) ? { ...input, account: request.flags.account, vault: request.flags.vault } : input);\n request = { ...request, input: Array.isArray(request.input) ? normalized : normalized[0] };\n }\n return request;\n}\n\nfunction select(objects: readonly OpObject[], selector: unknown): OpObject {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Binding target is required\");\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.label, object.email, object.shorthand, object.url, object.address, object.user_uuid, object.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(\"Binding target is missing or ambiguous\");\n return matches[0]!;\n}\n\nfunction metadata(source: Map<string, OpObject[]>): Map<string, OpObject[]> {\n const section = (value: unknown) => {\n if (!record(value)) throw new Error(\"Invalid section metadata\");\n return { id: value.id, ...(value.label === undefined ? {} : { label: value.label }) };\n };\n const keys = [\"id\", \"name\", \"title\", \"label\", \"email\", \"shorthand\", \"url\", \"address\", \"user_uuid\", \"userId\", \"account\", \"vault\", \"state\", \"category\", \"favorite\", \"tags\", \"group\", \"user\", \"server\", \"integrationId\", \"item\", \"permissions\", \"terminalId\"];\n return new Map([...source].map(([resource, objects]) => [resource, objects.map(object => {\n const result = Object.fromEntries(keys.filter(key => Object.hasOwn(object, key)).map(key => [key, structuredClone(object[key])])) as OpObject;\n if (resource === \"item\") {\n result.fields = (object.fields as OpObject[] | undefined)?.map(field => ({ ...Object.fromEntries([\"id\", \"label\", \"name\", \"type\", \"purpose\"].filter(key => Object.hasOwn(field, key)).map(key => [key, structuredClone(field[key])])), ...(field.section === undefined ? {} : { section: section(field.section) }) }));\n result.files = (object.files as OpObject[] | undefined)?.map(file => ({ id: file.id, name: file.name, ...(file.section === undefined ? {} : { section: section(file.section) }) }));\n result.sections = (object.sections as OpObject[] | undefined)?.map(section);\n }\n return result;\n })]));\n}\n\ninterface Step {\n original: OpBackendRequest;\n resolved: OpBackendRequest;\n dependencies: { resource: string; id?: string }[];\n status: \"pending\" | \"running\" | \"complete\";\n}\n\ninterface Binding {\n generation: number;\n expiresAt: number;\n signal: AbortSignal;\n authentication: OpBackendContext[\"authentication\"];\n pluginScope: OpBackendContext[\"pluginScope\"];\n steps: Step[];\n cancelled: boolean;\n staged?: Map<string, OpObject[]>;\n queue: Promise<void>;\n abort: () => void;\n}\n\nexport function createBindingManager(source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock, hasHook: (command: string, context: OpBackendContext) => boolean, defaultVault?: string) {\n const backendId = opCrypto.randomUUID();\n let generation = 0;\n const bindings = new WeakMap<OpBindingHandle, Binding>();\n const environmentMetadata = new WeakMap<OpObject, OpBindingRequestMetadata>();\n function indexEnvironments(): void {\n for (const resource of [\"environment\", \"environment snapshot\"]) {\n for (const object of source.get(resource) ?? []) {\n if (environmentMetadata.has(object)) continue;\n const snapshot = resource === \"environment snapshot\";\n const value = snapshot ? object.snapshot : object;\n let metadata: OpBindingRequestMetadata = {};\n if (record(value) && record(value.variables) && (!snapshot || (value.version === 1 && [\"complete\", \"selected\"].includes(String(value.scope))))) {\n const entries = Object.entries(value.variables);\n if (entries.every(([key, value]) => key && !key.includes(\"=\") && !key.includes(\"\\0\") && (typeof value === \"string\" && !value.includes(\"\\0\") || snapshot && value === null))) {\n metadata = { environment: Object.freeze({\n names: Object.freeze(entries.map(([key]) => key)),\n ...(snapshot ? { unsetNames: Object.freeze(entries.filter(([, value]) => value === null).map(([key]) => key)), scope: value.scope as \"complete\" | \"selected\" } : {}),\n dependenciesComplete: snapshot || entries.every(([, value]) => typeof value === \"string\" && !value.toLowerCase().includes(\"op://\"))\n }) };\n }\n }\n environmentMetadata.set(object, Object.freeze(metadata));\n }\n }\n }\n indexEnvironments();\n function published(before: ReadonlyMap<string, OpObject[]>): void {\n if (before.size !== source.size || [...source].some(([key, objects]) => before.get(key) !== objects)) {\n indexEnvironments();\n generation++;\n }\n }\n const invalid = () => new Error(\"Binding is invalid or no longer current\");\n function cancel(binding: Binding): void {\n binding.cancelled = true;\n binding.staged = undefined;\n binding.steps = [];\n binding.signal.removeEventListener(\"abort\", binding.abort);\n }\n function validate(handle: OpBindingHandle, context: OpBackendContext): Binding {\n const binding = bindings.get(handle);\n if (!binding) throw invalid();\n try {\n context.signal.throwIfAborted();\n binding.signal.throwIfAborted();\n const now = clock.now();\n if (binding.cancelled || generation !== binding.generation || !Number.isFinite(now) || now >= binding.expiresAt || !sameData(binding.authentication, context.authentication) || !sameData(binding.pluginScope, context.pluginScope)) throw invalid();\n for (const step of binding.steps) inspectAuthentication(step.resolved, context, source, policy, clock);\n return binding;\n } catch {\n cancel(binding);\n throw invalid();\n }\n }\n return {\n async prepareBinding(requests: readonly OpBackendRequest[], context: OpBindingPrepareContext): Promise<OpPreparedBinding> {\n context.signal.throwIfAborted();\n if (context.binding || requests.length > 1024) throw new Error(\"Invalid binding plan\");\n context = Object.freeze({ ...context, authentication: structuredClone(context.authentication), pluginScope: structuredClone(context.pluginScope) });\n const preparedGeneration = generation;\n const now = clock.now();\n const expiresAt = context.expiresAt ?? now + 60_000;\n if (!Number.isFinite(now) || !Number.isFinite(expiresAt) || expiresAt <= now) throw new Error(\"Invalid binding deadline\");\n const targets: OpBindingTarget[] = [];\n const requestMetadata: OpBindingRequestMetadata[] = requests.map(() => Object.freeze({}));\n const accounts = new Set<string | null>();\n const view = requests.length ? metadata(source) : new Map<string, OpObject[]>();\n const steps: Step[] = [];\n for (const [requestIndex, detached] of structuredClone(requests).entries()) {\n let request = normalizeObjectRequest(detached);\n const command = `${request.resource} ${request.action}`.trim();\n if (request.action === \"create\" && request.input !== undefined && !(record(request.input) || request.resource === \"item\" && Array.isArray(request.input) && request.input.length > 0 && request.input.every(record))) throw new Error(\"Create requires an object input\");\n const pluginInspect = request.resource === \"plugin\" && request.action === \"inspect\";\n if (hasHook(command, context) || externalCommands.has(command) || request.flags[\"ssh-generate-key\"] !== undefined && request.flags[\"ssh-generate-key\"] !== false || request.flags[\"ssh-format\"] || request.resource === \"plugin\" && !pluginInspect || [\"session\", \"session default\", \"app default\"].includes(request.resource)) throw new Error(\"Operation does not support bindings\");\n if (!pluginInspect && ![\"list\", \"get\", \"create\", \"edit\", \"update\", \"delete\", \"move\", \"read\"].includes(request.action) || request.resource.includes(\" \") && request.resource !== \"environment snapshot\") throw new Error(\"Operation does not support bindings\");\n request = inspectAuthentication(request, context, source, policy, clock).request;\n const scope = createAccountScope(request, view);\n const resources = scope.resources;\n const account = scope.account;\n if (pluginInspect) {\n if (request.args.length > 1 || request.args[0] === \"-\") throw new Error(\"Exactly one plugin is required\");\n if (!request.args.length) request = { ...request, args: [await selectPluginId(resources.get(\"plugin\") ?? [], context, account ?? null)] };\n context.signal.throwIfAborted();\n if (generation !== preparedGeneration) throw invalid();\n }\n accounts.add(account ?? null);\n const dependencies: Step[\"dependencies\"] = [];\n const add = (resource: string, object: OpObject, kind: OpBindingTarget[\"kind\"] = \"object\", parentId?: string): void => {\n targets.push(Object.freeze({ requestIndex, resource, kind, id: object.id, ...(account === undefined ? {} : { account }), ...(parentId === undefined ? {} : { parentId }), revision: String(generation) }));\n if (kind === \"object\") dependencies.push({ resource, id: object.id });\n };\n const flags: Record<string, string | boolean | readonly string[]> = { ...request.flags, ...(account === undefined ? {} : { account }) };\n if (account !== undefined) add(\"account\", select(resources.get(\"account\") ?? [], account));\n for (const key of [\"vault\", \"current-vault\", \"destination-vault\"]) {\n if (flags[key] !== undefined) {\n const vault = select(resources.get(\"vault\") ?? [], flags[key]);\n flags[key] = vault.id;\n add(\"vault\", vault);\n }\n }\n request = { ...request, flags };\n if (request.resource === \"secret\" && request.action === \"read\") {\n if (request.args.length !== 1) throw new Error(\"One secret reference is required\");\n const reference = parseSecretReference(request.args[0]!);\n if (reference.query?.[\"ssh-format\"] !== undefined) throw new Error(\"SSH hooks do not support bindings\");\n const vault = select(resources.get(\"vault\") ?? [], reference.vault);\n const item = select((resources.get(\"item\") ?? []).filter(object => (record(object.vault) ? object.vault.id : object.vault) === vault.id && object.state !== \"ARCHIVED\" && object.state !== \"DELETED\"), reference.item);\n let fields = [...item.fields as OpObject[] ?? [], ...item.files as OpObject[] ?? []];\n let section: OpObject | undefined;\n if (reference.section !== undefined) {\n const sections = new Map((item.sections as OpObject[] ?? []).map(entry => [entry.id, entry]));\n for (const field of fields) if (record(field.section) && typeof field.section.id === \"string\" && !sections.has(field.section.id)) sections.set(field.section.id, field.section as OpObject);\n section = select([...sections.values()], reference.section);\n fields = fields.filter(field => record(field.section) && field.section.id === section!.id);\n add(\"item\", section, \"section\", item.id);\n }\n const field = select(fields, reference.field);\n add(\"vault\", vault);\n add(\"item\", item);\n add(\"item\", field, \"field\", item.id);\n const query = request.args[0]!.indexOf(\"?\");\n request = { ...request, args: [`op://${[vault.id, item.id, ...(section ? [section.id] : []), field.id].join(\"/\")}${query < 0 ? \"\" : request.args[0]!.slice(query)}`] };\n } else {\n const objects = resources.get(request.resource) ?? [];\n const vaulted = [\"item\", \"document\"].includes(request.resource);\n let candidates = objects;\n const vaultId = request.action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (vaulted && vaultId !== undefined) candidates = candidates.filter(object => (record(object.vault) ? object.vault.id : object.vault) === vaultId);\n const selected: OpObject[] = [];\n if ([\"list\", \"create\"].includes(request.action)) {\n targets.push(Object.freeze({ requestIndex, resource: request.resource, kind: \"collection\", ...(account === undefined ? {} : { account }), revision: String(generation) }));\n dependencies.push({ resource: request.resource });\n if (request.action === \"list\") {\n if (vaulted) candidates = candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true));\n if (request.resource === \"item\") {\n const strings = (value: unknown): readonly string[] => typeof value === \"string\" ? value.split(\",\") : Array.isArray(value) ? value : [];\n const categories = strings(flags.categories).map(value => value.toUpperCase().split(\" \").join(\"_\"));\n const tags = strings(flags.tags);\n candidates = candidates.filter(object => (!categories.length || categories.includes(String(object.category))) && (!flags.favorite || object.favorite === true) && (!tags.length || tags.some(tag => Array.isArray(object.tags) && object.tags.some(value => typeof value === \"string\" && (value === tag || value.startsWith(`${tag}/`))))));\n }\n selected.push(...candidates);\n }\n else if (vaulted) {\n const inputs = Array.isArray(request.input) ? request.input : [request.input];\n const resolvedInputs: unknown[] = [];\n for (const input of inputs) {\n const selector = flags.vault ?? (record(input) ? input.vault : undefined);\n const vault = selectCreationVault(resources.get(\"vault\") ?? [], selector, defaultVault);\n add(\"vault\", vault);\n resolvedInputs.push({ ...(record(input) ? input : {}), vault: vault.id });\n }\n request = { ...request, input: Array.isArray(request.input) ? resolvedInputs : resolvedInputs[0] };\n }\n } else {\n const batch = request.args[0] === \"-\";\n const selectors = batch ? parseObjectSelectors(request.input) : request.args.length ? [request.args[0]!] : request.resource === \"account\" && account !== undefined ? [account] : [];\n if (!selectors.length) throw new Error(\"Binding target is required\");\n for (const selector of selectors) {\n const candidatesForSelector = vaulted ? candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || object.id.toLowerCase() === selector.toLowerCase())) : candidates;\n selected.push(select(candidatesForSelector, selector));\n }\n if (batch) request = { ...request, input: selected.map(object => ({ id: object.id })) };\n else if (request.args.length) request = { ...request, args: [selected[0]!.id, ...request.args.slice(1)] };\n }\n for (const object of selected) {\n add(request.resource, object);\n if ([\"environment\", \"environment snapshot\"].includes(request.resource) && [\"get\", \"read\"].includes(request.action)) {\n const original = source.get(request.resource)?.find(entry => entry.id === object.id);\n requestMetadata[requestIndex] = original ? environmentMetadata.get(original) ?? Object.freeze({}) : Object.freeze({});\n }\n if (vaulted && object.vault !== undefined) add(\"vault\", select(resources.get(\"vault\") ?? [], record(object.vault) ? object.vault.id : object.vault));\n if (request.resource === \"item\" && request.action === \"get\") {\n const fields = object.fields as OpObject[] ?? [];\n let selectedFields = fields;\n if (flags.fields !== undefined) {\n const selectors = typeof flags.fields === \"string\" ? flags.fields.split(\",\") : Array.isArray(flags.fields) ? flags.fields : [];\n selectedFields = selectors.flatMap(selector => {\n const separator = selector.indexOf(\"=\");\n const key = separator < 0 ? \"label\" : selector.slice(0, separator);\n const value = (separator < 0 ? selector : selector.slice(separator + 1)).toLowerCase();\n if (![\"label\", \"type\"].includes(key)) throw new Error(\"Unsupported field selector\");\n const matches = fields.filter(field => String(field[key] ?? (key === \"label\" ? field.id : \"\")).toLowerCase() === value);\n if (!matches.length) throw new Error(\"Field not found\");\n return matches;\n });\n } else if (flags.otp) selectedFields = fields.filter(field => field.type === \"OTP\").slice(0, 1);\n for (const field of selectedFields) {\n if (record(field.section) && typeof field.section.id === \"string\") add(\"item\", field.section as OpObject, \"section\", object.id);\n add(\"item\", field, \"field\", object.id);\n }\n }\n }\n }\n steps.push({ original: detached, resolved: request, dependencies, status: \"pending\" });\n }\n if (generation !== preparedGeneration) throw invalid();\n if (accounts.size > 1) throw new Error(\"A binding requires one account scope\");\n const handle = Object.freeze({}) as OpBindingHandle;\n const binding: Binding = { generation, expiresAt, signal: context.signal, authentication: structuredClone(context.authentication), pluginScope: structuredClone(context.pluginScope), steps, cancelled: false, queue: Promise.resolve(), abort: () => cancel(binding) };\n bindings.set(handle, binding);\n context.signal.addEventListener(\"abort\", binding.abort, { once: true });\n validate(handle, context);\n return Object.freeze({ backendId, accountId: accounts.values().next().value ?? null, handle, targets: Object.freeze(targets), metadata: Object.freeze(requestMetadata) });\n },\n validateBinding(handle: OpBindingHandle, context: OpBackendContext): void { validate(handle, context); },\n cancelBinding(handle: OpBindingHandle): void {\n const binding = bindings.get(handle);\n if (!binding) throw invalid();\n cancel(binding);\n },\n published,\n async execute(request: OpBackendRequest, context: OpAdminContext, operation: (request: OpBackendRequest, resources: Map<string, OpObject[]>) => Promise<unknown>): Promise<unknown> {\n const handle = context.binding!;\n const binding = validate(handle, context);\n const step = binding.steps.find(candidate => candidate.status === \"pending\" && sameData(candidate.original, request));\n if (!step || hasHook(`${request.resource} ${request.action}`.trim(), context)) { cancel(binding); throw invalid(); }\n step.status = \"running\";\n const previous = binding.queue;\n let release!: () => void;\n binding.queue = new Promise<void>(resolve => { release = resolve; });\n try {\n await previous;\n validate(handle, context);\n binding.staged ??= structuredClone(source);\n for (const dependency of step.dependencies) {\n const original = source.get(dependency.resource);\n const staged = binding.staged.get(dependency.resource);\n if (!sameData(dependency.id === undefined ? original : original?.find(object => object.id === dependency.id), dependency.id === undefined ? staged : staged?.find(object => object.id === dependency.id))) throw invalid();\n }\n const result = await operation(structuredClone(step.resolved), binding.staged);\n validate(handle, context);\n step.status = \"complete\";\n if (binding.steps.every(candidate => candidate.status === \"complete\")) {\n const before = new Map(source);\n for (const [resource, objects] of binding.staged) if (!sameData(source.get(resource), objects)) source.set(resource, objects);\n published(before);\n binding.generation = generation;\n binding.staged = undefined;\n }\n return result;\n } catch (error) {\n cancel(binding);\n throw error;\n } finally { release(); }\n }\n };\n}\n", "import { deriveItemFieldReferences, parseSecretReference } from \"./references.js\";\nimport { opCrypto } from \"#op-crypto\";\nimport { generateOtp } from \"./otp.js\";\nimport { createAccountScope, executeAdmittedAdminRequest } from \"./admin.js\";\nimport { beginAuthentication, validateAuthentication } from \"./auth.js\";\nimport { objectBatchCommands, parseObjectSelectors } from \"./selectors.js\";\nimport { validateVaultOptions } from \"./vault-options.js\";\nimport { getItemTemplate, listItemTemplates } from \"./templates.js\";\nimport { createBindingManager, normalizeObjectRequest } from \"./bindings.js\";\nimport { availablePlugins } from \"./plugin-catalog.js\";\nimport { selectCreationVault } from \"./object-vaults.js\";\nimport type { OpAdminContext } from \"./admin.js\";\nimport type { OpBackendRequest, OpField, OpFile, OpItem, OpObject, OpObjectBackend, OpObjectBackendOptions, OpSection } from \"./types.js\";\n\nfunction strings(value: OpBackendRequest[\"flags\"][string]): readonly string[] {\n return typeof value === \"string\" ? value === \"\" ? [] : value.split(\",\") : Array.isArray(value) ? value : [];\n}\n\nfunction generatePassword(recipe: string | boolean | readonly string[]): string {\n const alphabets: Record<string, string> = { letters: \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", digits: \"0123456789\", symbols: \"!@.-_*\" };\n let length = 32;\n let alphabet = \"\";\n let hasLength = false;\n for (const part of recipe === true || recipe === \"\" ? [\"letters\", \"digits\", \"symbols\"] : strings(recipe)) {\n const label = part.toLowerCase();\n const digits = part.startsWith(\"+\") ? part.slice(1) : part;\n if (Object.hasOwn(alphabets, label)) alphabet += alphabets[label];\n else if (digits.length && [...digits].every(character => \"0123456789\".includes(character)) && !hasLength) { length = Number(digits); hasLength = true; }\n else throw new Error(\"Invalid password recipe\");\n }\n if (!Number.isInteger(length) || length < 1 || length > 64) throw new Error(\"Password length must be between 1 and 64\");\n if (!alphabet) alphabet = Object.values(alphabets).join(\"\");\n alphabet = [...new Set(alphabet)].join(\"\");\n const cutoff = 256 - (256 % alphabet.length);\n let password = \"\";\n while (password.length < length) {\n for (const byte of opCrypto.getRandomValues(new Uint8Array(64))) {\n if (byte < cutoff) password += alphabet[byte % alphabet.length];\n if (password.length === length) break;\n }\n }\n return password;\n}\n\nexport function parseAssignment(source: string): { section?: string; field: string; type?: string; value?: string } {\n const names: string[] = [];\n let name = \"\";\n let offset = 0;\n for (; offset < source.length; offset++) {\n const character = source[offset]!;\n if (character === \"\\\\\") {\n const next = source[++offset];\n if (!next || !\".\\\\=\".includes(next)) throw new Error(\"Invalid field name escape\");\n name += next;\n } else if (character === \".\") { names.push(name); name = \"\"; }\n else if (character === \"=\" || character === \"[\") break;\n else name += character;\n }\n names.push(name);\n if (names.length > 2 || names.some(part => !part)) throw new Error(\"Invalid field assignment\");\n let type: string | undefined;\n if (source[offset] === \"[\") {\n const closing = source.indexOf(\"]\", offset);\n if (closing < 0) throw new Error(\"Invalid field type\");\n type = source.slice(offset + 1, closing);\n offset = closing + 1;\n }\n if (offset < source.length && source[offset] !== \"=\") throw new Error(\"Invalid field assignment\");\n if (offset === source.length && !type) throw new Error(\"Assignment requires a value or type\");\n return { ...(names.length === 2 ? { section: names[0]! } : {}), field: names.at(-1)!, ...(type === undefined ? {} : { type }), ...(source[offset] === \"=\" ? { value: source.slice(offset + 1) } : {}) };\n}\n\nfunction itemPatch(input: Record<string, unknown>, args: readonly string[], flags: OpBackendRequest[\"flags\"], nextId: () => string): Record<string, unknown> {\n const result = structuredClone(input);\n for (const key of [\"title\", \"category\"]) if (typeof flags[key] === \"string\") result[key] = flags[key];\n if (typeof result.category === \"string\") result.category = result.category.toUpperCase().split(\" \").join(\"_\");\n if (flags.tags !== undefined) result.tags = [...strings(flags.tags)];\n if (flags.favorite !== undefined) result.favorite = flags.favorite === true || flags.favorite === \"true\";\n if (typeof flags.url === \"string\") result.urls = [{ href: flags.url, primary: true }];\n if (flags[\"ssh-generate-key\"]) throw new Error(\"SSH generation is not supported by the object backend\");\n const fields = structuredClone(result.fields ?? []) as OpField[];\n const files = structuredClone(result.files ?? []) as OpFile[];\n let sections = structuredClone(result.sections ?? []) as OpSection[];\n if (!Array.isArray(fields) || !Array.isArray(files) || !Array.isArray(sections)) throw new Error(\"Item fields, files and sections must be arrays\");\n for (const field of fields) if (record(field)) delete field.reference;\n for (const section of sections) {\n if (!record(section)) throw new Error(\"Invalid item section\");\n if (section.id === undefined) section.id = nextId();\n if (typeof section.id !== \"string\" || !section.id) throw new Error(\"Invalid item section ID\");\n }\n for (const member of [...fields, ...files]) {\n if (!record(member)) throw new Error(\"Invalid item field or file\");\n if (member.id === undefined) member.id = nextId();\n if (typeof member.id !== \"string\" || !member.id) throw new Error(\"Invalid item field or file ID\");\n if (member.section === undefined) continue;\n const reference = member.section;\n if (!record(reference) || (typeof reference.id !== \"string\" && typeof reference.label !== \"string\")) throw new Error(\"Invalid item section reference\");\n const matches = sections.filter(section => typeof reference.id === \"string\" ? section.id === reference.id : section.label?.split(\" \").join(\"\").toLowerCase() === reference.label?.split(\" \").join(\"\").toLowerCase());\n if (matches.length > 1) throw new Error(\"Ambiguous section\");\n const section = matches[0] ?? { ...reference, id: reference.id ?? nextId() };\n if (!matches.length) sections.push(section);\n member.section = { ...section };\n }\n const types: Record<string, string> = { text: \"STRING\", password: \"CONCEALED\", email: \"EMAIL\", url: \"URL\", phone: \"PHONE\", otp: \"OTP\", date: \"DATE\", monthyear: \"MONTH_YEAR\", address: \"ADDRESS\", reference: \"REFERENCE\", menu: \"MENU\", concealed: \"CONCEALED\" };\n for (const source of args) {\n const parsed = parseAssignment(source);\n let section: OpSection | undefined;\n if (parsed.section) {\n const matches = sections.filter(entry => entry.id === parsed.section || entry.label?.split(\" \").join(\"\").toLowerCase() === parsed.section!.split(\" \").join(\"\").toLowerCase());\n if (matches.length > 1) throw new Error(\"Ambiguous section\");\n section = matches[0];\n if (!section) { section = { id: nextId(), label: parsed.section }; sections.push(section); }\n }\n const matches = fields.filter(field => (!section || field.section?.id === section.id) && [field.id, field.label, field.name, field.n].some(value => typeof value === \"string\" && value.split(\" \").join(\"\").toLowerCase() === parsed.field.split(\" \").join(\"\").toLowerCase()));\n if (matches.length > 1) throw new Error(\"Ambiguous field\");\n let field = matches[0];\n if (parsed.type === \"delete\") {\n if (!field) throw new Error(\"Field not found\");\n if (field.purpose) throw new Error(\"Built-in fields cannot be deleted\");\n fields.splice(fields.indexOf(field), 1);\n if (field.section && ![...fields, ...files].some(entry => entry.section?.id === field!.section!.id)) sections = sections.filter(entry => entry.id !== field!.section!.id);\n continue;\n }\n if (parsed.type && !Object.hasOwn(types, parsed.type)) throw new Error(\"Unsupported field type\");\n if (!field) {\n const purpose = !section && [\"username\", \"password\", \"notesPlain\"].includes(parsed.field) ? ({ username: \"USERNAME\", password: \"PASSWORD\", notesPlain: \"NOTES\" } as Record<string, string>)[parsed.field] : undefined;\n field = { id: purpose ? parsed.field : nextId(), label: parsed.field, type: parsed.field === \"password\" ? \"CONCEALED\" : \"STRING\", ...(purpose ? { purpose } : {}), ...(section ? { section } : {}) };\n fields.push(field);\n }\n if (parsed.type) field.type = types[parsed.type];\n if (parsed.value !== undefined) field.value = parsed.value;\n }\n result.fields = fields;\n if (result.files !== undefined) result.files = files;\n result.sections = sections;\n if (flags[\"generate-password\"] !== undefined && flags[\"generate-password\"] !== false) {\n if (![\"LOGIN\", \"PASSWORD\"].includes(String(result.category))) throw new Error(\"Password generation requires a Login or Password item\");\n let password = fields.find(field => field.purpose === \"PASSWORD\" || field.id === \"password\");\n if (!password) { password = { id: \"password\", label: \"password\", purpose: \"PASSWORD\", type: \"CONCEALED\" }; fields.push(password); }\n password.value = generatePassword(flags[\"generate-password\"]);\n }\n return result;\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nfunction merge(target: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown> {\n const result = { ...target };\n for (const [key, value] of Object.entries(patch)) {\n Object.defineProperty(result, key, { value: record(value) && record(target[key]) ? merge(target[key], value) : structuredClone(value), writable: true, enumerable: true, configurable: true });\n }\n return result;\n}\n\nfunction select<T extends OpObject>(objects: readonly T[], selector: string): T {\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.label].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n\nexport function createObjectBackend(options: OpObjectBackendOptions = {}): OpObjectBackend {\n const resources = new Map<string, OpObject[]>();\n const adminHooks = { ...options.adminHooks };\n const authenticationPolicy = { ...options.authentication ?? { mode: \"object-store\" as const } };\n const clock = options.clock ?? { now: Date.now };\n const ssh = options.ssh === undefined ? undefined : { ...options.ssh };\n let sequence = 0;\n function nextId(): string {\n let id: string;\n do { id = (++sequence).toString(36).padStart(26, \"a\"); } while ([...resources.values()].some(entries => entries.some(entry => entry.id.toLowerCase() === id || [entry.fields, entry.sections, entry.files].some(children => Array.isArray(children) && children.some(child => record(child) && typeof child.id === \"string\" && child.id.toLowerCase() === id)))));\n return id;\n }\n for (const [resource, objects] of Object.entries({ ...options.resources, vault: options.vaults ?? options.resources?.vault ?? [], item: options.items ?? options.resources?.item ?? [], document: options.documents ?? options.resources?.document ?? [], account: options.accounts ?? options.resources?.account ?? [] })) {\n const entries = structuredClone(objects) as OpObject[];\n const ids = new Set<string>();\n for (const entry of entries) {\n if (!record(entry) || typeof entry.id !== \"string\" || !entry.id || ids.has(entry.id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n ids.add(entry.id.toLowerCase());\n }\n resources.set(resource, entries);\n }\n\n let defaultVault: string | undefined;\n if (options.defaultVault !== undefined) {\n const supplied = options.defaultVault;\n const vault = typeof supplied === \"string\" && supplied ? resources.get(\"vault\")?.find(vault => vault.id.toLowerCase() === supplied.toLowerCase()) : undefined;\n if (!vault) throw new Error(\"defaultVault must identify an existing vault ID\");\n defaultVault = vault.id;\n }\n validateAuthentication(resources, authenticationPolicy);\n\n function vaultReference(value: unknown, source = resources): { id: string; name?: string } {\n const selector = typeof value === \"string\" ? value : record(value) ? value.id : undefined;\n if (typeof selector !== \"string\" || !selector) throw new Error(\"A vault is required\");\n const vault = select(source.get(\"vault\") ?? [], selector);\n return { id: vault.id, ...(vault.name === undefined ? {} : { name: vault.name }) };\n }\n\n for (const item of resources.get(\"item\") ?? []) item.vault = vaultReference(item.vault);\n for (const document of resources.get(\"document\") ?? []) if (document.vault !== undefined) document.vault = vaultReference(document.vault);\n\n const bindings = createBindingManager(resources, authenticationPolicy, clock, (command, context) => Object.hasOwn(adminHooks, command) || Object.hasOwn((context as OpAdminContext).adminHooks ?? {}, command), defaultVault);\n\n return {\n prepareBinding: bindings.prepareBinding,\n validateBinding: bindings.validateBinding,\n cancelBinding: bindings.cancelBinding,\n snapshot() {\n const { vault, item, document, account, ...extensions } = Object.fromEntries(resources);\n return structuredClone({ vaults: vault, items: item, documents: document, accounts: account, resources: extensions, ...(defaultVault === undefined ? {} : { defaultVault }), ...(authenticationPolicy.mode === \"managed\" ? { authentication: authenticationPolicy } : {}) }) as unknown as OpObjectBackendOptions;\n },\n async execute(request, context) {\n context.signal.throwIfAborted();\n const prepared = !context.binding && request.resource === \"plugin\" && request.action === \"inspect\" && request.args.length === 0\n ? await bindings.prepareBinding([request], context) : undefined;\n if (prepared) context = { ...context, binding: prepared.handle };\n async function executeOperation(request: OpBackendRequest, executionResources: Map<string, OpObject[]>): Promise<unknown> {\n request = normalizeObjectRequest(request);\n const authentication = beginAuthentication(request, context, executionResources, authenticationPolicy, clock);\n request = authentication.request;\n const scope = createAccountScope(request, authentication.resources);\n async function executeScoped(resources: Map<string, OpObject[]>): Promise<unknown> {\n const { resource, action, args, flags } = request;\n if ([\"session\", \"session default\"].includes(resource)) throw new Error(\"Session state requires typed authentication hooks\");\n const command = action ? `${resource} ${action}` : resource;\n const batch = args.length === 1 && args[0] === \"-\" && objectBatchCommands.includes(command);\n const targetSelectors = batch ? parseObjectSelectors(request.input) : args;\n const vaulted = resource === \"item\" || resource === \"document\";\n const invocationHooks = { ...adminHooks, ...context.adminHooks };\n if (resource === \"plugin\" && !Object.hasOwn(invocationHooks, command)) {\n const configured = resources.get(\"plugin\") ?? [];\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n return availablePlugins(configured);\n }\n if (action === \"inspect\" && args.length === 1 && !configured.some(plugin => plugin.id.toLowerCase() === args[0]!.toLowerCase()) && availablePlugins([]).some(plugin => plugin.executable?.toLowerCase() === args[0]!.toLowerCase())) throw new Error(\"Plugin configuration is unavailable\");\n }\n if (Object.hasOwn(invocationHooks, command) || !(resource === \"account\" && [\"create\", \"edit\", \"update\", \"delete\"].includes(action))) {\n const adminContext = { ...context, adminHooks: invocationHooks, nextId };\n const admin = await executeAdmittedAdminRequest(action === \"update\" ? { ...request, action: \"edit\" } : request, adminContext, resources, nextId, scope.account, authentication.sessionId, authentication.recordSignin);\n context.signal.throwIfAborted();\n if (admin.handled) return admin.value;\n }\n if (resource === \"item template\") {\n const templates = resources.get(resource) ?? [];\n if (action === \"list\" && !args.length) return listItemTemplates(templates);\n if (action === \"get\" && args.length === 1) return getItemTemplate(args[0]!, templates);\n throw new Error(\"Invalid item template request\");\n }\n if (resource === \"secret\" && action === \"read\") {\n if (args.length !== 1) throw new Error(\"One secret reference is required\");\n const reference = parseSecretReference(args[0]!);\n const vault = select(resources.get(\"vault\") ?? [], reference.vault);\n const items = (resources.get(\"item\") ?? []).filter(item => item.state !== \"DELETED\" && item.state !== \"ARCHIVED\" && record(item.vault) && item.vault.id === vault.id) as OpItem[];\n const item = select(items, reference.item);\n let candidates: (OpField | OpFile)[] = [...item.fields ?? [], ...item.files ?? []];\n if (reference.section) {\n const sections = new Map<string, OpSection>();\n for (const section of item.sections ?? []) sections.set(section.id, section);\n for (const field of candidates) if (field.section) sections.set(field.section.id, { ...field.section, ...sections.get(field.section.id) });\n const section = select([...sections.values()], reference.section);\n candidates = candidates.filter(field => field.section?.id === section.id);\n }\n const field = select(candidates, reference.field);\n const attribute = reference.query?.attribute ?? reference.query?.attr ?? (Object.hasOwn(field, \"content\") ? \"content\" : \"value\");\n const sshFormat = reference.query?.[\"ssh-format\"];\n if (sshFormat !== undefined) {\n if (!ssh) throw new Error(\"SSH transformation requires an injected hook\");\n if (sshFormat !== \"openssh\" && sshFormat !== \"pkcs1\" && sshFormat !== \"pkcs8\") throw new Error(\"Unsupported SSH format\");\n if (attribute !== \"value\" || field.type !== \"SSHKEY\" || typeof field.value !== \"string\") throw new Error(\"SSH private key field is unavailable\");\n context.signal.throwIfAborted();\n try { return await ssh.transform(field.value, sshFormat); }\n finally { context.signal.throwIfAborted(); }\n }\n if (attribute === \"otp\") {\n if (field.type !== \"OTP\" || typeof field.value !== \"string\") throw new Error(\"OTP field is unavailable\");\n const code = await generateOtp(field.value);\n context.signal.throwIfAborted();\n return code;\n }\n const attributes = item.files?.some(file => file === field) ? [\"type\", \"content\", \"size\", \"id\", \"name\"] : [\"type\", \"value\", \"id\", \"purpose\"];\n if (!attributes.includes(attribute) || !Object.hasOwn(field, attribute)) throw new Error(\"Secret attribute is unavailable\");\n return structuredClone(field[attribute]);\n }\n if (![\"list\", \"get\", \"create\", \"edit\", \"update\", \"delete\", ...(resource === \"item\" ? [\"move\"] : [])].includes(action)) throw new Error(\"Unsupported backend action\");\n if (!resource) throw new Error(\"Resource is required\");\n const objects = resources.get(resource) ?? [];\n let candidates = vaulted ? objects.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || (action !== \"list\" && targetSelectors.some(selector => object.id.toLowerCase() === selector.toLowerCase())))) : objects;\n const vaultSelector = action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (typeof vaultSelector === \"string\") {\n const vault = vaultReference(vaultSelector, resources);\n candidates = candidates.filter(object => record(object.vault) ? object.vault.id === vault.id : object.vault === vault.id);\n }\n if (action === \"list\") {\n if (args.length) throw new Error(\"List does not accept a selector\");\n if (resource === \"item\") {\n const categories = strings(flags.categories).map(value => value.toUpperCase().split(\" \").join(\"_\"));\n const tags = strings(flags.tags);\n candidates = candidates.filter(object => (!categories.length || categories.includes(String(object.category))) && (!flags.favorite || object.favorite === true) && (!tags.length || tags.some(tag => Array.isArray(object.tags) && object.tags.some(value => typeof value === \"string\" && (value === tag || value.startsWith(`${tag}/`))))));\n }\n return structuredClone(candidates);\n }\n if (action === \"create\") {\n const bulk = resource === \"item\" && Array.isArray(request.input);\n const inputs = bulk ? request.input as unknown[] : [request.input ?? {}];\n if (!inputs.length || inputs.some(input => !record(input))) throw new Error(\"Create requires an object input\");\n const createdItems: OpObject[] = [];\n for (const source of inputs) {\n let input = structuredClone(source) as Record<string, unknown>;\n if (resource === \"item\") {\n const copying = input.id !== undefined;\n for (const key of [\"id\", \"version\", \"created_at\", \"updated_at\", \"last_edited_by\"]) delete input[key];\n const keyType = flags[\"ssh-generate-key\"];\n if (keyType !== undefined && keyType !== false) {\n if (!ssh) throw new Error(\"SSH generation requires an injected hook\");\n let type = keyType === true || keyType === \"\" ? \"ed25519\" : keyType;\n if (typeof type === \"string\") {\n type = type.toLowerCase();\n if (type.startsWith(\"rsa-\")) type = `rsa${type.slice(4)}`;\n }\n if (typeof type !== \"string\" || ![\"ed25519\", \"rsa\", \"rsa2048\", \"rsa3072\", \"rsa4096\"].includes(type)) throw new Error(\"Unsupported SSH key type\");\n const category = flags.category ?? input.category;\n if (category !== undefined && (typeof category !== \"string\" || category.toUpperCase().split(\" \").join(\"_\") !== \"SSH_KEY\")) throw new Error(\"SSH generation requires the SSH Key category\");\n context.signal.throwIfAborted();\n let generated: Awaited<ReturnType<NonNullable<OpObjectBackendOptions[\"ssh\"]>[\"generate\"]>>;\n try { generated = await ssh.generate(type); }\n finally { context.signal.throwIfAborted(); }\n if (generated.category !== \"SSH_KEY\" || !Array.isArray(generated.fields)) throw new Error(\"Invalid generated SSH key\");\n const fields = new Map((Array.isArray(input.fields) ? input.fields : []).map((field: OpField) => [field.id, field]));\n for (const field of generated.fields) fields.set(field.id, structuredClone(field));\n input = { ...input, category: generated.category, fields: [...fields.values()] };\n }\n const category = flags.category ?? input.category;\n if (typeof category === \"string\") {\n if (input.title !== undefined && typeof input.title !== \"string\") throw new Error(\"Item title must be a string\");\n const supplied = typeof input.category === \"string\" && Array.isArray(input.fields) ? { ...input, id: input.category, title: typeof input.title === \"string\" ? input.title : \"\" } : undefined;\n const template = getItemTemplate(category, resources.get(\"item template\") ?? [], supplied);\n const fields = new Map(template.fields.map(field => [field.id, field]));\n if (input.fields !== undefined && !Array.isArray(input.fields)) throw new Error(\"Item fields must be an array\");\n for (const field of input.fields as unknown[] ?? []) {\n if (!record(field) || typeof field.id !== \"string\") throw new Error(\"Item fields require IDs\");\n fields.set(field.id, merge(fields.get(field.id) ?? {}, field) as OpField);\n }\n input = { ...merge(template, input), category: template.category, fields: [...fields.values()] };\n }\n input = itemPatch(input, args[0] === \"-\" ? args.slice(1) : args, { ...flags, \"ssh-generate-key\": false, ...(typeof input.category === \"string\" ? { category: input.category } : {}) }, nextId);\n if (copying) {\n const sectionIds = new Map<string, string>();\n for (const section of input.sections as OpSection[]) {\n const folded = section.id.toLowerCase();\n if (sectionIds.has(folded)) throw new Error(\"Duplicate item section ID\");\n const id = nextId();\n sectionIds.set(folded, id);\n section.id = id;\n }\n for (const field of input.fields as OpField[]) {\n if (!field.purpose && ![\"username\", \"password\", \"notesPlain\"].includes(field.id)) field.id = nextId();\n }\n for (const file of input.files as OpFile[] ?? []) file.id = nextId();\n for (const member of [...input.fields as OpField[], ...input.files as OpFile[] ?? []]) {\n if (member.section) member.section.id = sectionIds.get(member.section.id.toLowerCase()) ?? member.section.id;\n }\n }\n }\n else if (resource === \"vault\") {\n if (args.length > 1) throw new Error(\"One vault name is required\");\n if (args[0] !== undefined) input.name = args[0];\n for (const key of [\"description\", \"icon\", \"allow-admins-to-manage\"]) if (flags[key] !== undefined) input[key] = flags[key];\n validateVaultOptions(input);\n } else if (args.length || request.input === undefined) throw new Error(\"Create requires an object input\");\n let id = input.id;\n if (id === undefined) {\n id = nextId();\n }\n if (typeof id !== \"string\" || !id || objects.some(object => object.id.toLowerCase() === id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n const created: OpObject = { ...input, id, ...(scope.account !== undefined && resource !== \"account\" ? { account: scope.account } : {}) };\n if (vaulted) {\n created.vault = vaultReference(selectCreationVault(resources.get(\"vault\") ?? [], flags.vault ?? input.vault, defaultVault).id, resources);\n created.state = \"ACTIVE\";\n }\n context.signal.throwIfAborted();\n const current = [...resources.get(resource) ?? [], ...createdItems];\n if (current.some(entry => entry.id.toLowerCase() === created.id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n createdItems.push(created);\n }\n if (!flags[\"dry-run\"]) resources.set(resource, [...resources.get(resource) ?? [], ...createdItems]);\n return structuredClone(bulk ? createdItems : createdItems[0]);\n }\n if (args.length < 1 || (args.length > 1 && !(resource === \"item\" && [\"edit\", \"update\"].includes(action)))) throw new Error(\"One object selector is required\");\n const targets = (batch ? targetSelectors : [args[0]!]).map(selector => select(candidates, selector));\n if (action === \"get\") {\n const values = await Promise.all(targets.map(async object => {\n if (resource === \"item\") object = deriveItemFieldReferences(object as OpItem);\n if (resource === \"item\" && flags.fields !== undefined) {\n const fields = (object as OpItem).fields ?? [];\n const selected: OpField[] = [];\n for (const selector of strings(flags.fields)) {\n const separator = selector.indexOf(\"=\");\n const key = separator < 0 ? \"label\" : selector.slice(0, separator);\n const value = (separator < 0 ? selector : selector.slice(separator + 1)).toLowerCase();\n if (![\"label\", \"type\"].includes(key)) throw new Error(\"Unsupported field selector\");\n const matches = fields.filter(field => String(field[key] ?? (key === \"label\" ? field.id : \"\")).toLowerCase() === value);\n if (!matches.length) throw new Error(\"Field not found\");\n for (const field of matches) if (!selected.includes(field)) selected.push(field);\n }\n return structuredClone(selected);\n }\n if (resource === \"item\" && flags.otp) {\n const field = (object as OpItem).fields?.find(candidate => candidate.type === \"OTP\");\n if (typeof field?.value !== \"string\") throw new Error(\"OTP field is unavailable\");\n const code = await generateOtp(field.value);\n context.signal.throwIfAborted();\n return code;\n }\n return structuredClone(object);\n }));\n return batch ? resource === \"item\" && flags.fields !== undefined ? values.flat() : values : values[0];\n }\n if (action === \"delete\") {\n if (resource === \"vault\" && targets.some(object => [...resources.values()].some(entries => entries.some(entry => entry.state !== \"DELETED\" && (record(entry.vault) ? entry.vault.id === object.id : entry.vault === object.id))))) throw new Error(\"Vault is not empty\");\n resources.set(resource, vaulted ? objects.map(entry => targets.includes(entry) ? { ...entry, state: flags.archive ? \"ARCHIVED\" : \"DELETED\" } : entry) : objects.filter(entry => !targets.includes(entry)));\n return undefined;\n }\n if (action === \"move\") {\n const destination = vaultReference(flags[\"destination-vault\"], resources);\n const moved = [...new Set(targets)].map(object => {\n const item = { ...structuredClone(object), id: nextId(), vault: destination } as OpItem;\n for (const field of item.fields ?? []) delete field.reference;\n return item;\n });\n resources.set(resource, [...objects.map(entry => targets.includes(entry) ? { ...entry, state: \"DELETED\" } : entry), ...moved]);\n return structuredClone(batch ? moved : moved[0]);\n }\n if (!batch && request.input !== undefined && !record(request.input)) throw new Error(\"Update requires an object input\");\n const patch = (batch ? {} : request.input ?? {}) as Record<string, unknown>;\n const updates = new Map(targets.map(object => {\n if (Object.hasOwn(patch, \"id\") && patch.id !== object.id) throw new Error(\"Object IDs cannot be changed\");\n let updated = merge(object, patch) as OpObject;\n if (resource === \"item\") updated = itemPatch(updated, args.slice(1), flags, nextId) as OpObject;\n if (resource === \"vault\") {\n for (const key of [\"name\", \"description\", \"icon\", \"travel-mode\"]) if (flags[key] !== undefined) updated[key] = flags[key];\n validateVaultOptions(updated);\n }\n if (vaulted) updated.vault = vaultReference(updated.vault, resources);\n return [object, updated] as const;\n }));\n context.signal.throwIfAborted();\n if (!flags[\"dry-run\"]) resources.set(resource, objects.map(entry => updates.get(entry) ?? entry));\n return structuredClone(batch ? targets.map(object => updates.get(object)!) : updates.get(targets[0]!));\n }\n const result = await executeScoped(scope.resources);\n context.signal.throwIfAborted();\n if (context.binding) bindings.validateBinding(context.binding, context);\n scope.commit(result);\n if (defaultVault !== undefined && !authentication.resources.get(\"vault\")?.some(vault => vault.id === defaultVault)) throw new Error(\"Cannot remove the configured default vault\");\n const beforeCommit = new Map(executionResources);\n authentication.commit();\n if (!context.binding) bindings.published(beforeCommit);\n return result;\n }\n try { return await (context.binding ? bindings.execute(request, context, executeOperation) : executeOperation(request, resources)); }\n finally { if (prepared) bindings.cancelBinding(prepared.handle); }\n }\n };\n}\n", "import { parseAssignment } from \"./backend.js\";\nimport { renderOpOutput, selectOpBackendContext, type OpCommandContext, type OpCommandOptions } from \"./cli.js\";\nimport type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createHandlerPreparation, createSourceSnapshot } from \"./handler-preparation.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && !(value instanceof Uint8Array);\n}\n\nasync function cancellable<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nasync function stdinText(context: OpCommandContext, encoding: unknown): Promise<string> {\n const decoder = createOpTextCodec(encoding).decoder({ fatal: true });\n const iterator = context.stdin[Symbol.asyncIterator]();\n let source = \"\";\n let length = 0;\n while (true) {\n const next = await cancellable(context.signal, () => iterator.next());\n if (next.done) break;\n length += next.value.byteLength;\n if (length > 16 * 1024 * 1024) throw new Error(\"Item template stdin exceeds 16 MiB\");\n source += decoder.decode(next.value, { stream: true });\n }\n return (source + decoder.decode()).trim();\n}\n\nfunction metadata(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(metadata);\n if (!record(value) || !Array.isArray(value.files)) return value;\n return {\n ...value,\n files: value.files.map(file => record(file) ? Object.fromEntries(Object.entries(file).filter(([key]) => key !== \"content\")) : file)\n };\n}\n\nexport function createItemHandlers(backend: OpBackend): NonNullable<OpCommandOptions[\"handlers\"]> {\n const handlers: Record<string, NonNullable<OpCommandOptions[\"handlers\"]>[string]> = {};\n for (const action of [\"create\", \"edit\"] as const) {\n const mutation = async (request: OpBackendRequest, context: OpCommandContext): Promise<OpBackendRequest> => {\n context.signal.throwIfAborted();\n const args = [...request.args];\n const positional: string[] = [];\n let stdinMarker = false;\n if (action === \"edit\") {\n const selector = args.shift();\n if (!selector || selector === \"-\") throw new Error(\"item edit requires an item selector\");\n positional.push(selector);\n } else if (args[0] === \"-\") {\n args.shift();\n stdinMarker = true;\n }\n const assignments = args.map(source => ({ source, parsed: parseAssignment(source) }));\n for (const { parsed } of assignments) {\n if (parsed.type === \"file\" && !parsed.value) throw new Error(\"File assignments require a file path\");\n }\n const path = request.flags.template;\n if (path !== undefined && (typeof path !== \"string\" || !path)) throw new Error(\"--template requires a file path\");\n if (path !== undefined && (stdinMarker || request.input !== undefined)) throw new Error(\"Cannot combine --template with stdin item templates\");\n const piped = await stdinText(context, request.flags.encoding);\n if (piped && (path !== undefined || request.input !== undefined)) throw new Error(\"Cannot combine multiple item template sources\");\n if (stdinMarker && !piped && request.input === undefined) throw new Error(\"Expected an item JSON template on stdin\");\n let source = piped;\n if (typeof path === \"string\") {\n if (!context.readFile) throw new Error(\"Item templates require a host readFile capability\");\n const bytes = await cancellable(context.signal, () => context.readFile!(path));\n source = createOpTextCodec(request.flags.encoding).decoder({ fatal: true }).decode(bytes);\n }\n let input: Record<string, unknown> | Record<string, unknown>[] | undefined;\n if (source || path !== undefined || request.input !== undefined) {\n let parsed: unknown;\n try { parsed = request.input === undefined ? JSON.parse(source) : request.input; }\n catch { throw new Error(\"Invalid item JSON template\"); }\n if (Array.isArray(parsed)) {\n if (action !== \"create\" || path !== undefined || !parsed.length || parsed.some(value => !record(value))) throw new Error(\"Item JSON templates must be a nonempty array of objects on create stdin\");\n } else if (!record(parsed)) throw new Error(\"Item JSON template must be an object\");\n input = structuredClone(parsed);\n }\n for (const { source: assignment, parsed } of assignments) {\n if (parsed.type !== \"file\") {\n positional.push(assignment);\n continue;\n }\n if (!context.readFile) throw new Error(\"File attachments require a host readFile capability\");\n const bytes = await cancellable(context.signal, () => context.readFile!(parsed.value!));\n input ??= {};\n for (const item of Array.isArray(input) ? input : [input]) {\n if (item.files !== undefined && !Array.isArray(item.files)) throw new Error(\"Item files must be an array\");\n item.files = [...(item.files as unknown[] | undefined) ?? [], {\n name: parsed.field,\n size: bytes.byteLength,\n content: Uint8Array.from(bytes),\n ...(parsed.section === undefined ? {} : { section: { label: parsed.section } })\n }];\n }\n }\n const flags = { ...request.flags };\n delete flags.template;\n return { ...request, args: positional, flags, ...(input === undefined ? {} : { input }) };\n };\n handlers[`item ${action}`] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n const prepared = await mutation(request, context);\n const result = await cancellable(context.signal, () => backend.execute(prepared, selectOpBackendContext(context)));\n const output = renderOpOutput(metadata(result), request);\n if (output !== undefined) await cancellable(context.signal, () => context.stdout.write(output));\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context);\n await source.input();\n const prepared = await mutation(request, { ...source.context, readFile: source.file });\n return createHandlerPreparation([prepared], source.context, [{ kind: \"stdout\" }]);\n },\n });\n }\n return handlers;\n}\n", "import { createOpCommand, type OpCommandOptions } from \"./cli.js\";\nimport { createSecretHandlers } from \"./secrets.js\";\nimport { createCompletionHandler } from \"./completion.js\";\nimport { createEnvironmentHandlers } from \"./environment-commands.js\";\nimport { createDocumentHandlers } from \"./documents.js\";\nimport { createItemHandlers } from \"./items.js\";\n\nexport * from \"./types.js\";\nexport * from \"./cli.js\";\nexport type { OpConfirmOverwrite, OpSelectPlugin } from \"./host-contracts.js\";\nexport type { OpAdminHook, OpAdminHookResult, OpAdminContext } from \"./admin.js\";\nexport type { OpItemTemplate } from \"./templates.js\";\nexport { createObjectBackend } from \"./backend.js\";\nexport { parseSecretReference } from \"./references.js\";\nexport { createSecretHandlers } from \"./secrets.js\";\nexport { captureEnvironment, restoreEnvironment, type EnvironmentSnapshot } from \"./environment.js\";\nexport { createEnvironmentHandlers, type EnvironmentCommandContext } from \"./environment-commands.js\";\nexport { createDocumentHandlers, type OpDocumentHandlerOptions } from \"./documents.js\";\nexport { createItemHandlers } from \"./items.js\";\n\nexport function createOp(options: OpCommandOptions) {\n return createOpCommand({\n ...options,\n handlers: { ...createSecretHandlers(options.backend), ...createDocumentHandlers(options.backend), ...createItemHandlers(options.backend), ...createEnvironmentHandlers(options.backend), completion: createCompletionHandler(options.channel), ...options.handlers },\n });\n}\n", "import { collectBytes, readBytes } from \"poe-code/safe-fs/core\";\nimport type { ByteSource, CollectOptions } from \"poe-code/safe-fs/core\";\nexport { collectBytes, readBytes, toByteSource } from \"poe-code/safe-fs/core\";\nexport type { ByteSource, CollectOptions } from \"poe-code/safe-fs/core\";\nimport { FsError } from \"./errors.js\";\n\nexport const outputFailure = Symbol(\"output failure\");\n\nexport interface ByteSink {\n write(chunk: Uint8Array): Promise<void>;\n readonly [outputFailure]?: (reason: unknown) => Promise<void>;\n readonly ownedOutput?: {\n readonly consumerClosed: AbortSignal;\n write(chunk: Uint8Array): Promise<void>;\n };\n}\n\nexport interface BytePipe {\n readonly readable: ByteSource;\n readonly writable: ByteSink;\n readonly endpoints?: { readonly read: PipeReadEndpoint; readonly write: PipeWriteEndpoint };\n readiness(): \"ready\" | \"eof\" | \"blocked\";\n close(): Promise<void>;\n abort(reason?: unknown): Promise<void>;\n}\n\nexport interface PipeEndpointObservation {\n readonly revision: bigint;\n readonly ready: boolean;\n readonly peerClosed: boolean;\n}\n\nexport interface PipeEndpointWaitOptions {\n readonly timeoutMs: number;\n readonly signal?: AbortSignal | undefined;\n}\n\ninterface PipeEndpoint {\n probe(): PipeEndpointObservation;\n waitForChange(revision: bigint, options: PipeEndpointWaitOptions): Promise<PipeEndpointObservation | undefined>;\n close(): Promise<void>;\n}\n\nexport interface PipeReadEndpoint extends PipeEndpoint {\n readonly direction: \"read\";\n readonly readable: ByteSource;\n acquire(): PipeReadEndpoint;\n}\n\nexport interface PipeWriteEndpoint extends PipeEndpoint {\n readonly direction: \"write\";\n readonly writable: ByteSink;\n acquire(): PipeWriteEndpoint;\n}\n\nexport interface BytePipeOptions {\n readonly highWaterMark?: number;\n readonly signal?: AbortSignal;\n}\n\nexport function createBytePipe(options: BytePipeOptions = {}): BytePipe {\n const highWaterMark = options.highWaterMark ?? 64 * 1024;\n const signal = options.signal;\n if (!Number.isSafeInteger(highWaterMark) || highWaterMark < 1) {\n throw new RangeError(\"highWaterMark must be a positive safe integer\");\n }\n interface EndpointState {\n readonly direction: \"read\" | \"write\";\n readonly writes: Set<WriteRequest>;\n open: boolean;\n closing: Promise<void> | undefined;\n }\n interface ReadLease {\n readonly endpoint: EndpointState;\n readonly pending: Set<ReadRequest>;\n done: boolean;\n }\n interface ReadRequest {\n readonly lease: ReadLease;\n readonly resolve: (result: IteratorResult<Uint8Array>) => void;\n readonly reject: (reason: unknown) => void;\n }\n interface WriteRequest {\n readonly endpoint: EndpointState;\n readonly chunk: Uint8Array;\n readonly completion: Promise<void>;\n readonly resolve: () => void;\n readonly reject: (reason: unknown) => void;\n }\n interface ObservationWaiter { changed(): void; aborted(reason: unknown): void; }\n const maximumObservationWaiters = 64;\n const buffered = new Set<Uint8Array>();\n const reads = new Set<ReadRequest>();\n const writes = new Set<WriteRequest>();\n const observers = new Set<ObservationWaiter>();\n let availableBytes = 0;\n let readerReferences = 0;\n let writerReferences = 0;\n let revision = 0n;\n let failed = false;\n let failure: unknown;\n let closePromise: Promise<void> | undefined;\n let abortPromise: Promise<void> | undefined;\n let finished = false;\n const consumer = new AbortController();\n const brokenPipe = (): FsError => new FsError(\"EPIPE\", { syscall: \"pipe\" });\n const checkFailure = (): void => { if (failed) throw failure; };\n const checkEndpoint = (endpoint: EndpointState): void => {\n checkFailure();\n signal?.throwIfAborted();\n if (!endpoint.open) throw new FsError(\"EBADF\", { syscall: \"pipe\" });\n };\n const changed = (): void => {\n revision++;\n for (const observer of [...observers]) observer.changed();\n };\n const removeRead = (request: ReadRequest): void => {\n reads.delete(request);\n request.lease.pending.delete(request);\n };\n const removeWrite = (request: WriteRequest): void => {\n writes.delete(request);\n request.endpoint.writes.delete(request);\n };\n const cleanup = (): void => { if (!observers.size) signal?.removeEventListener(\"abort\", onAbort); };\n const pump = (): void => {\n if (failed) return;\n while (true) {\n const reading = reads.values().next().value as ReadRequest | undefined;\n const chunk = buffered.values().next().value as Uint8Array | undefined;\n if (reading && chunk) {\n removeRead(reading);\n buffered.delete(chunk);\n availableBytes -= chunk.byteLength;\n reading.resolve({ done: false, value: chunk });\n changed();\n continue;\n }\n const writing = writes.values().next().value as WriteRequest | undefined;\n if (writing && (reading || availableBytes < highWaterMark)) {\n removeWrite(writing);\n buffered.add(writing.chunk);\n availableBytes += writing.chunk.byteLength;\n writing.resolve();\n changed();\n continue;\n }\n if (!writerReferences && !writes.size && !buffered.size && reads.size) {\n finished = true;\n for (const request of reads) {\n removeRead(request);\n request.lease.done = true;\n request.resolve({ done: true, value: undefined });\n }\n cleanup();\n }\n break;\n }\n };\n const fail = (reason: unknown): Promise<void> => {\n if (abortPromise) return abortPromise;\n if (finished) {\n for (const observer of [...observers]) observer.aborted(reason);\n return Promise.resolve();\n }\n abortPromise = Promise.resolve();\n failed = true;\n failure = reason;\n buffered.clear();\n availableBytes = 0;\n for (const request of reads) {\n removeRead(request);\n request.lease.done = true;\n request.reject(reason);\n }\n for (const request of writes) {\n removeWrite(request);\n request.reject(reason);\n }\n consumer.abort(reason);\n changed();\n cleanup();\n return abortPromise;\n };\n const abort = (reason: unknown = new FsError(\"EPIPE\", { syscall: \"pipe\" })): Promise<void> => fail(reason);\n const onAbort = (): void => { void fail(signal?.reason); };\n const probe = (endpoint: EndpointState): PipeEndpointObservation => {\n checkEndpoint(endpoint);\n const peerClosed = endpoint.direction === \"read\" ? writerReferences === 0 : readerReferences === 0;\n return Object.freeze({ revision, ready: peerClosed || endpoint.direction === \"read\" && availableBytes > 0, peerClosed });\n };\n const waitForChange = (endpoint: EndpointState, previous: bigint, options: PipeEndpointWaitOptions): Promise<PipeEndpointObservation | undefined> => {\n try {\n const { signal: waitingSignal, timeoutMs } = options;\n const localSignal = waitingSignal === signal ? undefined : waitingSignal;\n checkFailure();\n signal?.throwIfAborted();\n waitingSignal?.throwIfAborted();\n checkEndpoint(endpoint);\n if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 0 || timeoutMs > 2_147_483_647) throw new RangeError(\"timeoutMs must be an integer between zero and 2147483647\");\n if (typeof previous !== \"bigint\" || previous < 0n || previous > revision) throw new RangeError(\"Invalid pipe observation revision\");\n if (previous !== revision) return Promise.resolve(probe(endpoint));\n if (!timeoutMs) return Promise.resolve(undefined);\n if (observers.size >= maximumObservationWaiters) throw new RangeError(\"Too many pending pipe endpoint observations\");\n return new Promise((resolve, reject) => {\n let settled = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const retire = (): boolean => {\n if (settled) return false;\n settled = true;\n observers.delete(observer);\n if (timer !== undefined) clearTimeout(timer);\n localSignal?.removeEventListener(\"abort\", interrupted);\n if (finished || failed || !readerReferences && !writerReferences) cleanup();\n return true;\n };\n const settle = (timedOut = false): void => {\n if (!retire()) return;\n try {\n checkFailure();\n signal?.throwIfAborted();\n waitingSignal?.throwIfAborted();\n checkEndpoint(endpoint);\n resolve(timedOut ? undefined : probe(endpoint));\n } catch (reason) { reject(reason); }\n };\n const interrupted = (): void => settle();\n const observer: ObservationWaiter = {\n changed: () => settle(),\n aborted(reason) { if (retire()) reject(signal?.aborted ? signal.reason : reason); },\n };\n observers.add(observer);\n try {\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n localSignal?.addEventListener(\"abort\", interrupted, { once: true });\n if (settled) {\n localSignal?.removeEventListener(\"abort\", interrupted);\n if (finished || failed || !readerReferences && !writerReferences) cleanup();\n }\n if (signal?.aborted || waitingSignal?.aborted || revision !== previous || !endpoint.open || failed) settle();\n if (!settled) timer = setTimeout(() => settle(true), timeoutMs);\n } catch (reason) { if (retire()) reject(reason); }\n });\n } catch (reason) { return Promise.reject(reason); }\n };\n const closeEndpoint = (endpoint: EndpointState): Promise<void> => {\n if (endpoint.closing) return endpoint.closing;\n let closed!: () => void;\n endpoint.closing = new Promise(resolve => { closed = resolve; });\n endpoint.open = false;\n const admittedWrites = [...endpoint.writes].map(request => request.completion);\n if (endpoint.direction === \"read\") {\n readerReferences--;\n for (const request of reads) if (request.lease.endpoint === endpoint) {\n removeRead(request);\n request.lease.done = true;\n request.reject(failed ? failure : new FsError(\"EBADF\", { syscall: \"read\" }));\n }\n if (!readerReferences) {\n buffered.clear();\n availableBytes = 0;\n const reason = brokenPipe();\n for (const request of writes) {\n removeWrite(request);\n request.reject(failed ? failure : reason);\n }\n consumer.abort(reason);\n }\n } else writerReferences--;\n changed();\n pump();\n if (!readerReferences && !writerReferences) cleanup();\n void Promise.allSettled(admittedWrites).then(closed);\n return endpoint.closing;\n };\n const borrow = (endpoint: EndpointState): AsyncIterableIterator<Uint8Array> => {\n const lease: ReadLease = { endpoint, pending: new Set(), done: false };\n const release = (): IteratorResult<Uint8Array> => {\n lease.done = true;\n for (const request of lease.pending) {\n removeRead(request);\n request.resolve({ done: true, value: undefined });\n }\n return { done: true, value: undefined };\n };\n return {\n [Symbol.asyncIterator]() { return this; },\n next() {\n if (lease.done) return Promise.resolve({ done: true, value: undefined });\n try { checkEndpoint(endpoint); }\n catch (reason) { lease.done = true; return Promise.reject(reason); }\n return new Promise((resolve, reject) => {\n const request: ReadRequest = { lease, resolve, reject };\n reads.add(request);\n lease.pending.add(request);\n pump();\n });\n },\n async return() { return release(); },\n async throw(reason) { release(); throw reason; },\n };\n };\n const write = (endpoint: EndpointState, chunk: Uint8Array, legacy = false): Promise<void> => {\n try {\n checkFailure();\n if (!legacy) signal?.throwIfAborted();\n if (!endpoint.open) throw new FsError(legacy ? \"EPIPE\" : \"EBADF\", { syscall: \"write\" });\n if (!readerReferences) throw brokenPipe();\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Byte sinks require Uint8Array chunks\");\n if (!chunk.byteLength) return Promise.resolve();\n const owned = new Uint8Array(chunk);\n let resolve!: () => void;\n let reject!: (reason: unknown) => void;\n const completion = new Promise<void>((accept, refuse) => { resolve = accept; reject = refuse; });\n const request: WriteRequest = { endpoint, chunk: owned, completion, resolve, reject };\n endpoint.writes.add(request);\n writes.add(request);\n pump();\n return completion;\n } catch (reason) { return Promise.reject(reason); }\n };\n const createState = (direction: \"read\" | \"write\"): EndpointState => {\n if (direction === \"read\") readerReferences++;\n else writerReferences++;\n changed();\n return { direction, writes: new Set(), open: true, closing: undefined };\n };\n const createReadEndpoint = (state: EndpointState): PipeReadEndpoint => ({\n direction: \"read\",\n readable: { [Symbol.asyncIterator]: () => borrow(state) },\n acquire() { checkEndpoint(state); return createReadEndpoint(createState(\"read\")); },\n probe: () => probe(state),\n waitForChange: (previous, options) => waitForChange(state, previous, options),\n close: () => closeEndpoint(state),\n });\n const createWriteEndpoint = (state: EndpointState): PipeWriteEndpoint => {\n const writing = (chunk: Uint8Array): Promise<void> => write(state, chunk);\n return {\n direction: \"write\",\n writable: { write: writing, [outputFailure]: fail, ownedOutput: { consumerClosed: consumer.signal, write: writing } },\n acquire() { checkEndpoint(state); return createWriteEndpoint(createState(\"write\")); },\n probe: () => probe(state),\n waitForChange: (previous, options) => waitForChange(state, previous, options),\n close: () => closeEndpoint(state),\n };\n };\n const readState = createState(\"read\");\n const writeState = createState(\"write\");\n const endpoints = { read: createReadEndpoint(readState), write: createWriteEndpoint(writeState) };\n const reader = borrow(readState);\n const iterator = (async function* (): AsyncGenerator<Uint8Array> {\n try {\n while (true) {\n if (failed) throw failure;\n const result = await reader.next();\n if (failed) throw failure;\n if (result.done) {\n finished = true;\n return;\n }\n yield result.value;\n }\n } finally {\n if (!finished) await abort();\n await reader.return?.();\n }\n })();\n const readable: AsyncIterableIterator<Uint8Array> = {\n [Symbol.asyncIterator]() { return this; },\n next() { return iterator.next(); },\n async return() {\n if (!finished) await abort();\n try {\n return await iterator.return(undefined);\n } finally {\n await reader.return?.();\n }\n },\n async throw(reason) {\n await fail(reason);\n try {\n return await iterator.throw(reason);\n } finally {\n await reader.return?.();\n }\n },\n };\n const legacyWrite = (chunk: Uint8Array): Promise<void> => write(writeState, chunk, true);\n if (signal?.aborted) onAbort();\n else signal?.addEventListener(\"abort\", onAbort, { once: true });\n return {\n readable,\n endpoints,\n readiness() {\n if (failed) throw failure;\n return availableBytes > 0 ? \"ready\" : !writerReferences && !writes.size ? \"eof\" : \"blocked\";\n },\n writable: {\n write: legacyWrite,\n [outputFailure]: fail,\n ownedOutput: { consumerClosed: consumer.signal, write: legacyWrite },\n },\n close() {\n if (failed) return Promise.reject(failure);\n closePromise ??= closeEndpoint(writeState).then(() => { checkFailure(); });\n return closePromise;\n },\n abort,\n };\n}\n\nexport async function writeText(sink: ByteSink, text: string): Promise<void> {\n await sink.write(new TextEncoder().encode(text));\n}\n\nexport async function writeBytes(sink: ByteSink, chunk: Uint8Array, signal?: AbortSignal): Promise<void> {\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Byte sinks require Uint8Array chunks\");\n await abortable(() => sink.write(chunk), signal);\n}\n\nexport async function pipeBytes(source: ByteSource, sink: ByteSink, signal?: AbortSignal): Promise<void> {\n signal?.throwIfAborted();\n for await (const chunk of readBytes(source, signal)) {\n await writeBytes(sink, chunk, signal);\n }\n signal?.throwIfAborted();\n}\n\nexport async function collectText(source: ByteSource, options: CollectOptions): Promise<string> {\n return new TextDecoder().decode(await collectBytes(source, options));\n}\n\nasync function abortable<Result>(operation: () => PromiseLike<Result>, signal?: AbortSignal): Promise<Result> {\n signal?.throwIfAborted();\n if (!signal) return operation();\n return new Promise<Result>((resolve, reject) => {\n const onAbort = (): void => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n Promise.resolve(operation()).then(\n (result) => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve(result);\n },\n (error: unknown) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n },\n );\n } catch (error) {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n }\n });\n}\n", "export { validatePath, resolvePath, normalizePath, relativePath, isPathWithin, assertPathWithin, basename, dirname, extname, joinPath, isAbsolutePath, posixPath } from \"poe-code/safe-fs/core\";\n", "import { createOp, type OpCommandContext, type OpCommandOptions } from \"@poe-platform/op\";\nimport { readBytes, resolvePath, type CommandDefinition, type VirtualShellPlugin } from \"../../contracts/index.js\";\n\nexport { createObjectBackend } from \"@poe-platform/op\";\nexport type { OpBackend, OpObjectBackendOptions, OpBackendRequest, OpResolvedApproval } from \"@poe-platform/op\";\n\nexport interface OpCommandsOptions extends OpCommandOptions {\n readonly replace?: boolean;\n readonly authentication?: OpCommandContext[\"authentication\"];\n readonly pluginScope?: OpCommandContext[\"pluginScope\"];\n readonly confirmPluginClear?: OpCommandContext[\"confirmPluginClear\"];\n readonly selectPlugin?: OpCommandContext[\"selectPlugin\"];\n}\n\nexport function createOpCommand(options: OpCommandsOptions): CommandDefinition {\n const command = createOp(options);\n const authentication = options.authentication === undefined ? undefined : Object.freeze({ ...options.authentication });\n const pluginScope = options.pluginScope === undefined ? undefined : Object.freeze({ ...options.pluginScope });\n const confirmPluginClear = options.confirmPluginClear;\n const selectPlugin = options.selectPlugin;\n return {\n name: \"op\",\n description: \"Object-backed secrets with explicitly granted virtual shell capabilities\",\n async execute(context) {\n const { fs, signal, cwd } = context;\n const invocation: OpCommandContext = {\n args: context.args,\n env: { ...context.env },\n signal,\n stdin: readBytes(context.stdin, signal),\n stdout: context.stdout,\n stderr: context.stderr,\n ...(authentication === undefined ? {} : { authentication }),\n ...(pluginScope === undefined ? {} : { pluginScope }),\n ...(confirmPluginClear === undefined ? {} : { confirmPluginClear }),\n ...(selectPlugin === undefined ? {} : { selectPlugin }),\n async readFile(path) {\n signal.throwIfAborted();\n const resolved = resolvePath(cwd, path);\n const capabilities = fs.capabilitiesFor ? await fs.capabilitiesFor(resolved, { signal }) : fs.capabilities;\n if (capabilities.read !== true) throw new Error(\"op requires VFS read capability\");\n const bytes = await fs.readFile(resolved, { signal, maxBytes: 16 * 1024 * 1024 });\n signal.throwIfAborted();\n return Uint8Array.from(bytes);\n },\n async writeFile(path, bytes, settings = {}) {\n signal.throwIfAborted();\n const resolved = resolvePath(cwd, path);\n const capabilities = fs.capabilitiesFor ? await fs.capabilitiesFor(resolved, { signal }) : fs.capabilities;\n if (capabilities.readOnly || capabilities.write !== true || capabilities.permissions !== true || capabilities.exclusiveCreate !== true) {\n throw new Error(\"op requires VFS write, permissions and exclusive-create capabilities\");\n }\n const mode = settings.mode ?? 0o600;\n const data = Uint8Array.from(bytes);\n signal.throwIfAborted();\n try {\n await fs.writeFile(resolved, data, { signal, mode, flag: \"wx\" });\n } catch (error) {\n if (!settings.overwrite || !error || typeof error !== \"object\" || !(\"code\" in error) || error.code !== \"EEXIST\") throw error;\n if (!fs.chmod || capabilities.stat !== true) throw new Error(\"op requires VFS chmod and stat capabilities to overwrite\");\n const status = await fs.lstat(resolved, { signal });\n if (status.type !== \"file\") throw new Error(\"op output must be a regular file\");\n await fs.chmod(resolved, mode, { signal });\n signal.throwIfAborted();\n await fs.writeFile(resolved, data, { signal, mode, flag: \"w\" });\n }\n signal.throwIfAborted();\n },\n ...(context.invoke === undefined ? {} : {\n async invoke(name, args, settings) {\n signal.throwIfAborted();\n const result = await context.invoke!(name, args, {\n signal, cwd, stdin: context.stdin, stdinIsDefault: context.stdinIsDefault ?? false,\n env: { ...settings.env }, replaceEnv: true,\n stdout: settings.stdout ?? context.stdout,\n stderr: settings.stderr ?? context.stderr,\n });\n signal.throwIfAborted();\n return result;\n },\n } satisfies Pick<OpCommandContext, \"invoke\">),\n };\n return command.execute(invocation);\n },\n };\n}\n\nexport function opCommands(options: OpCommandsOptions): VirtualShellPlugin {\n const definition = createOpCommand(options);\n const replace = options.replace ?? false;\n return {\n name: \"op-commands\",\n setup(host) {\n if (!replace && host.commands.has(\"op\")) throw new Error(\"Command already registered: op\");\n host.commands.register(definition, { replace });\n },\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["TextDecoder", "TextDecoder", "metadata", "command", "word", "width", "name", "definition", "previous", "selectors", "pending", "writeOptions", "destination", "metadata", "end", "metadata", "metadata", "result", "value", "bytes", "record", "account", "selectors", "record", "object", "record", "object", "session", "object", "record", "entries", "template", "vault", "record", "select", "object", "metadata", "value", "field", "strings", "selectors", "record", "section", "matches", "field", "merge", "select", "object", "vault", "request", "resources", "item", "candidates", "category", "template", "id", "record", "cancellable", "metadata", "source", "collectBytes", "readBytes", "createOpCommand", "readBytes"]
7
7
  }