@xyteai/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +245 -0
  3. package/dist/bin/xyte-cli.d.ts +3 -0
  4. package/dist/bin/xyte-cli.d.ts.map +1 -0
  5. package/dist/bin/xyte-cli.js +18 -0
  6. package/dist/bin/xyte-cli.js.map +1 -0
  7. package/dist/cli/index.d.ts +24 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +1185 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/client/catalog.d.ts +6 -0
  12. package/dist/client/catalog.d.ts.map +1 -0
  13. package/dist/client/catalog.js +32 -0
  14. package/dist/client/catalog.js.map +1 -0
  15. package/dist/client/create-client.d.ts +3 -0
  16. package/dist/client/create-client.d.ts.map +1 -0
  17. package/dist/client/create-client.js +235 -0
  18. package/dist/client/create-client.js.map +1 -0
  19. package/dist/config/connectivity.d.ts +19 -0
  20. package/dist/config/connectivity.d.ts.map +1 -0
  21. package/dist/config/connectivity.js +166 -0
  22. package/dist/config/connectivity.js.map +1 -0
  23. package/dist/config/readiness.d.ts +32 -0
  24. package/dist/config/readiness.d.ts.map +1 -0
  25. package/dist/config/readiness.js +96 -0
  26. package/dist/config/readiness.js.map +1 -0
  27. package/dist/config/retry-policy.d.ts +16 -0
  28. package/dist/config/retry-policy.d.ts.map +1 -0
  29. package/dist/config/retry-policy.js +24 -0
  30. package/dist/config/retry-policy.js.map +1 -0
  31. package/dist/contracts/call-envelope.d.ts +74 -0
  32. package/dist/contracts/call-envelope.d.ts.map +1 -0
  33. package/dist/contracts/call-envelope.js +72 -0
  34. package/dist/contracts/call-envelope.js.map +1 -0
  35. package/dist/contracts/problem.d.ts +11 -0
  36. package/dist/contracts/problem.d.ts.map +1 -0
  37. package/dist/contracts/problem.js +55 -0
  38. package/dist/contracts/problem.js.map +1 -0
  39. package/dist/contracts/versions.d.ts +6 -0
  40. package/dist/contracts/versions.d.ts.map +1 -0
  41. package/dist/contracts/versions.js +9 -0
  42. package/dist/contracts/versions.js.map +1 -0
  43. package/dist/http/errors.d.ts +24 -0
  44. package/dist/http/errors.d.ts.map +1 -0
  45. package/dist/http/errors.js +39 -0
  46. package/dist/http/errors.js.map +1 -0
  47. package/dist/http/transport.d.ts +35 -0
  48. package/dist/http/transport.d.ts.map +1 -0
  49. package/dist/http/transport.js +129 -0
  50. package/dist/http/transport.js.map +1 -0
  51. package/dist/index.d.ts +10 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +23 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/mcp/server.d.ts +12 -0
  56. package/dist/mcp/server.d.ts.map +1 -0
  57. package/dist/mcp/server.js +404 -0
  58. package/dist/mcp/server.js.map +1 -0
  59. package/dist/namespaces/device.d.ts +38 -0
  60. package/dist/namespaces/device.d.ts.map +1 -0
  61. package/dist/namespaces/device.js +36 -0
  62. package/dist/namespaces/device.js.map +1 -0
  63. package/dist/namespaces/organization.d.ts +27 -0
  64. package/dist/namespaces/organization.d.ts.map +1 -0
  65. package/dist/namespaces/organization.js +30 -0
  66. package/dist/namespaces/organization.js.map +1 -0
  67. package/dist/namespaces/partner.d.ts +18 -0
  68. package/dist/namespaces/partner.d.ts.map +1 -0
  69. package/dist/namespaces/partner.js +21 -0
  70. package/dist/namespaces/partner.js.map +1 -0
  71. package/dist/observability/logger.d.ts +3 -0
  72. package/dist/observability/logger.d.ts.map +1 -0
  73. package/dist/observability/logger.js +21 -0
  74. package/dist/observability/logger.js.map +1 -0
  75. package/dist/observability/tracing.d.ts +3 -0
  76. package/dist/observability/tracing.d.ts.map +1 -0
  77. package/dist/observability/tracing.js +26 -0
  78. package/dist/observability/tracing.js.map +1 -0
  79. package/dist/secure/key-slots.d.ts +8 -0
  80. package/dist/secure/key-slots.d.ts.map +1 -0
  81. package/dist/secure/key-slots.js +47 -0
  82. package/dist/secure/key-slots.js.map +1 -0
  83. package/dist/secure/keychain.d.ts +20 -0
  84. package/dist/secure/keychain.d.ts.map +1 -0
  85. package/dist/secure/keychain.js +170 -0
  86. package/dist/secure/keychain.js.map +1 -0
  87. package/dist/secure/profile-store.d.ts +66 -0
  88. package/dist/secure/profile-store.d.ts.map +1 -0
  89. package/dist/secure/profile-store.js +309 -0
  90. package/dist/secure/profile-store.js.map +1 -0
  91. package/dist/spec/public-endpoints.json +1175 -0
  92. package/dist/tui/animation.d.ts +12 -0
  93. package/dist/tui/animation.d.ts.map +1 -0
  94. package/dist/tui/animation.js +41 -0
  95. package/dist/tui/animation.js.map +1 -0
  96. package/dist/tui/app.d.ts +27 -0
  97. package/dist/tui/app.d.ts.map +1 -0
  98. package/dist/tui/app.js +711 -0
  99. package/dist/tui/app.js.map +1 -0
  100. package/dist/tui/assets/logo.d.ts +5 -0
  101. package/dist/tui/assets/logo.d.ts.map +1 -0
  102. package/dist/tui/assets/logo.js +24 -0
  103. package/dist/tui/assets/logo.js.map +1 -0
  104. package/dist/tui/data-loaders.d.ts +33 -0
  105. package/dist/tui/data-loaders.d.ts.map +1 -0
  106. package/dist/tui/data-loaders.js +250 -0
  107. package/dist/tui/data-loaders.js.map +1 -0
  108. package/dist/tui/dispatch.d.ts +14 -0
  109. package/dist/tui/dispatch.d.ts.map +1 -0
  110. package/dist/tui/dispatch.js +44 -0
  111. package/dist/tui/dispatch.js.map +1 -0
  112. package/dist/tui/headless-renderer.d.ts +20 -0
  113. package/dist/tui/headless-renderer.d.ts.map +1 -0
  114. package/dist/tui/headless-renderer.js +598 -0
  115. package/dist/tui/headless-renderer.js.map +1 -0
  116. package/dist/tui/input-controller.d.ts +29 -0
  117. package/dist/tui/input-controller.d.ts.map +1 -0
  118. package/dist/tui/input-controller.js +76 -0
  119. package/dist/tui/input-controller.js.map +1 -0
  120. package/dist/tui/key-wizard.d.ts +29 -0
  121. package/dist/tui/key-wizard.d.ts.map +1 -0
  122. package/dist/tui/key-wizard.js +177 -0
  123. package/dist/tui/key-wizard.js.map +1 -0
  124. package/dist/tui/keymap.d.ts +9 -0
  125. package/dist/tui/keymap.d.ts.map +1 -0
  126. package/dist/tui/keymap.js +29 -0
  127. package/dist/tui/keymap.js.map +1 -0
  128. package/dist/tui/layout.d.ts +16 -0
  129. package/dist/tui/layout.d.ts.map +1 -0
  130. package/dist/tui/layout.js +99 -0
  131. package/dist/tui/layout.js.map +1 -0
  132. package/dist/tui/logger.d.ts +12 -0
  133. package/dist/tui/logger.d.ts.map +1 -0
  134. package/dist/tui/logger.js +83 -0
  135. package/dist/tui/logger.js.map +1 -0
  136. package/dist/tui/navigation.d.ts +26 -0
  137. package/dist/tui/navigation.d.ts.map +1 -0
  138. package/dist/tui/navigation.js +136 -0
  139. package/dist/tui/navigation.js.map +1 -0
  140. package/dist/tui/panes.d.ts +7 -0
  141. package/dist/tui/panes.d.ts.map +1 -0
  142. package/dist/tui/panes.js +34 -0
  143. package/dist/tui/panes.js.map +1 -0
  144. package/dist/tui/runtime.d.ts +34 -0
  145. package/dist/tui/runtime.d.ts.map +1 -0
  146. package/dist/tui/runtime.js +100 -0
  147. package/dist/tui/runtime.js.map +1 -0
  148. package/dist/tui/scene.d.ts +160 -0
  149. package/dist/tui/scene.d.ts.map +1 -0
  150. package/dist/tui/scene.js +424 -0
  151. package/dist/tui/scene.js.map +1 -0
  152. package/dist/tui/screens/config.d.ts +3 -0
  153. package/dist/tui/screens/config.d.ts.map +1 -0
  154. package/dist/tui/screens/config.js +406 -0
  155. package/dist/tui/screens/config.js.map +1 -0
  156. package/dist/tui/screens/dashboard.d.ts +3 -0
  157. package/dist/tui/screens/dashboard.d.ts.map +1 -0
  158. package/dist/tui/screens/dashboard.js +176 -0
  159. package/dist/tui/screens/dashboard.js.map +1 -0
  160. package/dist/tui/screens/devices.d.ts +3 -0
  161. package/dist/tui/screens/devices.d.ts.map +1 -0
  162. package/dist/tui/screens/devices.js +297 -0
  163. package/dist/tui/screens/devices.js.map +1 -0
  164. package/dist/tui/screens/incidents.d.ts +4 -0
  165. package/dist/tui/screens/incidents.d.ts.map +1 -0
  166. package/dist/tui/screens/incidents.js +304 -0
  167. package/dist/tui/screens/incidents.js.map +1 -0
  168. package/dist/tui/screens/setup.d.ts +3 -0
  169. package/dist/tui/screens/setup.d.ts.map +1 -0
  170. package/dist/tui/screens/setup.js +299 -0
  171. package/dist/tui/screens/setup.js.map +1 -0
  172. package/dist/tui/screens/spaces.d.ts +7 -0
  173. package/dist/tui/screens/spaces.d.ts.map +1 -0
  174. package/dist/tui/screens/spaces.js +422 -0
  175. package/dist/tui/screens/spaces.js.map +1 -0
  176. package/dist/tui/screens/tickets.d.ts +9 -0
  177. package/dist/tui/screens/tickets.d.ts.map +1 -0
  178. package/dist/tui/screens/tickets.js +418 -0
  179. package/dist/tui/screens/tickets.js.map +1 -0
  180. package/dist/tui/serialize.d.ts +31 -0
  181. package/dist/tui/serialize.d.ts.map +1 -0
  182. package/dist/tui/serialize.js +183 -0
  183. package/dist/tui/serialize.js.map +1 -0
  184. package/dist/tui/table-format.d.ts +11 -0
  185. package/dist/tui/table-format.d.ts.map +1 -0
  186. package/dist/tui/table-format.js +77 -0
  187. package/dist/tui/table-format.js.map +1 -0
  188. package/dist/tui/tabs.d.ts +4 -0
  189. package/dist/tui/tabs.d.ts.map +1 -0
  190. package/dist/tui/tabs.js +13 -0
  191. package/dist/tui/tabs.js.map +1 -0
  192. package/dist/tui/types.d.ts +37 -0
  193. package/dist/tui/types.d.ts.map +1 -0
  194. package/dist/tui/types.js +3 -0
  195. package/dist/tui/types.js.map +1 -0
  196. package/dist/types/client.d.ts +54 -0
  197. package/dist/types/client.d.ts.map +1 -0
  198. package/dist/types/client.js +3 -0
  199. package/dist/types/client.js.map +1 -0
  200. package/dist/types/endpoints.d.ts +29 -0
  201. package/dist/types/endpoints.d.ts.map +1 -0
  202. package/dist/types/endpoints.js +3 -0
  203. package/dist/types/endpoints.js.map +1 -0
  204. package/dist/types/profile.d.ts +29 -0
  205. package/dist/types/profile.d.ts.map +1 -0
  206. package/dist/types/profile.js +3 -0
  207. package/dist/types/profile.js.map +1 -0
  208. package/dist/utils/config-dir.d.ts +2 -0
  209. package/dist/utils/config-dir.d.ts.map +1 -0
  210. package/dist/utils/config-dir.js +23 -0
  211. package/dist/utils/config-dir.js.map +1 -0
  212. package/dist/utils/error-format.d.ts +4 -0
  213. package/dist/utils/error-format.d.ts.map +1 -0
  214. package/dist/utils/error-format.js +34 -0
  215. package/dist/utils/error-format.js.map +1 -0
  216. package/dist/utils/install-skills.d.ts +38 -0
  217. package/dist/utils/install-skills.d.ts.map +1 -0
  218. package/dist/utils/install-skills.js +117 -0
  219. package/dist/utils/install-skills.js.map +1 -0
  220. package/dist/utils/json-output.d.ts +6 -0
  221. package/dist/utils/json-output.d.ts.map +1 -0
  222. package/dist/utils/json-output.js +30 -0
  223. package/dist/utils/json-output.js.map +1 -0
  224. package/dist/utils/json.d.ts +4 -0
  225. package/dist/utils/json.d.ts.map +1 -0
  226. package/dist/utils/json.js +36 -0
  227. package/dist/utils/json.js.map +1 -0
  228. package/dist/utils/version.d.ts +2 -0
  229. package/dist/utils/version.d.ts.map +1 -0
  230. package/dist/utils/version.js +28 -0
  231. package/dist/utils/version.js.map +1 -0
  232. package/dist/workflows/fleet-insights.d.ts +122 -0
  233. package/dist/workflows/fleet-insights.d.ts.map +1 -0
  234. package/dist/workflows/fleet-insights.js +938 -0
  235. package/dist/workflows/fleet-insights.js.map +1 -0
  236. package/docs/schemas/call-envelope.v1.schema.json +140 -0
  237. package/docs/schemas/headless-frame.v1.schema.json +159 -0
  238. package/docs/schemas/inspect-deep-dive.v1.schema.json +251 -0
  239. package/docs/schemas/inspect-fleet.v1.schema.json +111 -0
  240. package/docs/schemas/report.v1.schema.json +39 -0
  241. package/package.json +75 -0
  242. package/skills/xyte-cli/SKILL.md +181 -0
  243. package/skills/xyte-cli/agents/openai.yaml +4 -0
  244. package/skills/xyte-cli/references/endpoints.md +106 -0
  245. package/skills/xyte-cli/references/headless-contract.md +96 -0
  246. package/skills/xyte-cli/references/tui-flows.md +126 -0
  247. package/skills/xyte-cli/scripts/check_headless.sh +83 -0
  248. package/skills/xyte-cli/scripts/endpoint_filters_report.sh +33 -0
  249. package/skills/xyte-cli/scripts/run_xyte_cli.sh +12 -0
  250. package/skills/xyte-cli/scripts/validate_agent_contracts.sh +72 -0
  251. package/skills/xyte-cli/scripts/validate_with_schema.js +30 -0
@@ -0,0 +1,38 @@
1
+ import type { NamespaceCall, XyteCallArgs } from '../types/client';
2
+ export interface DeviceNamespace {
3
+ getCommand: NamespaceCall;
4
+ getCommandsWithChildren: NamespaceCall;
5
+ updateCommand: NamespaceCall;
6
+ getConfig: NamespaceCall;
7
+ setConfig: NamespaceCall;
8
+ getDeviceInfo: NamespaceCall;
9
+ getSpaceInfo: NamespaceCall;
10
+ setCloudSettings: (args: XyteCallArgs & {
11
+ body: {
12
+ property: string;
13
+ value: unknown;
14
+ } | Record<string, unknown>;
15
+ }) => Promise<unknown>;
16
+ updateDevice: NamespaceCall;
17
+ addEvent: NamespaceCall;
18
+ appendDumpFile: NamespaceCall;
19
+ sendDump: NamespaceCall;
20
+ closeIncident: NamespaceCall;
21
+ closeIncidents: NamespaceCall;
22
+ getIncidents: NamespaceCall;
23
+ openIncident: NamespaceCall;
24
+ getLicense: NamespaceCall;
25
+ updateLicense: NamespaceCall;
26
+ bulkRegisterDevice: NamespaceCall;
27
+ deleteDevice: NamespaceCall;
28
+ getChildDevices: NamespaceCall;
29
+ registerChildDevice: NamespaceCall;
30
+ registerDevice: NamespaceCall;
31
+ getFile: NamespaceCall;
32
+ getFiles: NamespaceCall;
33
+ sendChildTelemetry: NamespaceCall;
34
+ sendMassTelemetry: NamespaceCall;
35
+ sendTelemetry: NamespaceCall;
36
+ }
37
+ export declare function createDeviceNamespace(call: (endpointKey: string, args?: XyteCallArgs) => Promise<unknown>): DeviceNamespace;
38
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/namespaces/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,uBAAuB,EAAE,aAAa,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,aAAa,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,aAAa,CAAC;IAC5B,gBAAgB,EAAE,CAAC,IAAI,EAAE,YAAY,GAAG;QAAE,IAAI,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtI,YAAY,EAAE,aAAa,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,aAAa,CAAC;IAC9B,YAAY,EAAE,aAAa,CAAC;IAC5B,YAAY,EAAE,aAAa,CAAC;IAC5B,UAAU,EAAE,aAAa,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,kBAAkB,EAAE,aAAa,CAAC;IAClC,YAAY,EAAE,aAAa,CAAC;IAC5B,eAAe,EAAE,aAAa,CAAC;IAC/B,mBAAmB,EAAE,aAAa,CAAC;IACnC,cAAc,EAAE,aAAa,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,kBAAkB,EAAE,aAAa,CAAC;IAClC,iBAAiB,EAAE,aAAa,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,eAAe,CA+B3H"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDeviceNamespace = createDeviceNamespace;
4
+ function createDeviceNamespace(call) {
5
+ return {
6
+ getCommand: (args) => call('device.command.getCommand', args),
7
+ getCommandsWithChildren: (args) => call('device.command.getCommandsWithChildren', args),
8
+ updateCommand: (args) => call('device.command.updateCommand', args),
9
+ getConfig: (args) => call('device.configuration.getConfig', args),
10
+ setConfig: (args) => call('device.configuration.setConfig', args),
11
+ getDeviceInfo: (args) => call('device.device-info.getDeviceInfo', args),
12
+ getSpaceInfo: (args) => call('device.device-info.getSpaceInfo', args),
13
+ setCloudSettings: (args) => call('device.device-info.setCloudSettings', args),
14
+ updateDevice: (args) => call('device.device-info.updateDevice', args),
15
+ addEvent: (args) => call('device.events.addEvent', args),
16
+ appendDumpFile: (args) => call('device.file-dumps.appendDumpFile', args),
17
+ sendDump: (args) => call('device.file-dumps.sendDump', args),
18
+ closeIncident: (args) => call('device.incidents.closeIncident', args),
19
+ closeIncidents: (args) => call('device.incidents.closeIncidents', args),
20
+ getIncidents: (args) => call('device.incidents.getIncidents', args),
21
+ openIncident: (args) => call('device.incidents.openIncident', args),
22
+ getLicense: (args) => call('device.license.getLicense', args),
23
+ updateLicense: (args) => call('device.license.updateLicense', args),
24
+ bulkRegisterDevice: (args) => call('device.registration.bulkRegisterDevice', args),
25
+ deleteDevice: (args) => call('device.registration.deleteDevice', args),
26
+ getChildDevices: (args) => call('device.registration.getChildDevices', args),
27
+ registerChildDevice: (args) => call('device.registration.registerChildDevice', args),
28
+ registerDevice: (args) => call('device.registration.registerDevice', args),
29
+ getFile: (args) => call('device.remote-files.getFile', args),
30
+ getFiles: (args) => call('device.remote-files.getFiles', args),
31
+ sendChildTelemetry: (args) => call('device.telemetries.sendChildTelemetry', args),
32
+ sendMassTelemetry: (args) => call('device.telemetries.sendMassTelemetry', args),
33
+ sendTelemetry: (args) => call('device.telemetries.sendTelemetry', args)
34
+ };
35
+ }
36
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/namespaces/device.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { NamespaceCall, XyteCallArgs } from '../types/client';
2
+ export interface OrganizationNamespace {
3
+ cancelCommand: NamespaceCall;
4
+ getCommands: NamespaceCall;
5
+ sendCommand: NamespaceCall;
6
+ claimDevice: NamespaceCall;
7
+ deleteDevice: NamespaceCall;
8
+ getDevice: NamespaceCall;
9
+ getDevices: NamespaceCall;
10
+ getHistories: NamespaceCall;
11
+ updateDevice: NamespaceCall;
12
+ getOrganizationInfo: NamespaceCall;
13
+ getIncidents: NamespaceCall;
14
+ createSpace: NamespaceCall;
15
+ deleteSpace: NamespaceCall;
16
+ findOrCreateSpace: NamespaceCall;
17
+ getSpace: NamespaceCall;
18
+ getSpaces: NamespaceCall;
19
+ updateSpace: NamespaceCall;
20
+ getTicket: NamespaceCall;
21
+ getTickets: NamespaceCall;
22
+ markResolved: NamespaceCall;
23
+ sendMessage: NamespaceCall;
24
+ updateTicket: NamespaceCall;
25
+ }
26
+ export declare function createOrganizationNamespace(call: (endpointKey: string, args?: XyteCallArgs) => Promise<unknown>): OrganizationNamespace;
27
+ //# sourceMappingURL=organization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.d.ts","sourceRoot":"","sources":["../../src/namespaces/organization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,aAAa,CAAC;IAC3B,WAAW,EAAE,aAAa,CAAC;IAC3B,WAAW,EAAE,aAAa,CAAC;IAC3B,YAAY,EAAE,aAAa,CAAC;IAC5B,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,YAAY,EAAE,aAAa,CAAC;IAC5B,YAAY,EAAE,aAAa,CAAC;IAC5B,mBAAmB,EAAE,aAAa,CAAC;IACnC,YAAY,EAAE,aAAa,CAAC;IAC5B,WAAW,EAAE,aAAa,CAAC;IAC3B,WAAW,EAAE,aAAa,CAAC;IAC3B,iBAAiB,EAAE,aAAa,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,aAAa,CAAC;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,YAAY,EAAE,aAAa,CAAC;IAC5B,WAAW,EAAE,aAAa,CAAC;IAC3B,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAyBvI"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOrganizationNamespace = createOrganizationNamespace;
4
+ function createOrganizationNamespace(call) {
5
+ return {
6
+ cancelCommand: (args) => call('organization.commands.cancelCommand', args),
7
+ getCommands: (args) => call('organization.commands.getCommands', args),
8
+ sendCommand: (args) => call('organization.commands.sendCommand', args),
9
+ claimDevice: (args) => call('organization.devices.claimDevice', args),
10
+ deleteDevice: (args) => call('organization.devices.deleteDevice', args),
11
+ getDevice: (args) => call('organization.devices.getDevice', args),
12
+ getDevices: (args) => call('organization.devices.getDevices', args),
13
+ getHistories: (args) => call('organization.devices.getHistories', args),
14
+ updateDevice: (args) => call('organization.devices.updateDevice', args),
15
+ getOrganizationInfo: (args) => call('organization.getOrganizationInfo', args),
16
+ getIncidents: (args) => call('organization.incidents.getIncidents', args),
17
+ createSpace: (args) => call('organization.spaces.createSpace', args),
18
+ deleteSpace: (args) => call('organization.spaces.deleteSpace', args),
19
+ findOrCreateSpace: (args) => call('organization.spaces.findOrCreateSpace', args),
20
+ getSpace: (args) => call('organization.spaces.getSpace', args),
21
+ getSpaces: (args) => call('organization.spaces.getSpaces', args),
22
+ updateSpace: (args) => call('organization.spaces.updateSpace', args),
23
+ getTicket: (args) => call('organization.tickets.getTicket', args),
24
+ getTickets: (args) => call('organization.tickets.getTickets', args),
25
+ markResolved: (args) => call('organization.tickets.markResolved', args),
26
+ sendMessage: (args) => call('organization.tickets.sendMessage', args),
27
+ updateTicket: (args) => call('organization.tickets.updateTicket', args)
28
+ };
29
+ }
30
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/namespaces/organization.ts"],"names":[],"mappings":";;AA2BA,kEAyBC;AAzBD,SAAgB,2BAA2B,CAAC,IAAoE;IAC9G,OAAO;QACL,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC;QAC1E,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC;QACtE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC;QACtE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC;QACrE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC;QACvE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC;QACjE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC;QACnE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC;QACvE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC;QACvE,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC;QAC7E,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC;QACzE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC;QACpE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC;QACpE,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC;QAChF,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC;QAC9D,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC;QAChE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC;QACpE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC;QACjE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC;QACnE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC;QACvE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC;QACrE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC;KACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { NamespaceCall, XyteCallArgs } from '../types/client';
2
+ export interface PartnerNamespace {
3
+ deleteDevice: NamespaceCall;
4
+ getCommands: NamespaceCall;
5
+ getConfiguration: NamespaceCall;
6
+ getDeviceInfo: NamespaceCall;
7
+ getDevices: NamespaceCall;
8
+ getStateHistory: NamespaceCall;
9
+ getStateHistoryMultiDevices: NamespaceCall;
10
+ getTelemetries: NamespaceCall;
11
+ addComment: NamespaceCall;
12
+ closeTicket: NamespaceCall;
13
+ getTicket: NamespaceCall;
14
+ getTickets: NamespaceCall;
15
+ updateTicket: NamespaceCall;
16
+ }
17
+ export declare function createPartnerNamespace(call: (endpointKey: string, args?: XyteCallArgs) => Promise<unknown>): PartnerNamespace;
18
+ //# sourceMappingURL=partner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner.d.ts","sourceRoot":"","sources":["../../src/namespaces/partner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,aAAa,CAAC;IAC5B,WAAW,EAAE,aAAa,CAAC;IAC3B,gBAAgB,EAAE,aAAa,CAAC;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,aAAa,CAAC;IAC/B,2BAA2B,EAAE,aAAa,CAAC;IAC3C,cAAc,EAAE,aAAa,CAAC;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,aAAa,CAAC;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAgB7H"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPartnerNamespace = createPartnerNamespace;
4
+ function createPartnerNamespace(call) {
5
+ return {
6
+ deleteDevice: (args) => call('partner.devices.deleteDevice', args),
7
+ getCommands: (args) => call('partner.devices.getCommands', args),
8
+ getConfiguration: (args) => call('partner.devices.getConfiguration', args),
9
+ getDeviceInfo: (args) => call('partner.devices.getDeviceInfo', args),
10
+ getDevices: (args) => call('partner.devices.getDevices', args),
11
+ getStateHistory: (args) => call('partner.devices.getStateHistory', args),
12
+ getStateHistoryMultiDevices: (args) => call('partner.devices.getStateHistoryMultiDevices', args),
13
+ getTelemetries: (args) => call('partner.devices.getTelemetries', args),
14
+ addComment: (args) => call('partner.tickets.addComment', args),
15
+ closeTicket: (args) => call('partner.tickets.closeTicket', args),
16
+ getTicket: (args) => call('partner.tickets.getTicket', args),
17
+ getTickets: (args) => call('partner.tickets.getTickets', args),
18
+ updateTicket: (args) => call('partner.tickets.updateTicket', args)
19
+ };
20
+ }
21
+ //# sourceMappingURL=partner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner.js","sourceRoot":"","sources":["../../src/namespaces/partner.ts"],"names":[],"mappings":";;AAkBA,wDAgBC;AAhBD,SAAgB,sBAAsB,CAAC,IAAoE;IACzG,OAAO;QACL,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC;QAClE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC;QAChE,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC;QAC1E,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC;QACpE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC;QAC9D,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC;QACxE,2BAA2B,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC;QAChG,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC;QACtE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC;QAC9D,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC;QAChE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC;QAC5D,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC;QAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC;KACnE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Logger } from 'pino';
2
+ export declare function getLogger(): Logger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAQzC,wBAAgB,SAAS,IAAI,MAAM,CAQlC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLogger = getLogger;
7
+ const pino_1 = __importDefault(require("pino"));
8
+ function resolveLevel() {
9
+ return process.env.XYTE_LOG_LEVEL?.trim() || 'silent';
10
+ }
11
+ let singleton;
12
+ function getLogger() {
13
+ if (!singleton) {
14
+ singleton = (0, pino_1.default)({
15
+ name: 'xyte-cli',
16
+ level: resolveLevel()
17
+ });
18
+ }
19
+ return singleton;
20
+ }
21
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":";;;;;AAQA,8BAQC;AAhBD,gDAAyC;AAEzC,SAAS,YAAY;IACnB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC;AACxD,CAAC;AAED,IAAI,SAA6B,CAAC;AAElC,SAAgB,SAAS;IACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAA,cAAI,EAAC;YACf,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,YAAY,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Attributes, type Span } from '@opentelemetry/api';
2
+ export declare function withSpan<T>(name: string, attributes: Attributes, operation: (span: Span) => Promise<T>): Promise<T>;
3
+ //# sourceMappingURL=tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/observability/tracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,UAAU,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAIvF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBnH"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withSpan = withSpan;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const tracer = api_1.trace.getTracer('xyte-cli');
6
+ function withSpan(name, attributes, operation) {
7
+ return tracer.startActiveSpan(name, { attributes }, async (span) => {
8
+ try {
9
+ const result = await operation(span);
10
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
11
+ return result;
12
+ }
13
+ catch (error) {
14
+ span.recordException(error);
15
+ span.setStatus({
16
+ code: api_1.SpanStatusCode.ERROR,
17
+ message: error instanceof Error ? error.message : String(error)
18
+ });
19
+ throw error;
20
+ }
21
+ finally {
22
+ span.end();
23
+ }
24
+ });
25
+ }
26
+ //# sourceMappingURL=tracing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/observability/tracing.ts"],"names":[],"mappings":";;AAIA,4BAiBC;AArBD,4CAAuF;AAEvF,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAE3C,SAAgB,QAAQ,CAAI,IAAY,EAAE,UAAsB,EAAE,SAAqC;IACrG,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAc,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,oBAAc,CAAC,KAAK;gBAC1B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ApiKeySlotMeta } from '../types/profile';
2
+ export declare const DEFAULT_SLOT_ID = "default";
3
+ export declare function makeKeyFingerprint(secret: string): string;
4
+ export declare function slugifySlotName(name: string): string;
5
+ export declare function buildSlotId(name: string, existingSlotIds: Set<string>): string;
6
+ export declare function matchesSlotRef(slot: ApiKeySlotMeta, slotRef: string): boolean;
7
+ export declare function ensureSlotName(name: string): string;
8
+ //# sourceMappingURL=key-slots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-slots.d.ts","sourceRoot":"","sources":["../../src/secure/key-slots.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAW9E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_SLOT_ID = void 0;
4
+ exports.makeKeyFingerprint = makeKeyFingerprint;
5
+ exports.slugifySlotName = slugifySlotName;
6
+ exports.buildSlotId = buildSlotId;
7
+ exports.matchesSlotRef = matchesSlotRef;
8
+ exports.ensureSlotName = ensureSlotName;
9
+ const node_crypto_1 = require("node:crypto");
10
+ exports.DEFAULT_SLOT_ID = 'default';
11
+ function makeKeyFingerprint(secret) {
12
+ return `sha256:${(0, node_crypto_1.createHash)('sha256').update(secret).digest('hex').slice(0, 12)}`;
13
+ }
14
+ function slugifySlotName(name) {
15
+ const slug = name
16
+ .trim()
17
+ .toLowerCase()
18
+ .replace(/[^a-z0-9]+/g, '-')
19
+ .replace(/^-+|-+$/g, '');
20
+ return slug || exports.DEFAULT_SLOT_ID;
21
+ }
22
+ function buildSlotId(name, existingSlotIds) {
23
+ const base = slugifySlotName(name);
24
+ if (!existingSlotIds.has(base)) {
25
+ return base;
26
+ }
27
+ let counter = 2;
28
+ while (existingSlotIds.has(`${base}-${counter}`)) {
29
+ counter += 1;
30
+ }
31
+ return `${base}-${counter}`;
32
+ }
33
+ function matchesSlotRef(slot, slotRef) {
34
+ const needle = slotRef.trim().toLowerCase();
35
+ if (!needle) {
36
+ return false;
37
+ }
38
+ return slot.slotId.toLowerCase() === needle || slot.name.toLowerCase() === needle;
39
+ }
40
+ function ensureSlotName(name) {
41
+ const trimmed = name.trim();
42
+ if (!trimmed) {
43
+ throw new Error('Slot name must not be empty.');
44
+ }
45
+ return trimmed;
46
+ }
47
+ //# sourceMappingURL=key-slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-slots.js","sourceRoot":"","sources":["../../src/secure/key-slots.ts"],"names":[],"mappings":";;;AAMA,gDAEC;AAED,0CAOC;AAED,kCAWC;AAED,wCAMC;AAED,wCAMC;AA9CD,6CAAyC;AAI5B,QAAA,eAAe,GAAG,SAAS,CAAC;AAEzC,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,UAAU,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,SAAgB,eAAe,CAAC,IAAY;IAC1C,MAAM,IAAI,GAAG,IAAI;SACd,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,uBAAe,CAAC;AACjC,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY,EAAE,eAA4B;IACpE,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAgB,cAAc,CAAC,IAAoB,EAAE,OAAe;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AACpF,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { SecretProvider } from '../types/profile';
2
+ export interface KeychainStore {
3
+ setSecret(tenantId: string, provider: SecretProvider, value: string): Promise<void>;
4
+ getSecret(tenantId: string, provider: SecretProvider): Promise<string | undefined>;
5
+ clearSecret(tenantId: string, provider: SecretProvider): Promise<void>;
6
+ setSlotSecret(tenantId: string, provider: SecretProvider, slotId: string, value: string): Promise<void>;
7
+ getSlotSecret(tenantId: string, provider: SecretProvider, slotId: string): Promise<string | undefined>;
8
+ clearSlotSecret(tenantId: string, provider: SecretProvider, slotId: string): Promise<void>;
9
+ }
10
+ export declare class MemoryKeychain implements KeychainStore {
11
+ private readonly values;
12
+ setSlotSecret(tenantId: string, provider: SecretProvider, slotId: string, value: string): Promise<void>;
13
+ getSlotSecret(tenantId: string, provider: SecretProvider, slotId: string): Promise<string | undefined>;
14
+ clearSlotSecret(tenantId: string, provider: SecretProvider, slotId: string): Promise<void>;
15
+ setSecret(tenantId: string, provider: SecretProvider, value: string): Promise<void>;
16
+ getSecret(tenantId: string, provider: SecretProvider): Promise<string | undefined>;
17
+ clearSecret(tenantId: string, provider: SecretProvider): Promise<void>;
18
+ }
19
+ export declare function createKeychainStore(): Promise<KeychainStore>;
20
+ //# sourceMappingURL=keychain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/secure/keychain.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F;AAgJD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAE9C,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIlF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7E;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CAgBlE"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryKeychain = void 0;
4
+ exports.createKeychainStore = createKeychainStore;
5
+ const node_child_process_1 = require("node:child_process");
6
+ const node_util_1 = require("node:util");
7
+ const key_slots_1 = require("./key-slots");
8
+ const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
9
+ const SERVICE_NAME = '@xyte/cli';
10
+ function accountName(tenantId, provider, slotId) {
11
+ return `${tenantId}:${provider}:${slotId}`;
12
+ }
13
+ async function commandExists(command) {
14
+ try {
15
+ await execFileAsync('bash', ['-lc', `command -v ${command}`]);
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ class DarwinSecurityKeychain {
23
+ async setSlotSecret(tenantId, provider, slotId, value) {
24
+ const account = accountName(tenantId, provider, slotId);
25
+ await execFileAsync('security', [
26
+ 'add-generic-password',
27
+ '-a',
28
+ account,
29
+ '-s',
30
+ SERVICE_NAME,
31
+ '-w',
32
+ value,
33
+ '-U'
34
+ ]);
35
+ }
36
+ async getSlotSecret(tenantId, provider, slotId) {
37
+ const account = accountName(tenantId, provider, slotId);
38
+ return this.readAccount(account);
39
+ }
40
+ async clearSlotSecret(tenantId, provider, slotId) {
41
+ await this.deleteAccount(accountName(tenantId, provider, slotId));
42
+ }
43
+ async setSecret(tenantId, provider, value) {
44
+ await this.setSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID, value);
45
+ }
46
+ async getSecret(tenantId, provider) {
47
+ return this.getSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
48
+ }
49
+ async clearSecret(tenantId, provider) {
50
+ await this.clearSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
51
+ }
52
+ async readAccount(account) {
53
+ try {
54
+ const { stdout } = await execFileAsync('security', [
55
+ 'find-generic-password',
56
+ '-a',
57
+ account,
58
+ '-s',
59
+ SERVICE_NAME,
60
+ '-w'
61
+ ]);
62
+ const value = stdout.trim();
63
+ return value || undefined;
64
+ }
65
+ catch {
66
+ return undefined;
67
+ }
68
+ }
69
+ async deleteAccount(account) {
70
+ try {
71
+ await execFileAsync('security', ['delete-generic-password', '-a', account, '-s', SERVICE_NAME]);
72
+ }
73
+ catch {
74
+ // no-op if secret does not exist
75
+ }
76
+ }
77
+ }
78
+ class LinuxSecretToolKeychain {
79
+ async setSlotSecret(tenantId, provider, slotId, value) {
80
+ const account = accountName(tenantId, provider, slotId);
81
+ await new Promise((resolve, reject) => {
82
+ const child = (0, node_child_process_1.spawn)('secret-tool', ['store', '--label', SERVICE_NAME, 'service', SERVICE_NAME, 'account', account], {
83
+ stdio: ['pipe', 'ignore', 'pipe']
84
+ });
85
+ let stderr = '';
86
+ child.stderr.on('data', (chunk) => {
87
+ stderr += chunk.toString();
88
+ });
89
+ child.on('error', reject);
90
+ child.on('close', (code) => {
91
+ if (code === 0) {
92
+ resolve();
93
+ return;
94
+ }
95
+ reject(new Error(stderr || `secret-tool exited with code ${code ?? -1}`));
96
+ });
97
+ child.stdin.write(value);
98
+ child.stdin.end();
99
+ });
100
+ }
101
+ async getSlotSecret(tenantId, provider, slotId) {
102
+ const account = accountName(tenantId, provider, slotId);
103
+ return this.lookupAccount(account);
104
+ }
105
+ async clearSlotSecret(tenantId, provider, slotId) {
106
+ await this.clearAccount(accountName(tenantId, provider, slotId));
107
+ }
108
+ async setSecret(tenantId, provider, value) {
109
+ await this.setSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID, value);
110
+ }
111
+ async getSecret(tenantId, provider) {
112
+ return this.getSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
113
+ }
114
+ async clearSecret(tenantId, provider) {
115
+ await this.clearSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
116
+ }
117
+ async lookupAccount(account) {
118
+ try {
119
+ const { stdout } = await execFileAsync('secret-tool', ['lookup', 'service', SERVICE_NAME, 'account', account]);
120
+ const value = stdout.trim();
121
+ return value || undefined;
122
+ }
123
+ catch {
124
+ return undefined;
125
+ }
126
+ }
127
+ async clearAccount(account) {
128
+ try {
129
+ await execFileAsync('secret-tool', ['clear', 'service', SERVICE_NAME, 'account', account]);
130
+ }
131
+ catch {
132
+ // no-op
133
+ }
134
+ }
135
+ }
136
+ class MemoryKeychain {
137
+ values = new Map();
138
+ async setSlotSecret(tenantId, provider, slotId, value) {
139
+ this.values.set(accountName(tenantId, provider, slotId), value);
140
+ }
141
+ async getSlotSecret(tenantId, provider, slotId) {
142
+ return this.values.get(accountName(tenantId, provider, slotId));
143
+ }
144
+ async clearSlotSecret(tenantId, provider, slotId) {
145
+ this.values.delete(accountName(tenantId, provider, slotId));
146
+ }
147
+ async setSecret(tenantId, provider, value) {
148
+ await this.setSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID, value);
149
+ }
150
+ async getSecret(tenantId, provider) {
151
+ return this.getSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
152
+ }
153
+ async clearSecret(tenantId, provider) {
154
+ await this.clearSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
155
+ }
156
+ }
157
+ exports.MemoryKeychain = MemoryKeychain;
158
+ async function createKeychainStore() {
159
+ if (process.env.XYTE_CLI_KEYCHAIN_BACKEND === 'memory') {
160
+ return new MemoryKeychain();
161
+ }
162
+ if (process.platform === 'darwin') {
163
+ return new DarwinSecurityKeychain();
164
+ }
165
+ if (process.platform === 'linux' && (await commandExists('secret-tool'))) {
166
+ return new LinuxSecretToolKeychain();
167
+ }
168
+ throw new Error('No supported OS keychain backend found. Use macOS keychain, libsecret (secret-tool), or set XYTE_CLI_KEYCHAIN_BACKEND=memory for tests.');
169
+ }
170
+ //# sourceMappingURL=keychain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/secure/keychain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { ApiKeySlotMeta, ProfileStoreData, SecretProvider, TenantProfile } from '../types/profile';
2
+ export interface ProfileStore {
3
+ getData(): Promise<ProfileStoreData>;
4
+ listTenants(): Promise<TenantProfile[]>;
5
+ getTenant(tenantId: string): Promise<TenantProfile | undefined>;
6
+ upsertTenant(input: {
7
+ id: string;
8
+ name?: string;
9
+ hubBaseUrl?: string;
10
+ entryBaseUrl?: string;
11
+ }): Promise<TenantProfile>;
12
+ removeTenant(tenantId: string): Promise<void>;
13
+ setActiveTenant(tenantId: string): Promise<void>;
14
+ getActiveTenant(): Promise<TenantProfile | undefined>;
15
+ listKeySlots(tenantId: string, provider?: SecretProvider): Promise<ApiKeySlotMeta[]>;
16
+ addKeySlot(tenantId: string, input: {
17
+ provider: SecretProvider;
18
+ name: string;
19
+ slotId?: string;
20
+ fingerprint: string;
21
+ }): Promise<ApiKeySlotMeta>;
22
+ updateKeySlot(tenantId: string, provider: SecretProvider, slotRef: string, update: {
23
+ name?: string;
24
+ fingerprint?: string;
25
+ lastValidatedAt?: string;
26
+ }): Promise<ApiKeySlotMeta>;
27
+ removeKeySlot(tenantId: string, provider: SecretProvider, slotRef: string): Promise<void>;
28
+ getActiveKeySlot(tenantId: string, provider: SecretProvider): Promise<ApiKeySlotMeta | undefined>;
29
+ setActiveKeySlot(tenantId: string, provider: SecretProvider, slotRef: string): Promise<ApiKeySlotMeta>;
30
+ }
31
+ export declare class FileProfileStore implements ProfileStore {
32
+ private readonly filePath;
33
+ constructor(filePath?: string);
34
+ getData(): Promise<ProfileStoreData>;
35
+ listTenants(): Promise<TenantProfile[]>;
36
+ getTenant(tenantId: string): Promise<TenantProfile | undefined>;
37
+ upsertTenant(input: {
38
+ id: string;
39
+ name?: string;
40
+ hubBaseUrl?: string;
41
+ entryBaseUrl?: string;
42
+ }): Promise<TenantProfile>;
43
+ removeTenant(tenantId: string): Promise<void>;
44
+ setActiveTenant(tenantId: string): Promise<void>;
45
+ getActiveTenant(): Promise<TenantProfile | undefined>;
46
+ listKeySlots(tenantId: string, provider?: SecretProvider): Promise<ApiKeySlotMeta[]>;
47
+ addKeySlot(tenantId: string, input: {
48
+ provider: SecretProvider;
49
+ name: string;
50
+ slotId?: string;
51
+ fingerprint: string;
52
+ }): Promise<ApiKeySlotMeta>;
53
+ updateKeySlot(tenantId: string, provider: SecretProvider, slotRef: string, update: {
54
+ name?: string;
55
+ fingerprint?: string;
56
+ lastValidatedAt?: string;
57
+ }): Promise<ApiKeySlotMeta>;
58
+ removeKeySlot(tenantId: string, provider: SecretProvider, slotRef: string): Promise<void>;
59
+ getActiveKeySlot(tenantId: string, provider: SecretProvider): Promise<ApiKeySlotMeta | undefined>;
60
+ setActiveKeySlot(tenantId: string, provider: SecretProvider, slotRef: string): Promise<ApiKeySlotMeta>;
61
+ private normalize;
62
+ private writeData;
63
+ private getRequiredTenant;
64
+ private getRequiredTenantFromData;
65
+ }
66
+ //# sourceMappingURL=profile-store.d.ts.map