vana-cli 0.15.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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +320 -0
  3. package/dist/cli/auth.d.ts +119 -0
  4. package/dist/cli/auth.d.ts.map +1 -0
  5. package/dist/cli/auth.js +528 -0
  6. package/dist/cli/auth.js.map +1 -0
  7. package/dist/cli/bin.d.ts +3 -0
  8. package/dist/cli/bin.d.ts.map +1 -0
  9. package/dist/cli/bin.js +15 -0
  10. package/dist/cli/bin.js.map +1 -0
  11. package/dist/cli/index.d.ts +92 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +4703 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/cli/main.d.ts +2 -0
  16. package/dist/cli/main.d.ts.map +1 -0
  17. package/dist/cli/main.js +10 -0
  18. package/dist/cli/main.js.map +1 -0
  19. package/dist/cli/mcp-server.d.ts +15 -0
  20. package/dist/cli/mcp-server.d.ts.map +1 -0
  21. package/dist/cli/mcp-server.js +199 -0
  22. package/dist/cli/mcp-server.js.map +1 -0
  23. package/dist/cli/queries.d.ts +128 -0
  24. package/dist/cli/queries.d.ts.map +1 -0
  25. package/dist/cli/queries.js +422 -0
  26. package/dist/cli/queries.js.map +1 -0
  27. package/dist/cli/render/capabilities.d.ts +9 -0
  28. package/dist/cli/render/capabilities.d.ts.map +1 -0
  29. package/dist/cli/render/capabilities.js +24 -0
  30. package/dist/cli/render/capabilities.js.map +1 -0
  31. package/dist/cli/render/connect-renderer.d.ts +23 -0
  32. package/dist/cli/render/connect-renderer.d.ts.map +1 -0
  33. package/dist/cli/render/connect-renderer.js +259 -0
  34. package/dist/cli/render/connect-renderer.js.map +1 -0
  35. package/dist/cli/render/flow-theme.d.ts +17 -0
  36. package/dist/cli/render/flow-theme.d.ts.map +1 -0
  37. package/dist/cli/render/flow-theme.js +26 -0
  38. package/dist/cli/render/flow-theme.js.map +1 -0
  39. package/dist/cli/render/format.d.ts +27 -0
  40. package/dist/cli/render/format.d.ts.map +1 -0
  41. package/dist/cli/render/format.js +111 -0
  42. package/dist/cli/render/format.js.map +1 -0
  43. package/dist/cli/render/index.d.ts +8 -0
  44. package/dist/cli/render/index.d.ts.map +1 -0
  45. package/dist/cli/render/index.js +8 -0
  46. package/dist/cli/render/index.js.map +1 -0
  47. package/dist/cli/render/progress.d.ts +11 -0
  48. package/dist/cli/render/progress.d.ts.map +1 -0
  49. package/dist/cli/render/progress.js +56 -0
  50. package/dist/cli/render/progress.js.map +1 -0
  51. package/dist/cli/render/symbols.d.ts +11 -0
  52. package/dist/cli/render/symbols.d.ts.map +1 -0
  53. package/dist/cli/render/symbols.js +21 -0
  54. package/dist/cli/render/symbols.js.map +1 -0
  55. package/dist/cli/render/theme.d.ts +16 -0
  56. package/dist/cli/render/theme.d.ts.map +1 -0
  57. package/dist/cli/render/theme.js +57 -0
  58. package/dist/cli/render/theme.js.map +1 -0
  59. package/dist/cli/search-select.d.ts +17 -0
  60. package/dist/cli/search-select.d.ts.map +1 -0
  61. package/dist/cli/search-select.js +29 -0
  62. package/dist/cli/search-select.js.map +1 -0
  63. package/dist/cli/telemetry-contract.d.ts +146 -0
  64. package/dist/cli/telemetry-contract.d.ts.map +1 -0
  65. package/dist/cli/telemetry-contract.js +56 -0
  66. package/dist/cli/telemetry-contract.js.map +1 -0
  67. package/dist/cli/telemetry.d.ts +60 -0
  68. package/dist/cli/telemetry.d.ts.map +1 -0
  69. package/dist/cli/telemetry.js +621 -0
  70. package/dist/cli/telemetry.js.map +1 -0
  71. package/dist/cli/update-check.d.ts +21 -0
  72. package/dist/cli/update-check.d.ts.map +1 -0
  73. package/dist/cli/update-check.js +86 -0
  74. package/dist/cli/update-check.js.map +1 -0
  75. package/dist/connectors/index.d.ts +2 -0
  76. package/dist/connectors/index.d.ts.map +1 -0
  77. package/dist/connectors/index.js +2 -0
  78. package/dist/connectors/index.js.map +1 -0
  79. package/dist/connectors/registry.d.ts +55 -0
  80. package/dist/connectors/registry.d.ts.map +1 -0
  81. package/dist/connectors/registry.js +301 -0
  82. package/dist/connectors/registry.js.map +1 -0
  83. package/dist/core/cli-types.d.ts +722 -0
  84. package/dist/core/cli-types.d.ts.map +1 -0
  85. package/dist/core/cli-types.js +328 -0
  86. package/dist/core/cli-types.js.map +1 -0
  87. package/dist/core/constants.d.ts +33 -0
  88. package/dist/core/constants.d.ts.map +1 -0
  89. package/dist/core/constants.js +25 -0
  90. package/dist/core/constants.js.map +1 -0
  91. package/dist/core/errors.d.ts +47 -0
  92. package/dist/core/errors.d.ts.map +1 -0
  93. package/dist/core/errors.js +50 -0
  94. package/dist/core/errors.js.map +1 -0
  95. package/dist/core/grants.d.ts +19 -0
  96. package/dist/core/grants.d.ts.map +1 -0
  97. package/dist/core/grants.js +31 -0
  98. package/dist/core/grants.js.map +1 -0
  99. package/dist/core/index.d.ts +9 -0
  100. package/dist/core/index.d.ts.map +1 -0
  101. package/dist/core/index.js +7 -0
  102. package/dist/core/index.js.map +1 -0
  103. package/dist/core/paths.d.ts +30 -0
  104. package/dist/core/paths.d.ts.map +1 -0
  105. package/dist/core/paths.js +95 -0
  106. package/dist/core/paths.js.map +1 -0
  107. package/dist/core/state-store.d.ts +44 -0
  108. package/dist/core/state-store.d.ts.map +1 -0
  109. package/dist/core/state-store.js +101 -0
  110. package/dist/core/state-store.js.map +1 -0
  111. package/dist/core/types.d.ts +148 -0
  112. package/dist/core/types.d.ts.map +1 -0
  113. package/dist/core/types.js +2 -0
  114. package/dist/core/types.js.map +1 -0
  115. package/dist/index.d.ts +2 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +2 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/personal-server/client.d.ts +34 -0
  120. package/dist/personal-server/client.d.ts.map +1 -0
  121. package/dist/personal-server/client.js +108 -0
  122. package/dist/personal-server/client.js.map +1 -0
  123. package/dist/personal-server/index.d.ts +28 -0
  124. package/dist/personal-server/index.d.ts.map +1 -0
  125. package/dist/personal-server/index.js +157 -0
  126. package/dist/personal-server/index.js.map +1 -0
  127. package/dist/personal-server/scope-resolver.d.ts +22 -0
  128. package/dist/personal-server/scope-resolver.d.ts.map +1 -0
  129. package/dist/personal-server/scope-resolver.js +80 -0
  130. package/dist/personal-server/scope-resolver.js.map +1 -0
  131. package/dist/react/ConnectButton.d.ts +27 -0
  132. package/dist/react/ConnectButton.d.ts.map +1 -0
  133. package/dist/react/ConnectButton.js +39 -0
  134. package/dist/react/ConnectButton.js.map +1 -0
  135. package/dist/react/index.d.ts +4 -0
  136. package/dist/react/index.d.ts.map +1 -0
  137. package/dist/react/index.js +4 -0
  138. package/dist/react/index.js.map +1 -0
  139. package/dist/react/useVanaConnect.d.ts +50 -0
  140. package/dist/react/useVanaConnect.d.ts.map +1 -0
  141. package/dist/react/useVanaConnect.js +114 -0
  142. package/dist/react/useVanaConnect.js.map +1 -0
  143. package/dist/react/useVanaData.d.ts +69 -0
  144. package/dist/react/useVanaData.d.ts.map +1 -0
  145. package/dist/react/useVanaData.js +144 -0
  146. package/dist/react/useVanaData.js.map +1 -0
  147. package/dist/runtime/core/contracts.d.ts +84 -0
  148. package/dist/runtime/core/contracts.d.ts.map +1 -0
  149. package/dist/runtime/core/contracts.js +2 -0
  150. package/dist/runtime/core/contracts.js.map +1 -0
  151. package/dist/runtime/core/index.d.ts +2 -0
  152. package/dist/runtime/core/index.d.ts.map +1 -0
  153. package/dist/runtime/core/index.js +2 -0
  154. package/dist/runtime/core/index.js.map +1 -0
  155. package/dist/runtime/index.d.ts +4 -0
  156. package/dist/runtime/index.d.ts.map +1 -0
  157. package/dist/runtime/index.js +3 -0
  158. package/dist/runtime/index.js.map +1 -0
  159. package/dist/runtime/managed-playwright.d.ts +42 -0
  160. package/dist/runtime/managed-playwright.d.ts.map +1 -0
  161. package/dist/runtime/managed-playwright.js +178 -0
  162. package/dist/runtime/managed-playwright.js.map +1 -0
  163. package/dist/runtime/playwright/browser.d.ts +12 -0
  164. package/dist/runtime/playwright/browser.d.ts.map +1 -0
  165. package/dist/runtime/playwright/browser.js +229 -0
  166. package/dist/runtime/playwright/browser.js.map +1 -0
  167. package/dist/runtime/playwright/in-process-run.d.ts +6 -0
  168. package/dist/runtime/playwright/in-process-run.d.ts.map +1 -0
  169. package/dist/runtime/playwright/in-process-run.js +625 -0
  170. package/dist/runtime/playwright/in-process-run.js.map +1 -0
  171. package/dist/runtime/playwright/index.d.ts +3 -0
  172. package/dist/runtime/playwright/index.d.ts.map +1 -0
  173. package/dist/runtime/playwright/index.js +3 -0
  174. package/dist/runtime/playwright/index.js.map +1 -0
  175. package/dist/runtime/repo-paths.d.ts +2 -0
  176. package/dist/runtime/repo-paths.d.ts.map +1 -0
  177. package/dist/runtime/repo-paths.js +36 -0
  178. package/dist/runtime/repo-paths.js.map +1 -0
  179. package/dist/server/config.d.ts +38 -0
  180. package/dist/server/config.d.ts.map +1 -0
  181. package/dist/server/config.js +45 -0
  182. package/dist/server/config.js.map +1 -0
  183. package/dist/server/connect.d.ts +43 -0
  184. package/dist/server/connect.d.ts.map +1 -0
  185. package/dist/server/connect.js +115 -0
  186. package/dist/server/connect.js.map +1 -0
  187. package/dist/server/data-client.d.ts +31 -0
  188. package/dist/server/data-client.d.ts.map +1 -0
  189. package/dist/server/data-client.js +95 -0
  190. package/dist/server/data-client.js.map +1 -0
  191. package/dist/server/index.d.ts +8 -0
  192. package/dist/server/index.d.ts.map +1 -0
  193. package/dist/server/index.js +8 -0
  194. package/dist/server/index.js.map +1 -0
  195. package/dist/server/manifest-signer.d.ts +25 -0
  196. package/dist/server/manifest-signer.d.ts.map +1 -0
  197. package/dist/server/manifest-signer.js +51 -0
  198. package/dist/server/manifest-signer.js.map +1 -0
  199. package/dist/server/request-signer.d.ts +31 -0
  200. package/dist/server/request-signer.d.ts.map +1 -0
  201. package/dist/server/request-signer.js +72 -0
  202. package/dist/server/request-signer.js.map +1 -0
  203. package/dist/server/session-relay.d.ts +39 -0
  204. package/dist/server/session-relay.d.ts.map +1 -0
  205. package/dist/server/session-relay.js +74 -0
  206. package/dist/server/session-relay.js.map +1 -0
  207. package/dist/server/webhook.d.ts +11 -0
  208. package/dist/server/webhook.d.ts.map +1 -0
  209. package/dist/server/webhook.js +18 -0
  210. package/dist/server/webhook.js.map +1 -0
  211. package/dist/skills/index.d.ts +4 -0
  212. package/dist/skills/index.d.ts.map +1 -0
  213. package/dist/skills/index.js +3 -0
  214. package/dist/skills/index.js.map +1 -0
  215. package/dist/skills/paths.d.ts +33 -0
  216. package/dist/skills/paths.d.ts.map +1 -0
  217. package/dist/skills/paths.js +81 -0
  218. package/dist/skills/paths.js.map +1 -0
  219. package/dist/skills/registry.d.ts +48 -0
  220. package/dist/skills/registry.d.ts.map +1 -0
  221. package/dist/skills/registry.js +173 -0
  222. package/dist/skills/registry.js.map +1 -0
  223. package/package.json +147 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CA2B/C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,6DAA6D;AAC7D,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhE;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM5D"}
@@ -0,0 +1,95 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ export function getVanaHome() {
5
+ return path.join(os.homedir(), ".vana");
6
+ }
7
+ /**
8
+ * Ensure ~/.vana and ~/.dataconnect both resolve to the same directory.
9
+ *
10
+ * Cases:
11
+ * 1. ~/.dataconnect exists, ~/.vana doesn't → rename + symlink old path
12
+ * 2. ~/.vana exists, ~/.dataconnect doesn't → create symlink at old path
13
+ * 3. Both exist (no symlink) → leave as-is (user manages manually)
14
+ *
15
+ * The symlink at ~/.dataconnect ensures vana-com/data-connect (DataConnect
16
+ * desktop app) keeps working. DataConnect hardcodes ~/.dataconnect in
17
+ * src-tauri/src/commands/connector.rs:66. It should adopt ~/.vana upstream.
18
+ *
19
+ * Returns true if any migration or symlink was performed.
20
+ */
21
+ export function migrateLegacyDataHome() {
22
+ const vanaHome = getVanaHome();
23
+ const oldHome = path.join(os.homedir(), ".dataconnect");
24
+ // Case 1: old exists, new doesn't → migrate
25
+ if (!fs.existsSync(vanaHome) && fs.existsSync(oldHome)) {
26
+ try {
27
+ fs.renameSync(oldHome, vanaHome);
28
+ fs.symlinkSync(vanaHome, oldHome);
29
+ return true;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ }
35
+ // Case 2: new exists, old doesn't → create compat symlink
36
+ // so DataConnect (which hardcodes ~/.dataconnect) finds the data
37
+ if (fs.existsSync(vanaHome) && !fs.existsSync(oldHome)) {
38
+ try {
39
+ fs.symlinkSync(vanaHome, oldHome);
40
+ return true;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ }
46
+ return false;
47
+ }
48
+ export function getConnectorCacheDir() {
49
+ return path.join(getVanaHome(), "connectors");
50
+ }
51
+ export function getBrowserProfilesDir() {
52
+ return path.join(getVanaHome(), "browser-profiles");
53
+ }
54
+ export function getCliStatePath() {
55
+ return path.join(getVanaHome(), "vana-connect-state.json");
56
+ }
57
+ export function getResultsDir() {
58
+ return path.join(getVanaHome(), "results");
59
+ }
60
+ export function getSourceResultPath(source) {
61
+ const safe = source.replace(/[^a-z0-9-]+/gi, "-").toLowerCase();
62
+ return path.join(getResultsDir(), `${safe}.json`);
63
+ }
64
+ export function getPreviousResultPath(source) {
65
+ const safe = source.replace(/[^a-z0-9-]+/gi, "-").toLowerCase();
66
+ return path.join(getResultsDir(), `${safe}.previous.json`);
67
+ }
68
+ /** Rotate current result to .previous before overwriting. */
69
+ export async function rotateResult(source) {
70
+ const current = getSourceResultPath(source);
71
+ const previous = getPreviousResultPath(source);
72
+ try {
73
+ await fs.promises.rename(current, previous);
74
+ }
75
+ catch {
76
+ // No existing result to rotate — that's fine
77
+ }
78
+ }
79
+ export function getSessionsDir() {
80
+ return path.join(getVanaHome(), "sessions");
81
+ }
82
+ export function getLogsDir() {
83
+ return path.join(getVanaHome(), "logs");
84
+ }
85
+ export function getTelemetryDir() {
86
+ return path.join(getVanaHome(), "telemetry");
87
+ }
88
+ export function getTelemetryOutboxDir() {
89
+ return path.join(getTelemetryDir(), "outbox");
90
+ }
91
+ export function getTimestampedLogPath(prefix) {
92
+ const safePrefix = prefix.replace(/[^a-z0-9-]+/gi, "-").toLowerCase();
93
+ return path.join(getLogsDir(), `${safePrefix}-${new Date().toISOString().replace(/[:.]/g, "-")}.log`);
94
+ }
95
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAExD,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACjC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,iEAAiE;IACjE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,yBAAyB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC;AAC7D,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACtE,OAAO,IAAI,CAAC,IAAI,CACd,UAAU,EAAE,EACZ,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CACtE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ export interface StoredSourceState {
2
+ connectorInstalled?: boolean;
3
+ connectorVersion?: string;
4
+ exportFrequency?: string;
5
+ sessionPresent?: boolean;
6
+ lastRunAt?: string | null;
7
+ lastRunOutcome?: string | null;
8
+ lastCollectedAt?: string;
9
+ dataState?: string | null;
10
+ lastError?: string | null;
11
+ lastResultPath?: string | null;
12
+ lastLogPath?: string | null;
13
+ connectionHealth?: "healthy" | "needs_reauth" | "error" | "stale";
14
+ connectionHealthChangedAt?: string;
15
+ connectionHealthReason?: string;
16
+ connectionHealthRetryable?: boolean;
17
+ ingestScopes?: Array<{
18
+ scope: string;
19
+ status: "stored" | "failed";
20
+ syncedAt?: string;
21
+ error?: string;
22
+ }>;
23
+ }
24
+ export interface CliConfig {
25
+ personalServerUrl?: string;
26
+ skillsPromptCompleted?: boolean;
27
+ telemetryEnabled?: boolean;
28
+ telemetryInstallId?: string;
29
+ }
30
+ export interface CliStateFile {
31
+ version: 1;
32
+ config?: CliConfig;
33
+ sources: Record<string, StoredSourceState>;
34
+ }
35
+ export declare function readCliState(): Promise<CliStateFile>;
36
+ export declare function updateSourceState(source: string, patch: StoredSourceState): Promise<void>;
37
+ export declare function readCliConfig(): Promise<CliConfig>;
38
+ export declare function updateCliConfig(patch: Partial<CliConfig>): Promise<void>;
39
+ export declare function ensureParentDir(filePath: string): Promise<void>;
40
+ export declare function __setStateStoreTestHooks(hooks: {
41
+ beforeRead?: () => Promise<void> | void;
42
+ beforeWrite?: () => Promise<void> | void;
43
+ } | undefined): void;
44
+ //# sourceMappingURL=state-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-store.d.ts","sourceRoot":"","sources":["../../src/core/state-store.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC;IAClE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,SAAS;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC5C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAO1D;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,CAGxD;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EACD;IACE,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1C,GACD,SAAS,GACZ,IAAI,CAEN"}
@@ -0,0 +1,101 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import crypto from "node:crypto";
4
+ import { getCliStatePath, getVanaHome } from "./paths.js";
5
+ const STATE_LOCK_TIMEOUT_MS = 5_000;
6
+ const STATE_LOCK_RETRY_MS = 25;
7
+ const STATE_LOCK_STALE_MS = 30_000;
8
+ let testHooks;
9
+ export async function readCliState() {
10
+ try {
11
+ const raw = await fs.readFile(getCliStatePath(), "utf8");
12
+ return JSON.parse(raw);
13
+ }
14
+ catch {
15
+ return { version: 1, sources: {} };
16
+ }
17
+ }
18
+ export async function updateSourceState(source, patch) {
19
+ await fs.mkdir(getVanaHome(), { recursive: true });
20
+ await withStateFileLock(async () => {
21
+ await testHooks?.beforeRead?.();
22
+ const state = await readCliState();
23
+ const current = state.sources[source] ?? {};
24
+ state.sources[source] = { ...current, ...patch };
25
+ await testHooks?.beforeWrite?.();
26
+ await atomicWriteFile(getCliStatePath(), `${JSON.stringify(state, null, 2)}\n`);
27
+ });
28
+ }
29
+ export async function readCliConfig() {
30
+ const state = await readCliState();
31
+ return state.config ?? {};
32
+ }
33
+ export async function updateCliConfig(patch) {
34
+ await fs.mkdir(getVanaHome(), { recursive: true });
35
+ await withStateFileLock(async () => {
36
+ await testHooks?.beforeRead?.();
37
+ const state = await readCliState();
38
+ state.config = { ...(state.config ?? {}), ...patch };
39
+ await testHooks?.beforeWrite?.();
40
+ await atomicWriteFile(getCliStatePath(), `${JSON.stringify(state, null, 2)}\n`);
41
+ });
42
+ }
43
+ export async function ensureParentDir(filePath) {
44
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
45
+ }
46
+ export function __setStateStoreTestHooks(hooks) {
47
+ testHooks = hooks;
48
+ }
49
+ async function withStateFileLock(fn) {
50
+ const lockPath = `${getCliStatePath()}.lock`;
51
+ const start = Date.now();
52
+ while (true) {
53
+ try {
54
+ const handle = await fs.open(lockPath, "wx");
55
+ try {
56
+ return await fn();
57
+ }
58
+ finally {
59
+ await handle.close();
60
+ await fs.rm(lockPath, { force: true });
61
+ }
62
+ }
63
+ catch (error) {
64
+ if (!isLockAlreadyHeld(error)) {
65
+ throw error;
66
+ }
67
+ if (await isStaleLock(lockPath)) {
68
+ await fs.rm(lockPath, { force: true });
69
+ continue;
70
+ }
71
+ if (Date.now() - start >= STATE_LOCK_TIMEOUT_MS) {
72
+ throw new Error("Timed out waiting for the Vana Connect state file lock.");
73
+ }
74
+ await sleep(STATE_LOCK_RETRY_MS);
75
+ }
76
+ }
77
+ }
78
+ async function atomicWriteFile(filePath, contents) {
79
+ const tempPath = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
80
+ await fs.writeFile(tempPath, contents, "utf8");
81
+ await fs.rename(tempPath, filePath);
82
+ }
83
+ async function isStaleLock(lockPath) {
84
+ try {
85
+ const stats = await fs.stat(lockPath);
86
+ return Date.now() - stats.mtimeMs > STATE_LOCK_STALE_MS;
87
+ }
88
+ catch {
89
+ return false;
90
+ }
91
+ }
92
+ function isLockAlreadyHeld(error) {
93
+ return (typeof error === "object" &&
94
+ error !== null &&
95
+ "code" in error &&
96
+ error.code === "EEXIST");
97
+ }
98
+ function sleep(ms) {
99
+ return new Promise((resolve) => setTimeout(resolve, ms));
100
+ }
101
+ //# sourceMappingURL=state-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-store.js","sourceRoot":"","sources":["../../src/core/state-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /** Possible states of a Vana Connect session from the client's perspective. */
2
+ export type ConnectionStatus = "idle" | "connecting" | "waiting" | "approved" | "denied" | "expired" | "error";
3
+ /** Parameters for creating a new session on the Session Relay. */
4
+ export interface SessionInitParams {
5
+ /** Data scopes to request (e.g. `["chatgpt.conversations"]`). */
6
+ scopes: string[];
7
+ /** Public HTTPS URL for grant event notifications. Localhost is rejected. */
8
+ webhookUrl?: string;
9
+ /** Your app's user ID for correlation. */
10
+ appUserId?: string;
11
+ }
12
+ /** Result returned by {@link SessionRelay.initSession}. */
13
+ export interface SessionInitResult {
14
+ /** Unique session identifier used for polling. */
15
+ sessionId: string;
16
+ /** URL to account.vana.org where the user signs in and launches Data Connect. */
17
+ connectUrl: string;
18
+ /** ISO 8601 expiration timestamp for the session. */
19
+ expiresAt: string;
20
+ }
21
+ /** Result returned by {@link SessionRelay.pollSession}. */
22
+ export interface SessionPollResult {
23
+ /** Current session status. */
24
+ status: "pending" | "claimed" | "approved" | "denied" | "expired";
25
+ /** Grant payload, present when status is `"approved"`. */
26
+ grant?: GrantPayload;
27
+ /** Reason for denial, present when status is `"denied"`. */
28
+ reason?: string;
29
+ }
30
+ /** Payload describing a user's approved data grant. */
31
+ export interface GrantPayload {
32
+ /** On-chain permission ID. */
33
+ grantId: string;
34
+ /** User's wallet address. */
35
+ userAddress: string;
36
+ /** Builder's registered wallet address. */
37
+ builderAddress: string;
38
+ /** Approved data scopes. */
39
+ scopes: string[];
40
+ /** User's Personal Server address, if known. */
41
+ serverAddress?: string;
42
+ /** Your app's user ID, if provided during session init. */
43
+ appUserId?: string;
44
+ }
45
+ /** Parameters for fetching data from a Personal Server. */
46
+ export interface DataFetchParams {
47
+ /** Base URL of the user's Personal Server. */
48
+ serverUrl: string;
49
+ /** Data scope to fetch (e.g. `"instagram.profile"`). */
50
+ scope: string;
51
+ /** Grant ID authorizing the data access. */
52
+ grantId: string;
53
+ /** Optional file ID for a specific file within the scope. */
54
+ fileId?: string;
55
+ /** Optional ISO 8601 timestamp to fetch data at a specific point in time. */
56
+ at?: string;
57
+ }
58
+ /** Configuration for {@link createRequestSigner}. */
59
+ export interface RequestSignerConfig {
60
+ /** Builder private key in hex format. */
61
+ privateKey: `0x${string}`;
62
+ /**
63
+ * Body hash wire format.
64
+ * - `"legacy"`: bare sha256 hex, with `""` for empty bodies. Required by the current Session Relay.
65
+ * - `"prefixed"`: `sha256:<hex>`, including the canonical empty-body hash.
66
+ */
67
+ bodyHashFormat?: "legacy" | "prefixed";
68
+ }
69
+ /** Configuration for {@link createSessionRelay}. */
70
+ export interface SessionRelayConfig {
71
+ /** Builder private key in hex format. */
72
+ privateKey: `0x${string}`;
73
+ /** Builder's wallet address derived from the private key. */
74
+ granteeAddress: `0x${string}`;
75
+ /** Base URL of the Session Relay service. */
76
+ sessionRelayUrl: string;
77
+ }
78
+ /** Configuration for {@link createDataClient}. */
79
+ export interface DataClientConfig {
80
+ /** Builder private key in hex format. */
81
+ privateKey: `0x${string}`;
82
+ /** Base URL of the Data Portability Gateway. */
83
+ gatewayUrl: string;
84
+ }
85
+ /** Configuration for the high-level {@link connect} function. */
86
+ export interface ConnectConfig {
87
+ /** Builder private key in hex format. */
88
+ privateKey: `0x${string}`;
89
+ /** Data scopes to request. Defaults to `["identity.auth"]` when mode is `"auth"`. */
90
+ scopes?: string[];
91
+ /**
92
+ * Flow mode.
93
+ * - `"connect"` (default): full data grant flow via DataConnect.
94
+ * - `"auth"`: identity-only — user authenticates and returns their address,
95
+ * no DataConnect required.
96
+ */
97
+ mode?: "auth" | "connect";
98
+ /** Public app URL used by Connect UI to resolve favicon branding. */
99
+ appUrl?: string;
100
+ /** Human-readable label for the requested data source shown in Connect UI. */
101
+ dataSource?: string;
102
+ /** Public HTTPS URL for grant event notifications. */
103
+ webhookUrl?: string;
104
+ /** Your app's user ID for correlation. */
105
+ appUserId?: string;
106
+ /** SDK environment (`"dev"` or `"prod"`). Defaults to `"prod"`. */
107
+ environment?: "dev" | "prod";
108
+ }
109
+ /** Configuration for the high-level {@link getData} function. */
110
+ export interface GetDataConfig {
111
+ /** Builder private key in hex format. */
112
+ privateKey: `0x${string}`;
113
+ /** Grant from the approval step. */
114
+ grant: GrantPayload;
115
+ /** SDK environment (`"dev"` or `"prod"`). Defaults to `"prod"`. */
116
+ environment?: "dev" | "prod";
117
+ }
118
+ /** Configuration for {@link signVanaManifest}. */
119
+ export interface VanaManifestConfig {
120
+ /** Builder private key in hex format. */
121
+ privateKey: `0x${string}`;
122
+ /** Canonical URL of your application. */
123
+ appUrl: string;
124
+ /** URL to your privacy policy. */
125
+ privacyPolicyUrl: string;
126
+ /** URL to your terms of service. */
127
+ termsUrl: string;
128
+ /** URL for user support. */
129
+ supportUrl: string;
130
+ /** Public webhook URL for grant notifications. */
131
+ webhookUrl: string;
132
+ }
133
+ /** Signed manifest block included in your web app manifest under the `vana` key. */
134
+ export interface VanaManifestBlock {
135
+ /** Canonical URL of your application. */
136
+ appUrl: string;
137
+ /** URL to your privacy policy. */
138
+ privacyPolicyUrl: string;
139
+ /** URL to your terms of service. */
140
+ termsUrl: string;
141
+ /** URL for user support. */
142
+ supportUrl: string;
143
+ /** Public webhook URL for grant notifications. */
144
+ webhookUrl: string;
145
+ /** Cryptographic signature of the manifest block. */
146
+ signature: string;
147
+ }
148
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,YAAY,GACZ,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,GACT,OAAO,CAAC;AAEZ,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClE,0DAA0D;IAC1D,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CACxC;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAC9B,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC9B;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,oCAAoC;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,mEAAmE;IACnE,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC9B;AAED,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./core/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./core/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { PersonalServerHealth } from "./index.js";
2
+ export interface IngestScopeResult {
3
+ scope: string;
4
+ status: "stored" | "failed";
5
+ collectedAt?: string;
6
+ error?: string;
7
+ }
8
+ export interface ScopeSummary {
9
+ scope: string;
10
+ count: number;
11
+ }
12
+ export interface PersonalServerClient {
13
+ health(): Promise<PersonalServerHealth>;
14
+ ingestScope(scope: string, data: unknown): Promise<IngestScopeResult>;
15
+ listScopes(prefix?: string): Promise<ScopeSummary[]>;
16
+ }
17
+ /**
18
+ * Create an HTTP client for a Vana personal server.
19
+ *
20
+ * @param config - Connection configuration
21
+ * @param config.url - Base URL of the personal server
22
+ * @param config.auth - Optional authentication configuration
23
+ * @returns A PersonalServerClient instance
24
+ */
25
+ export declare function createPersonalServerClient(config: {
26
+ url: string;
27
+ auth?: {
28
+ type: "bearerToken";
29
+ token: string;
30
+ } | {
31
+ type: "none";
32
+ };
33
+ }): PersonalServerClient;
34
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/personal-server/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAyBD,MAAM,WAAW,oBAAoB;IACnC,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACtD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE,GAAG,oBAAoB,CAiGvB"}
@@ -0,0 +1,108 @@
1
+ function parseScopeSummary(raw) {
2
+ if (!raw || typeof raw !== "object") {
3
+ return null;
4
+ }
5
+ const record = raw;
6
+ const scope = typeof record.scope === "string" ? record.scope : null;
7
+ const count = typeof record.count === "number"
8
+ ? record.count
9
+ : typeof record.versionCount === "number"
10
+ ? record.versionCount
11
+ : typeof record.version_count === "number"
12
+ ? record.version_count
13
+ : null;
14
+ if (!scope || count === null) {
15
+ return null;
16
+ }
17
+ return { scope, count };
18
+ }
19
+ /**
20
+ * Create an HTTP client for a Vana personal server.
21
+ *
22
+ * @param config - Connection configuration
23
+ * @param config.url - Base URL of the personal server
24
+ * @param config.auth - Optional authentication configuration
25
+ * @returns A PersonalServerClient instance
26
+ */
27
+ export function createPersonalServerClient(config) {
28
+ const baseUrl = config.url.replace(/\/+$/, "");
29
+ function authHeaders() {
30
+ if (config.auth?.type === "bearerToken") {
31
+ return { Authorization: `Bearer ${config.auth.token}` };
32
+ }
33
+ return {};
34
+ }
35
+ return {
36
+ async health() {
37
+ const response = await fetch(`${baseUrl}/health`, {
38
+ method: "GET",
39
+ signal: AbortSignal.timeout(2_000),
40
+ });
41
+ if (!response.ok) {
42
+ throw new Error(`Health check failed: ${response.status}`);
43
+ }
44
+ const body = (await response.json());
45
+ return {
46
+ status: typeof body.status === "string" ? body.status : "unknown",
47
+ version: typeof body.version === "string" ? body.version : "unknown",
48
+ uptime: typeof body.uptime === "number" ? body.uptime : 0,
49
+ owner: typeof body.owner === "string" ? body.owner : null,
50
+ };
51
+ },
52
+ async ingestScope(scope, data) {
53
+ try {
54
+ const response = await fetch(`${baseUrl}/v1/data/${scope}`, {
55
+ method: "POST",
56
+ headers: {
57
+ "Content-Type": "application/json",
58
+ ...authHeaders(),
59
+ },
60
+ body: JSON.stringify(data),
61
+ });
62
+ if (response.status === 201 || (response.ok && response.status < 300)) {
63
+ const body = (await response.json().catch(() => ({})));
64
+ return {
65
+ scope,
66
+ status: "stored",
67
+ collectedAt: typeof body.collectedAt === "string"
68
+ ? body.collectedAt
69
+ : new Date().toISOString(),
70
+ };
71
+ }
72
+ const errorText = await response.text().catch(() => "Unknown error");
73
+ return {
74
+ scope,
75
+ status: "failed",
76
+ error: `HTTP ${response.status}: ${errorText}`,
77
+ };
78
+ }
79
+ catch (error) {
80
+ return {
81
+ scope,
82
+ status: "failed",
83
+ error: error instanceof Error ? error.message : "Unknown error",
84
+ };
85
+ }
86
+ },
87
+ async listScopes(prefix) {
88
+ // This endpoint requires auth — if no auth configured, return empty.
89
+ if (!config.auth || config.auth.type === "none") {
90
+ return [];
91
+ }
92
+ const params = prefix ? `?scopePrefix=${encodeURIComponent(prefix)}` : "";
93
+ const response = await fetch(`${baseUrl}/v1/data${params}`, {
94
+ method: "GET",
95
+ headers: authHeaders(),
96
+ });
97
+ if (!response.ok) {
98
+ const errorText = await response.text().catch(() => "Unknown error");
99
+ throw new Error(`Scope listing failed: HTTP ${response.status}: ${errorText}`);
100
+ }
101
+ const body = (await response.json());
102
+ return (body.scopes ?? [])
103
+ .map(parseScopeSummary)
104
+ .filter((scope) => scope !== null);
105
+ },
106
+ };
107
+ }
108
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/personal-server/client.ts"],"names":[],"mappings":"AAcA,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAC9B,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;YACvC,CAAC,CAAC,MAAM,CAAC,YAAY;YACrB,CAAC,CAAC,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;gBACxC,CAAC,CAAC,MAAM,CAAC,aAAa;gBACtB,CAAC,CAAC,IAAI,CAAC;IAEf,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAQD;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAG1C;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE/C,SAAS,WAAW;QAClB,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;YACxC,OAAO,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,KAAK,CAAC,MAAM;YACV,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,EAAE;gBAChD,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;YAChE,OAAO;gBACL,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACjE,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBACpE,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzD,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;aAC1D,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,WAAW,CACf,KAAa,EACb,IAAa;YAEb,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,YAAY,KAAK,EAAE,EAAE;oBAC1D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,GAAG,WAAW,EAAE;qBACjB;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC3B,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;oBACtE,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAGpD,CAAC;oBACF,OAAO;wBACL,KAAK;wBACL,MAAM,EAAE,QAAQ;wBAChB,WAAW,EACT,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;4BAClC,CAAC,CAAC,IAAI,CAAC,WAAW;4BAClB,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBAC/B,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;gBACrE,OAAO;oBACL,KAAK;oBACL,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;iBAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,KAAK;oBACL,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,MAAe;YAC9B,qEAAqE;YACrE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,WAAW,MAAM,EAAE,EAAE;gBAC1D,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,WAAW,EAAE;aACvB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;gBACrE,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAC9D,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;iBACvB,GAAG,CAAC,iBAAiB,CAAC;iBACtB,MAAM,CAAC,CAAC,KAAK,EAAyB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { CliEvent, PersonalServerState } from "../core/cli-types.js";
2
+ export { createPersonalServerClient } from "./client.js";
3
+ export type { PersonalServerClient, IngestScopeResult, ScopeSummary, } from "./client.js";
4
+ export interface PersonalServerHealth {
5
+ status: string;
6
+ version: string;
7
+ uptime: number;
8
+ owner: string | null;
9
+ }
10
+ export interface PersonalServerTarget {
11
+ state: PersonalServerState;
12
+ url: string | null;
13
+ source: "config" | "auth" | "env" | "scan" | null;
14
+ health: PersonalServerHealth | null;
15
+ }
16
+ export type PersonalServerAuthConfig = {
17
+ type: "bearerToken";
18
+ token: string;
19
+ } | {
20
+ type: "none";
21
+ } | undefined;
22
+ export interface IngestResultOptions {
23
+ scopes?: string[];
24
+ }
25
+ export declare function detectPersonalServerTarget(): Promise<PersonalServerTarget>;
26
+ export declare function ingestResult(source: string, resultPath: string, target: PersonalServerTarget, options?: IngestResultOptions): Promise<CliEvent[]>;
27
+ export declare function resolvePersonalServerAuthConfig(serverUrl: string): PersonalServerAuthConfig;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/personal-server/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQ1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAmBD,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAsChF;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,CA0ErB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,GAChB,wBAAwB,CAe1B"}