@vibelet/cli 0.1.38 → 1.0.1

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 (323) hide show
  1. package/README.md +80 -0
  2. package/bin/cloudflared-quick-tunnel.mjs +11 -0
  3. package/bin/cloudflared-resolver.mjs +171 -0
  4. package/bin/vibelet-runtime-policy.mjs +36 -0
  5. package/bin/vibelet.cjs +12 -0
  6. package/bin/vibelet.mjs +1235 -0
  7. package/dist/index.cjs +126 -0
  8. package/package.json +24 -22
  9. package/app.json +0 -5
  10. package/dist/advertised-hosts.d.ts +0 -34
  11. package/dist/advertised-hosts.d.ts.map +0 -1
  12. package/dist/advertised-hosts.js +0 -176
  13. package/dist/advertised-hosts.js.map +0 -1
  14. package/dist/advertised-hosts.test.d.ts +0 -2
  15. package/dist/advertised-hosts.test.d.ts.map +0 -1
  16. package/dist/advertised-hosts.test.js +0 -96
  17. package/dist/advertised-hosts.test.js.map +0 -1
  18. package/dist/audit.d.ts +0 -30
  19. package/dist/audit.d.ts.map +0 -1
  20. package/dist/audit.js +0 -73
  21. package/dist/audit.js.map +0 -1
  22. package/dist/audit.test.d.ts +0 -2
  23. package/dist/audit.test.d.ts.map +0 -1
  24. package/dist/audit.test.js +0 -33
  25. package/dist/audit.test.js.map +0 -1
  26. package/dist/auth.d.ts +0 -6
  27. package/dist/auth.d.ts.map +0 -1
  28. package/dist/auth.js +0 -27
  29. package/dist/auth.js.map +0 -1
  30. package/dist/claude-hooks.d.ts +0 -58
  31. package/dist/claude-hooks.d.ts.map +0 -1
  32. package/dist/claude-hooks.js +0 -129
  33. package/dist/claude-hooks.js.map +0 -1
  34. package/dist/cli-version.d.ts +0 -3
  35. package/dist/cli-version.d.ts.map +0 -1
  36. package/dist/cli-version.js +0 -35
  37. package/dist/cli-version.js.map +0 -1
  38. package/dist/cli-version.test.d.ts +0 -2
  39. package/dist/cli-version.test.d.ts.map +0 -1
  40. package/dist/cli-version.test.js +0 -38
  41. package/dist/cli-version.test.js.map +0 -1
  42. package/dist/config.d.ts +0 -30
  43. package/dist/config.d.ts.map +0 -1
  44. package/dist/config.js +0 -327
  45. package/dist/config.js.map +0 -1
  46. package/dist/config.test.d.ts +0 -2
  47. package/dist/config.test.d.ts.map +0 -1
  48. package/dist/config.test.js +0 -184
  49. package/dist/config.test.js.map +0 -1
  50. package/dist/dev-auth.test.d.ts +0 -2
  51. package/dist/dev-auth.test.d.ts.map +0 -1
  52. package/dist/dev-auth.test.js +0 -154
  53. package/dist/dev-auth.test.js.map +0 -1
  54. package/dist/dev-script.test.d.ts +0 -2
  55. package/dist/dev-script.test.d.ts.map +0 -1
  56. package/dist/dev-script.test.js +0 -412
  57. package/dist/dev-script.test.js.map +0 -1
  58. package/dist/drivers/claude.d.ts +0 -34
  59. package/dist/drivers/claude.d.ts.map +0 -1
  60. package/dist/drivers/claude.js +0 -413
  61. package/dist/drivers/claude.js.map +0 -1
  62. package/dist/drivers/claude.test.d.ts +0 -2
  63. package/dist/drivers/claude.test.d.ts.map +0 -1
  64. package/dist/drivers/claude.test.js +0 -951
  65. package/dist/drivers/claude.test.js.map +0 -1
  66. package/dist/drivers/codex.d.ts +0 -38
  67. package/dist/drivers/codex.d.ts.map +0 -1
  68. package/dist/drivers/codex.js +0 -771
  69. package/dist/drivers/codex.js.map +0 -1
  70. package/dist/drivers/codex.test.d.ts +0 -2
  71. package/dist/drivers/codex.test.d.ts.map +0 -1
  72. package/dist/drivers/codex.test.js +0 -939
  73. package/dist/drivers/codex.test.js.map +0 -1
  74. package/dist/drivers/types.d.ts +0 -14
  75. package/dist/drivers/types.d.ts.map +0 -1
  76. package/dist/drivers/types.js +0 -2
  77. package/dist/drivers/types.js.map +0 -1
  78. package/dist/e2e.test.d.ts +0 -2
  79. package/dist/e2e.test.d.ts.map +0 -1
  80. package/dist/e2e.test.js +0 -111
  81. package/dist/e2e.test.js.map +0 -1
  82. package/dist/identity.d.ts +0 -10
  83. package/dist/identity.d.ts.map +0 -1
  84. package/dist/identity.js +0 -66
  85. package/dist/identity.js.map +0 -1
  86. package/dist/identity.test.d.ts +0 -2
  87. package/dist/identity.test.d.ts.map +0 -1
  88. package/dist/identity.test.js +0 -25
  89. package/dist/identity.test.js.map +0 -1
  90. package/dist/index-entry.test.d.ts +0 -2
  91. package/dist/index-entry.test.d.ts.map +0 -1
  92. package/dist/index-entry.test.js +0 -272
  93. package/dist/index-entry.test.js.map +0 -1
  94. package/dist/index.d.ts +0 -2
  95. package/dist/index.d.ts.map +0 -1
  96. package/dist/index.js +0 -707
  97. package/dist/index.js.map +0 -1
  98. package/dist/logger.d.ts +0 -31
  99. package/dist/logger.d.ts.map +0 -1
  100. package/dist/logger.js +0 -75
  101. package/dist/logger.js.map +0 -1
  102. package/dist/metrics.d.ts +0 -52
  103. package/dist/metrics.d.ts.map +0 -1
  104. package/dist/metrics.js +0 -89
  105. package/dist/metrics.js.map +0 -1
  106. package/dist/pairing-store.d.ts +0 -29
  107. package/dist/pairing-store.d.ts.map +0 -1
  108. package/dist/pairing-store.js +0 -131
  109. package/dist/pairing-store.js.map +0 -1
  110. package/dist/pairing-store.test.d.ts +0 -2
  111. package/dist/pairing-store.test.d.ts.map +0 -1
  112. package/dist/pairing-store.test.js +0 -47
  113. package/dist/pairing-store.test.js.map +0 -1
  114. package/dist/paths.d.ts +0 -16
  115. package/dist/paths.d.ts.map +0 -1
  116. package/dist/paths.js +0 -18
  117. package/dist/paths.js.map +0 -1
  118. package/dist/perf-compare.d.ts +0 -13
  119. package/dist/perf-compare.d.ts.map +0 -1
  120. package/dist/perf-compare.js +0 -125
  121. package/dist/perf-compare.js.map +0 -1
  122. package/dist/port-conflict.d.ts +0 -9
  123. package/dist/port-conflict.d.ts.map +0 -1
  124. package/dist/port-conflict.js +0 -33
  125. package/dist/port-conflict.js.map +0 -1
  126. package/dist/port-conflict.test.d.ts +0 -2
  127. package/dist/port-conflict.test.d.ts.map +0 -1
  128. package/dist/port-conflict.test.js +0 -38
  129. package/dist/port-conflict.test.js.map +0 -1
  130. package/dist/process-scanner.d.ts +0 -43
  131. package/dist/process-scanner.d.ts.map +0 -1
  132. package/dist/process-scanner.js +0 -453
  133. package/dist/process-scanner.js.map +0 -1
  134. package/dist/process-scanner.perf.test.d.ts +0 -2
  135. package/dist/process-scanner.perf.test.d.ts.map +0 -1
  136. package/dist/process-scanner.perf.test.js +0 -186
  137. package/dist/process-scanner.perf.test.js.map +0 -1
  138. package/dist/process-scanner.test.d.ts +0 -2
  139. package/dist/process-scanner.test.d.ts.map +0 -1
  140. package/dist/process-scanner.test.js +0 -399
  141. package/dist/process-scanner.test.js.map +0 -1
  142. package/dist/push-protocol.d.ts +0 -15
  143. package/dist/push-protocol.d.ts.map +0 -1
  144. package/dist/push-protocol.js +0 -23
  145. package/dist/push-protocol.js.map +0 -1
  146. package/dist/push-protocol.test.d.ts +0 -2
  147. package/dist/push-protocol.test.d.ts.map +0 -1
  148. package/dist/push-protocol.test.js +0 -57
  149. package/dist/push-protocol.test.js.map +0 -1
  150. package/dist/push-store.d.ts +0 -22
  151. package/dist/push-store.d.ts.map +0 -1
  152. package/dist/push-store.js +0 -103
  153. package/dist/push-store.js.map +0 -1
  154. package/dist/push-store.test.d.ts +0 -2
  155. package/dist/push-store.test.d.ts.map +0 -1
  156. package/dist/push-store.test.js +0 -79
  157. package/dist/push-store.test.js.map +0 -1
  158. package/dist/push.d.ts +0 -65
  159. package/dist/push.d.ts.map +0 -1
  160. package/dist/push.js +0 -202
  161. package/dist/push.js.map +0 -1
  162. package/dist/push.test.d.ts +0 -2
  163. package/dist/push.test.d.ts.map +0 -1
  164. package/dist/push.test.js +0 -199
  165. package/dist/push.test.js.map +0 -1
  166. package/dist/safe-stdio.d.ts +0 -3
  167. package/dist/safe-stdio.d.ts.map +0 -1
  168. package/dist/safe-stdio.js +0 -46
  169. package/dist/safe-stdio.js.map +0 -1
  170. package/dist/scanner.d.ts +0 -30
  171. package/dist/scanner.d.ts.map +0 -1
  172. package/dist/scanner.js +0 -859
  173. package/dist/scanner.js.map +0 -1
  174. package/dist/scanner.perf.test.d.ts +0 -2
  175. package/dist/scanner.perf.test.d.ts.map +0 -1
  176. package/dist/scanner.perf.test.js +0 -320
  177. package/dist/scanner.perf.test.js.map +0 -1
  178. package/dist/scanner.test.d.ts +0 -2
  179. package/dist/scanner.test.d.ts.map +0 -1
  180. package/dist/scanner.test.js +0 -948
  181. package/dist/scanner.test.js.map +0 -1
  182. package/dist/session-inventory.d.ts +0 -63
  183. package/dist/session-inventory.d.ts.map +0 -1
  184. package/dist/session-inventory.js +0 -525
  185. package/dist/session-inventory.js.map +0 -1
  186. package/dist/session-inventory.perf.test.d.ts +0 -2
  187. package/dist/session-inventory.perf.test.d.ts.map +0 -1
  188. package/dist/session-inventory.perf.test.js +0 -220
  189. package/dist/session-inventory.perf.test.js.map +0 -1
  190. package/dist/session-inventory.test.d.ts +0 -2
  191. package/dist/session-inventory.test.d.ts.map +0 -1
  192. package/dist/session-inventory.test.js +0 -712
  193. package/dist/session-inventory.test.js.map +0 -1
  194. package/dist/session-manager.d.ts +0 -75
  195. package/dist/session-manager.d.ts.map +0 -1
  196. package/dist/session-manager.js +0 -1515
  197. package/dist/session-manager.js.map +0 -1
  198. package/dist/session-manager.test.d.ts +0 -2
  199. package/dist/session-manager.test.d.ts.map +0 -1
  200. package/dist/session-manager.test.js +0 -2861
  201. package/dist/session-manager.test.js.map +0 -1
  202. package/dist/session-store.d.ts +0 -42
  203. package/dist/session-store.d.ts.map +0 -1
  204. package/dist/session-store.js +0 -163
  205. package/dist/session-store.js.map +0 -1
  206. package/dist/session-store.test.d.ts +0 -2
  207. package/dist/session-store.test.d.ts.map +0 -1
  208. package/dist/session-store.test.js +0 -236
  209. package/dist/session-store.test.js.map +0 -1
  210. package/dist/session-title.d.ts +0 -6
  211. package/dist/session-title.d.ts.map +0 -1
  212. package/dist/session-title.js +0 -105
  213. package/dist/session-title.js.map +0 -1
  214. package/dist/session-title.perf.test.d.ts +0 -2
  215. package/dist/session-title.perf.test.d.ts.map +0 -1
  216. package/dist/session-title.perf.test.js +0 -99
  217. package/dist/session-title.perf.test.js.map +0 -1
  218. package/dist/session-title.test.d.ts +0 -2
  219. package/dist/session-title.test.d.ts.map +0 -1
  220. package/dist/session-title.test.js +0 -199
  221. package/dist/session-title.test.js.map +0 -1
  222. package/dist/shutdown-endpoint.test.d.ts +0 -2
  223. package/dist/shutdown-endpoint.test.d.ts.map +0 -1
  224. package/dist/shutdown-endpoint.test.js +0 -93
  225. package/dist/shutdown-endpoint.test.js.map +0 -1
  226. package/dist/storage-housekeeping.d.ts +0 -28
  227. package/dist/storage-housekeeping.d.ts.map +0 -1
  228. package/dist/storage-housekeeping.js +0 -76
  229. package/dist/storage-housekeeping.js.map +0 -1
  230. package/dist/storage-housekeeping.test.d.ts +0 -2
  231. package/dist/storage-housekeeping.test.d.ts.map +0 -1
  232. package/dist/storage-housekeeping.test.js +0 -65
  233. package/dist/storage-housekeeping.test.js.map +0 -1
  234. package/dist/test-daemon-harness.d.ts +0 -31
  235. package/dist/test-daemon-harness.d.ts.map +0 -1
  236. package/dist/test-daemon-harness.js +0 -337
  237. package/dist/test-daemon-harness.js.map +0 -1
  238. package/dist/token-auth.test.d.ts +0 -2
  239. package/dist/token-auth.test.d.ts.map +0 -1
  240. package/dist/token-auth.test.js +0 -52
  241. package/dist/token-auth.test.js.map +0 -1
  242. package/dist/utils.d.ts +0 -4
  243. package/dist/utils.d.ts.map +0 -1
  244. package/dist/utils.js +0 -40
  245. package/dist/utils.js.map +0 -1
  246. package/dist/utils.test.d.ts +0 -2
  247. package/dist/utils.test.d.ts.map +0 -1
  248. package/dist/utils.test.js +0 -54
  249. package/dist/utils.test.js.map +0 -1
  250. package/dist/ws-data.d.ts +0 -4
  251. package/dist/ws-data.d.ts.map +0 -1
  252. package/dist/ws-data.js +0 -20
  253. package/dist/ws-data.js.map +0 -1
  254. package/dist/ws-data.test.d.ts +0 -2
  255. package/dist/ws-data.test.d.ts.map +0 -1
  256. package/dist/ws-data.test.js +0 -17
  257. package/dist/ws-data.test.js.map +0 -1
  258. package/perf-reporter.mjs +0 -138
  259. package/scripts/build-release.mjs +0 -41
  260. package/scripts/dev.mjs +0 -537
  261. package/src/advertised-hosts.test.ts +0 -125
  262. package/src/advertised-hosts.ts +0 -225
  263. package/src/audit.test.ts +0 -38
  264. package/src/audit.ts +0 -117
  265. package/src/auth.ts +0 -31
  266. package/src/claude-hooks.ts +0 -195
  267. package/src/cli-version.test.ts +0 -36
  268. package/src/cli-version.ts +0 -46
  269. package/src/config.test.ts +0 -254
  270. package/src/config.ts +0 -324
  271. package/src/dev-auth.test.ts +0 -183
  272. package/src/dev-script.test.ts +0 -511
  273. package/src/drivers/claude.test.ts +0 -1186
  274. package/src/drivers/claude.ts +0 -443
  275. package/src/drivers/codex.test.ts +0 -1096
  276. package/src/drivers/codex.ts +0 -879
  277. package/src/drivers/types.ts +0 -15
  278. package/src/e2e.test.ts +0 -139
  279. package/src/identity.test.ts +0 -26
  280. package/src/identity.ts +0 -82
  281. package/src/index-entry.test.ts +0 -336
  282. package/src/index.ts +0 -781
  283. package/src/logger.ts +0 -112
  284. package/src/metrics.ts +0 -117
  285. package/src/pairing-store.test.ts +0 -53
  286. package/src/pairing-store.ts +0 -154
  287. package/src/paths.ts +0 -19
  288. package/src/perf-compare.ts +0 -164
  289. package/src/port-conflict.test.ts +0 -45
  290. package/src/port-conflict.ts +0 -44
  291. package/src/process-scanner.perf.test.ts +0 -222
  292. package/src/process-scanner.test.ts +0 -575
  293. package/src/process-scanner.ts +0 -514
  294. package/src/push-protocol.test.ts +0 -74
  295. package/src/push-protocol.ts +0 -36
  296. package/src/push-store.test.ts +0 -89
  297. package/src/push-store.ts +0 -126
  298. package/src/push.test.ts +0 -234
  299. package/src/push.ts +0 -318
  300. package/src/safe-stdio.ts +0 -51
  301. package/src/scanner.perf.test.ts +0 -359
  302. package/src/scanner.test.ts +0 -1045
  303. package/src/scanner.ts +0 -924
  304. package/src/session-inventory.perf.test.ts +0 -250
  305. package/src/session-inventory.test.ts +0 -1002
  306. package/src/session-inventory.ts +0 -721
  307. package/src/session-manager.test.ts +0 -3430
  308. package/src/session-manager.ts +0 -1775
  309. package/src/session-store.test.ts +0 -276
  310. package/src/session-store.ts +0 -202
  311. package/src/session-title.perf.test.ts +0 -118
  312. package/src/session-title.test.ts +0 -286
  313. package/src/session-title.ts +0 -108
  314. package/src/shutdown-endpoint.test.ts +0 -95
  315. package/src/storage-housekeeping.test.ts +0 -78
  316. package/src/storage-housekeeping.ts +0 -111
  317. package/src/test-daemon-harness.ts +0 -410
  318. package/src/token-auth.test.ts +0 -67
  319. package/src/utils.test.ts +0 -65
  320. package/src/utils.ts +0 -47
  321. package/src/ws-data.test.ts +0 -20
  322. package/src/ws-data.ts +0 -26
  323. package/tsconfig.json +0 -12
package/package.json CHANGED
@@ -1,32 +1,34 @@
1
1
  {
2
2
  "name": "@vibelet/cli",
3
- "version": "0.1.38",
4
- "private": false,
3
+ "version": "1.0.1",
4
+ "description": "macOS CLI for installing and running the Vibelet daemon",
5
+ "homepage": "https://vibelet.icu",
6
+ "files": [
7
+ "bin/vibelet.cjs",
8
+ "bin/cloudflared-resolver.mjs",
9
+ "bin/cloudflared-quick-tunnel.mjs",
10
+ "bin/vibelet.mjs",
11
+ "bin/vibelet-runtime-policy.mjs",
12
+ "dist/index.cjs",
13
+ "README.md",
14
+ "package.json"
15
+ ],
5
16
  "bin": {
6
17
  "vibelet": "bin/vibelet.cjs"
7
18
  },
8
- "type": "module",
9
- "scripts": {
10
- "dev": "node ./scripts/dev.mjs",
11
- "build": "tsc",
12
- "build:release": "node ./scripts/build-release.mjs",
13
- "start": "node ../../dist/index.cjs",
14
- "test": "VIBE_TEST=1 tsx --test 'src/**/!(*.perf).test.ts'",
15
- "test:e2e": "VIBE_TEST=1 tsx --test src/e2e.test.ts",
16
- "test:perf": "VIBE_TEST=1 tsx --test 'src/**/*.perf.test.ts'",
17
- "test:perf:baseline": "VIBE_TEST=1 tsx --test --test-reporter=./perf-reporter.mjs --test-reporter-destination=perf-baseline.json --test-reporter=spec --test-reporter-destination=stdout 'src/**/*.perf.test.ts'",
18
- "test:perf:compare": "VIBE_TEST=1 tsx src/perf-compare.ts",
19
- "test:all": "VIBE_TEST=1 tsx --test 'src/**/*.test.ts'"
19
+ "os": [
20
+ "darwin",
21
+ "linux",
22
+ "win32"
23
+ ],
24
+ "engines": {
25
+ "node": ">=18"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
20
29
  },
21
30
  "dependencies": {
22
- "ws": "^8.18.0",
31
+ "cloudflared": "0.7.1",
23
32
  "qrcode": "^1.5.4"
24
- },
25
- "devDependencies": {
26
- "@types/qrcode": "^1.5.5",
27
- "@types/ws": "^8.5.0",
28
- "esbuild": "^0.25.1",
29
- "typescript": "^5.7.0",
30
- "tsx": "^4.19.0"
31
33
  }
32
34
  }
package/app.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "ios": {
3
- "bundleIdentifier": "com.anonymous.-vibeletdaemon"
4
- }
5
- }
@@ -1,34 +0,0 @@
1
- import { execFileSync } from 'child_process';
2
- import type { NetworkInterfaceInfo } from 'os';
3
- export interface AdvertisedHostsOptions {
4
- canonicalHost: string;
5
- configuredCanonicalHost?: string;
6
- configuredFallbackHosts?: string[];
7
- tailscaleCanonicalHost?: string;
8
- tailscaleFallbackHosts?: string[];
9
- interfaces: NodeJS.Dict<NetworkInterfaceInfo[]>;
10
- }
11
- export interface TailscaleHosts {
12
- canonicalHost?: string;
13
- fallbackHosts: string[];
14
- }
15
- export interface AdvertisedConnectionTargetOptions {
16
- canonicalHost: string;
17
- fallbackHosts?: string[];
18
- port: number;
19
- relayUrl?: string;
20
- }
21
- export interface AdvertisedConnectionTarget {
22
- canonicalHost: string;
23
- fallbackHosts: string[];
24
- port: number;
25
- }
26
- export declare function readConfiguredFallbackHosts(rawValue: string | undefined): string[];
27
- export declare function parseTailscaleStatus(rawStatus: string): TailscaleHosts;
28
- export declare function readTailscaleHosts(runCommand?: typeof execFileSync): TailscaleHosts;
29
- export declare function computeAdvertisedConnectionTarget(options: AdvertisedConnectionTargetOptions): AdvertisedConnectionTarget;
30
- export declare function computeAdvertisedHosts(options: AdvertisedHostsOptions): {
31
- canonicalHost: string;
32
- fallbackHosts: string[];
33
- };
34
- //# sourceMappingURL=advertised-hosts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advertised-hosts.d.ts","sourceRoot":"","sources":["../src/advertised-hosts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;CACjD;AASD,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAiDD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAMlF;AAsBD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAiBtE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,GAAE,OAAO,YAA2B,GAAG,cAAc,CA6BjG;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,iCAAiC,GACzC,0BAA0B,CAmC5B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAuB1H"}
@@ -1,176 +0,0 @@
1
- import { execFileSync } from 'child_process';
2
- function isIpv4(address) {
3
- const parts = address.split('.');
4
- if (parts.length !== 4)
5
- return false;
6
- return parts.every((part) => /^\d+$/.test(part) && Number(part) >= 0 && Number(part) <= 255);
7
- }
8
- function isTailscaleIpv4(address) {
9
- if (!isIpv4(address))
10
- return false;
11
- const [first, second] = address.split('.').map(Number);
12
- return first === 100 && second >= 64 && second <= 127;
13
- }
14
- function isLinkLocalIpv4(address) {
15
- if (!isIpv4(address))
16
- return false;
17
- const [first, second] = address.split('.').map(Number);
18
- return first === 169 && second === 254;
19
- }
20
- function isBenchmarkIpv4(address) {
21
- if (!isIpv4(address))
22
- return false;
23
- const [first, second] = address.split('.').map(Number);
24
- return first === 198 && (second === 18 || second === 19);
25
- }
26
- function isUsableHost(address) {
27
- return Boolean(address)
28
- && !isLinkLocalIpv4(address)
29
- && !isBenchmarkIpv4(address);
30
- }
31
- function normalizeHost(host) {
32
- if (!host)
33
- return undefined;
34
- const trimmed = host.trim().replace(/\.$/, '');
35
- return trimmed ? trimmed.toLowerCase() : undefined;
36
- }
37
- function normalizeFallbackHosts(hosts, canonicalHost) {
38
- return (hosts ?? [])
39
- .map((host) => normalizeHost(host))
40
- .filter((host) => Boolean(host))
41
- .filter((host) => isUsableHost(host))
42
- .filter((host, index, all) => host !== canonicalHost && all.indexOf(host) === index);
43
- }
44
- export function readConfiguredFallbackHosts(rawValue) {
45
- if (!rawValue)
46
- return [];
47
- return rawValue
48
- .split(',')
49
- .map((entry) => entry.trim())
50
- .filter(Boolean);
51
- }
52
- function collectInterfaceHosts(interfaces) {
53
- const tailscaleHosts = [];
54
- const lanHosts = [];
55
- for (const entries of Object.values(interfaces)) {
56
- if (!entries)
57
- continue;
58
- for (const entry of entries) {
59
- if (entry.internal || entry.family !== 'IPv4')
60
- continue;
61
- if (!isUsableHost(entry.address))
62
- continue;
63
- if (isTailscaleIpv4(entry.address)) {
64
- tailscaleHosts.push(entry.address);
65
- }
66
- else {
67
- lanHosts.push(entry.address);
68
- }
69
- }
70
- }
71
- return [...tailscaleHosts, ...lanHosts];
72
- }
73
- export function parseTailscaleStatus(rawStatus) {
74
- const parsed = JSON.parse(rawStatus);
75
- const dnsName = normalizeHost(parsed.Self?.DNSName);
76
- const tailscaleIps = (parsed.Self?.TailscaleIPs ?? [])
77
- .map((host) => normalizeHost(host))
78
- .filter((host) => Boolean(host))
79
- .filter((host) => isTailscaleIpv4(host) && isUsableHost(host));
80
- const canonicalHost = tailscaleIps[0] ?? dnsName;
81
- const fallbackHosts = [
82
- ...(dnsName && dnsName !== canonicalHost ? [dnsName] : []),
83
- ...tailscaleIps.filter((host) => host !== canonicalHost),
84
- ];
85
- return {
86
- canonicalHost,
87
- fallbackHosts,
88
- };
89
- }
90
- export function readTailscaleHosts(runCommand = execFileSync) {
91
- const socketPaths = [
92
- process.env.TAILSCALE_SOCKET,
93
- '/tmp/tailscale.sock',
94
- ].filter(Boolean);
95
- // Try with custom socket paths first
96
- for (const socket of socketPaths) {
97
- try {
98
- const rawStatus = runCommand('tailscale', ['--socket', socket, 'status', '--json'], {
99
- encoding: 'utf8',
100
- stdio: ['ignore', 'pipe', 'pipe'],
101
- timeout: 1500,
102
- });
103
- return parseTailscaleStatus(rawStatus);
104
- }
105
- catch { /* try next */ }
106
- }
107
- // Fallback to default socket
108
- try {
109
- const rawStatus = runCommand('tailscale', ['status', '--json'], {
110
- encoding: 'utf8',
111
- stdio: ['ignore', 'pipe', 'pipe'],
112
- timeout: 1500,
113
- });
114
- return parseTailscaleStatus(rawStatus);
115
- }
116
- catch {
117
- return { fallbackHosts: [] };
118
- }
119
- }
120
- export function computeAdvertisedConnectionTarget(options) {
121
- const baseCanonicalHost = normalizeHost(options.canonicalHost) || 'localhost';
122
- const baseFallbackHosts = normalizeFallbackHosts(options.fallbackHosts, baseCanonicalHost);
123
- if (!options.relayUrl) {
124
- return {
125
- canonicalHost: baseCanonicalHost,
126
- fallbackHosts: baseFallbackHosts,
127
- port: options.port,
128
- };
129
- }
130
- try {
131
- const relay = new URL(options.relayUrl);
132
- const relayCanonicalHost = normalizeHost(relay.hostname);
133
- if (!relayCanonicalHost) {
134
- throw new Error('invalid relay hostname');
135
- }
136
- const relayPort = relay.port
137
- ? Number(relay.port)
138
- : (relay.protocol === 'https:' ? 443 : 80);
139
- return {
140
- canonicalHost: relayCanonicalHost,
141
- fallbackHosts: normalizeFallbackHosts([baseCanonicalHost, ...baseFallbackHosts], relayCanonicalHost),
142
- port: Number.isFinite(relayPort) && relayPort > 0 ? Math.floor(relayPort) : options.port,
143
- };
144
- }
145
- catch {
146
- return {
147
- canonicalHost: baseCanonicalHost,
148
- fallbackHosts: baseFallbackHosts,
149
- port: options.port,
150
- };
151
- }
152
- }
153
- export function computeAdvertisedHosts(options) {
154
- const baseCanonicalHost = normalizeHost(options.canonicalHost);
155
- const canonicalHost = normalizeHost(options.configuredCanonicalHost)
156
- || normalizeHost(options.tailscaleCanonicalHost)
157
- || baseCanonicalHost
158
- || 'localhost';
159
- const fallbackHosts = [
160
- ...(baseCanonicalHost && baseCanonicalHost !== canonicalHost
161
- ? [baseCanonicalHost]
162
- : []),
163
- ...(options.configuredFallbackHosts ?? []),
164
- ...(options.tailscaleFallbackHosts ?? []),
165
- ...collectInterfaceHosts(options.interfaces),
166
- ]
167
- .map((host) => normalizeHost(host))
168
- .filter((host) => Boolean(host))
169
- .filter((host) => isUsableHost(host))
170
- .filter((host, index, all) => host !== canonicalHost && all.indexOf(host) === index);
171
- return {
172
- canonicalHost,
173
- fallbackHosts,
174
- };
175
- }
176
- //# sourceMappingURL=advertised-hosts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advertised-hosts.js","sourceRoot":"","sources":["../src/advertised-hosts.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=advertised-hosts.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advertised-hosts.test.d.ts","sourceRoot":"","sources":["../src/advertised-hosts.test.ts"],"names":[],"mappings":""}
@@ -1,96 +0,0 @@
1
- import test from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { computeAdvertisedConnectionTarget, computeAdvertisedHosts, parseTailscaleStatus, readConfiguredFallbackHosts, readTailscaleHosts, } from './advertised-hosts.js';
4
- function ipv4(address) {
5
- return {
6
- address,
7
- netmask: '255.255.255.0',
8
- family: 'IPv4',
9
- mac: '00:00:00:00:00:00',
10
- internal: false,
11
- cidr: `${address}/24`,
12
- };
13
- }
14
- test('computeAdvertisedHosts prefers configured canonical host and prioritizes Tailscale IPs', () => {
15
- const advertised = computeAdvertisedHosts({
16
- canonicalHost: 'desk-mac.local',
17
- configuredCanonicalHost: 'desk.tailnet.ts.net',
18
- configuredFallbackHosts: ['100.88.1.9'],
19
- tailscaleCanonicalHost: '100.77.2.3',
20
- tailscaleFallbackHosts: ['desk.ts.net'],
21
- interfaces: {
22
- en0: [ipv4('192.168.31.20')],
23
- utun8: [ipv4('100.77.2.3')],
24
- },
25
- });
26
- assert.equal(advertised.canonicalHost, 'desk.tailnet.ts.net');
27
- assert.deepStrictEqual(advertised.fallbackHosts, ['desk-mac.local', '100.88.1.9', 'desk.ts.net', '100.77.2.3', '192.168.31.20']);
28
- });
29
- test('computeAdvertisedHosts removes duplicates and excludes the canonical host', () => {
30
- const advertised = computeAdvertisedHosts({
31
- canonicalHost: '100.77.2.3',
32
- configuredFallbackHosts: ['100.77.2.3', '192.168.31.20', '192.168.31.20'],
33
- interfaces: {
34
- utun8: [ipv4('100.77.2.3')],
35
- en0: [ipv4('192.168.31.20')],
36
- },
37
- });
38
- assert.equal(advertised.canonicalHost, '100.77.2.3');
39
- assert.deepStrictEqual(advertised.fallbackHosts, ['192.168.31.20']);
40
- });
41
- test('computeAdvertisedHosts filters out link-local and benchmark addresses', () => {
42
- const advertised = computeAdvertisedHosts({
43
- canonicalHost: 'desk-mac.local',
44
- interfaces: {
45
- en0: [ipv4('192.168.31.20'), ipv4('169.254.12.2')],
46
- utun4: [ipv4('198.19.0.1')],
47
- },
48
- });
49
- assert.equal(advertised.canonicalHost, 'desk-mac.local');
50
- assert.deepStrictEqual(advertised.fallbackHosts, ['192.168.31.20']);
51
- });
52
- test('parseTailscaleStatus prefers the first Tailscale IP and keeps MagicDNS as fallback', () => {
53
- const advertised = parseTailscaleStatus(JSON.stringify({
54
- Self: {
55
- DNSName: 'desk.tailnet.ts.net.',
56
- TailscaleIPs: ['100.88.1.9', '100.99.2.4'],
57
- },
58
- }));
59
- assert.deepStrictEqual(advertised, {
60
- canonicalHost: '100.88.1.9',
61
- fallbackHosts: ['desk.tailnet.ts.net', '100.99.2.4'],
62
- });
63
- });
64
- test('readTailscaleHosts returns empty data when tailscale is unavailable', () => {
65
- const advertised = readTailscaleHosts(() => {
66
- throw new Error('tailscale unavailable');
67
- });
68
- assert.deepStrictEqual(advertised, { fallbackHosts: [] });
69
- });
70
- test('readConfiguredFallbackHosts parses comma separated env values', () => {
71
- assert.deepStrictEqual(readConfiguredFallbackHosts(' 100.77.2.3, desk.tailnet.ts.net , 192.168.31.20 '), ['100.77.2.3', 'desk.tailnet.ts.net', '192.168.31.20']);
72
- });
73
- test('computeAdvertisedConnectionTarget keeps the base host and port without a relay', () => {
74
- assert.deepStrictEqual(computeAdvertisedConnectionTarget({
75
- canonicalHost: 'desk-mac.local',
76
- fallbackHosts: ['100.88.1.9', '192.168.31.20'],
77
- port: 9876,
78
- }), {
79
- canonicalHost: 'desk-mac.local',
80
- fallbackHosts: ['100.88.1.9', '192.168.31.20'],
81
- port: 9876,
82
- });
83
- });
84
- test('computeAdvertisedConnectionTarget prefers the relay host and preserves local fallbacks', () => {
85
- assert.deepStrictEqual(computeAdvertisedConnectionTarget({
86
- canonicalHost: 'desk-mac.local',
87
- fallbackHosts: ['desk-mac.local', '100.88.1.9', '100.88.1.9', '192.168.31.20'],
88
- port: 9876,
89
- relayUrl: 'https://relay.example.com',
90
- }), {
91
- canonicalHost: 'relay.example.com',
92
- fallbackHosts: ['desk-mac.local', '100.88.1.9', '192.168.31.20'],
93
- port: 443,
94
- });
95
- });
96
- //# sourceMappingURL=advertised-hosts.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advertised-hosts.test.js","sourceRoot":"","sources":["../src/advertised-hosts.test.ts"],"names":[],"mappings":"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"}
package/dist/audit.d.ts DELETED
@@ -1,30 +0,0 @@
1
- /**
2
- * Size-bounded audit log for session lifecycle events.
3
- *
4
- * Writes JSONL to ~/.vibelet/data/audit.jsonl.
5
- * Each line is a self-contained event with timestamp, event type, and context.
6
- *
7
- * Usage:
8
- * import { audit } from './audit.js';
9
- * audit.emit('session.create', { sessionId, agent, cwd });
10
- * audit.emit('session.done', { sessionId, cost, usage });
11
- */
12
- export type AuditEvent = 'session.create' | 'session.resume' | 'session.reconnect' | 'session.send' | 'session.done' | 'session.interrupted' | 'session.stop' | 'session.delete' | 'session.interrupt' | 'driver.spawn' | 'driver.init' | 'driver.exit' | 'driver.error' | 'driver.idle_timeout' | 'driver.stall_timeout' | 'approval.request' | 'approval.response' | 'ws.connect' | 'ws.disconnect' | 'daemon.start' | 'daemon.shutdown' | 'daemon.error' | 'app.log';
13
- export type AuditSource = 'daemon' | 'app';
14
- interface AuditEntry {
15
- ts: string;
16
- event: AuditEvent | string;
17
- source?: AuditSource;
18
- [key: string]: unknown;
19
- }
20
- export declare function sanitizeAppAuditData(data?: Record<string, unknown>): Record<string, unknown>;
21
- export declare function buildAppAuditEntry(appEvent: string, level: string, data?: Record<string, unknown>, clientTs?: string): AuditEntry;
22
- declare class AuditLog {
23
- emit(event: AuditEvent, data?: Record<string, unknown>): void;
24
- /** Write an app-reported log entry. Preserves client-side timestamp if provided. */
25
- emitApp(appEvent: string, level: string, data?: Record<string, unknown>, clientTs?: string): void;
26
- private write;
27
- }
28
- export declare const audit: AuditLog;
29
- export {};
30
- //# sourceMappingURL=audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,aAAa,GACb,cAAc,GACd,qBAAqB,GACrB,sBAAsB,GACtB,kBAAkB,GAClB,mBAAmB,GACnB,YAAY,GACZ,eAAe,GACf,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3C,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AASD,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOhG;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,CASZ;AAQD,cAAM,QAAQ;IACZ,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAIjE,oFAAoF;IACpF,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrG,OAAO,CAAC,KAAK;CAcd;AAED,eAAO,MAAM,KAAK,UAAiB,CAAC"}
package/dist/audit.js DELETED
@@ -1,73 +0,0 @@
1
- /**
2
- * Size-bounded audit log for session lifecycle events.
3
- *
4
- * Writes JSONL to ~/.vibelet/data/audit.jsonl.
5
- * Each line is a self-contained event with timestamp, event type, and context.
6
- *
7
- * Usage:
8
- * import { audit } from './audit.js';
9
- * audit.emit('session.create', { sessionId, agent, cwd });
10
- * audit.emit('session.done', { sessionId, cost, usage });
11
- */
12
- import { appendFileSync, mkdirSync } from 'fs';
13
- import { dirname } from 'path';
14
- import { AUDIT_PATH } from './paths.js';
15
- import { config } from './config.js';
16
- import { trimFileTailSync } from './storage-housekeeping.js';
17
- let initialized = false;
18
- const APP_AUDIT_RESERVED_FIELDS = new Set(['ts', 'event', 'source', 'appEvent', 'level']);
19
- function isTestRuntime() {
20
- return process.env.VIBE_TEST === '1' || process.argv.includes('--test');
21
- }
22
- export function sanitizeAppAuditData(data = {}) {
23
- const sanitized = {};
24
- for (const [key, value] of Object.entries(data)) {
25
- if (APP_AUDIT_RESERVED_FIELDS.has(key))
26
- continue;
27
- sanitized[key] = value;
28
- }
29
- return sanitized;
30
- }
31
- export function buildAppAuditEntry(appEvent, level, data = {}, clientTs) {
32
- return {
33
- ts: clientTs ?? new Date().toISOString(),
34
- event: 'app.log',
35
- source: 'app',
36
- appEvent,
37
- level,
38
- ...sanitizeAppAuditData(data),
39
- };
40
- }
41
- function ensureDir() {
42
- if (initialized)
43
- return;
44
- mkdirSync(dirname(AUDIT_PATH), { recursive: true });
45
- initialized = true;
46
- }
47
- class AuditLog {
48
- emit(event, data = {}) {
49
- this.write({ ts: new Date().toISOString(), event, ...data });
50
- }
51
- /** Write an app-reported log entry. Preserves client-side timestamp if provided. */
52
- emitApp(appEvent, level, data = {}, clientTs) {
53
- this.write(buildAppAuditEntry(appEvent, level, data, clientTs));
54
- }
55
- write(entry) {
56
- if (isTestRuntime())
57
- return;
58
- ensureDir();
59
- try {
60
- const line = JSON.stringify(entry) + '\n';
61
- trimFileTailSync(AUDIT_PATH, {
62
- maxBytes: config.auditMaxBytes,
63
- incomingBytes: Buffer.byteLength(line),
64
- });
65
- appendFileSync(AUDIT_PATH, line);
66
- }
67
- catch {
68
- // Audit log is best-effort — never crash the daemon
69
- }
70
- }
71
- }
72
- export const audit = new AuditLog();
73
- //# sourceMappingURL=audit.js.map
package/dist/audit.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAoC7D,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1F,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgC,EAAE;IACrE,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACjD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,KAAa,EACb,OAAgC,EAAE,EAClC,QAAiB;IAEjB,OAAO;QACL,EAAE,EAAE,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,KAAoB;QAC5B,QAAQ;QACR,KAAK;QACL,GAAG,oBAAoB,CAAC,IAAI,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,WAAW;QAAE,OAAO;IACxB,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,QAAQ;IACZ,IAAI,CAAC,KAAiB,EAAE,OAAgC,EAAE;QACxD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,oFAAoF;IACpF,OAAO,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAgC,EAAE,EAAE,QAAiB;QAC5F,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,KAA8B;QAC1C,IAAI,aAAa,EAAE;YAAE,OAAO;QAC5B,SAAS,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAC1C,gBAAgB,CAAC,UAAU,EAAE;gBAC3B,QAAQ,EAAE,MAAM,CAAC,aAAa;gBAC9B,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aACvC,CAAC,CAAC;YACH,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=audit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.test.d.ts","sourceRoot":"","sources":["../src/audit.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import test from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { buildAppAuditEntry, sanitizeAppAuditData } from './audit.js';
4
- test('sanitizeAppAuditData strips reserved audit fields from client payloads', () => {
5
- assert.deepEqual(sanitizeAppAuditData({
6
- event: 'override',
7
- source: 'app',
8
- level: 'debug',
9
- appEvent: 'fake',
10
- ts: '2026-01-01T00:00:00.000Z',
11
- sessionId: 'session-123',
12
- agent: 'codex',
13
- }), {
14
- sessionId: 'session-123',
15
- agent: 'codex',
16
- });
17
- });
18
- test('buildAppAuditEntry preserves the audit envelope while keeping client data', () => {
19
- const entry = buildAppAuditEntry('app.session.send', 'info', {
20
- sessionId: 'session-123',
21
- event: 'override',
22
- level: 'debug',
23
- }, '2026-03-21T12:00:00.000Z');
24
- assert.deepEqual(entry, {
25
- ts: '2026-03-21T12:00:00.000Z',
26
- event: 'app.log',
27
- source: 'app',
28
- appEvent: 'app.session.send',
29
- level: 'info',
30
- sessionId: 'session-123',
31
- });
32
- });
33
- //# sourceMappingURL=audit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.test.js","sourceRoot":"","sources":["../src/audit.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEtE,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,CAAC,SAAS,CACd,oBAAoB,CAAC;QACnB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,MAAM;QAChB,EAAE,EAAE,0BAA0B;QAC9B,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE,OAAO;KACf,CAAC,EACF;QACE,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE,OAAO;KACf,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,MAAM,KAAK,GAAG,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE;QAC3D,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,OAAO;KACf,EAAE,0BAA0B,CAAC,CAAC;IAE/B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,kBAAkB;QAC5B,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/auth.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export declare function isLoopbackAddress(address: string | undefined): boolean;
2
- export declare function readBearerToken(header: string | undefined): string | null;
3
- export declare function resolveRequestToken(authHeader: string | undefined, queryToken: string | null): string | null;
4
- export declare function isLegacyToken(token: string | null, legacyToken: string): boolean;
5
- export declare function isAuthorizedToken(token: string | null, legacyToken: string, validatePairToken: (token: string, touch?: boolean) => unknown, touch?: boolean): boolean;
6
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKtE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIzE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE5G;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEhF;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,EAC9D,KAAK,UAAO,GACX,OAAO,CAIT"}
package/dist/auth.js DELETED
@@ -1,27 +0,0 @@
1
- export function isLoopbackAddress(address) {
2
- if (!address)
3
- return false;
4
- return address === '127.0.0.1'
5
- || address === '::1'
6
- || address === '::ffff:127.0.0.1';
7
- }
8
- export function readBearerToken(header) {
9
- if (!header)
10
- return null;
11
- const match = header.match(/^Bearer\s+(.+)$/i);
12
- return match?.[1]?.trim() || null;
13
- }
14
- export function resolveRequestToken(authHeader, queryToken) {
15
- return readBearerToken(authHeader) ?? queryToken;
16
- }
17
- export function isLegacyToken(token, legacyToken) {
18
- return Boolean(token && legacyToken && token === legacyToken);
19
- }
20
- export function isAuthorizedToken(token, legacyToken, validatePairToken, touch = true) {
21
- if (!token)
22
- return false;
23
- if (isLegacyToken(token, legacyToken))
24
- return true;
25
- return Boolean(validatePairToken(token, touch));
26
- }
27
- //# sourceMappingURL=auth.js.map
package/dist/auth.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,OAAO,KAAK,WAAW;WACzB,OAAO,KAAK,KAAK;WACjB,OAAO,KAAK,kBAAkB,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC/C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAA8B,EAAE,UAAyB;IAC3F,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAoB,EAAE,WAAmB;IACrE,OAAO,OAAO,CAAC,KAAK,IAAI,WAAW,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAoB,EACpB,WAAmB,EACnB,iBAA8D,EAC9D,KAAK,GAAG,IAAI;IAEZ,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC"}