@vess-id/vess 0.0.0-dev-20260902121045

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 (321) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +215 -0
  3. package/bin/vess.js +2 -0
  4. package/dist/__mocks__/@napi-rs/keyring.d.ts +9 -0
  5. package/dist/__mocks__/@napi-rs/keyring.d.ts.map +1 -0
  6. package/dist/__mocks__/@napi-rs/keyring.js +33 -0
  7. package/dist/__mocks__/@napi-rs/keyring.js.map +1 -0
  8. package/dist/__mocks__/node-mac-auth.d.ts +8 -0
  9. package/dist/__mocks__/node-mac-auth.d.ts.map +1 -0
  10. package/dist/__mocks__/node-mac-auth.js +29 -0
  11. package/dist/__mocks__/node-mac-auth.js.map +1 -0
  12. package/dist/adapter/mcp/http-transport.d.ts +40 -0
  13. package/dist/adapter/mcp/http-transport.d.ts.map +1 -0
  14. package/dist/adapter/mcp/http-transport.js +228 -0
  15. package/dist/adapter/mcp/http-transport.js.map +1 -0
  16. package/dist/adapter/mcp/mcp-adapter.d.ts +43 -0
  17. package/dist/adapter/mcp/mcp-adapter.d.ts.map +1 -0
  18. package/dist/adapter/mcp/mcp-adapter.js +65 -0
  19. package/dist/adapter/mcp/mcp-adapter.js.map +1 -0
  20. package/dist/adapter/mcp/mcp-server.factory.d.ts +44 -0
  21. package/dist/adapter/mcp/mcp-server.factory.d.ts.map +1 -0
  22. package/dist/adapter/mcp/mcp-server.factory.js +311 -0
  23. package/dist/adapter/mcp/mcp-server.factory.js.map +1 -0
  24. package/dist/adapter/mcp/stdio-transport.d.ts +7 -0
  25. package/dist/adapter/mcp/stdio-transport.d.ts.map +1 -0
  26. package/dist/adapter/mcp/stdio-transport.js +13 -0
  27. package/dist/adapter/mcp/stdio-transport.js.map +1 -0
  28. package/dist/adapter/mcp/transport.d.ts +10 -0
  29. package/dist/adapter/mcp/transport.d.ts.map +1 -0
  30. package/dist/adapter/mcp/transport.js +14 -0
  31. package/dist/adapter/mcp/transport.js.map +1 -0
  32. package/dist/approval/approval-token.d.ts +23 -0
  33. package/dist/approval/approval-token.d.ts.map +1 -0
  34. package/dist/approval/approval-token.js +81 -0
  35. package/dist/approval/approval-token.js.map +1 -0
  36. package/dist/audit/audit-dto-mapper.d.ts +29 -0
  37. package/dist/audit/audit-dto-mapper.d.ts.map +1 -0
  38. package/dist/audit/audit-dto-mapper.js +61 -0
  39. package/dist/audit/audit-dto-mapper.js.map +1 -0
  40. package/dist/audit/audit-logger.d.ts +35 -0
  41. package/dist/audit/audit-logger.d.ts.map +1 -0
  42. package/dist/audit/audit-logger.js +67 -0
  43. package/dist/audit/audit-logger.js.map +1 -0
  44. package/dist/audit/audit-sync.d.ts +12 -0
  45. package/dist/audit/audit-sync.d.ts.map +1 -0
  46. package/dist/audit/audit-sync.js +65 -0
  47. package/dist/audit/audit-sync.js.map +1 -0
  48. package/dist/auth/user-authenticator.d.ts +51 -0
  49. package/dist/auth/user-authenticator.d.ts.map +1 -0
  50. package/dist/auth/user-authenticator.js +155 -0
  51. package/dist/auth/user-authenticator.js.map +1 -0
  52. package/dist/bootstrap/sdk-precheck.d.ts +9 -0
  53. package/dist/bootstrap/sdk-precheck.d.ts.map +1 -0
  54. package/dist/bootstrap/sdk-precheck.js +103 -0
  55. package/dist/bootstrap/sdk-precheck.js.map +1 -0
  56. package/dist/cli/claude-config-path.d.ts +17 -0
  57. package/dist/cli/claude-config-path.d.ts.map +1 -0
  58. package/dist/cli/claude-config-path.js +59 -0
  59. package/dist/cli/claude-config-path.js.map +1 -0
  60. package/dist/cli/cli-db.d.ts +12 -0
  61. package/dist/cli/cli-db.d.ts.map +1 -0
  62. package/dist/cli/cli-db.js +20 -0
  63. package/dist/cli/cli-db.js.map +1 -0
  64. package/dist/cli/cli-utils.d.ts +14 -0
  65. package/dist/cli/cli-utils.d.ts.map +1 -0
  66. package/dist/cli/cli-utils.js +57 -0
  67. package/dist/cli/cli-utils.js.map +1 -0
  68. package/dist/cli/daemon-utils.d.ts +30 -0
  69. package/dist/cli/daemon-utils.d.ts.map +1 -0
  70. package/dist/cli/daemon-utils.js +131 -0
  71. package/dist/cli/daemon-utils.js.map +1 -0
  72. package/dist/cli/daemon.d.ts +13 -0
  73. package/dist/cli/daemon.d.ts.map +1 -0
  74. package/dist/cli/daemon.js +207 -0
  75. package/dist/cli/daemon.js.map +1 -0
  76. package/dist/cli/doctor.d.ts +6 -0
  77. package/dist/cli/doctor.d.ts.map +1 -0
  78. package/dist/cli/doctor.js +136 -0
  79. package/dist/cli/doctor.js.map +1 -0
  80. package/dist/cli/env-delete.d.ts +6 -0
  81. package/dist/cli/env-delete.d.ts.map +1 -0
  82. package/dist/cli/env-delete.js +80 -0
  83. package/dist/cli/env-delete.js.map +1 -0
  84. package/dist/cli/env-list.d.ts +5 -0
  85. package/dist/cli/env-list.d.ts.map +1 -0
  86. package/dist/cli/env-list.js +42 -0
  87. package/dist/cli/env-list.js.map +1 -0
  88. package/dist/cli/env-post-integration.d.ts +21 -0
  89. package/dist/cli/env-post-integration.d.ts.map +1 -0
  90. package/dist/cli/env-post-integration.js +300 -0
  91. package/dist/cli/env-post-integration.js.map +1 -0
  92. package/dist/cli/env-restore.d.ts +15 -0
  93. package/dist/cli/env-restore.d.ts.map +1 -0
  94. package/dist/cli/env-restore.js +130 -0
  95. package/dist/cli/env-restore.js.map +1 -0
  96. package/dist/cli/env.d.ts +14 -0
  97. package/dist/cli/env.d.ts.map +1 -0
  98. package/dist/cli/env.js +182 -0
  99. package/dist/cli/env.js.map +1 -0
  100. package/dist/cli/error-handlers.d.ts +13 -0
  101. package/dist/cli/error-handlers.d.ts.map +1 -0
  102. package/dist/cli/error-handlers.js +32 -0
  103. package/dist/cli/error-handlers.js.map +1 -0
  104. package/dist/cli/hook-check-env.d.ts +12 -0
  105. package/dist/cli/hook-check-env.d.ts.map +1 -0
  106. package/dist/cli/hook-check-env.js +117 -0
  107. package/dist/cli/hook-check-env.js.map +1 -0
  108. package/dist/cli/hook-session-project.d.ts +10 -0
  109. package/dist/cli/hook-session-project.d.ts.map +1 -0
  110. package/dist/cli/hook-session-project.js +206 -0
  111. package/dist/cli/hook-session-project.js.map +1 -0
  112. package/dist/cli/index.d.ts +2 -0
  113. package/dist/cli/index.d.ts.map +1 -0
  114. package/dist/cli/index.js +361 -0
  115. package/dist/cli/index.js.map +1 -0
  116. package/dist/cli/init-guard.d.ts +13 -0
  117. package/dist/cli/init-guard.d.ts.map +1 -0
  118. package/dist/cli/init-guard.js +62 -0
  119. package/dist/cli/init-guard.js.map +1 -0
  120. package/dist/cli/init.d.ts +19 -0
  121. package/dist/cli/init.d.ts.map +1 -0
  122. package/dist/cli/init.js +440 -0
  123. package/dist/cli/init.js.map +1 -0
  124. package/dist/cli/install.d.ts +14 -0
  125. package/dist/cli/install.d.ts.map +1 -0
  126. package/dist/cli/install.js +183 -0
  127. package/dist/cli/install.js.map +1 -0
  128. package/dist/cli/login.d.ts +6 -0
  129. package/dist/cli/login.d.ts.map +1 -0
  130. package/dist/cli/login.js +76 -0
  131. package/dist/cli/login.js.map +1 -0
  132. package/dist/cli/logs.d.ts +32 -0
  133. package/dist/cli/logs.d.ts.map +1 -0
  134. package/dist/cli/logs.js +147 -0
  135. package/dist/cli/logs.js.map +1 -0
  136. package/dist/cli/otel-headers.d.ts +12 -0
  137. package/dist/cli/otel-headers.d.ts.map +1 -0
  138. package/dist/cli/otel-headers.js +38 -0
  139. package/dist/cli/otel-headers.js.map +1 -0
  140. package/dist/cli/project.d.ts +8 -0
  141. package/dist/cli/project.d.ts.map +1 -0
  142. package/dist/cli/project.js +102 -0
  143. package/dist/cli/project.js.map +1 -0
  144. package/dist/cli/reset.d.ts +8 -0
  145. package/dist/cli/reset.d.ts.map +1 -0
  146. package/dist/cli/reset.js +137 -0
  147. package/dist/cli/reset.js.map +1 -0
  148. package/dist/cli/run.d.ts +22 -0
  149. package/dist/cli/run.d.ts.map +1 -0
  150. package/dist/cli/run.js +103 -0
  151. package/dist/cli/run.js.map +1 -0
  152. package/dist/cli/start.d.ts +2 -0
  153. package/dist/cli/start.d.ts.map +1 -0
  154. package/dist/cli/start.js +29 -0
  155. package/dist/cli/start.js.map +1 -0
  156. package/dist/cli/status.d.ts +12 -0
  157. package/dist/cli/status.d.ts.map +1 -0
  158. package/dist/cli/status.js +131 -0
  159. package/dist/cli/status.js.map +1 -0
  160. package/dist/cli/telemetry-setup.d.ts +27 -0
  161. package/dist/cli/telemetry-setup.d.ts.map +1 -0
  162. package/dist/cli/telemetry-setup.js +157 -0
  163. package/dist/cli/telemetry-setup.js.map +1 -0
  164. package/dist/cli/uninstall.d.ts +8 -0
  165. package/dist/cli/uninstall.d.ts.map +1 -0
  166. package/dist/cli/uninstall.js +110 -0
  167. package/dist/cli/uninstall.js.map +1 -0
  168. package/dist/cli/version.d.ts +2 -0
  169. package/dist/cli/version.d.ts.map +1 -0
  170. package/dist/cli/version.js +10 -0
  171. package/dist/cli/version.js.map +1 -0
  172. package/dist/config/config.d.ts +10 -0
  173. package/dist/config/config.d.ts.map +1 -0
  174. package/dist/config/config.js +64 -0
  175. package/dist/config/config.js.map +1 -0
  176. package/dist/config/constants.d.ts +11 -0
  177. package/dist/config/constants.d.ts.map +1 -0
  178. package/dist/config/constants.js +14 -0
  179. package/dist/config/constants.js.map +1 -0
  180. package/dist/config/paths.d.ts +9 -0
  181. package/dist/config/paths.d.ts.map +1 -0
  182. package/dist/config/paths.js +58 -0
  183. package/dist/config/paths.js.map +1 -0
  184. package/dist/config/version.d.ts +3 -0
  185. package/dist/config/version.d.ts.map +1 -0
  186. package/dist/config/version.js +80 -0
  187. package/dist/config/version.js.map +1 -0
  188. package/dist/core/execution-engine.d.ts +289 -0
  189. package/dist/core/execution-engine.d.ts.map +1 -0
  190. package/dist/core/execution-engine.js +1931 -0
  191. package/dist/core/execution-engine.js.map +1 -0
  192. package/dist/core/runtime.d.ts +43 -0
  193. package/dist/core/runtime.d.ts.map +1 -0
  194. package/dist/core/runtime.js +147 -0
  195. package/dist/core/runtime.js.map +1 -0
  196. package/dist/core/sync-scheduler.d.ts +42 -0
  197. package/dist/core/sync-scheduler.d.ts.map +1 -0
  198. package/dist/core/sync-scheduler.js +131 -0
  199. package/dist/core/sync-scheduler.js.map +1 -0
  200. package/dist/core/types.d.ts +106 -0
  201. package/dist/core/types.d.ts.map +1 -0
  202. package/dist/core/types.js +7 -0
  203. package/dist/core/types.js.map +1 -0
  204. package/dist/daemon/service-manager.d.ts +68 -0
  205. package/dist/daemon/service-manager.d.ts.map +1 -0
  206. package/dist/daemon/service-manager.js +303 -0
  207. package/dist/daemon/service-manager.js.map +1 -0
  208. package/dist/env/env-classifier.d.ts +14 -0
  209. package/dist/env/env-classifier.d.ts.map +1 -0
  210. package/dist/env/env-classifier.js +94 -0
  211. package/dist/env/env-classifier.js.map +1 -0
  212. package/dist/env/env-parser.d.ts +13 -0
  213. package/dist/env/env-parser.d.ts.map +1 -0
  214. package/dist/env/env-parser.js +33 -0
  215. package/dist/env/env-parser.js.map +1 -0
  216. package/dist/env/env-profile-store.d.ts +15 -0
  217. package/dist/env/env-profile-store.d.ts.map +1 -0
  218. package/dist/env/env-profile-store.js +35 -0
  219. package/dist/env/env-profile-store.js.map +1 -0
  220. package/dist/env/env-reference.d.ts +10 -0
  221. package/dist/env/env-reference.d.ts.map +1 -0
  222. package/dist/env/env-reference.js +33 -0
  223. package/dist/env/env-reference.js.map +1 -0
  224. package/dist/env/env-resolver.d.ts +18 -0
  225. package/dist/env/env-resolver.d.ts.map +1 -0
  226. package/dist/env/env-resolver.js +48 -0
  227. package/dist/env/env-resolver.js.map +1 -0
  228. package/dist/env/fs-utils.d.ts +9 -0
  229. package/dist/env/fs-utils.d.ts.map +1 -0
  230. package/dist/env/fs-utils.js +59 -0
  231. package/dist/env/fs-utils.js.map +1 -0
  232. package/dist/env/secret-backend.d.ts +15 -0
  233. package/dist/env/secret-backend.d.ts.map +1 -0
  234. package/dist/env/secret-backend.js +24 -0
  235. package/dist/env/secret-backend.js.map +1 -0
  236. package/dist/executor/executor-registry.d.ts +22 -0
  237. package/dist/executor/executor-registry.d.ts.map +1 -0
  238. package/dist/executor/executor-registry.js +42 -0
  239. package/dist/executor/executor-registry.js.map +1 -0
  240. package/dist/executor/process-launcher.d.ts +26 -0
  241. package/dist/executor/process-launcher.d.ts.map +1 -0
  242. package/dist/executor/process-launcher.js +98 -0
  243. package/dist/executor/process-launcher.js.map +1 -0
  244. package/dist/executor/secret-file.d.ts +28 -0
  245. package/dist/executor/secret-file.d.ts.map +1 -0
  246. package/dist/executor/secret-file.js +127 -0
  247. package/dist/executor/secret-file.js.map +1 -0
  248. package/dist/gateway/auth.d.ts +26 -0
  249. package/dist/gateway/auth.d.ts.map +1 -0
  250. package/dist/gateway/auth.js +66 -0
  251. package/dist/gateway/auth.js.map +1 -0
  252. package/dist/gateway/gateway-client.d.ts +363 -0
  253. package/dist/gateway/gateway-client.d.ts.map +1 -0
  254. package/dist/gateway/gateway-client.js +611 -0
  255. package/dist/gateway/gateway-client.js.map +1 -0
  256. package/dist/identity/agent-identity.d.ts +29 -0
  257. package/dist/identity/agent-identity.d.ts.map +1 -0
  258. package/dist/identity/agent-identity.js +54 -0
  259. package/dist/identity/agent-identity.js.map +1 -0
  260. package/dist/identity/did-manager.d.ts +17 -0
  261. package/dist/identity/did-manager.d.ts.map +1 -0
  262. package/dist/identity/did-manager.js +29 -0
  263. package/dist/identity/did-manager.js.map +1 -0
  264. package/dist/identity/key-manager.d.ts +21 -0
  265. package/dist/identity/key-manager.d.ts.map +1 -0
  266. package/dist/identity/key-manager.js +126 -0
  267. package/dist/identity/key-manager.js.map +1 -0
  268. package/dist/identity/session-key.d.ts +13 -0
  269. package/dist/identity/session-key.d.ts.map +1 -0
  270. package/dist/identity/session-key.js +17 -0
  271. package/dist/identity/session-key.js.map +1 -0
  272. package/dist/policy/policy-evaluator.d.ts +63 -0
  273. package/dist/policy/policy-evaluator.d.ts.map +1 -0
  274. package/dist/policy/policy-evaluator.js +266 -0
  275. package/dist/policy/policy-evaluator.js.map +1 -0
  276. package/dist/policy/policy-loader.d.ts +10 -0
  277. package/dist/policy/policy-loader.d.ts.map +1 -0
  278. package/dist/policy/policy-loader.js +71 -0
  279. package/dist/policy/policy-loader.js.map +1 -0
  280. package/dist/policy/types.d.ts +21 -0
  281. package/dist/policy/types.d.ts.map +1 -0
  282. package/dist/policy/types.js +3 -0
  283. package/dist/policy/types.js.map +1 -0
  284. package/dist/telemetry/claude-settings.d.ts +67 -0
  285. package/dist/telemetry/claude-settings.d.ts.map +1 -0
  286. package/dist/telemetry/claude-settings.js +191 -0
  287. package/dist/telemetry/claude-settings.js.map +1 -0
  288. package/dist/telemetry/otel-headers.d.ts +27 -0
  289. package/dist/telemetry/otel-headers.d.ts.map +1 -0
  290. package/dist/telemetry/otel-headers.js +33 -0
  291. package/dist/telemetry/otel-headers.js.map +1 -0
  292. package/dist/telemetry/project-key.d.ts +12 -0
  293. package/dist/telemetry/project-key.d.ts.map +1 -0
  294. package/dist/telemetry/project-key.js +113 -0
  295. package/dist/telemetry/project-key.js.map +1 -0
  296. package/dist/utils/credential-errors.d.ts +73 -0
  297. package/dist/utils/credential-errors.d.ts.map +1 -0
  298. package/dist/utils/credential-errors.js +90 -0
  299. package/dist/utils/credential-errors.js.map +1 -0
  300. package/dist/utils/resource-canonicalizer.d.ts +19 -0
  301. package/dist/utils/resource-canonicalizer.d.ts.map +1 -0
  302. package/dist/utils/resource-canonicalizer.js +100 -0
  303. package/dist/utils/resource-canonicalizer.js.map +1 -0
  304. package/dist/utils/vc-utils.d.ts +23 -0
  305. package/dist/utils/vc-utils.d.ts.map +1 -0
  306. package/dist/utils/vc-utils.js +53 -0
  307. package/dist/utils/vc-utils.js.map +1 -0
  308. package/dist/wallet/sqlite.d.ts +4 -0
  309. package/dist/wallet/sqlite.d.ts.map +1 -0
  310. package/dist/wallet/sqlite.js +158 -0
  311. package/dist/wallet/sqlite.js.map +1 -0
  312. package/dist/wallet/vp-builder.d.ts +26 -0
  313. package/dist/wallet/vp-builder.d.ts.map +1 -0
  314. package/dist/wallet/vp-builder.js +55 -0
  315. package/dist/wallet/vp-builder.js.map +1 -0
  316. package/dist/wallet/wallet.d.ts +64 -0
  317. package/dist/wallet/wallet.d.ts.map +1 -0
  318. package/dist/wallet/wallet.js +179 -0
  319. package/dist/wallet/wallet.js.map +1 -0
  320. package/package.json +71 -0
  321. package/required-sdk-symbols.json +15 -0
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startHttpTransport = exports.connectStdioTransport = void 0;
4
+ /**
5
+ * Transport layer re-exports.
6
+ *
7
+ * - stdio: for single-client mode (used internally by MCP)
8
+ * - http: for multi-client daemon mode (vess daemon start)
9
+ */
10
+ var stdio_transport_1 = require("./stdio-transport");
11
+ Object.defineProperty(exports, "connectStdioTransport", { enumerable: true, get: function () { return stdio_transport_1.connectStdioTransport; } });
12
+ var http_transport_1 = require("./http-transport");
13
+ Object.defineProperty(exports, "startHttpTransport", { enumerable: true, get: function () { return http_transport_1.startHttpTransport; } });
14
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/adapter/mcp/transport.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,qDAAyD;AAAhD,wHAAA,qBAAqB,OAAA;AAC9B,mDAAqD;AAA5C,oHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,23 @@
1
+ interface GenerateParams {
2
+ action: string;
3
+ scope: string;
4
+ resource?: string;
5
+ context: 'new_approval' | 'reconfirmation';
6
+ }
7
+ interface VerifyResult {
8
+ valid: boolean;
9
+ nonce?: string;
10
+ context?: 'new_approval' | 'reconfirmation';
11
+ error?: string;
12
+ }
13
+ export declare class ApprovalTokenService {
14
+ private static readonly MAX_NONCES;
15
+ private readonly secret;
16
+ private readonly ttlSeconds;
17
+ private readonly usedNonces;
18
+ constructor(ttlSeconds?: number);
19
+ generate(params: GenerateParams): string;
20
+ verify(token: string, expectedAction: string, expectedResource?: string): VerifyResult;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=approval-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-token.d.ts","sourceRoot":"","sources":["../../src/approval/approval-token.ts"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,cAAc,GAAG,gBAAgB,CAAA;CAC3C;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAA;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAID,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAS;IAE3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;gBAE3C,UAAU,GAAE,MAA4B;IAKpD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAkBxC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,YAAY;CAyDvF"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApprovalTokenService = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const DEFAULT_TTL_SECONDS = 300;
6
+ class ApprovalTokenService {
7
+ static MAX_NONCES = 10_000;
8
+ secret;
9
+ ttlSeconds;
10
+ usedNonces = new Map();
11
+ constructor(ttlSeconds = DEFAULT_TTL_SECONDS) {
12
+ this.secret = (0, crypto_1.randomBytes)(32);
13
+ this.ttlSeconds = ttlSeconds;
14
+ }
15
+ generate(params) {
16
+ const now = Math.floor(Date.now() / 1000);
17
+ const payload = {
18
+ v: 1,
19
+ action: params.action,
20
+ scope: params.scope,
21
+ resource: params.resource,
22
+ nonce: (0, crypto_1.randomUUID)(),
23
+ iat: now,
24
+ exp: now + this.ttlSeconds,
25
+ ctx: params.context,
26
+ };
27
+ const payloadB64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
28
+ const signature = (0, crypto_1.createHmac)('sha256', this.secret).update(payloadB64).digest('base64url');
29
+ return `${payloadB64}.${signature}`;
30
+ }
31
+ verify(token, expectedAction, expectedResource) {
32
+ const now = Date.now();
33
+ for (const [nonce, expiry] of this.usedNonces) {
34
+ if (expiry < now)
35
+ this.usedNonces.delete(nonce);
36
+ }
37
+ const parts = token.split('.');
38
+ if (parts.length !== 2) {
39
+ return { valid: false, error: 'Malformed token: expected payload.signature' };
40
+ }
41
+ const [payloadB64, signatureB64] = parts;
42
+ const expectedSig = (0, crypto_1.createHmac)('sha256', this.secret).update(payloadB64).digest('base64url');
43
+ const expectedBuf = Buffer.from(expectedSig);
44
+ const actualBuf = Buffer.from(signatureB64);
45
+ if (expectedBuf.length !== actualBuf.length || !(0, crypto_1.timingSafeEqual)(expectedBuf, actualBuf)) {
46
+ return { valid: false, error: 'Invalid token signature' };
47
+ }
48
+ let payload;
49
+ try {
50
+ payload = JSON.parse(Buffer.from(payloadB64, 'base64url').toString());
51
+ }
52
+ catch {
53
+ return { valid: false, error: 'Invalid token payload' };
54
+ }
55
+ const nowSec = Math.floor(Date.now() / 1000);
56
+ if (payload.exp <= nowSec) {
57
+ return { valid: false, error: 'Token expired' };
58
+ }
59
+ if (payload.action !== expectedAction) {
60
+ return { valid: false, error: `Token action mismatch: expected ${expectedAction}, got ${payload.action}` };
61
+ }
62
+ // Check resource binding
63
+ if (expectedResource !== undefined && payload.resource !== expectedResource) {
64
+ return { valid: false, error: `Token resource mismatch: expected ${expectedResource}, got ${payload.resource}` };
65
+ }
66
+ if (this.usedNonces.has(payload.nonce)) {
67
+ return { valid: false, error: 'Token nonce already used (replay detected)' };
68
+ }
69
+ if (this.usedNonces.size >= ApprovalTokenService.MAX_NONCES) {
70
+ return { valid: false, error: 'Nonce store capacity exceeded — try again shortly' };
71
+ }
72
+ this.usedNonces.set(payload.nonce, payload.exp * 1000);
73
+ return {
74
+ valid: true,
75
+ nonce: payload.nonce,
76
+ context: payload.ctx,
77
+ };
78
+ }
79
+ }
80
+ exports.ApprovalTokenService = ApprovalTokenService;
81
+ //# sourceMappingURL=approval-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-token.js","sourceRoot":"","sources":["../../src/approval/approval-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { AuditEntry } from './audit-logger';
2
+ /**
3
+ * Event type constants matching API's AuditEventType enum.
4
+ * Defined locally to avoid cross-package dependency.
5
+ * @see packages/api/src/audit/entities/audit-event.entity.ts
6
+ */
7
+ export declare const AUDIT_EVENT_TYPE: {
8
+ readonly TOOL_INVOCATION: "tool_invocation";
9
+ readonly GATEWAY_EXECUTE: "gateway_execute";
10
+ };
11
+ /**
12
+ * Severity constants matching API's AuditEventSeverity enum.
13
+ */
14
+ export declare const AUDIT_SEVERITY: {
15
+ readonly LOW: "low";
16
+ readonly MEDIUM: "medium";
17
+ };
18
+ /**
19
+ * Transform agentd's AuditEntry into the API's CreateAuditEventDto format.
20
+ *
21
+ * Key mappings:
22
+ * - enforcementType/decisionSource → metadata (agentd-specific context)
23
+ * - agentDid → namespace (required by API DTO)
24
+ * - (derived) → eventType (TOOL_INVOCATION for agentd events)
25
+ */
26
+ export declare function auditEntryToApiDto(e: AuditEntry & {
27
+ id: string;
28
+ }): Record<string, unknown>;
29
+ //# sourceMappingURL=audit-dto-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-dto-mapper.d.ts","sourceRoot":"","sources":["../../src/audit/audit-dto-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;CAGnB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,cAAc;;;CAGjB,CAAA;AAEV;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkC1F"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AUDIT_SEVERITY = exports.AUDIT_EVENT_TYPE = void 0;
4
+ exports.auditEntryToApiDto = auditEntryToApiDto;
5
+ /**
6
+ * Event type constants matching API's AuditEventType enum.
7
+ * Defined locally to avoid cross-package dependency.
8
+ * @see packages/api/src/audit/entities/audit-event.entity.ts
9
+ */
10
+ exports.AUDIT_EVENT_TYPE = {
11
+ TOOL_INVOCATION: 'tool_invocation',
12
+ GATEWAY_EXECUTE: 'gateway_execute',
13
+ };
14
+ /**
15
+ * Severity constants matching API's AuditEventSeverity enum.
16
+ */
17
+ exports.AUDIT_SEVERITY = {
18
+ LOW: 'low',
19
+ MEDIUM: 'medium',
20
+ };
21
+ /**
22
+ * Transform agentd's AuditEntry into the API's CreateAuditEventDto format.
23
+ *
24
+ * Key mappings:
25
+ * - enforcementType/decisionSource → metadata (agentd-specific context)
26
+ * - agentDid → namespace (required by API DTO)
27
+ * - (derived) → eventType (TOOL_INVOCATION for agentd events)
28
+ */
29
+ function auditEntryToApiDto(e) {
30
+ if (!e.agentDid) {
31
+ console.warn(`[AuditSync] Audit event missing agentDid, using fallback namespace: action=${e.action}`);
32
+ }
33
+ return {
34
+ eventType: exports.AUDIT_EVENT_TYPE.TOOL_INVOCATION,
35
+ namespace: e.agentDid || e.rootDid || 'unknown',
36
+ action: e.action,
37
+ decision: e.decision,
38
+ severity: e.decision === 'deny' ? exports.AUDIT_SEVERITY.MEDIUM : exports.AUDIT_SEVERITY.LOW,
39
+ agentDid: e.agentDid,
40
+ ownerDid: e.rootDid,
41
+ projectId: e.projectId,
42
+ provider: e.provider,
43
+ executionType: e.executionType,
44
+ reason: e.decisionReason,
45
+ correlationId: e.id,
46
+ credentialIds: e.credentialId ? [e.credentialId] : undefined,
47
+ resource: e.normalizedResource || e.requestedResource,
48
+ resourceType: e.provider ? `${e.provider}:*` : undefined,
49
+ metadata: Object.fromEntries(Object.entries({
50
+ enforcementType: e.enforcementType,
51
+ decisionSource: e.decisionSource,
52
+ grantId: e.grantId,
53
+ approvalMode: e.approvalMode,
54
+ approvalNonce: e.approvalNonce,
55
+ resourceFingerprint: e.resourceFingerprint,
56
+ presenterDid: e.presenterDid,
57
+ ...(e.metadata || {}),
58
+ }).filter(([, v]) => v !== undefined)),
59
+ };
60
+ }
61
+ //# sourceMappingURL=audit-dto-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-dto-mapper.js","sourceRoot":"","sources":["../../src/audit/audit-dto-mapper.ts"],"names":[],"mappings":";;;AA4BA,gDAkCC;AA5DD;;;;GAIG;AACU,QAAA,gBAAgB,GAAG;IAC9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;CAC1B,CAAA;AAEV;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;CACR,CAAA;AAEV;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,CAA8B;IAC/D,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,OAAO;QACL,SAAS,EAAE,wBAAgB,CAAC,eAAe;QAC3C,SAAS,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS;QAC/C,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAc,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAc,CAAC,GAAG;QAC5E,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,MAAM,EAAE,CAAC,CAAC,cAAc;QACxB,aAAa,EAAE,CAAC,CAAC,EAAE;QACnB,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,QAAQ,EAAE,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,iBAAiB;QACrD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS;QACxD,QAAQ,EAAE,MAAM,CAAC,WAAW,CAC1B,MAAM,CAAC,OAAO,CAAC;YACb,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,aAAa,EAAE,CAAC,CAAC,aAAa;YAC9B,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;YAC1C,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;SACtB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACtC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,35 @@
1
+ import Database from 'better-sqlite3';
2
+ export interface AuditEntry {
3
+ id?: string;
4
+ timestamp?: number;
5
+ projectId?: string;
6
+ rootDid?: string;
7
+ agentDid?: string;
8
+ presenterDid?: string;
9
+ action: string;
10
+ provider?: string;
11
+ enforcementType?: 'local' | 'gateway_verified_local' | 'cached_verified_local' | 'gateway';
12
+ decisionSource?: 'local_policy' | 'org_policy' | 'cached_vc' | 'new_vc_from_quick_approve' | 'claimed_from_approval' | 'gateway_execution';
13
+ executionType: 'gateway' | 'local';
14
+ decision: 'allow' | 'deny';
15
+ decisionReason?: string;
16
+ requestedResource?: string;
17
+ normalizedResource?: string;
18
+ resourceFingerprint?: string;
19
+ grantId?: string;
20
+ credentialId?: string;
21
+ approvalMode?: 'one_time' | 'persistent';
22
+ approvalNonce?: string;
23
+ metadata?: Record<string, unknown>;
24
+ }
25
+ export declare class AuditLogger {
26
+ private readonly db;
27
+ constructor(db: Database.Database);
28
+ logEvent(entry: AuditEntry): string;
29
+ getPendingEvents(limit?: number): (AuditEntry & {
30
+ id: string;
31
+ })[];
32
+ markSynced(ids: string[]): void;
33
+ private rowToEntry;
34
+ }
35
+ //# sourceMappingURL=audit-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.d.ts","sourceRoot":"","sources":["../../src/audit/audit-logger.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAGrC,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,GAAG,wBAAwB,GAAG,uBAAuB,GAAG,SAAS,CAAA;IAC1F,cAAc,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,2BAA2B,GAAG,uBAAuB,GAAG,mBAAmB,CAAA;IAC1I,aAAa,EAAE,SAAS,GAAG,OAAO,CAAA;IAClC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;IACxC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAwCnC,gBAAgB,CAAC,KAAK,GAAE,MAAY,GAAG,CAAC,UAAU,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE;IAQtE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;IAW/B,OAAO,CAAC,UAAU;CAyBnB"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuditLogger = void 0;
4
+ const crypto_1 = require("crypto");
5
+ class AuditLogger {
6
+ db;
7
+ constructor(db) {
8
+ this.db = db;
9
+ }
10
+ logEvent(entry) {
11
+ const id = entry.id || (0, crypto_1.randomUUID)();
12
+ const timestamp = entry.timestamp || Date.now();
13
+ this.db.prepare(`
14
+ INSERT INTO audit_log (
15
+ id, timestamp, project_id, root_did, agent_did, presenter_did,
16
+ action, provider, enforcement_type, decision_source,
17
+ execution_type, decision, decision_reason,
18
+ requested_resource, normalized_resource, resource_fingerprint,
19
+ grant_id, credential_id, approval_mode, approval_nonce,
20
+ metadata, synced_at
21
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
22
+ `).run(id, timestamp, entry.projectId ?? null, entry.rootDid ?? null, entry.agentDid ?? null, entry.presenterDid ?? null, entry.action, entry.provider ?? null, entry.enforcementType ?? null, entry.decisionSource ?? null, entry.executionType, entry.decision, entry.decisionReason ?? null, entry.requestedResource ?? null, entry.normalizedResource ?? null, entry.resourceFingerprint ?? null, entry.grantId ?? null, entry.credentialId ?? null, entry.approvalMode ?? null, entry.approvalNonce ?? null, entry.metadata ? JSON.stringify(entry.metadata) : null, null // synced_at = NULL (not yet synced)
23
+ );
24
+ return id;
25
+ }
26
+ getPendingEvents(limit = 100) {
27
+ const rows = this.db.prepare('SELECT * FROM audit_log WHERE synced_at IS NULL ORDER BY timestamp ASC LIMIT ?').all(limit);
28
+ return rows.map(r => this.rowToEntry(r));
29
+ }
30
+ markSynced(ids) {
31
+ const now = Date.now();
32
+ const stmt = this.db.prepare('UPDATE audit_log SET synced_at = ? WHERE id = ?');
33
+ const transaction = this.db.transaction((eventIds) => {
34
+ for (const id of eventIds) {
35
+ stmt.run(now, id);
36
+ }
37
+ });
38
+ transaction(ids);
39
+ }
40
+ rowToEntry(row) {
41
+ return {
42
+ id: row.id,
43
+ timestamp: row.timestamp,
44
+ projectId: row.project_id ?? undefined,
45
+ rootDid: row.root_did ?? undefined,
46
+ agentDid: row.agent_did ?? undefined,
47
+ presenterDid: row.presenter_did ?? undefined,
48
+ action: row.action,
49
+ provider: row.provider ?? undefined,
50
+ enforcementType: row.enforcement_type ?? undefined,
51
+ decisionSource: row.decision_source ?? undefined,
52
+ executionType: row.execution_type,
53
+ decision: row.decision,
54
+ decisionReason: row.decision_reason ?? undefined,
55
+ requestedResource: row.requested_resource ?? undefined,
56
+ normalizedResource: row.normalized_resource ?? undefined,
57
+ resourceFingerprint: row.resource_fingerprint ?? undefined,
58
+ grantId: row.grant_id ?? undefined,
59
+ credentialId: row.credential_id ?? undefined,
60
+ approvalMode: row.approval_mode ?? undefined,
61
+ approvalNonce: row.approval_nonce ?? undefined,
62
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
63
+ };
64
+ }
65
+ }
66
+ exports.AuditLogger = AuditLogger;
67
+ //# sourceMappingURL=audit-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.js","sourceRoot":"","sources":["../../src/audit/audit-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { AuditLogger } from './audit-logger';
2
+ export declare class AuditSync {
3
+ private readonly auditLogger;
4
+ private readonly gatewayUrl;
5
+ private readonly sessionToken;
6
+ constructor(auditLogger: AuditLogger, gatewayUrl: string, sessionToken: string);
7
+ syncPendingEvents(batchSize?: number): Promise<{
8
+ synced: number;
9
+ failed: number;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=audit-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-sync.d.ts","sourceRoot":"","sources":["../../src/audit/audit-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAY5C,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM;IAGjC,iBAAiB,CAAC,SAAS,GAAE,MAAsC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CA+CxH"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuditSync = void 0;
4
+ const audit_dto_mapper_1 = require("./audit-dto-mapper");
5
+ /**
6
+ * Async batch sync of audit events to Gateway (spec §9.2).
7
+ *
8
+ * Transforms agentd's AuditEntry format into the API's CreateAuditEventDto
9
+ * format before sending.
10
+ */
11
+ /** Default batch size for audit sync */
12
+ const AUDIT_SYNC_DEFAULT_BATCH_SIZE = 100;
13
+ class AuditSync {
14
+ auditLogger;
15
+ gatewayUrl;
16
+ sessionToken;
17
+ constructor(auditLogger, gatewayUrl, sessionToken) {
18
+ this.auditLogger = auditLogger;
19
+ this.gatewayUrl = gatewayUrl;
20
+ this.sessionToken = sessionToken;
21
+ }
22
+ async syncPendingEvents(batchSize = AUDIT_SYNC_DEFAULT_BATCH_SIZE) {
23
+ const pending = this.auditLogger.getPendingEvents(batchSize);
24
+ if (pending.length === 0) {
25
+ return { synced: 0, failed: 0 };
26
+ }
27
+ // Filter out gateway-executed events — they are already recorded server-side
28
+ const gatewayEvents = pending.filter(e => e.executionType === 'gateway');
29
+ const localEvents = pending.filter(e => e.executionType !== 'gateway');
30
+ // Mark gateway events as synced immediately to prevent re-processing
31
+ if (gatewayEvents.length > 0) {
32
+ this.auditLogger.markSynced(gatewayEvents.map(e => e.id));
33
+ console.info(`[AuditSync] Skipped ${gatewayEvents.length} gateway-executed event(s) (already recorded server-side)`);
34
+ }
35
+ if (localEvents.length === 0) {
36
+ return { synced: 0, failed: 0 };
37
+ }
38
+ const events = localEvents.map(e => (0, audit_dto_mapper_1.auditEntryToApiDto)(e));
39
+ try {
40
+ const response = await fetch(`${this.gatewayUrl}/api/v1/audit/batch`, {
41
+ method: 'POST',
42
+ headers: {
43
+ 'Content-Type': 'application/json',
44
+ 'X-Device-Session-Token': this.sessionToken,
45
+ },
46
+ body: JSON.stringify({ events }),
47
+ signal: AbortSignal.timeout(10000),
48
+ });
49
+ if (!response.ok) {
50
+ const body = await response.text().catch(() => '');
51
+ console.warn(`[AuditSync] Audit sync failed: ${response.status} - ${body}`);
52
+ return { synced: 0, failed: localEvents.length };
53
+ }
54
+ const ids = localEvents.map(e => e.id);
55
+ this.auditLogger.markSynced(ids);
56
+ return { synced: localEvents.length, failed: 0 };
57
+ }
58
+ catch (err) {
59
+ console.warn(`[AuditSync] Audit sync network error: ${err instanceof Error ? err.message : String(err)}`);
60
+ return { synced: 0, failed: localEvents.length };
61
+ }
62
+ }
63
+ }
64
+ exports.AuditSync = AuditSync;
65
+ //# sourceMappingURL=audit-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-sync.js","sourceRoot":"","sources":["../../src/audit/audit-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { execFileSync as _execFileSync } from 'child_process';
2
+ /** @internal Test-only: override execFileSync for mocking */
3
+ export declare function _setExecFileSync(fn: typeof _execFileSync): void;
4
+ /** Platform-agnostic user-authentication contract. */
5
+ export interface UserAuthenticator {
6
+ /** Check if authentication is available on this platform */
7
+ isAvailable(): Promise<boolean>;
8
+ /** Request user authentication. Throws if denied or unavailable. */
9
+ authenticate(reason: string): Promise<void>;
10
+ }
11
+ export declare class AuthenticationDeniedError extends Error {
12
+ constructor(message?: string);
13
+ }
14
+ export declare class AuthenticationUnavailableError extends Error {
15
+ constructor(message?: string);
16
+ }
17
+ /**
18
+ * macOS authenticator with Touch ID → system password fallback.
19
+ *
20
+ * 1. If Touch ID hardware is available, uses node-mac-auth (biometric prompt)
21
+ * 2. If not (Mac mini, old MacBook, lid closed), falls back to osascript
22
+ * confirmation dialog (no admin privileges required)
23
+ *
24
+ * Security note (Phase 1): Both Touch ID and password dialog serve as UX
25
+ * gates — they prevent accidental secret exposure by requiring physical
26
+ * user presence. The authentication and Keychain read are separate
27
+ * operations. Phase 2 will merge these into a single native call using
28
+ * Security.framework's kSecAccessControlUserPresence for OS-level protection.
29
+ */
30
+ export declare class MacOSAuthenticator implements UserAuthenticator {
31
+ isAvailable(): Promise<boolean>;
32
+ authenticate(reason: string): Promise<void>;
33
+ private tryTouchId;
34
+ private promptSystemPassword;
35
+ }
36
+ /**
37
+ * Fallback authenticator for platforms without supported authentication.
38
+ * Always reports unavailable and throws on authenticate().
39
+ */
40
+ export declare class NoopAuthenticator implements UserAuthenticator {
41
+ isAvailable(): Promise<boolean>;
42
+ authenticate(_reason: string): Promise<void>;
43
+ }
44
+ /**
45
+ * Create a platform-appropriate authenticator.
46
+ * - macOS: Touch ID with system password fallback
47
+ * - Others: NoopAuthenticator (restore not available)
48
+ * @param platform - Override for testing (defaults to process.platform)
49
+ */
50
+ export declare function createAuthenticator(platform?: string): UserAuthenticator;
51
+ //# sourceMappingURL=user-authenticator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-authenticator.d.ts","sourceRoot":"","sources":["../../src/auth/user-authenticator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;AAK7D,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,aAAa,GAAG,IAAI,CAE/D;AAMD,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,oEAAoE;IACpE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAMD,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,SAAkC;CAItD;AAED,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,OAAO,SAA0D;CAI9E;AAMD;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IACpD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQnC,UAAU;IAWxB,OAAO,CAAC,oBAAoB;CAqB7B;AAMD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,iBAAiB;IACnD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnD;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAAyB,GAAG,iBAAiB,CAK1F"}