@jait/gateway 0.1.446 → 0.1.448

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 (108) hide show
  1. package/dist/db/migrations.d.ts.map +1 -1
  2. package/dist/db/migrations.js +24 -0
  3. package/dist/db/migrations.js.map +1 -1
  4. package/dist/db/schema.d.ts +216 -0
  5. package/dist/db/schema.d.ts.map +1 -1
  6. package/dist/db/schema.js +18 -1
  7. package/dist/db/schema.js.map +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +29 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/routes/secrets.d.ts +2 -1
  12. package/dist/routes/secrets.d.ts.map +1 -1
  13. package/dist/routes/secrets.js +49 -1
  14. package/dist/routes/secrets.js.map +1 -1
  15. package/dist/routes/user-questions.d.ts +5 -0
  16. package/dist/routes/user-questions.d.ts.map +1 -0
  17. package/dist/routes/user-questions.js +55 -0
  18. package/dist/routes/user-questions.js.map +1 -0
  19. package/dist/server.d.ts +4 -0
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +5 -1
  22. package/dist/server.js.map +1 -1
  23. package/dist/services/secret-input.d.ts +8 -0
  24. package/dist/services/secret-input.d.ts.map +1 -1
  25. package/dist/services/secret-input.js +4 -0
  26. package/dist/services/secret-input.js.map +1 -1
  27. package/dist/services/user-questions.d.ts +57 -0
  28. package/dist/services/user-questions.d.ts.map +1 -0
  29. package/dist/services/user-questions.js +74 -0
  30. package/dist/services/user-questions.js.map +1 -0
  31. package/dist/services/user-secrets.d.ts +24 -0
  32. package/dist/services/user-secrets.d.ts.map +1 -0
  33. package/dist/services/user-secrets.js +135 -0
  34. package/dist/services/user-secrets.js.map +1 -0
  35. package/dist/tools/index.d.ts +5 -0
  36. package/dist/tools/index.d.ts.map +1 -1
  37. package/dist/tools/index.js +6 -1
  38. package/dist/tools/index.js.map +1 -1
  39. package/dist/tools/ssh-tools.d.ts +3 -2
  40. package/dist/tools/ssh-tools.d.ts.map +1 -1
  41. package/dist/tools/ssh-tools.js +37 -14
  42. package/dist/tools/ssh-tools.js.map +1 -1
  43. package/dist/tools/tool-names.d.ts +1 -0
  44. package/dist/tools/tool-names.d.ts.map +1 -1
  45. package/dist/tools/tool-names.js +1 -0
  46. package/dist/tools/tool-names.js.map +1 -1
  47. package/dist/tools/user-question-tools.d.ts +21 -0
  48. package/dist/tools/user-question-tools.d.ts.map +1 -0
  49. package/dist/tools/user-question-tools.js +102 -0
  50. package/dist/tools/user-question-tools.js.map +1 -0
  51. package/package.json +2 -2
  52. package/web-dist/assets/{_basePickBy-C0xeMzCL.js → _basePickBy-Bc6UdCdT.js} +1 -1
  53. package/web-dist/assets/{_baseUniq-Cpdd1tWi.js → _baseUniq-DzUyT7Ee.js} +1 -1
  54. package/web-dist/assets/{arc-DDghAyfu.js → arc-ChGEqaKj.js} +1 -1
  55. package/web-dist/assets/{architectureDiagram-2XIMDMQ5-7aPVlRJf.js → architectureDiagram-2XIMDMQ5-BRcWEEPa.js} +1 -1
  56. package/web-dist/assets/{blockDiagram-WCTKOSBZ-Dl78blHG.js → blockDiagram-WCTKOSBZ-Bh2AAS5z.js} +1 -1
  57. package/web-dist/assets/{c4Diagram-IC4MRINW-B2wl4mK7.js → c4Diagram-IC4MRINW-B-GUekEC.js} +1 -1
  58. package/web-dist/assets/channel-DEeHX2qe.js +1 -0
  59. package/web-dist/assets/{chunk-4BX2VUAB-CFyL6aiX.js → chunk-4BX2VUAB-C9XAkN98.js} +1 -1
  60. package/web-dist/assets/{chunk-55IACEB6-9wd7GXuK.js → chunk-55IACEB6-DEi50I4F.js} +1 -1
  61. package/web-dist/assets/{chunk-FMBD7UC4-CQ82NDdR.js → chunk-FMBD7UC4-DhfCvr_U.js} +1 -1
  62. package/web-dist/assets/{chunk-JSJVCQXG-Y0Xr5a6D.js → chunk-JSJVCQXG-Cl2B84-o.js} +1 -1
  63. package/web-dist/assets/{chunk-KX2RTZJC-Z8E9D02W.js → chunk-KX2RTZJC-5TDNeZs6.js} +1 -1
  64. package/web-dist/assets/{chunk-NQ4KR5QH-uaZGuHDD.js → chunk-NQ4KR5QH-C7nV19Rf.js} +1 -1
  65. package/web-dist/assets/{chunk-QZHKN3VN-BMT2EPyC.js → chunk-QZHKN3VN-DjTQjo5o.js} +1 -1
  66. package/web-dist/assets/{chunk-WL4C6EOR-khAV39Vx.js → chunk-WL4C6EOR-C1y8LiwK.js} +1 -1
  67. package/web-dist/assets/classDiagram-VBA2DB6C-NSujoGVP.js +1 -0
  68. package/web-dist/assets/classDiagram-v2-RAHNMMFH-NSujoGVP.js +1 -0
  69. package/web-dist/assets/clone-gQx_UC94.js +1 -0
  70. package/web-dist/assets/{cose-bilkent-S5V4N54A-DHsyHTZd.js → cose-bilkent-S5V4N54A-DWZuetCQ.js} +1 -1
  71. package/web-dist/assets/{dagre-KLK3FWXG-oK4s-Hdt.js → dagre-KLK3FWXG-BguFlSu8.js} +1 -1
  72. package/web-dist/assets/{diagram-E7M64L7V-C8k51-cC.js → diagram-E7M64L7V-BHoXHTBQ.js} +1 -1
  73. package/web-dist/assets/{diagram-IFDJBPK2-EwISt7PA.js → diagram-IFDJBPK2-BH1KuVoR.js} +1 -1
  74. package/web-dist/assets/{diagram-P4PSJMXO-ySZDscia.js → diagram-P4PSJMXO-DzmI92wi.js} +1 -1
  75. package/web-dist/assets/{erDiagram-INFDFZHY-EVWjA3sf.js → erDiagram-INFDFZHY-DhPySoRH.js} +1 -1
  76. package/web-dist/assets/{flowDiagram-PKNHOUZH-zj5HRAsJ.js → flowDiagram-PKNHOUZH-B8rsLK73.js} +1 -1
  77. package/web-dist/assets/{ganttDiagram-A5KZAMGK-Bp5NgGcR.js → ganttDiagram-A5KZAMGK-C9PzafWj.js} +1 -1
  78. package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-0-hbfXPF.js → gitGraphDiagram-K3NZZRJ6-B63xW-2Q.js} +1 -1
  79. package/web-dist/assets/{graph-BggyKMfo.js → graph-C9mMDCcr.js} +1 -1
  80. package/web-dist/assets/index-3BL6LO8a.css +32 -0
  81. package/web-dist/assets/{index-Bd1Lr-k3.js → index-BMYCqYkB.js} +1 -1
  82. package/web-dist/assets/{index-Bo7mi4sI.js → index-BPwPJpYZ.js} +369 -364
  83. package/web-dist/assets/{index-vH_IM2Q6.js → index-DSjk8m2P.js} +1 -1
  84. package/web-dist/assets/{infoDiagram-LFFYTUFH-DrlqUeU4.js → infoDiagram-LFFYTUFH-WJ7KdTZP.js} +1 -1
  85. package/web-dist/assets/{ishikawaDiagram-PHBUUO56-C3SnWGNp.js → ishikawaDiagram-PHBUUO56-lHMnXc_C.js} +1 -1
  86. package/web-dist/assets/{journeyDiagram-4ABVD52K-DEeW_yOb.js → journeyDiagram-4ABVD52K-CMc4-04T.js} +1 -1
  87. package/web-dist/assets/{kanban-definition-K7BYSVSG-FM29gKpg.js → kanban-definition-K7BYSVSG-BEKroW9P.js} +1 -1
  88. package/web-dist/assets/{layout-Bbnt-sKP.js → layout-CwEchOb5.js} +1 -1
  89. package/web-dist/assets/{linear-DIEA_S_R.js → linear-BFaxdUXA.js} +1 -1
  90. package/web-dist/assets/{mindmap-definition-YRQLILUH-D-8c-93p.js → mindmap-definition-YRQLILUH-CCfHUOkA.js} +1 -1
  91. package/web-dist/assets/{pieDiagram-SKSYHLDU-srcpZS8v.js → pieDiagram-SKSYHLDU-Bzw8nMCN.js} +1 -1
  92. package/web-dist/assets/{quadrantDiagram-337W2JSQ-BV5SE8BI.js → quadrantDiagram-337W2JSQ-CJHrd5YD.js} +1 -1
  93. package/web-dist/assets/{requirementDiagram-Z7DCOOCP-EaiMvJWs.js → requirementDiagram-Z7DCOOCP-BWrRSM45.js} +1 -1
  94. package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-lAl01ROV.js → sankeyDiagram-WA2Y5GQK-g-r8jr9g.js} +1 -1
  95. package/web-dist/assets/{sequenceDiagram-2WXFIKYE-BCmIdbbn.js → sequenceDiagram-2WXFIKYE-Bm0p0GzV.js} +1 -1
  96. package/web-dist/assets/{stateDiagram-RAJIS63D-BV4lQzYf.js → stateDiagram-RAJIS63D-LpyCbpJS.js} +1 -1
  97. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-JC4WIlrr.js +1 -0
  98. package/web-dist/assets/{timeline-definition-YZTLITO2-Z9qknQl4.js → timeline-definition-YZTLITO2-CPrHf7SM.js} +1 -1
  99. package/web-dist/assets/{treemap-KZPCXAKY-DelChN1K.js → treemap-KZPCXAKY-B756_pbl.js} +1 -1
  100. package/web-dist/assets/{vennDiagram-LZ73GAT5-Dq4AW_h7.js → vennDiagram-LZ73GAT5-Cz5ojK-9.js} +1 -1
  101. package/web-dist/assets/{xychartDiagram-JWTSCODW-NnFseC2a.js → xychartDiagram-JWTSCODW-99aPXl3C.js} +1 -1
  102. package/web-dist/index.html +2 -2
  103. package/web-dist/assets/channel-BuilH7Pv.js +0 -1
  104. package/web-dist/assets/classDiagram-VBA2DB6C-CgHdYKIM.js +0 -1
  105. package/web-dist/assets/classDiagram-v2-RAHNMMFH-CgHdYKIM.js +0 -1
  106. package/web-dist/assets/clone-4Hng0_3M.js +0 -1
  107. package/web-dist/assets/index-Cq8IOQ36.css +0 -32
  108. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-CIxheqQG.js +0 -1
@@ -0,0 +1,57 @@
1
+ export interface UserQuestionOption {
2
+ label: string;
3
+ description?: string;
4
+ recommended?: boolean;
5
+ }
6
+ export interface UserQuestion {
7
+ id: string;
8
+ header: string;
9
+ question: string;
10
+ multiSelect?: boolean;
11
+ options?: UserQuestionOption[];
12
+ allowFreeformInput?: boolean;
13
+ }
14
+ export interface UserQuestionAnswer {
15
+ selected: string[];
16
+ freeText: string | null;
17
+ skipped: boolean;
18
+ }
19
+ export interface UserQuestionRequest {
20
+ id: string;
21
+ sessionId: string;
22
+ userId: string | null;
23
+ requestedBy: string | null;
24
+ title: string;
25
+ questions: UserQuestion[];
26
+ createdAt: string;
27
+ expiresAt: string;
28
+ status: "pending" | "submitted" | "cancelled" | "timeout";
29
+ }
30
+ export interface UserQuestionResult {
31
+ answers: Record<string, UserQuestionAnswer>;
32
+ }
33
+ export interface UserQuestionServiceOptions {
34
+ defaultTimeoutMs?: number;
35
+ onRequest?: (request: UserQuestionRequest) => void;
36
+ onResolved?: (request: UserQuestionRequest) => void;
37
+ }
38
+ export declare class UserQuestionService {
39
+ private readonly pending;
40
+ private readonly defaultTimeoutMs;
41
+ private readonly onRequest?;
42
+ private readonly onResolved?;
43
+ constructor(options?: UserQuestionServiceOptions);
44
+ ask(input: {
45
+ sessionId: string;
46
+ userId?: string | null;
47
+ requestedBy?: string | null;
48
+ title?: string;
49
+ questions: UserQuestion[];
50
+ timeoutMs?: number;
51
+ }): Promise<UserQuestionResult | null>;
52
+ listPending(sessionId?: string, userId?: string | null): UserQuestionRequest[];
53
+ submit(requestId: string, result: UserQuestionResult, userId?: string | null): boolean;
54
+ cancel(requestId: string, userId?: string | null): boolean;
55
+ private resolveRequest;
56
+ }
57
+ //# sourceMappingURL=user-questions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-questions.d.ts","sourceRoot":"","sources":["../../src/services/user-questions.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC7C;AAQD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACrD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAyC;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAyC;gBAEzD,OAAO,GAAE,0BAA+B;IAMpD,GAAG,CAAC,KAAK,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,YAAY,EAAE,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAwBtC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,mBAAmB,EAAE;IAU9E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAQtF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAQ1D,OAAO,CAAC,cAAc;CAavB"}
@@ -0,0 +1,74 @@
1
+ import { uuidv7 } from "../db/uuidv7.js";
2
+ export class UserQuestionService {
3
+ pending = new Map();
4
+ defaultTimeoutMs;
5
+ onRequest;
6
+ onResolved;
7
+ constructor(options = {}) {
8
+ this.defaultTimeoutMs = options.defaultTimeoutMs ?? 300_000;
9
+ this.onRequest = options.onRequest;
10
+ this.onResolved = options.onResolved;
11
+ }
12
+ ask(input) {
13
+ const now = new Date();
14
+ const expiresAt = new Date(now.getTime() + (input.timeoutMs ?? this.defaultTimeoutMs));
15
+ const request = {
16
+ id: uuidv7(),
17
+ sessionId: input.sessionId,
18
+ userId: input.userId ?? null,
19
+ requestedBy: input.requestedBy ?? null,
20
+ title: input.title?.trim() || "Input requested",
21
+ questions: input.questions,
22
+ createdAt: now.toISOString(),
23
+ expiresAt: expiresAt.toISOString(),
24
+ status: "pending",
25
+ };
26
+ return new Promise((resolve) => {
27
+ const timer = setTimeout(() => {
28
+ this.resolveRequest(request.id, null, "timeout");
29
+ }, input.timeoutMs ?? this.defaultTimeoutMs);
30
+ this.pending.set(request.id, { request, resolve, timer });
31
+ this.onRequest?.(request);
32
+ });
33
+ }
34
+ listPending(sessionId, userId) {
35
+ return [...this.pending.values()]
36
+ .map((entry) => entry.request)
37
+ .filter((request) => {
38
+ if (sessionId && request.sessionId !== sessionId)
39
+ return false;
40
+ if (userId && request.userId && request.userId !== userId)
41
+ return false;
42
+ return true;
43
+ });
44
+ }
45
+ submit(requestId, result, userId) {
46
+ const entry = this.pending.get(requestId);
47
+ if (!entry)
48
+ return false;
49
+ if (entry.request.userId && entry.request.userId !== (userId ?? null))
50
+ return false;
51
+ this.resolveRequest(requestId, result, "submitted");
52
+ return true;
53
+ }
54
+ cancel(requestId, userId) {
55
+ const entry = this.pending.get(requestId);
56
+ if (!entry)
57
+ return false;
58
+ if (entry.request.userId && entry.request.userId !== (userId ?? null))
59
+ return false;
60
+ this.resolveRequest(requestId, null, "cancelled");
61
+ return true;
62
+ }
63
+ resolveRequest(requestId, result, status) {
64
+ const entry = this.pending.get(requestId);
65
+ if (!entry)
66
+ return;
67
+ this.pending.delete(requestId);
68
+ clearTimeout(entry.timer);
69
+ const request = { ...entry.request, status };
70
+ entry.resolve(result);
71
+ this.onResolved?.(request);
72
+ }
73
+ }
74
+ //# sourceMappingURL=user-questions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-questions.js","sourceRoot":"","sources":["../../src/services/user-questions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { JaitDB } from "../db/connection.js";
2
+ import { userSecrets } from "../db/schema.js";
3
+ export type UserSecretRecord = Omit<typeof userSecrets.$inferSelect, "encryptedValue" | "iv" | "authTag">;
4
+ export interface SaveUserSecretParams {
5
+ userId?: string | null;
6
+ type: string;
7
+ key: string;
8
+ label: string;
9
+ value: string;
10
+ }
11
+ export declare class UserSecretService {
12
+ private readonly db;
13
+ private readonly key;
14
+ constructor(db: JaitDB, encryptionSecret: string);
15
+ list(userId?: string | null, type?: string): UserSecretRecord[];
16
+ getValue(userId: string | null | undefined, type: string, key: string): string | null;
17
+ save(params: SaveUserSecretParams): UserSecretRecord;
18
+ delete(id: string, userId?: string | null): boolean;
19
+ private getById;
20
+ private markUsed;
21
+ private encrypt;
22
+ private decrypt;
23
+ }
24
+ //# sourceMappingURL=user-secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-secrets.d.ts","sourceRoot":"","sources":["../../src/services/user-secrets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,WAAW,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE1G,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAUD,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAF/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEA,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAIjE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAoB/D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAerF,IAAI,CAAC,MAAM,EAAE,oBAAoB,GAAG,gBAAgB;IAqDpD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAOnD,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,OAAO;CAQhB"}
@@ -0,0 +1,135 @@
1
+ import { createCipheriv, createDecipheriv, createHash, randomBytes } from "node:crypto";
2
+ import { and, desc, eq, isNull } from "drizzle-orm";
3
+ import { userSecrets } from "../db/schema.js";
4
+ import { uuidv7 } from "../db/uuidv7.js";
5
+ function normalize(value) {
6
+ return value.trim();
7
+ }
8
+ function deriveKey(secret) {
9
+ return createHash("sha256").update(`jait:user-secrets:${secret}`).digest();
10
+ }
11
+ export class UserSecretService {
12
+ db;
13
+ key;
14
+ constructor(db, encryptionSecret) {
15
+ this.db = db;
16
+ this.key = deriveKey(encryptionSecret);
17
+ }
18
+ list(userId, type) {
19
+ const conditions = [userId ? eq(userSecrets.userId, userId) : isNull(userSecrets.userId)];
20
+ if (type)
21
+ conditions.push(eq(userSecrets.type, type));
22
+ return this.db
23
+ .select({
24
+ id: userSecrets.id,
25
+ userId: userSecrets.userId,
26
+ type: userSecrets.type,
27
+ key: userSecrets.key,
28
+ label: userSecrets.label,
29
+ createdAt: userSecrets.createdAt,
30
+ updatedAt: userSecrets.updatedAt,
31
+ lastUsedAt: userSecrets.lastUsedAt,
32
+ })
33
+ .from(userSecrets)
34
+ .where(and(...conditions))
35
+ .orderBy(desc(userSecrets.updatedAt))
36
+ .all();
37
+ }
38
+ getValue(userId, type, key) {
39
+ const row = this.db
40
+ .select()
41
+ .from(userSecrets)
42
+ .where(and(userId ? eq(userSecrets.userId, userId) : isNull(userSecrets.userId), eq(userSecrets.type, type), eq(userSecrets.key, key)))
43
+ .get();
44
+ if (!row)
45
+ return null;
46
+ this.markUsed(row.id, userId);
47
+ return this.decrypt(row.encryptedValue, row.iv, row.authTag);
48
+ }
49
+ save(params) {
50
+ const type = normalize(params.type);
51
+ const key = normalize(params.key);
52
+ const label = normalize(params.label);
53
+ const value = params.value;
54
+ if (!type)
55
+ throw new Error("Secret type is required");
56
+ if (!key)
57
+ throw new Error("Secret key is required");
58
+ if (!label)
59
+ throw new Error("Secret label is required");
60
+ if (!value)
61
+ throw new Error("Secret value is required");
62
+ const existing = this.db
63
+ .select({ id: userSecrets.id })
64
+ .from(userSecrets)
65
+ .where(and(params.userId ? eq(userSecrets.userId, params.userId) : isNull(userSecrets.userId), eq(userSecrets.type, type), eq(userSecrets.key, key)))
66
+ .get();
67
+ const encrypted = this.encrypt(value);
68
+ const now = new Date().toISOString();
69
+ if (existing) {
70
+ this.db
71
+ .update(userSecrets)
72
+ .set({
73
+ label,
74
+ encryptedValue: encrypted.encryptedValue,
75
+ iv: encrypted.iv,
76
+ authTag: encrypted.authTag,
77
+ updatedAt: now,
78
+ })
79
+ .where(eq(userSecrets.id, existing.id))
80
+ .run();
81
+ return this.getById(existing.id, params.userId);
82
+ }
83
+ const id = uuidv7();
84
+ this.db.insert(userSecrets).values({
85
+ id,
86
+ userId: params.userId ?? null,
87
+ type,
88
+ key,
89
+ label,
90
+ encryptedValue: encrypted.encryptedValue,
91
+ iv: encrypted.iv,
92
+ authTag: encrypted.authTag,
93
+ createdAt: now,
94
+ updatedAt: now,
95
+ lastUsedAt: null,
96
+ }).run();
97
+ return this.getById(id, params.userId);
98
+ }
99
+ delete(id, userId) {
100
+ const existing = this.getById(id, userId);
101
+ if (!existing)
102
+ return false;
103
+ this.db.delete(userSecrets).where(eq(userSecrets.id, id)).run();
104
+ return true;
105
+ }
106
+ getById(id, userId) {
107
+ return this.list(userId).find((secret) => secret.id === id);
108
+ }
109
+ markUsed(id, userId) {
110
+ this.db
111
+ .update(userSecrets)
112
+ .set({ lastUsedAt: new Date().toISOString() })
113
+ .where(userId ? and(eq(userSecrets.id, id), eq(userSecrets.userId, userId)) : eq(userSecrets.id, id))
114
+ .run();
115
+ }
116
+ encrypt(value) {
117
+ const iv = randomBytes(12);
118
+ const cipher = createCipheriv("aes-256-gcm", this.key, iv);
119
+ const encrypted = Buffer.concat([cipher.update(value, "utf8"), cipher.final()]);
120
+ return {
121
+ encryptedValue: encrypted.toString("base64"),
122
+ iv: iv.toString("base64"),
123
+ authTag: cipher.getAuthTag().toString("base64"),
124
+ };
125
+ }
126
+ decrypt(encryptedValue, iv, authTag) {
127
+ const decipher = createDecipheriv("aes-256-gcm", this.key, Buffer.from(iv, "base64"));
128
+ decipher.setAuthTag(Buffer.from(authTag, "base64"));
129
+ return Buffer.concat([
130
+ decipher.update(Buffer.from(encryptedValue, "base64")),
131
+ decipher.final(),
132
+ ]).toString("utf8");
133
+ }
134
+ }
135
+ //# sourceMappingURL=user-secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-secrets.js","sourceRoot":"","sources":["../../src/services/user-secrets.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export { createCronAddTool, createCronListTool, createCronRemoveTool, createCron
8
8
  export { createGatewayStatusTool } from "./gateway-tools.js";
9
9
  export { createWorkspaceAssignRepositoryTool } from "./workspace-tools.js";
10
10
  export { createJaitTodosTool } from "./repo-proposal-tools.js";
11
+ export { createUserAskTool } from "./user-question-tools.js";
11
12
  export { createScreenShareTool, createScreenCaptureTool, createScreenRecordTool, createOsTool } from "./screen-share-tools.js";
12
13
  export { createBrowserNavigateTool, createBrowserSnapshotTool, createBrowserInspectTool, createBrowserInteractionTools, createWebFetchTool, createWebSearchTool, createBrowserSandboxStartTool, } from "./browser-tools.js";
13
14
  export { createMemorySaveTool, createMemorySearchTool, createMemoryForgetTool, createMemoryListTool, createMemoryUpdateTool, } from "./memory-tools.js";
@@ -45,6 +46,8 @@ import type { ProviderRegistry } from "../providers/registry.js";
45
46
  import type { PreviewService } from "../services/preview.js";
46
47
  import type { ArchitectureDiagramService } from "../services/architecture-diagrams.js";
47
48
  import type { SecretInputService } from "../services/secret-input.js";
49
+ import type { UserQuestionService } from "../services/user-questions.js";
50
+ import type { UserSecretService } from "../services/user-secrets.js";
48
51
  import type { WorkspaceService } from "../services/workspaces.js";
49
52
  import type { RepositoryService } from "../services/repositories.js";
50
53
  import type { GitService } from "../services/git.js";
@@ -80,6 +83,8 @@ export interface ToolRegistryDeps {
80
83
  previewService?: PreviewService;
81
84
  architectureDiagramService?: ArchitectureDiagramService;
82
85
  secretInputService?: SecretInputService;
86
+ userQuestionService?: UserQuestionService;
87
+ userSecretService?: UserSecretService;
83
88
  skillRegistry?: import("../skills/index.js").SkillRegistry;
84
89
  }
85
90
  /** Create a ToolRegistry with all gateway tools pre-registered. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export { createCronAddTool, createCronListTool, createCronRemoveTool, createCron
7
7
  export { createGatewayStatusTool } from "./gateway-tools.js";
8
8
  export { createWorkspaceAssignRepositoryTool } from "./workspace-tools.js";
9
9
  export { createJaitTodosTool } from "./repo-proposal-tools.js";
10
+ export { createUserAskTool } from "./user-question-tools.js";
10
11
  export { createScreenShareTool, createScreenCaptureTool, createScreenRecordTool, createOsTool } from "./screen-share-tools.js";
11
12
  export { createBrowserNavigateTool, createBrowserSnapshotTool, createBrowserInspectTool, createBrowserInteractionTools, createWebFetchTool, createWebSearchTool, createBrowserSandboxStartTool, } from "./browser-tools.js";
12
13
  export { createMemorySaveTool, createMemorySearchTool, createMemoryForgetTool, createMemoryListTool, createMemoryUpdateTool, } from "./memory-tools.js";
@@ -36,6 +37,7 @@ import { createCronAddTool, createCronListTool, createCronRemoveTool, createCron
36
37
  import { createGatewayStatusTool } from "./gateway-tools.js";
37
38
  import { createWorkspaceAssignRepositoryTool } from "./workspace-tools.js";
38
39
  import { createJaitTodosTool } from "./repo-proposal-tools.js";
40
+ import { createUserAskTool } from "./user-question-tools.js";
39
41
  import { createScreenShareTool, createScreenCaptureTool, createScreenRecordTool, createOsTool } from "./screen-share-tools.js";
40
42
  import { createBrowserNavigateTool, createBrowserSnapshotTool, createBrowserInspectTool, createBrowserInteractionTools, createWebFetchTool, createWebSearchTool, createBrowserSandboxStartTool, } from "./browser-tools.js";
41
43
  import { createMemorySaveTool, createMemorySearchTool, createMemoryForgetTool, createMemoryListTool, createMemoryUpdateTool, } from "./memory-tools.js";
@@ -131,6 +133,9 @@ export function createToolRegistry(surfaceRegistry, deps = {}) {
131
133
  threadService: deps.threadService,
132
134
  }));
133
135
  }
136
+ if (deps.userQuestionService) {
137
+ tools.register(createUserAskTool(deps.userQuestionService));
138
+ }
134
139
  // Self-update / redeploy tool
135
140
  if (deps.config && deps.shutdown) {
136
141
  tools.register(createRedeployTool({
@@ -192,7 +197,7 @@ export function createToolRegistry(surfaceRegistry, deps = {}) {
192
197
  // Network tools
193
198
  tools.register(createNetworkScanTool());
194
199
  tools.register(createElevatedRunTool(deps.secretInputService));
195
- tools.register(createSshRunTool(deps.secretInputService));
200
+ tools.register(createSshRunTool(deps.secretInputService, undefined, deps.userSecretService));
196
201
  // Architecture tools
197
202
  tools.register(createArchitectureTool(deps.ws, deps.architectureDiagramService));
198
203
  // Maintenance tools
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ToolDefinition } from "./contracts.js";
2
2
  import type { SecretInputService } from "../services/secret-input.js";
3
+ import type { UserSecretService } from "../services/user-secrets.js";
3
4
  interface SshRunInput {
4
5
  host: string;
5
6
  username: string;
@@ -41,8 +42,8 @@ export type SshPtyFactory = (command: string, args: string[], options: {
41
42
  cwd: string;
42
43
  env: Record<string, string | undefined>;
43
44
  }) => PtyProcess;
44
- export declare function createSshRunTool(secretInput?: SecretInputService, ptyFactory?: SshPtyFactory): ToolDefinition<SshRunInput>;
45
- export declare function createSshSessionStartTool(secretInput?: SecretInputService, ptyFactory?: SshPtyFactory): ToolDefinition<SshSessionStartInput>;
45
+ export declare function createSshRunTool(secretInput?: SecretInputService, ptyFactory?: SshPtyFactory, userSecrets?: UserSecretService): ToolDefinition<SshRunInput>;
46
+ export declare function createSshSessionStartTool(secretInput?: SecretInputService, ptyFactory?: SshPtyFactory, userSecrets?: UserSecretService): ToolDefinition<SshSessionStartInput>;
46
47
  export declare function createSshSessionRunTool(): ToolDefinition<SshSessionRunInput>;
47
48
  export declare function createSshSessionCloseTool(): ToolDefinition<SshSessionCloseInput>;
48
49
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-tools.d.ts","sourceRoot":"","sources":["../../src/tools/ssh-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAKtE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACzE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACzC,KAAK,UAAU,CAAC;AA6UjB,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,CAqE1H;AAED,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,oBAAoB,CAAC,CA6D5I;AAED,wBAAgB,uBAAuB,IAAI,cAAc,CAAC,kBAAkB,CAAC,CAwC5E;AAED,wBAAgB,yBAAyB,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAgChF"}
1
+ {"version":3,"file":"ssh-tools.d.ts","sourceRoot":"","sources":["../../src/tools/ssh-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAKrE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACzE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACzC,KAAK,UAAU,CAAC;AA0VjB,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC,CA+E3J;AAED,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CA6D7K;AAED,wBAAgB,uBAAuB,IAAI,cAAc,CAAC,kBAAkB,CAAC,CAwC5E;AAED,wBAAgB,yBAAyB,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAgChF"}
@@ -2,6 +2,7 @@ import { createRequire } from "node:module";
2
2
  import { uuidv7 } from "../db/uuidv7.js";
3
3
  const require = createRequire(import.meta.url);
4
4
  const sshSessions = new Map();
5
+ const SSH_PASSWORD_SECRET_TYPE = "ssh-password";
5
6
  function loadNodePty() {
6
7
  return require("node-pty").spawn;
7
8
  }
@@ -27,6 +28,9 @@ function validateTargetPart(value, label) {
27
28
  return `${label} cannot contain whitespace, quotes, or @`;
28
29
  return null;
29
30
  }
31
+ function sshPasswordSecretKey(input) {
32
+ return `${input.username}@${input.host}:${input.port ?? 22}`;
33
+ }
30
34
  function buildSshArgs(input) {
31
35
  const args = [
32
36
  "-p", String(input.port),
@@ -128,10 +132,14 @@ function runCommandInSshSession(session, command, timeoutMs, context) {
128
132
  session.pty.write(`${command}\nprintf '\\n${marker}:%s\\n' "$?"\r`);
129
133
  });
130
134
  }
131
- async function getPasswordIfNeeded(secretInput, input, context, requestedBy) {
135
+ async function getPasswordIfNeeded(secretInput, userSecrets, input, context, requestedBy) {
132
136
  const authMethod = input.authMethod ?? "key";
133
137
  if (authMethod === "key")
134
138
  return null;
139
+ const secretKey = sshPasswordSecretKey(input);
140
+ const saved = userSecrets?.getValue(context.userId, SSH_PASSWORD_SECRET_TYPE, secretKey);
141
+ if (saved)
142
+ return saved;
135
143
  if (!secretInput)
136
144
  return undefined;
137
145
  return secretInput.requestSecret({
@@ -140,6 +148,10 @@ async function getPasswordIfNeeded(secretInput, input, context, requestedBy) {
140
148
  title: "SSH password",
141
149
  prompt: `Password for ${input.username}@${input.host}`,
142
150
  requestedBy,
151
+ rememberable: true,
152
+ rememberLabel: `SSH password for ${input.username}@${input.host}`,
153
+ secretType: SSH_PASSWORD_SECRET_TYPE,
154
+ secretKey,
143
155
  timeoutMs: input.timeoutMs && input.timeoutMs > 120_000 ? input.timeoutMs : 120_000,
144
156
  });
145
157
  }
@@ -280,7 +292,7 @@ function runSshInPty(input, context, ptyFactory) {
280
292
  }, { once: true });
281
293
  });
282
294
  }
283
- export function createSshRunTool(secretInput, ptyFactory) {
295
+ export function createSshRunTool(secretInput, ptyFactory, userSecrets) {
284
296
  return {
285
297
  name: "ssh.run",
286
298
  description: "Run a command on a remote Linux server over SSH. Uses key auth by default so it never asks for a password in chat unless authMethod is explicitly set to password.",
@@ -310,16 +322,27 @@ export function createSshRunTool(secretInput, ptyFactory) {
310
322
  const authMethod = input.authMethod ?? "key";
311
323
  let password = null;
312
324
  if (authMethod === "password") {
313
- if (!secretInput)
314
- return { ok: false, message: "Secret input service is unavailable" };
315
- password = await secretInput.requestSecret({
316
- sessionId: context.sessionId,
317
- userId: context.userId,
318
- title: "SSH password",
319
- prompt: `Password for ${input.username}@${input.host}`,
320
- requestedBy: "ssh.run",
321
- timeoutMs: input.timeoutMs && input.timeoutMs > 120_000 ? input.timeoutMs : 120_000,
322
- });
325
+ const secretKey = sshPasswordSecretKey({ ...input, port: input.port ?? 22 });
326
+ const saved = userSecrets?.getValue(context.userId, SSH_PASSWORD_SECRET_TYPE, secretKey);
327
+ if (saved) {
328
+ password = saved;
329
+ }
330
+ else {
331
+ if (!secretInput)
332
+ return { ok: false, message: "Secret input service is unavailable" };
333
+ password = await secretInput.requestSecret({
334
+ sessionId: context.sessionId,
335
+ userId: context.userId,
336
+ title: "SSH password",
337
+ prompt: `Password for ${input.username}@${input.host}`,
338
+ requestedBy: "ssh.run",
339
+ rememberable: true,
340
+ rememberLabel: `SSH password for ${input.username}@${input.host}`,
341
+ secretType: SSH_PASSWORD_SECRET_TYPE,
342
+ secretKey,
343
+ timeoutMs: input.timeoutMs && input.timeoutMs > 120_000 ? input.timeoutMs : 120_000,
344
+ });
345
+ }
323
346
  if (!password)
324
347
  return { ok: false, message: "SSH password was not provided" };
325
348
  }
@@ -349,7 +372,7 @@ export function createSshRunTool(secretInput, ptyFactory) {
349
372
  },
350
373
  };
351
374
  }
352
- export function createSshSessionStartTool(secretInput, ptyFactory) {
375
+ export function createSshSessionStartTool(secretInput, ptyFactory, userSecrets) {
353
376
  return {
354
377
  name: "ssh.session.start",
355
378
  description: "Start a persistent SSH PTY session to a remote Linux server. Uses key auth by default so it never asks for a password in chat unless authMethod is explicitly set to password.",
@@ -375,7 +398,7 @@ export function createSshSessionStartTool(secretInput, ptyFactory) {
375
398
  const userError = validateTargetPart(input.username, "username");
376
399
  if (hostError || userError)
377
400
  return { ok: false, message: hostError ?? userError };
378
- const password = await getPasswordIfNeeded(secretInput, input, context, "ssh.session.start");
401
+ const password = await getPasswordIfNeeded(secretInput, userSecrets, input, context, "ssh.session.start");
379
402
  if (password === undefined)
380
403
  return { ok: false, message: "Secret input service is unavailable" };
381
404
  if ((input.authMethod ?? "key") === "password" && !password) {