@centient/secrets 0.9.0 → 0.11.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 (152) hide show
  1. package/README.md +424 -8
  2. package/dist/audit/hmac-chain.d.ts +117 -0
  3. package/dist/audit/hmac-chain.d.ts.map +1 -0
  4. package/dist/audit/hmac-chain.js +811 -0
  5. package/dist/audit/hmac-chain.js.map +1 -0
  6. package/dist/audit/ocsf.d.ts +108 -0
  7. package/dist/audit/ocsf.d.ts.map +1 -0
  8. package/dist/audit/ocsf.js +204 -0
  9. package/dist/audit/ocsf.js.map +1 -0
  10. package/dist/cli/hidden-prompt.d.ts.map +1 -1
  11. package/dist/cli/hidden-prompt.js +55 -10
  12. package/dist/cli/hidden-prompt.js.map +1 -1
  13. package/dist/cli/messages.d.ts +40 -8
  14. package/dist/cli/messages.d.ts.map +1 -1
  15. package/dist/cli/messages.js +34 -8
  16. package/dist/cli/messages.js.map +1 -1
  17. package/dist/cli/secrets-cli.d.ts.map +1 -1
  18. package/dist/cli/secrets-cli.js +191 -32
  19. package/dist/cli/secrets-cli.js.map +1 -1
  20. package/dist/client.d.ts +26 -0
  21. package/dist/client.d.ts.map +1 -0
  22. package/dist/client.js +129 -0
  23. package/dist/client.js.map +1 -0
  24. package/dist/compatibility.d.ts +199 -0
  25. package/dist/compatibility.d.ts.map +1 -0
  26. package/dist/compatibility.js +419 -0
  27. package/dist/compatibility.js.map +1 -0
  28. package/dist/crypto/darwin-keychain.d.ts +394 -0
  29. package/dist/crypto/darwin-keychain.d.ts.map +1 -0
  30. package/dist/crypto/darwin-keychain.js +793 -0
  31. package/dist/crypto/darwin-keychain.js.map +1 -0
  32. package/dist/crypto/vault-common.d.ts +55 -12
  33. package/dist/crypto/vault-common.d.ts.map +1 -1
  34. package/dist/crypto/vault-common.js +74 -71
  35. package/dist/crypto/vault-common.js.map +1 -1
  36. package/dist/environment/EnvironmentManager.d.ts.map +1 -1
  37. package/dist/environment/EnvironmentManager.js +5 -10
  38. package/dist/environment/EnvironmentManager.js.map +1 -1
  39. package/dist/index.d.ts +37 -9
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +38 -6
  42. package/dist/index.js.map +1 -1
  43. package/dist/key-providers/keychain-provider.d.ts +30 -2
  44. package/dist/key-providers/keychain-provider.d.ts.map +1 -1
  45. package/dist/key-providers/keychain-provider.js +29 -5
  46. package/dist/key-providers/keychain-provider.js.map +1 -1
  47. package/dist/key-providers/onepassword-provider.d.ts +65 -5
  48. package/dist/key-providers/onepassword-provider.d.ts.map +1 -1
  49. package/dist/key-providers/onepassword-provider.js +159 -67
  50. package/dist/key-providers/onepassword-provider.js.map +1 -1
  51. package/dist/key-providers/op-cli.d.ts +78 -0
  52. package/dist/key-providers/op-cli.d.ts.map +1 -0
  53. package/dist/key-providers/op-cli.js +123 -0
  54. package/dist/key-providers/op-cli.js.map +1 -0
  55. package/dist/key-providers/passphrase-provider.d.ts +20 -0
  56. package/dist/key-providers/passphrase-provider.d.ts.map +1 -1
  57. package/dist/key-providers/passphrase-provider.js +49 -0
  58. package/dist/key-providers/passphrase-provider.js.map +1 -1
  59. package/dist/key-providers/probe.d.ts +46 -0
  60. package/dist/key-providers/probe.d.ts.map +1 -0
  61. package/dist/key-providers/probe.js +70 -0
  62. package/dist/key-providers/probe.js.map +1 -0
  63. package/dist/key-providers/types.d.ts +51 -1
  64. package/dist/key-providers/types.d.ts.map +1 -1
  65. package/dist/platform/agent-detect.d.ts +39 -3
  66. package/dist/platform/agent-detect.d.ts.map +1 -1
  67. package/dist/platform/agent-detect.js +55 -9
  68. package/dist/platform/agent-detect.js.map +1 -1
  69. package/dist/platform/session-context.d.ts +77 -0
  70. package/dist/platform/session-context.d.ts.map +1 -0
  71. package/dist/platform/session-context.js +83 -0
  72. package/dist/platform/session-context.js.map +1 -0
  73. package/dist/policies/audit-trail.d.ts +25 -0
  74. package/dist/policies/audit-trail.d.ts.map +1 -0
  75. package/dist/policies/audit-trail.js +31 -0
  76. package/dist/policies/audit-trail.js.map +1 -0
  77. package/dist/secret-state.d.ts +54 -0
  78. package/dist/secret-state.d.ts.map +1 -0
  79. package/dist/secret-state.js +2 -0
  80. package/dist/secret-state.js.map +1 -0
  81. package/dist/sinks/index.d.ts +9 -0
  82. package/dist/sinks/index.d.ts.map +1 -0
  83. package/dist/sinks/index.js +5 -0
  84. package/dist/sinks/index.js.map +1 -0
  85. package/dist/sinks/jsonl.d.ts +16 -0
  86. package/dist/sinks/jsonl.d.ts.map +1 -0
  87. package/dist/sinks/jsonl.js +51 -0
  88. package/dist/sinks/jsonl.js.map +1 -0
  89. package/dist/sinks/otel.d.ts +22 -0
  90. package/dist/sinks/otel.d.ts.map +1 -0
  91. package/dist/sinks/otel.js +155 -0
  92. package/dist/sinks/otel.js.map +1 -0
  93. package/dist/sinks/queue.d.ts +12 -0
  94. package/dist/sinks/queue.d.ts.map +1 -0
  95. package/dist/sinks/queue.js +89 -0
  96. package/dist/sinks/queue.js.map +1 -0
  97. package/dist/sinks/syslog.d.ts +17 -0
  98. package/dist/sinks/syslog.d.ts.map +1 -0
  99. package/dist/sinks/syslog.js +103 -0
  100. package/dist/sinks/syslog.js.map +1 -0
  101. package/dist/sinks/types.d.ts +27 -0
  102. package/dist/sinks/types.d.ts.map +1 -0
  103. package/dist/sinks/types.js +18 -0
  104. package/dist/sinks/types.js.map +1 -0
  105. package/dist/vault/policy.d.ts +64 -34
  106. package/dist/vault/policy.d.ts.map +1 -1
  107. package/dist/vault/policy.js +109 -67
  108. package/dist/vault/policy.js.map +1 -1
  109. package/dist/vault/session-vault-errors.d.ts +72 -4
  110. package/dist/vault/session-vault-errors.d.ts.map +1 -1
  111. package/dist/vault/session-vault-errors.js +95 -4
  112. package/dist/vault/session-vault-errors.js.map +1 -1
  113. package/dist/vault/session-vault.d.ts +145 -2
  114. package/dist/vault/session-vault.d.ts.map +1 -1
  115. package/dist/vault/session-vault.js +548 -72
  116. package/dist/vault/session-vault.js.map +1 -1
  117. package/dist/vault/sidecar.d.ts +9 -0
  118. package/dist/vault/sidecar.d.ts.map +1 -1
  119. package/dist/vault/sidecar.js +72 -3
  120. package/dist/vault/sidecar.js.map +1 -1
  121. package/dist/vault/types.d.ts +58 -10
  122. package/dist/vault/types.d.ts.map +1 -1
  123. package/dist/vault/types.js.map +1 -1
  124. package/dist/vault/vault-env.d.ts +43 -50
  125. package/dist/vault/vault-env.d.ts.map +1 -1
  126. package/dist/vault/vault-env.js +141 -62
  127. package/dist/vault/vault-env.js.map +1 -1
  128. package/dist/vault/vault-gpg.d.ts +6 -1
  129. package/dist/vault/vault-gpg.d.ts.map +1 -1
  130. package/dist/vault/vault-gpg.js +10 -8
  131. package/dist/vault/vault-gpg.js.map +1 -1
  132. package/dist/vault/vault-libsecret.d.ts +6 -1
  133. package/dist/vault/vault-libsecret.d.ts.map +1 -1
  134. package/dist/vault/vault-libsecret.js +16 -14
  135. package/dist/vault/vault-libsecret.js.map +1 -1
  136. package/dist/vault/vault-onepassword.d.ts +119 -0
  137. package/dist/vault/vault-onepassword.d.ts.map +1 -0
  138. package/dist/vault/vault-onepassword.js +271 -0
  139. package/dist/vault/vault-onepassword.js.map +1 -0
  140. package/dist/vault/vault-utils.d.ts +37 -3
  141. package/dist/vault/vault-utils.d.ts.map +1 -1
  142. package/dist/vault/vault-utils.js +65 -3
  143. package/dist/vault/vault-utils.js.map +1 -1
  144. package/dist/vault/vault-windows.d.ts +7 -2
  145. package/dist/vault/vault-windows.d.ts.map +1 -1
  146. package/dist/vault/vault-windows.js +21 -16
  147. package/dist/vault/vault-windows.js.map +1 -1
  148. package/dist/vault/vault.d.ts +120 -9
  149. package/dist/vault/vault.d.ts.map +1 -1
  150. package/dist/vault/vault.js +222 -139
  151. package/dist/vault/vault.js.map +1 -1
  152. package/package.json +8 -2
@@ -1,14 +1,40 @@
1
1
  /**
2
- * Auth Module - Centralized Message Strings
2
+ * Auth CLI message catalog the shared strings for the credential lifecycle a
3
+ * consuming CLI drives on top of this vault (`login`, `logout`, `auth status`,
4
+ * `auth refresh`, device flow, api-key entry).
3
5
  *
4
- * All user-visible strings for the auth module are defined here.
5
- * This module is i18n-ready: message values do not contain interpolated
6
- * strings template functions accept parameters and return formatted strings.
6
+ * Scope (#217 C6-34). The previous header claimed "all user-visible strings for
7
+ * the auth module", which was never true of this package — there is no auth
8
+ * module here, and only one entry had an in-package call site. The verified
9
+ * scope is:
10
+ *
11
+ * - IN — the auth/device-flow/token lifecycle listed above, driven by the
12
+ * consuming CLI, plus the one credential-storage warning this package
13
+ * itself emits: `warning.envVaultNoStorage`, from `EnvVault.store()` in
14
+ * `../vault/vault-env.ts`.
15
+ * - OUT — the `centient secrets …` operator CLI in `./secrets-cli.ts` and the
16
+ * `[secrets] …` vault diagnostics under `../vault/`. Those are
17
+ * command-specific and carry their own next-step lines; funnelling them
18
+ * through a flat catalog would drop that specificity, so they are
19
+ * deliberately not catalog entries.
20
+ *
21
+ * This catalog is part of the package's public surface — import it, do not copy
22
+ * it. It is exported precisely so a consuming CLI stops maintaining a fork:
23
+ * before #217, `centient` carried a byte-identical copy at
24
+ * `packages/centient/src/auth/messages.ts` that had already drifted on
25
+ * `warning.envVaultNoStorage` (the single entry this package consumes, and so
26
+ * the single entry that had been updated here).
27
+ *
28
+ * i18n-ready: no message value interpolates at the call site. Parameterized
29
+ * messages are template functions that take their parameters and return the
30
+ * finished string, so a translation layer can replace the catalog wholesale.
7
31
  *
8
32
  * Usage:
9
- * import { AUTH_MESSAGES } from './messages.js';
10
- * process.stderr.write(AUTH_MESSAGES.error.vaultWriteFailed + '\n');
11
- * process.stderr.write(AUTH_MESSAGES.info.loginPrompt('https://auth.example.com') + '\n');
33
+ * import { AUTH_MESSAGES } from "@centient/secrets";
34
+ * process.stderr.write(AUTH_MESSAGES.error.vaultWriteFailed + "\n");
35
+ * process.stderr.write(
36
+ * AUTH_MESSAGES.info.loginPrompt("https://auth.example.com") + "\n",
37
+ * );
12
38
  */
13
39
  // =============================================================================
14
40
  // Message catalog
@@ -45,7 +71,7 @@ export const AUTH_MESSAGES = {
45
71
  revokeNetworkFailure: "Could not reach server to revoke token — local credentials have been removed.",
46
72
  noCredentialsFound: "No stored credentials found. Run `centient login` to authenticate.",
47
73
  sessionExpiredIdle: "Session expired due to inactivity.",
48
- envVaultNoStorage: "No secure credential storage available. Install libsecret (Linux: apt install libsecret-tools) or GPG for persistent storage. Using ENGRAM_API_KEY environment variable only.",
74
+ envVaultNoStorage: "No secure credential storage available. Install libsecret (Linux: apt install libsecret-tools) or GPG for persistent storage. The environment fallback is read-only; set ENGRAM_API_KEY for auth-token or the key's CENTIENT_SECRET_* variable.",
49
75
  },
50
76
  info: {
51
77
  loginPrompt: (verificationUri) => `Visit the following URL to authorize this device:\n ${verificationUri}`,
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/cli/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE;QACP,QAAQ,EAAE,mDAAmD;QAC7D,SAAS,EAAE,+CAA+C;QAC1D,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE,+BAA+B;QAC/C,YAAY,EAAE,mCAAmC;QACjD,cAAc,EAAE,0BAA0B;KAC3C;IAED,KAAK,EAAE;QACL,gBAAgB,EAAE,uCAAuC;QACzD,eAAe,EAAE,wCAAwC;QACzD,iBAAiB,EAAE,0CAA0C;QAC7D,gBAAgB,EAAE,mCAAmC;QACrD,iBAAiB,EAAE,mDAAmD;QACtE,sBAAsB,EAAE,4CAA4C;QACpE,iBAAiB,EAAE,8CAA8C;QACjE,YAAY,EAAE,wDAAwD;QACtE,YAAY,EAAE,uBAAuB;QACrC,cAAc,EAAE,6CAA6C;QAC7D,YAAY,EAAE,sCAAsC;QACpD,aAAa,EAAE,0DAA0D;QACzE,YAAY,EAAE,sDAAsD;QACpE,mBAAmB,EAAE,CAAC,GAAW,EAAU,EAAE,CAC3C,4BAA4B,GAAG,qCAAqC;QACtE,uBAAuB,EACrB,sDAAsD;QACxD,iBAAiB,EAAE,CAAC,GAAW,EAAU,EAAE,CACzC,wBAAwB,GAAG,4CAA4C;KAC1E;IAED,OAAO,EAAE;QACP,iBAAiB,EAAE,CAAC,OAAe,EAAU,EAAE,CAC7C,yBAAyB,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,sCAAsC;QAC1G,oBAAoB,EAClB,+EAA+E;QACjF,kBAAkB,EAChB,oEAAoE;QACtE,kBAAkB,EAAE,oCAAoC;QACxD,iBAAiB,EACf,+KAA+K;KAClL;IAED,IAAI,EAAE;QACJ,WAAW,EAAE,CAAC,eAAuB,EAAU,EAAE,CAC/C,wDAAwD,eAAe,EAAE;QAC3E,eAAe,EAAE,CAAC,QAAgB,EAAU,EAAE,CAC5C,qCAAqC,QAAQ,EAAE;QACjD,WAAW,EAAE,CAAC,OAAe,EAAU,EAAE,CACvC,iCAAiC,OAAO,cAAc;QACxD,iBAAiB,EACf,+EAA+E;QACjF,uBAAuB,EAAE,CAAC,SAAiB,EAAU,EAAE,CACrD,mCAAmC,SAAS,GAAG;QACjD,yBAAyB,EAAE,0CAA0C;QACrE,sBAAsB,EAAE,CAAC,OAAe,EAAU,EAAE,CAClD,8BAA8B,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;QAC7E,SAAS,EAAE,CAAC,SAAiB,EAAU,EAAE,CAAC,UAAU,SAAS,EAAE;QAC/D,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,uCAAuC;KACvD;CACO,CAAC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/cli/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE;QACP,QAAQ,EAAE,mDAAmD;QAC7D,SAAS,EAAE,+CAA+C;QAC1D,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE,+BAA+B;QAC/C,YAAY,EAAE,mCAAmC;QACjD,cAAc,EAAE,0BAA0B;KAC3C;IAED,KAAK,EAAE;QACL,gBAAgB,EAAE,uCAAuC;QACzD,eAAe,EAAE,wCAAwC;QACzD,iBAAiB,EAAE,0CAA0C;QAC7D,gBAAgB,EAAE,mCAAmC;QACrD,iBAAiB,EAAE,mDAAmD;QACtE,sBAAsB,EAAE,4CAA4C;QACpE,iBAAiB,EAAE,8CAA8C;QACjE,YAAY,EAAE,wDAAwD;QACtE,YAAY,EAAE,uBAAuB;QACrC,cAAc,EAAE,6CAA6C;QAC7D,YAAY,EAAE,sCAAsC;QACpD,aAAa,EAAE,0DAA0D;QACzE,YAAY,EAAE,sDAAsD;QACpE,mBAAmB,EAAE,CAAC,GAAW,EAAU,EAAE,CAC3C,4BAA4B,GAAG,qCAAqC;QACtE,uBAAuB,EACrB,sDAAsD;QACxD,iBAAiB,EAAE,CAAC,GAAW,EAAU,EAAE,CACzC,wBAAwB,GAAG,4CAA4C;KAC1E;IAED,OAAO,EAAE;QACP,iBAAiB,EAAE,CAAC,OAAe,EAAU,EAAE,CAC7C,yBAAyB,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,sCAAsC;QAC1G,oBAAoB,EAClB,+EAA+E;QACjF,kBAAkB,EAChB,oEAAoE;QACtE,kBAAkB,EAAE,oCAAoC;QACxD,iBAAiB,EACf,iPAAiP;KACpP;IAED,IAAI,EAAE;QACJ,WAAW,EAAE,CAAC,eAAuB,EAAU,EAAE,CAC/C,wDAAwD,eAAe,EAAE;QAC3E,eAAe,EAAE,CAAC,QAAgB,EAAU,EAAE,CAC5C,qCAAqC,QAAQ,EAAE;QACjD,WAAW,EAAE,CAAC,OAAe,EAAU,EAAE,CACvC,iCAAiC,OAAO,cAAc;QACxD,iBAAiB,EACf,+EAA+E;QACjF,uBAAuB,EAAE,CAAC,SAAiB,EAAU,EAAE,CACrD,mCAAmC,SAAS,GAAG;QACjD,yBAAyB,EAAE,0CAA0C;QACrE,sBAAsB,EAAE,CAAC,OAAe,EAAU,EAAE,CAClD,8BAA8B,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;QAC7E,SAAS,EAAE,CAAC,SAAiB,EAAU,EAAE,CAAC,UAAU,SAAS,EAAE;QAC/D,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,uCAAuC;KACvD;CACO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"secrets-cli.d.ts","sourceRoot":"","sources":["../../src/cli/secrets-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAkBH,MAAM,WAAW,cAAc;IAC7B,OAAO,EACH,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,GACN,mBAAmB,GACnB,KAAK,GACL,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAwwBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDvE"}
1
+ {"version":3,"file":"secrets-cli.d.ts","sourceRoot":"","sources":["../../src/cli/secrets-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAkBH,MAAM,WAAW,cAAc;IAC7B,OAAO,EACH,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,GACN,mBAAmB,GACnB,KAAK,GACL,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAq7BD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDvE"}
@@ -43,25 +43,22 @@ import { existsSync, mkdirSync, realpathSync, writeFileSync, } from "node:fs";
43
43
  import { basename } from "node:path";
44
44
  import { createHash, randomBytes } from "node:crypto";
45
45
  // =============================================================================
46
- // Agent Detection (Local Implementation)
46
+ // Agent Detection
47
47
  // =============================================================================
48
48
  /**
49
- * Check if running in an AI agent environment.
50
- * If detected, refuse to run secrets commands.
49
+ * Agent detection lives in `platform/agent-detect.ts` one implementation, so
50
+ * the marker set cannot drift per call site (it did: #189). If it returns true,
51
+ * `runSecrets` refuses. Guardrail against accidental agent use of the operator
52
+ * CLI, not a security boundary — see `docs/threat-model.md` §4.4, ADR-005 §3.
51
53
  */
52
- function isAgentEnvironment() {
53
- return !!(process.env.CLAUDE_PROJECT_DIR ||
54
- process.env.MCP_CONTEXT ||
55
- process.env.CLAUDE_CODE_SESSION ||
56
- process.env.CLAUDE_CODE_ENTRY_POINT);
57
- }
54
+ import { isAgentEnvironment } from "../platform/agent-detect.js";
58
55
  // =============================================================================
59
56
  // Session vault integration
60
57
  // =============================================================================
61
58
  import { encryptObject } from "../crypto/vault-common.js";
62
59
  import { resolveKeyProvider, getProviderByType, loadConfig, saveSecretsConfig, } from "../key-providers/index.js";
63
60
  import { listCredentials, getActiveVaultType } from "../vault/vault.js";
64
- import { openVault, VAULT_SCHEMA_VERSION, VAULT_AAD_PREFIX, DEFAULT_SIDECAR_PATH, } from "../vault/session-vault.js";
61
+ import { openVault, rekeyVault, VAULT_SCHEMA_VERSION, VAULT_AAD_PREFIX, DEFAULT_SIDECAR_PATH, } from "../vault/session-vault.js";
65
62
  const VAULT_PATH = join(homedir(), ".centient", "secrets", "vault.enc");
66
63
  const KEY_LENGTH = 32;
67
64
  /** Preserve CLI's historical 4-hour auto-lock semantics. */
@@ -632,7 +629,15 @@ async function showStatus() {
632
629
  // =============================================================================
633
630
  /**
634
631
  * Migrate the vault key from the current provider to a different one.
635
- * The vault file itself is unchanged — only the key storage location moves.
632
+ *
633
+ * Two shapes, picked by what the target provider can actually do:
634
+ *
635
+ * - **Key move** (keychain, 1password): the same master key is copied into
636
+ * the target's storage and the vault file is untouched.
637
+ * - **Rekey** (passphrase): a `PassphraseProvider` derives its key from what
638
+ * the operator types and cannot store a caller-supplied one, so the vault
639
+ * is re-encrypted under the freshly derived key. This is the ADR-001
640
+ * Amendment 1 route — `setupKey()`, never `storeKey()` (issue #122).
636
641
  */
637
642
  async function migrateProvider(targetType) {
638
643
  if (!targetType) {
@@ -646,11 +651,6 @@ async function migrateProvider(targetType) {
646
651
  return;
647
652
  }
648
653
  const target = targetType;
649
- if (target === "passphrase") {
650
- console.error("❌ Migrating to passphrase is not supported by this provider-only step.");
651
- console.error(" It requires re-encrypting the vault under a derived key and will be handled in a follow-up.");
652
- return;
653
- }
654
654
  // Resolve current provider
655
655
  const currentResult = resolveKeyProvider({ vaultPath: VAULT_PATH });
656
656
  if (!currentResult.ok) {
@@ -668,6 +668,9 @@ async function migrateProvider(targetType) {
668
668
  const key = source.getKey();
669
669
  if (!key) {
670
670
  console.error(`❌ Failed to read key from ${source.name}`);
671
+ const sourceError = source.getLastError?.();
672
+ if (sourceError)
673
+ console.error(` ${sourceError.message}`);
671
674
  return;
672
675
  }
673
676
  // Create target provider
@@ -678,31 +681,187 @@ async function migrateProvider(targetType) {
678
681
  if (target === "1password") {
679
682
  console.error(" Install the 1Password CLI (`op`) and sign in or set OP_SERVICE_ACCOUNT_TOKEN.");
680
683
  }
684
+ if (target === "passphrase") {
685
+ console.error(" Migrating to passphrase needs an interactive terminal to type the passphrase into.");
686
+ }
687
+ key.fill(0);
681
688
  return;
682
689
  }
683
- // Store in target
684
- process.stdout.write(`Storing key in ${target}...\n`);
685
- if (!targetProvider.storeKey(key)) {
686
- console.error(`❌ Failed to store key in ${target}`);
690
+ if (target === "passphrase") {
691
+ await migrateToPassphrase(source.name, targetProvider, key, config);
687
692
  return;
688
693
  }
689
- // Verify round-trip
690
- process.stdout.write("Verifying...\n");
691
- const verify = targetProvider.getKey();
692
- if (!verify || !key.equals(verify)) {
693
- console.error("❌ Verification failed key read back from target does not match");
694
- return;
694
+ try {
695
+ // Store in target
696
+ process.stdout.write(`Storing key in ${target}...\n`);
697
+ if (!targetProvider.storeKey(key)) {
698
+ console.error(`❌ Failed to store key in ${target}`);
699
+ const targetError = targetProvider.getLastError?.();
700
+ if (targetError)
701
+ console.error(` ${targetError.message}`);
702
+ return;
703
+ }
704
+ // Verify round-trip
705
+ process.stdout.write("Verifying...\n");
706
+ const verify = targetProvider.getKey();
707
+ const verified = verify !== null && key.equals(verify);
708
+ verify?.fill(0);
709
+ if (!verified) {
710
+ console.error("❌ Verification failed — key read back from target does not match");
711
+ return;
712
+ }
713
+ // Update config
714
+ const secretsConfig = { ...config.secrets, provider: target };
715
+ if (!saveSecretsConfig(secretsConfig)) {
716
+ console.error("❌ Key migrated but failed to update ~/.centient/config.json");
717
+ console.error(` Manually set secrets.provider to "${target}" in the config file.`);
718
+ return;
719
+ }
695
720
  }
696
- // Update config
697
- const secretsConfig = { ...config.secrets, provider: target };
698
- if (!saveSecretsConfig(secretsConfig)) {
699
- console.error("❌ Key migrated but failed to update ~/.centient/config.json");
700
- console.error(` Manually set secrets.provider to "${target}" in the config file.`);
701
- return;
721
+ finally {
722
+ key.fill(0);
702
723
  }
703
724
  process.stdout.write(`\n✅ Migration complete. Provider set to "${target}".\n`);
704
725
  process.stdout.write(` The key in ${source.name} was not removed. You can delete it manually if desired.\n\n`);
705
726
  }
727
+ /**
728
+ * True for the one rekey failure that leaves the vault indeterminate — the
729
+ * commit failed AND the rollback write failed, so the file on disk may be
730
+ * either ciphertext (`VaultRestoreError`).
731
+ *
732
+ * Discriminates on the error's `code` rather than `instanceof` deliberately:
733
+ * the check has to survive module mocking, transpile boundaries, and any
734
+ * re-wrapping between here and the vault module, and a false negative here
735
+ * deletes key material the vault may depend on. `code` is the stable
736
+ * discriminator every `VaultError` carries.
737
+ */
738
+ function isVaultRestoreFailure(err) {
739
+ return (typeof err === "object" &&
740
+ err !== null &&
741
+ err.code === "VAULT_RESTORE_FAILED");
742
+ }
743
+ /**
744
+ * Rekey branch of {@link migrateProvider}: derive a new key from a passphrase
745
+ * and re-encrypt the vault under it.
746
+ *
747
+ * Ordering is the whole point. `setupKey()` writes the passphrase metadata and
748
+ * returns the derived key; `rekeyVault()` then swaps the ciphertext and only
749
+ * commits `secrets.provider` once the new ciphertext is on disk, rolling the
750
+ * ciphertext back if that config write fails. Any failure leaves the operator
751
+ * where they started — old provider, old ciphertext, no stale metadata — so
752
+ * there is no state in which the configured provider cannot open the vault.
753
+ *
754
+ * @param sourceName - Name of the provider the vault is moving away from.
755
+ * @param targetProvider - The constructed passphrase provider.
756
+ * @param key - The current master key. Zeroed before returning.
757
+ * @param config - Loaded config, used as the base for the provider write.
758
+ */
759
+ async function migrateToPassphrase(sourceName, targetProvider, key, config) {
760
+ let newKey = null;
761
+ try {
762
+ if (!existsSync(VAULT_PATH)) {
763
+ console.error(`❌ Vault not found at ${VAULT_PATH}. Run 'centient secrets init' first.`);
764
+ return;
765
+ }
766
+ if (!targetProvider.setupKey) {
767
+ console.error("❌ Passphrase provider cannot derive a key on this build (setupKey unavailable).");
768
+ return;
769
+ }
770
+ process.stdout.write("Deriving new vault key from passphrase...\n");
771
+ newKey = targetProvider.setupKey();
772
+ if (!newKey) {
773
+ const providerError = targetProvider.getLastError?.();
774
+ console.error("❌ Failed to derive a passphrase key — vault left unchanged.");
775
+ if (providerError)
776
+ console.error(` ${providerError.message}`);
777
+ return;
778
+ }
779
+ process.stdout.write("Re-encrypting vault under the new key...\n");
780
+ // `configWritten` is what makes the cleanup below safe. rekeyVault
781
+ // guarantees a throw means `commit` never succeeded, but the consequence of
782
+ // being wrong is unrecoverable — deleting the metadata after the vault is
783
+ // already encrypted under the derived key destroys the salt and bricks the
784
+ // vault. So gate the cleanup on what this callback actually observed rather
785
+ // than on the guarantee alone.
786
+ let configWritten = false;
787
+ let configWriteFailed = false;
788
+ let result;
789
+ try {
790
+ result = await rekeyVault({
791
+ path: VAULT_PATH,
792
+ currentKey: key,
793
+ nextKey: newKey,
794
+ commit: () => {
795
+ if (!saveSecretsConfig({ ...config.secrets, provider: "passphrase" })) {
796
+ configWriteFailed = true;
797
+ throw new Error("failed to write ~/.centient/config.json");
798
+ }
799
+ configWritten = true;
800
+ },
801
+ });
802
+ }
803
+ catch (err) {
804
+ const message = err instanceof Error ? err.message : String(err);
805
+ const restoreFailed = isVaultRestoreFailure(err);
806
+ if (restoreFailed) {
807
+ // Neither committed nor undone — the file on disk may be either
808
+ // ciphertext. Report it as its own outcome; never claim the vault was
809
+ // "left under the original key," because it may not have been.
810
+ console.error(`❌ Migration could not be completed OR undone: ${message}`);
811
+ }
812
+ else if (configWriteFailed) {
813
+ console.error("❌ Could not update ~/.centient/config.json — vault restored under the original key.");
814
+ }
815
+ else {
816
+ console.error(`❌ Re-encryption failed: ${message}`);
817
+ if (!configWritten) {
818
+ console.error(" The vault was left under the original key.");
819
+ }
820
+ }
821
+ if (restoreFailed) {
822
+ console.error("⚠️ The passphrase metadata has been KEPT — the vault may now be encrypted under the passphrase-derived key, and the metadata is what derives it.");
823
+ console.error(` Try 'centient secrets unlock' with the new passphrase first; if that fails, the vault is still under ${sourceName}.`);
824
+ console.error(` The provider config was ${configWritten ? "already updated to \"passphrase\"" : "left unchanged"}.`);
825
+ return;
826
+ }
827
+ if (configWritten) {
828
+ // The config commit already landed, so the vault is (or may be)
829
+ // encrypted under the passphrase-derived key. Deleting the metadata
830
+ // now would destroy the salt and leave the vault unopenable. Report
831
+ // the partial state instead and keep the metadata.
832
+ console.error("⚠️ The provider config was already updated to \"passphrase\" before this failure.");
833
+ console.error(" The passphrase metadata has been KEPT — it is what derives the vault key.");
834
+ console.error(` Verify with 'centient secrets status'; if the vault does not open, restore a backup of ${VAULT_PATH}.`);
835
+ return;
836
+ }
837
+ // Nothing committed: the passphrase metadata describes a key that opens
838
+ // nothing, so removing it keeps the on-disk state consistent.
839
+ if (!targetProvider.deleteKey()) {
840
+ const deleteError = targetProvider.getLastError?.();
841
+ console.error("⚠️ Failed to remove the passphrase metadata written during the attempt.");
842
+ if (deleteError)
843
+ console.error(` ${deleteError.message}`);
844
+ }
845
+ return;
846
+ }
847
+ process.stdout.write('\n✅ Migration complete. Provider set to "passphrase".\n');
848
+ process.stdout.write(` Vault re-encrypted under the passphrase-derived key ` +
849
+ `(${result.secretCount} secret${result.secretCount === 1 ? "" : "s"}, version ${result.vaultVersion}).\n`);
850
+ if (result.upgradedFromLegacy) {
851
+ process.stdout.write(" The legacy AAD-less vault shape was upgraded to schema 1 in the same step.\n");
852
+ }
853
+ if (!result.sidecarPublished) {
854
+ console.error("⚠️ The rollback-protection sidecar could not be updated (see the warning above).");
855
+ console.error(" The migration itself succeeded; the sidecar catches up on the next vault write.");
856
+ }
857
+ process.stdout.write(` The key in ${sourceName} no longer opens this vault; delete it manually if desired.\n`);
858
+ process.stdout.write(" Any process still holding this vault open under the old key must re-unlock.\n\n");
859
+ }
860
+ finally {
861
+ key.fill(0);
862
+ newKey?.fill(0);
863
+ }
864
+ }
706
865
  // =============================================================================
707
866
  // Main Handler
708
867
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"secrets-cli.js","sourceRoot":"","sources":["../../src/cli/secrets-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets-cli.js","sourceRoot":"","sources":["../../src/cli/secrets-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type PolicyRunner, type SecretsOperationContext, type SecretsPolicy } from "./vault/policy.js";
2
+ import type { SecretsProvider } from "./vault/types.js";
3
+ export interface CreateSecretsClientOptions {
4
+ /** Credential-value storage provider used by this client only. */
5
+ readonly provider: SecretsProvider;
6
+ /** Policy membership is snapshotted at construction for this client. */
7
+ readonly policies?: readonly SecretsPolicy[];
8
+ /** Honest event identity when a legacy provider has no `name`. */
9
+ readonly providerName?: string;
10
+ }
11
+ export interface SecretsClient {
12
+ readonly providerName: string;
13
+ storeCredential(key: string, value: string, context?: SecretsOperationContext): Promise<boolean>;
14
+ getCredential(key: string, context?: SecretsOperationContext): Promise<string | null>;
15
+ deleteCredential(key: string, context?: SecretsOperationContext): Promise<boolean>;
16
+ listCredentials(prefix?: string, context?: SecretsOperationContext): Promise<string[]>;
17
+ isSessionValid(): boolean;
18
+ }
19
+ type InternalSecretsClientOptions = Omit<CreateSecretsClientOptions, "policies"> & {
20
+ readonly policyRunner: PolicyRunner;
21
+ };
22
+ export declare function createSecretsClient(options: CreateSecretsClientOptions): SecretsClient;
23
+ /** @internal Legacy default-client construction seam. */
24
+ export declare function createSecretsClientWithPolicyRunner(options: InternalSecretsClientOptions): SecretsClient;
25
+ export {};
26
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAKjB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,kEAAkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,eAAe,CACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,aAAa,CACX,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1B,gBAAgB,CACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,eAAe,CACb,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrB,cAAc,IAAI,OAAO,CAAC;CAC3B;AAED,KAAK,4BAA4B,GAAG,IAAI,CACtC,0BAA0B,EAC1B,UAAU,CACX,GAAG;IACF,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACrC,CAAC;AAoNF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAMf;AAED,yDAAyD;AACzD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,4BAA4B,GACpC,aAAa,CAMf"}
package/dist/client.js ADDED
@@ -0,0 +1,129 @@
1
+ import { createPolicyRunner, rejectedEventType, } from "./vault/policy.js";
2
+ import { isValidKey, isValidKeyPrefix } from "./vault/vault-utils.js";
3
+ import { InvalidCredentialKeyError } from "./vault/session-vault-errors.js";
4
+ const SESSION_TTL_MS = 4 * 60 * 60 * 1000;
5
+ const PROVIDER_FAILURE_ERROR = "provider operation failed";
6
+ function operationStart() {
7
+ return {
8
+ timestamp: new Date().toISOString(),
9
+ monotonicMs: performance.now(),
10
+ };
11
+ }
12
+ function operationWithContext(fields, context) {
13
+ const caller = context?.caller;
14
+ return Object.freeze({
15
+ ...fields,
16
+ ...(caller
17
+ ? {
18
+ caller: Object.freeze({
19
+ id: caller.id,
20
+ ...(caller.kind !== undefined ? { kind: caller.kind } : {}),
21
+ }),
22
+ }
23
+ : {}),
24
+ });
25
+ }
26
+ class SecretsClientImpl {
27
+ provider;
28
+ policies;
29
+ providerName;
30
+ lastAccessAt = null;
31
+ constructor(provider, policies, providerName) {
32
+ this.provider = provider;
33
+ this.policies = policies;
34
+ const candidate = providerName ?? provider.name;
35
+ this.providerName = candidate?.trim() || "unknown";
36
+ }
37
+ isSessionValid() {
38
+ return (this.lastAccessAt !== null &&
39
+ Date.now() - this.lastAccessAt < SESSION_TTL_MS);
40
+ }
41
+ async storeCredential(key, value, context) {
42
+ const operation = operationWithContext({ type: "write", key }, context);
43
+ this.assertValidOperation(operation);
44
+ return this.execute(operation, "credential_write_failed", () => this.provider.store(key, value), (success) => success ? "credential_written" : "credential_write_failed", (success) => {
45
+ if (success)
46
+ this.lastAccessAt = Date.now();
47
+ });
48
+ }
49
+ async getCredential(key, context) {
50
+ const operation = operationWithContext({ type: "read", key }, context);
51
+ this.assertValidOperation(operation);
52
+ return this.execute(operation, "credential_read_failed", () => this.provider.retrieve(key), (value) => value === null ? "credential_read_missing" : "credential_read", (value) => {
53
+ if (value !== null)
54
+ this.lastAccessAt = Date.now();
55
+ });
56
+ }
57
+ async deleteCredential(key, context) {
58
+ const operation = operationWithContext({ type: "delete", key }, context);
59
+ this.assertValidOperation(operation);
60
+ return this.execute(operation, "credential_delete_failed", () => this.provider.delete(key), (success) => success ? "credential_deleted" : "credential_delete_failed");
61
+ }
62
+ async listCredentials(prefix, context) {
63
+ const operation = operationWithContext({ type: "enumerate", ...(prefix !== undefined ? { prefix } : {}) }, context);
64
+ this.assertValidOperation(operation);
65
+ return this.execute(operation, "credential_enumerate_failed", () => this.provider.listKeys(prefix), () => "credential_enumerated", (keys) => {
66
+ if (keys.length > 0)
67
+ this.lastAccessAt = Date.now();
68
+ }, (keys) => ({ keyCount: keys.length }));
69
+ }
70
+ assertValidOperation(operation) {
71
+ let error;
72
+ if (operation.type === "enumerate") {
73
+ if (operation.prefix !== undefined &&
74
+ !isValidKeyPrefix(operation.prefix)) {
75
+ error = new InvalidCredentialKeyError(operation.prefix, "enumerate", "prefix");
76
+ }
77
+ }
78
+ else if (operation.key !== undefined && !isValidKey(operation.key)) {
79
+ error = new InvalidCredentialKeyError(operation.key, operation.type, "key");
80
+ }
81
+ if (!error)
82
+ return;
83
+ const start = operationStart();
84
+ this.policies.runAfter(this.makeEvent(operation, rejectedEventType(operation), start, { error: error.message }));
85
+ throw error;
86
+ }
87
+ async execute(operation, failedType, invoke, successType, onSuccess, extras) {
88
+ const start = operationStart();
89
+ let frame;
90
+ frame = await this.policies.runBefore(operation, (error) => this.makeEvent(operation, rejectedEventType(operation), start, { error }));
91
+ let value;
92
+ try {
93
+ value = await invoke();
94
+ }
95
+ catch (error) {
96
+ this.policies.runAfter(this.makeEvent(operation, failedType, start, {
97
+ // Providers receive credential values on writes and may include one
98
+ // in a thrown message. Preserve the original error for the caller,
99
+ // but never forward provider-controlled text into an audit event.
100
+ error: PROVIDER_FAILURE_ERROR,
101
+ }), frame);
102
+ throw error;
103
+ }
104
+ onSuccess?.(value);
105
+ this.policies.runAfter(this.makeEvent(operation, successType(value), start, extras?.(value)), frame);
106
+ return value;
107
+ }
108
+ makeEvent(operation, type, start, extras = {}) {
109
+ return {
110
+ type,
111
+ // OCSF `time` is the operation start, not completion time.
112
+ timestamp: start.timestamp,
113
+ backend: this.providerName,
114
+ operation,
115
+ ...(operation.key !== undefined ? { key: operation.key } : {}),
116
+ ...(operation.prefix !== undefined ? { prefix: operation.prefix } : {}),
117
+ ...extras,
118
+ durationMs: performance.now() - start.monotonicMs,
119
+ };
120
+ }
121
+ }
122
+ export function createSecretsClient(options) {
123
+ return new SecretsClientImpl(options.provider, createPolicyRunner(options.policies ?? []), options.providerName);
124
+ }
125
+ /** @internal Legacy default-client construction seam. */
126
+ export function createSecretsClientWithPolicyRunner(options) {
127
+ return new SecretsClientImpl(options.provider, options.policyRunner, options.providerName);
128
+ }
129
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}