@agentteams/cli 0.1.83 → 0.1.85

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 (120) hide show
  1. package/.eslintcache +1 -1
  2. package/dist/api/plan.d.ts +2 -0
  3. package/dist/api/plan.d.ts.map +1 -1
  4. package/dist/api/plan.js.map +1 -1
  5. package/dist/auth/activeCredential.d.ts +22 -0
  6. package/dist/auth/activeCredential.d.ts.map +1 -0
  7. package/dist/auth/activeCredential.js +25 -0
  8. package/dist/auth/activeCredential.js.map +1 -0
  9. package/dist/auth/credentialStore.d.ts +118 -0
  10. package/dist/auth/credentialStore.d.ts.map +1 -0
  11. package/dist/auth/credentialStore.js +340 -0
  12. package/dist/auth/credentialStore.js.map +1 -0
  13. package/dist/auth/personalTokenClient.d.ts +189 -0
  14. package/dist/auth/personalTokenClient.d.ts.map +1 -0
  15. package/dist/auth/personalTokenClient.js +379 -0
  16. package/dist/auth/personalTokenClient.js.map +1 -0
  17. package/dist/auth/personalTokenStore.d.ts +17 -0
  18. package/dist/auth/personalTokenStore.d.ts.map +1 -0
  19. package/dist/auth/personalTokenStore.js +27 -0
  20. package/dist/auth/personalTokenStore.js.map +1 -0
  21. package/dist/auth/refreshLock.d.ts +74 -0
  22. package/dist/auth/refreshLock.d.ts.map +1 -0
  23. package/dist/auth/refreshLock.js +225 -0
  24. package/dist/auth/refreshLock.js.map +1 -0
  25. package/dist/commands/agentConfig.d.ts.map +1 -1
  26. package/dist/commands/agentConfig.js +8 -6
  27. package/dist/commands/agentConfig.js.map +1 -1
  28. package/dist/commands/attachment.d.ts.map +1 -1
  29. package/dist/commands/attachment.js +10 -2
  30. package/dist/commands/attachment.js.map +1 -1
  31. package/dist/commands/auth.d.ts +97 -0
  32. package/dist/commands/auth.d.ts.map +1 -0
  33. package/dist/commands/auth.js +245 -0
  34. package/dist/commands/auth.js.map +1 -0
  35. package/dist/commands/config.d.ts.map +1 -1
  36. package/dist/commands/config.js +16 -2
  37. package/dist/commands/config.js.map +1 -1
  38. package/dist/commands/convention.d.ts +11 -0
  39. package/dist/commands/convention.d.ts.map +1 -1
  40. package/dist/commands/convention.js +35 -11
  41. package/dist/commands/convention.js.map +1 -1
  42. package/dist/commands/dependency.d.ts.map +1 -1
  43. package/dist/commands/dependency.js +8 -6
  44. package/dist/commands/dependency.js.map +1 -1
  45. package/dist/commands/index.d.ts.map +1 -1
  46. package/dist/commands/index.js +19 -14
  47. package/dist/commands/index.js.map +1 -1
  48. package/dist/commands/init.d.ts +17 -0
  49. package/dist/commands/init.d.ts.map +1 -1
  50. package/dist/commands/init.js +90 -9
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/plan.d.ts +15 -0
  53. package/dist/commands/plan.d.ts.map +1 -1
  54. package/dist/commands/plan.js +28 -0
  55. package/dist/commands/plan.js.map +1 -1
  56. package/dist/index.js +106 -16
  57. package/dist/index.js.map +1 -1
  58. package/dist/mcp/context.d.ts +15 -1
  59. package/dist/mcp/context.d.ts.map +1 -1
  60. package/dist/mcp/context.js +24 -5
  61. package/dist/mcp/context.js.map +1 -1
  62. package/dist/mcp/server.d.ts +1 -1
  63. package/dist/mcp/server.d.ts.map +1 -1
  64. package/dist/mcp/server.js +5 -2
  65. package/dist/mcp/server.js.map +1 -1
  66. package/dist/mcp/tools.d.ts.map +1 -1
  67. package/dist/mcp/tools.js +25 -22
  68. package/dist/mcp/tools.js.map +1 -1
  69. package/dist/mcp-registration/clients.d.ts.map +1 -1
  70. package/dist/mcp-registration/clients.js +1 -9
  71. package/dist/mcp-registration/clients.js.map +1 -1
  72. package/dist/mcp-registration/doctor.d.ts +38 -0
  73. package/dist/mcp-registration/doctor.d.ts.map +1 -0
  74. package/dist/mcp-registration/doctor.js +379 -0
  75. package/dist/mcp-registration/doctor.js.map +1 -0
  76. package/dist/mcp-registration/index.d.ts +7 -5
  77. package/dist/mcp-registration/index.d.ts.map +1 -1
  78. package/dist/mcp-registration/index.js +46 -21
  79. package/dist/mcp-registration/index.js.map +1 -1
  80. package/dist/mcp-registration/install.d.ts.map +1 -1
  81. package/dist/mcp-registration/install.js +12 -15
  82. package/dist/mcp-registration/install.js.map +1 -1
  83. package/dist/mcp-registration/render.d.ts +8 -6
  84. package/dist/mcp-registration/render.d.ts.map +1 -1
  85. package/dist/mcp-registration/render.js +15 -36
  86. package/dist/mcp-registration/render.js.map +1 -1
  87. package/dist/mcp-registration/serverSpec.d.ts +31 -18
  88. package/dist/mcp-registration/serverSpec.d.ts.map +1 -1
  89. package/dist/mcp-registration/serverSpec.js +36 -20
  90. package/dist/mcp-registration/serverSpec.js.map +1 -1
  91. package/dist/mcp-registration/types.d.ts +0 -3
  92. package/dist/mcp-registration/types.d.ts.map +1 -1
  93. package/dist/types/index.d.ts +10 -0
  94. package/dist/types/index.d.ts.map +1 -1
  95. package/dist/utils/apiKeyInput.d.ts +16 -0
  96. package/dist/utils/apiKeyInput.d.ts.map +1 -0
  97. package/dist/utils/apiKeyInput.js +47 -0
  98. package/dist/utils/apiKeyInput.js.map +1 -0
  99. package/dist/utils/authFormat.d.ts +18 -0
  100. package/dist/utils/authFormat.d.ts.map +1 -0
  101. package/dist/utils/authFormat.js +130 -0
  102. package/dist/utils/authFormat.js.map +1 -0
  103. package/dist/utils/authServer.d.ts +32 -3
  104. package/dist/utils/authServer.d.ts.map +1 -1
  105. package/dist/utils/authServer.js +46 -6
  106. package/dist/utils/authServer.js.map +1 -1
  107. package/dist/utils/config.d.ts +127 -15
  108. package/dist/utils/config.d.ts.map +1 -1
  109. package/dist/utils/config.js +201 -8
  110. package/dist/utils/config.js.map +1 -1
  111. package/dist/utils/errors.d.ts.map +1 -1
  112. package/dist/utils/errors.js +16 -0
  113. package/dist/utils/errors.js.map +1 -1
  114. package/dist/utils/httpClient.d.ts.map +1 -1
  115. package/dist/utils/httpClient.js +25 -0
  116. package/dist/utils/httpClient.js.map +1 -1
  117. package/dist/utils/initOutput.d.ts.map +1 -1
  118. package/dist/utils/initOutput.js +30 -0
  119. package/dist/utils/initOutput.js.map +1 -1
  120. package/package.json +1 -1
@@ -22,6 +22,7 @@ export declare function quickPlan(apiUrl: string, projectId: string, headers: an
22
22
  complexity: string;
23
23
  priority: string;
24
24
  repositoryRemoteUrl?: string;
25
+ assignedTo?: string;
25
26
  startCommit?: string;
26
27
  startBranch?: string;
27
28
  runnerType: string;
@@ -49,6 +50,7 @@ export declare function quickPlan(apiUrl: string, projectId: string, headers: an
49
50
  export declare function updatePlan(apiUrl: string, projectId: string, headers: any, id: string, body: Record<string, unknown>): Promise<any>;
50
51
  export declare function startPlanLifecycle(apiUrl: string, projectId: string, headers: any, id: string, body: {
51
52
  task?: string;
53
+ assignedTo?: string;
52
54
  startCommit?: string;
53
55
  startBranch?: string;
54
56
  runnerType?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/api/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/api/plan.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACvC,OAAO,CAAC,GAAG,CAAC,CAMd;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAIvG;AAID,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAInH;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,GACA,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACA,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,GACA,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAM1G;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAI7G;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAIpH;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,CAMd;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,GAAG,CAAC,CAId"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/api/plan.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,MAAwC;IAExC,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,aAAa,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IAEnG,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAY,EAAE,EAAU;IACvF,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,wEAAwE;AACxE,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,SAAiB,EACjB,OAA+B,EAC/B,EAAU;IAEV,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAY,EAAE,EAAU;IACnG,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,IAYC;IAED,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,IA8BC;IAED,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,EAAU,EACV,IAA6B;IAE7B,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,EAAU,EACV,IAOC;IAED,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,EAAU,EACV,IAuBC;IAED,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACrF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAY,EAAE,EAAU;IAC1F,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,EAAE,EAAE,EAAE;QAC3D,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC;KACzC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAY,EAAE,EAAU;IAC7F,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,EAAU,EACV,MAAc;IAEd,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAY,EAAE,MAAc;IACpG,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,MAAM,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,MAAc,EACd,IAMC;IAED,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,MAAM,gBAAgB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChG,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,MAAc,EACd,OAAe;IAEf,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,MAAM,kBAAkB,OAAO,EAAE,EAAE;QACxF,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC;KACzC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,SAAiB,EACjB,OAAY,EACZ,EAAU,EACV,IAIC;IAED,MAAM,OAAO,GAAG,GAAG,MAAM,iBAAiB,SAAS,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChG,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/api/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The credential this process is currently authenticating with, in a form the
3
+ * HTTP layer can act on.
4
+ *
5
+ * `utils/httpClient.ts` must be able to answer "can this 401 be fixed by a
6
+ * refresh?" without importing the config loader (which imports the token client,
7
+ * which would import the HTTP layer back). A one-slot registry keeps that
8
+ * dependency edge from existing at all.
9
+ *
10
+ * Only the personal-token path registers anything here. A legacy `key_` run
11
+ * leaves the slot empty, which is what makes "never attempt a refresh on the old
12
+ * path" a structural property rather than a conditional the caller must remember.
13
+ */
14
+ export interface RefreshableCredential {
15
+ /** Discard the cached access token and fetch a new one. Null means "could not". */
16
+ refresh(): Promise<string | null>;
17
+ }
18
+ export declare function setActiveCredential(credential: RefreshableCredential | null): void;
19
+ export declare function getActiveCredential(): RefreshableCredential | null;
20
+ /** Test-only: return the process to the "no refreshable credential" state. */
21
+ export declare function resetActiveCredentialForTests(): void;
22
+ //# sourceMappingURL=activeCredential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeCredential.d.ts","sourceRoot":"","sources":["../../src/auth/activeCredential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACnC;AAID,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAElF;AAED,wBAAgB,mBAAmB,IAAI,qBAAqB,GAAG,IAAI,CAElE;AAED,8EAA8E;AAC9E,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The credential this process is currently authenticating with, in a form the
3
+ * HTTP layer can act on.
4
+ *
5
+ * `utils/httpClient.ts` must be able to answer "can this 401 be fixed by a
6
+ * refresh?" without importing the config loader (which imports the token client,
7
+ * which would import the HTTP layer back). A one-slot registry keeps that
8
+ * dependency edge from existing at all.
9
+ *
10
+ * Only the personal-token path registers anything here. A legacy `key_` run
11
+ * leaves the slot empty, which is what makes "never attempt a refresh on the old
12
+ * path" a structural property rather than a conditional the caller must remember.
13
+ */
14
+ let active = null;
15
+ export function setActiveCredential(credential) {
16
+ active = credential;
17
+ }
18
+ export function getActiveCredential() {
19
+ return active;
20
+ }
21
+ /** Test-only: return the process to the "no refreshable credential" state. */
22
+ export function resetActiveCredentialForTests() {
23
+ active = null;
24
+ }
25
+ //# sourceMappingURL=activeCredential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeCredential.js","sourceRoot":"","sources":["../../src/auth/activeCredential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,IAAI,MAAM,GAAiC,IAAI,CAAC;AAEhD,MAAM,UAAU,mBAAmB,CAAC,UAAwC;IAC1E,MAAM,GAAG,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * OS-protected credential storage for the CLI.
3
+ *
4
+ * The CLI ships as a plain npm package, so a native addon (keytar and friends)
5
+ * would add a build toolchain requirement to every install. Instead each
6
+ * platform's own credential tool is driven as a subprocess:
7
+ *
8
+ * macOS `security` (login keychain)
9
+ * Windows `powershell` (Windows.Security.Credentials.PasswordVault)
10
+ * Linux `secret-tool` (libsecret / Secret Service)
11
+ *
12
+ * When none of them is usable the store **refuses to persist**: nothing is
13
+ * written to disk in plaintext, the secret is kept for this process only, and
14
+ * the caller is told so it can point CI users at the long-lived `key_` path
15
+ * instead. This mirrors `desktop/src/main/localAgent/credentialStore.ts`, which
16
+ * declines to write when `safeStorage` is unavailable — the two must not drift.
17
+ */
18
+ /** One keychain "service" groups every CLI credential under a single name. */
19
+ export declare const CREDENTIAL_SERVICE = "agentteams-cli";
20
+ export type CredentialBackendId = 'macos-keychain' | 'windows-credential-manager' | 'libsecret' | 'none';
21
+ /**
22
+ * Why the store can (or cannot) persist.
23
+ *
24
+ * `WRITE_FAILED` is the one that is only knowable after trying: the probe below
25
+ * is deliberately cheap, so a locked macOS keychain ("User interaction is not
26
+ * allowed") or a Linux box with `secret-tool` installed but no Secret Service
27
+ * daemon running still reports `OK` until the first write is attempted.
28
+ */
29
+ export type CredentialStoreReason = 'OK' | 'NO_BACKEND' | 'UNSUPPORTED_PLATFORM' | 'WRITE_FAILED';
30
+ export interface CredentialStoreStatus {
31
+ backend: CredentialBackendId;
32
+ /** false → nothing is ever written to disk; the secret lives in this process only. */
33
+ persisted: boolean;
34
+ reason: CredentialStoreReason;
35
+ /** Masked backend error, present only once a write has actually failed. */
36
+ detail?: string;
37
+ }
38
+ export interface CredentialSaveOutcome {
39
+ persisted: boolean;
40
+ reason: CredentialStoreReason;
41
+ /** Masked backend error, present only when `reason` is `WRITE_FAILED`. */
42
+ detail?: string;
43
+ }
44
+ export interface CommandResult {
45
+ /** null when the executable could not be spawned at all. */
46
+ status: number | null;
47
+ stdout: string;
48
+ stderr: string;
49
+ }
50
+ export interface CredentialCommand {
51
+ command: string;
52
+ args: string[];
53
+ /** Written to the child's stdin. Never placed on argv — argv is world-readable via `ps`. */
54
+ input?: string;
55
+ /** Extra environment for the child. Used on Windows so the secret stays off argv. */
56
+ env?: Record<string, string>;
57
+ /**
58
+ * Run the child in its own session, with no controlling terminal.
59
+ *
60
+ * Required for any tool that reads a secret from stdin: macOS `security`
61
+ * collects the password with `readpassphrase(3)`, which opens the controlling
62
+ * terminal in preference to stdin and only falls back to stdin when there is
63
+ * none to open. Piping the token in therefore works from a script or a test but is
64
+ * silently ignored in an interactive shell, where `security` prompts the user
65
+ * instead and stores whatever the terminal happened to supply. Detaching
66
+ * removes the terminal, so the piped value is the only thing it can read.
67
+ */
68
+ detachTerminal?: boolean;
69
+ }
70
+ export type CommandRunner = (command: CredentialCommand) => CommandResult;
71
+ export interface CredentialReadOptions {
72
+ /**
73
+ * Skip the process-lifetime read cache and ask the backend again.
74
+ *
75
+ * Required before presenting a **rotating** credential: another process may
76
+ * have rotated it since this one first read it, and the cached copy would then
77
+ * be a superseded token the server treats as reuse.
78
+ *
79
+ * Fails closed — if the backend cannot be read, the call returns null rather
80
+ * than the cached guess, because the caller is about to present the value
81
+ * somewhere that punishes staleness. Ignored for an account whose only copy is
82
+ * in memory (a write that could not be persisted), since there the cache *is*
83
+ * the credential.
84
+ */
85
+ fresh?: boolean;
86
+ }
87
+ export interface CredentialStore {
88
+ status(): CredentialStoreStatus;
89
+ read(account: string, options?: CredentialReadOptions): string | null;
90
+ save(account: string, secret: string): CredentialSaveOutcome;
91
+ remove(account: string): void;
92
+ }
93
+ export interface CreateCredentialStoreOptions {
94
+ runner?: CommandRunner;
95
+ platform?: NodeJS.Platform;
96
+ service?: string;
97
+ }
98
+ export declare function isMissingItemStatus(backend: CredentialBackendId, status: number | null): boolean;
99
+ export declare function resolveBackendId(platform: NodeJS.Platform): CredentialBackendId;
100
+ /** Cheap "is this backend usable at all" call. Exit code 0 means yes. */
101
+ export declare function buildProbeCommand(backend: CredentialBackendId): CredentialCommand | null;
102
+ export declare function buildReadCommand(backend: CredentialBackendId, service: string, account: string): CredentialCommand | null;
103
+ export declare function buildSaveCommand(backend: CredentialBackendId, service: string, account: string, secret: string): CredentialCommand | null;
104
+ export declare function buildRemoveCommand(backend: CredentialBackendId, service: string, account: string): CredentialCommand | null;
105
+ /**
106
+ * Strip a secret out of anything that is about to be surfaced.
107
+ *
108
+ * Backend tools do not normally echo the value back, but "normally" is not a
109
+ * guarantee worth betting a token on — and this store is the last boundary
110
+ * before text reaches a log or an error message.
111
+ */
112
+ export declare function maskSecret(text: string, secret: string): string;
113
+ export declare function createCredentialStore(options?: CreateCredentialStoreOptions): CredentialStore;
114
+ /** Process-wide store. Tests build their own through {@link createCredentialStore}. */
115
+ export declare function getCredentialStore(): CredentialStore;
116
+ /** Test-only: drop the cached process-wide store. */
117
+ export declare function resetCredentialStoreForTests(): void;
118
+ //# sourceMappingURL=credentialStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentialStore.d.ts","sourceRoot":"","sources":["../../src/auth/credentialStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,4BAA4B,GAAG,WAAW,GAAG,MAAM,CAAC;AAEzG;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,YAAY,GAAG,sBAAsB,GAAG,cAAc,CAAC;AAElG,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,sFAAsF;IACtF,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,aAAa,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,IAAI,qBAAqB,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAAC;IACtE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC7D,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAwCD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAMhG;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,mBAAmB,CAW/E;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAWxF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,iBAAiB,GAAG,IAAI,CAe1B;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,iBAAiB,GAAG,IAAI,CA4B1B;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,iBAAiB,GAAG,IAAI,CAc1B;AAoBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,eAAe,CAgLjG;AAID,uFAAuF;AACvF,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD;AAED,qDAAqD;AACrD,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
@@ -0,0 +1,340 @@
1
+ /**
2
+ * OS-protected credential storage for the CLI.
3
+ *
4
+ * The CLI ships as a plain npm package, so a native addon (keytar and friends)
5
+ * would add a build toolchain requirement to every install. Instead each
6
+ * platform's own credential tool is driven as a subprocess:
7
+ *
8
+ * macOS `security` (login keychain)
9
+ * Windows `powershell` (Windows.Security.Credentials.PasswordVault)
10
+ * Linux `secret-tool` (libsecret / Secret Service)
11
+ *
12
+ * When none of them is usable the store **refuses to persist**: nothing is
13
+ * written to disk in plaintext, the secret is kept for this process only, and
14
+ * the caller is told so it can point CI users at the long-lived `key_` path
15
+ * instead. This mirrors `desktop/src/main/localAgent/credentialStore.ts`, which
16
+ * declines to write when `safeStorage` is unavailable — the two must not drift.
17
+ */
18
+ import { spawnSync } from 'node:child_process';
19
+ /** One keychain "service" groups every CLI credential under a single name. */
20
+ export const CREDENTIAL_SERVICE = 'agentteams-cli';
21
+ const WINDOWS_SERVICE_ENV = 'AGENTTEAMS_CREDENTIAL_SERVICE';
22
+ const WINDOWS_ACCOUNT_ENV = 'AGENTTEAMS_CREDENTIAL_ACCOUNT';
23
+ const WINDOWS_SECRET_ENV = 'AGENTTEAMS_CREDENTIAL_SECRET';
24
+ /**
25
+ * PasswordVault is WinRT, so it is projected into PowerShell rather than called
26
+ * directly. Every script starts from the same preamble; the caller appends the
27
+ * operation. Inputs arrive through the environment because a PowerShell command
28
+ * line is as visible as any other argv.
29
+ */
30
+ const WINDOWS_PREAMBLE = [
31
+ '$ErrorActionPreference = "Stop"',
32
+ '[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]',
33
+ '$vault = New-Object Windows.Security.Credentials.PasswordVault',
34
+ ].join('; ');
35
+ function powershellCommand(script, env) {
36
+ const command = {
37
+ command: 'powershell',
38
+ args: ['-NoProfile', '-NonInteractive', '-Command', `${WINDOWS_PREAMBLE}; ${script}`],
39
+ };
40
+ if (env)
41
+ command.env = env;
42
+ return command;
43
+ }
44
+ /**
45
+ * Exit statuses that mean "no such item" rather than "the read failed".
46
+ *
47
+ * `security` answers a missing generic password with 44 (errSecItemNotFound);
48
+ * `secret-tool lookup` exits 1 with no output. Anything else — a locked keychain,
49
+ * a denied access prompt, a dead Secret Service — is an error, and must not be
50
+ * mistaken for the credential having been removed.
51
+ */
52
+ const MISSING_ITEM_STATUS = {
53
+ 'macos-keychain': [44],
54
+ libsecret: [1],
55
+ };
56
+ export function isMissingItemStatus(backend, status) {
57
+ if (status === null)
58
+ return false;
59
+ // PasswordVault throws for a missing item and PowerShell turns that into 1;
60
+ // there is no separate code to key on, so it is treated as absence.
61
+ if (backend === 'windows-credential-manager')
62
+ return status === 1;
63
+ return (MISSING_ITEM_STATUS[backend] ?? []).includes(status);
64
+ }
65
+ export function resolveBackendId(platform) {
66
+ switch (platform) {
67
+ case 'darwin':
68
+ return 'macos-keychain';
69
+ case 'win32':
70
+ return 'windows-credential-manager';
71
+ case 'linux':
72
+ return 'libsecret';
73
+ default:
74
+ return 'none';
75
+ }
76
+ }
77
+ /** Cheap "is this backend usable at all" call. Exit code 0 means yes. */
78
+ export function buildProbeCommand(backend) {
79
+ switch (backend) {
80
+ case 'macos-keychain':
81
+ return { command: 'security', args: ['list-keychains'] };
82
+ case 'libsecret':
83
+ return { command: 'secret-tool', args: ['--version'] };
84
+ case 'windows-credential-manager':
85
+ return powershellCommand('exit 0');
86
+ default:
87
+ return null;
88
+ }
89
+ }
90
+ export function buildReadCommand(backend, service, account) {
91
+ switch (backend) {
92
+ case 'macos-keychain':
93
+ return { command: 'security', args: ['find-generic-password', '-a', account, '-s', service, '-w'] };
94
+ case 'libsecret':
95
+ return { command: 'secret-tool', args: ['lookup', 'service', service, 'account', account] };
96
+ case 'windows-credential-manager':
97
+ return powershellCommand(`$c = $vault.Retrieve($env:${WINDOWS_SERVICE_ENV}, $env:${WINDOWS_ACCOUNT_ENV}); ` +
98
+ '$c.RetrievePassword(); [Console]::Out.Write($c.Password)', { [WINDOWS_SERVICE_ENV]: service, [WINDOWS_ACCOUNT_ENV]: account });
99
+ default:
100
+ return null;
101
+ }
102
+ }
103
+ export function buildSaveCommand(backend, service, account, secret) {
104
+ switch (backend) {
105
+ case 'macos-keychain':
106
+ // `-w` without a value makes `security` read the password rather than take
107
+ // it from argv, where `ps` would expose it. It asks twice ("retype
108
+ // password"), so the value is written twice. `detachTerminal` is what makes
109
+ // it read *this* stdin instead of prompting the user's terminal.
110
+ return {
111
+ command: 'security',
112
+ args: ['add-generic-password', '-a', account, '-s', service, '-U', '-w'],
113
+ input: `${secret}\n${secret}\n`,
114
+ detachTerminal: true,
115
+ };
116
+ case 'libsecret':
117
+ return {
118
+ command: 'secret-tool',
119
+ args: ['store', '--label', `${service} (${account})`, 'service', service, 'account', account],
120
+ input: secret,
121
+ };
122
+ case 'windows-credential-manager':
123
+ return powershellCommand('$vault.Add((New-Object Windows.Security.Credentials.PasswordCredential(' +
124
+ `$env:${WINDOWS_SERVICE_ENV}, $env:${WINDOWS_ACCOUNT_ENV}, $env:${WINDOWS_SECRET_ENV})))`, { [WINDOWS_SERVICE_ENV]: service, [WINDOWS_ACCOUNT_ENV]: account, [WINDOWS_SECRET_ENV]: secret });
125
+ default:
126
+ return null;
127
+ }
128
+ }
129
+ export function buildRemoveCommand(backend, service, account) {
130
+ switch (backend) {
131
+ case 'macos-keychain':
132
+ return { command: 'security', args: ['delete-generic-password', '-a', account, '-s', service] };
133
+ case 'libsecret':
134
+ return { command: 'secret-tool', args: ['clear', 'service', service, 'account', account] };
135
+ case 'windows-credential-manager':
136
+ return powershellCommand(`$c = $vault.Retrieve($env:${WINDOWS_SERVICE_ENV}, $env:${WINDOWS_ACCOUNT_ENV}); $vault.Remove($c)`, { [WINDOWS_SERVICE_ENV]: service, [WINDOWS_ACCOUNT_ENV]: account });
137
+ default:
138
+ return null;
139
+ }
140
+ }
141
+ const defaultRunner = (command) => {
142
+ const result = spawnSync(command.command, command.args, {
143
+ encoding: 'utf-8',
144
+ input: command.input,
145
+ windowsHide: true,
146
+ env: command.env ? { ...process.env, ...command.env } : process.env,
147
+ // `spawnSync` still waits for the child, so detaching only changes which
148
+ // session it belongs to — there is nothing left running afterwards.
149
+ ...(command.detachTerminal ? { detached: true } : {}),
150
+ });
151
+ return {
152
+ status: result.error ? null : result.status,
153
+ stdout: result.stdout ?? '',
154
+ stderr: result.stderr ?? '',
155
+ };
156
+ };
157
+ /**
158
+ * Strip a secret out of anything that is about to be surfaced.
159
+ *
160
+ * Backend tools do not normally echo the value back, but "normally" is not a
161
+ * guarantee worth betting a token on — and this store is the last boundary
162
+ * before text reaches a log or an error message.
163
+ */
164
+ export function maskSecret(text, secret) {
165
+ if (!secret)
166
+ return text;
167
+ return text.split(secret).join('***');
168
+ }
169
+ export function createCredentialStore(options = {}) {
170
+ const runner = options.runner ?? defaultRunner;
171
+ const platform = options.platform ?? process.platform;
172
+ const service = options.service ?? CREDENTIAL_SERVICE;
173
+ const backend = resolveBackendId(platform);
174
+ /**
175
+ * Session-only fallback, and a read cache on top of a working backend.
176
+ * A one-shot command barely benefits, but `agentteams mcp` runs for hours and
177
+ * would otherwise re-shell out on every credential resolution.
178
+ */
179
+ const memory = new Map();
180
+ /**
181
+ * Accounts whose only copy is in {@link memory}, because a write could not be
182
+ * persisted. Tracked per account rather than as one store-wide latch: one
183
+ * account's failed write says nothing about another's, and a store-wide flag
184
+ * would silently turn every later `{ fresh: true }` read back into a cache hit.
185
+ */
186
+ const memoryOnlyAccounts = new Set();
187
+ let availability = null;
188
+ /**
189
+ * Set once a write is rejected by a backend that passed the probe. From then
190
+ * on `status()` tells the truth — "this store looks present but will not keep
191
+ * anything" — instead of promising a durability it has already failed to give.
192
+ */
193
+ let writeFailureDetail = null;
194
+ const isAvailable = () => {
195
+ if (availability !== null)
196
+ return availability;
197
+ const probe = buildProbeCommand(backend);
198
+ if (!probe) {
199
+ availability = false;
200
+ return availability;
201
+ }
202
+ // A backend that cannot even be probed is treated as absent rather than as
203
+ // an error: the caller's job is to fall back, not to fail the command.
204
+ availability = runner(probe).status === 0;
205
+ return availability;
206
+ };
207
+ const status = () => {
208
+ if (backend === 'none') {
209
+ return { backend, persisted: false, reason: 'UNSUPPORTED_PLATFORM' };
210
+ }
211
+ if (writeFailureDetail !== null) {
212
+ return { backend, persisted: false, reason: 'WRITE_FAILED', detail: writeFailureDetail };
213
+ }
214
+ const available = isAvailable();
215
+ return { backend, persisted: available, reason: available ? 'OK' : 'NO_BACKEND' };
216
+ };
217
+ /**
218
+ * The backend's own answer, with no memory cache in front of it.
219
+ *
220
+ * `missing` and `error` must stay apart. Collapsing them makes a locked
221
+ * keychain or a denied access prompt look exactly like "another process logged
222
+ * out", which would drop a live credential from the cache and let `logout`
223
+ * claim there is nothing to revoke while a valid refresh token sits in the
224
+ * store.
225
+ */
226
+ const readFromBackend = (account) => {
227
+ if (!isAvailable())
228
+ return { kind: 'error', detail: 'the credential store is not available' };
229
+ const command = buildReadCommand(backend, service, account);
230
+ if (!command)
231
+ return { kind: 'error', detail: 'no read command for this backend' };
232
+ const result = runner(command);
233
+ if (result.status !== 0) {
234
+ return isMissingItemStatus(backend, result.status)
235
+ ? { kind: 'missing' }
236
+ : { kind: 'error', detail: `${result.stderr}`.trim() || `the credential store read failed (${result.status})` };
237
+ }
238
+ // `security -w` and `secret-tool lookup` both terminate the value with a
239
+ // newline; a token never legitimately ends in whitespace.
240
+ const secret = result.stdout.replace(/\r?\n$/, '');
241
+ return secret.length === 0 ? { kind: 'missing' } : { kind: 'found', secret };
242
+ };
243
+ return {
244
+ status,
245
+ read(account, options) {
246
+ const cached = memory.get(account);
247
+ // A re-read only makes sense when the backend, not memory, holds the
248
+ // authoritative copy for this account. Where a write could not be
249
+ // persisted, memory is the only copy there is and consulting the backend
250
+ // would throw the live credential away.
251
+ const reread = options?.fresh === true && isAvailable() && !memoryOnlyAccounts.has(account);
252
+ if (cached !== undefined && !reread)
253
+ return cached;
254
+ const outcome = readFromBackend(account);
255
+ if (outcome.kind === 'found') {
256
+ memory.set(account, outcome.secret);
257
+ return outcome.secret;
258
+ }
259
+ // Only a definite absence means another process removed the credential; a
260
+ // read that merely failed says nothing, so the cached copy stays.
261
+ if (outcome.kind === 'missing' && reread)
262
+ memory.delete(account);
263
+ // Either way this call cannot vouch for what the backend holds. A caller
264
+ // that asked for a fresh value is about to present it somewhere that
265
+ // punishes staleness, so it gets nothing rather than the cached guess.
266
+ if (reread)
267
+ return null;
268
+ return cached ?? null;
269
+ },
270
+ save(account, secret) {
271
+ memory.set(account, secret);
272
+ const markMemoryOnly = (reason, detail) => {
273
+ memoryOnlyAccounts.add(account);
274
+ return detail === undefined ? { persisted: false, reason } : { persisted: false, reason, detail };
275
+ };
276
+ if (!isAvailable()) {
277
+ return markMemoryOnly(backend === 'none' ? 'UNSUPPORTED_PLATFORM' : 'NO_BACKEND');
278
+ }
279
+ const command = buildSaveCommand(backend, service, account, secret);
280
+ if (!command) {
281
+ return markMemoryOnly('NO_BACKEND');
282
+ }
283
+ const result = runner(command);
284
+ if (result.status !== 0) {
285
+ // Never thrown: the caller's contract is "you may not get persistence",
286
+ // and a rejected write is just another way of not getting it. Throwing
287
+ // here would kill the documented session-only fallback at the exact
288
+ // moment it is needed.
289
+ writeFailureDetail = maskSecret(`${result.stderr}`.trim(), secret) || 'the credential store rejected the write';
290
+ return markMemoryOnly('WRITE_FAILED', writeFailureDetail);
291
+ }
292
+ // A zero exit is not proof the value landed. A backend tool that collects
293
+ // the secret interactively can store something else entirely and still
294
+ // succeed, and the caller would then commit to a credential that is only
295
+ // discovered to be wrong when the server rejects it — as an expired login,
296
+ // which sends the user back to a re-login that fails the same way. Reading
297
+ // it back turns that silent corruption into an honest WRITE_FAILED.
298
+ //
299
+ // A read that fails is not evidence either way, so it is not treated as a
300
+ // mismatch: doing so would revoke a token that did store, on nothing more
301
+ // than a locked keychain.
302
+ const stored = readFromBackend(account);
303
+ if (stored.kind === 'error') {
304
+ writeFailureDetail = `the write could not be verified: ${stored.detail}`;
305
+ return markMemoryOnly('WRITE_FAILED', writeFailureDetail);
306
+ }
307
+ if (stored.kind === 'missing' || stored.secret !== secret) {
308
+ writeFailureDetail = 'the credential store did not keep the value that was written';
309
+ return markMemoryOnly('WRITE_FAILED', writeFailureDetail);
310
+ }
311
+ writeFailureDetail = null;
312
+ memoryOnlyAccounts.delete(account);
313
+ return { persisted: true, reason: 'OK' };
314
+ },
315
+ remove(account) {
316
+ memory.delete(account);
317
+ if (!isAvailable())
318
+ return;
319
+ const command = buildRemoveCommand(backend, service, account);
320
+ if (!command)
321
+ return;
322
+ // Removing something that is already gone is success as far as the caller
323
+ // is concerned, so a non-zero status is not escalated.
324
+ runner(command);
325
+ },
326
+ };
327
+ }
328
+ let sharedStore = null;
329
+ /** Process-wide store. Tests build their own through {@link createCredentialStore}. */
330
+ export function getCredentialStore() {
331
+ if (!sharedStore) {
332
+ sharedStore = createCredentialStore();
333
+ }
334
+ return sharedStore;
335
+ }
336
+ /** Test-only: drop the cached process-wide store. */
337
+ export function resetCredentialStoreForTests() {
338
+ sharedStore = null;
339
+ }
340
+ //# sourceMappingURL=credentialStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentialStore.js","sourceRoot":"","sources":["../../src/auth/credentialStore.ts"],"names":[],"mappings":"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"}