@jingyi0605/codingns 0.3.0 → 0.3.5

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 (156) hide show
  1. package/dist/public/assets/{TerminalPage-Dfw1QUqW.js → TerminalPage-CgrfstRm.js} +19 -19
  2. package/dist/public/assets/index-Cek6u0b9.css +1 -0
  3. package/dist/public/assets/index-THHY79si.js +122 -0
  4. package/dist/public/index.html +2 -2
  5. package/dist/server/config/env.d.ts +2 -0
  6. package/dist/server/config/env.js +35 -0
  7. package/dist/server/config/env.js.map +1 -1
  8. package/dist/server/modules/auth/auth-service.d.ts +18 -1
  9. package/dist/server/modules/auth/auth-service.js +168 -7
  10. package/dist/server/modules/auth/auth-service.js.map +1 -1
  11. package/dist/server/modules/butler/butler-codex-model-policy.d.ts +1 -0
  12. package/dist/server/modules/butler/butler-codex-model-policy.js +36 -0
  13. package/dist/server/modules/butler/butler-codex-model-policy.js.map +1 -0
  14. package/dist/server/modules/butler/butler-control-session-service.d.ts +13 -1
  15. package/dist/server/modules/butler/butler-control-session-service.js +55 -231
  16. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  17. package/dist/server/modules/butler/butler-controller.d.ts +17 -0
  18. package/dist/server/modules/butler/butler-controller.js +20 -1
  19. package/dist/server/modules/butler/butler-controller.js.map +1 -1
  20. package/dist/server/modules/butler/butler-follow-up-service.js +7 -3
  21. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  22. package/dist/server/modules/butler/butler-inbox-analysis-service.d.ts +36 -0
  23. package/dist/server/modules/butler/butler-inbox-analysis-service.js +375 -0
  24. package/dist/server/modules/butler/butler-inbox-analysis-service.js.map +1 -0
  25. package/dist/server/modules/butler/butler-inbox-instruction-adapter.d.ts +23 -0
  26. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +96 -0
  27. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -0
  28. package/dist/server/modules/butler/butler-inbox-service.d.ts +39 -2
  29. package/dist/server/modules/butler/butler-inbox-service.js +392 -2
  30. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
  31. package/dist/server/modules/butler/butler-session-service.d.ts +8 -0
  32. package/dist/server/modules/butler/butler-session-service.js +205 -53
  33. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  34. package/dist/server/modules/butler/butler-session-summary-service.d.ts +1 -0
  35. package/dist/server/modules/butler/butler-session-summary-service.js +48 -23
  36. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  37. package/dist/server/modules/butler/butler-workspace-context.d.ts +13 -0
  38. package/dist/server/modules/butler/butler-workspace-context.js +223 -0
  39. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -0
  40. package/dist/server/modules/client/client-controller.d.ts +6 -0
  41. package/dist/server/modules/client/client-controller.js +30 -8
  42. package/dist/server/modules/client/client-controller.js.map +1 -1
  43. package/dist/server/modules/client/client-service.d.ts +22 -10
  44. package/dist/server/modules/client/client-service.js +77 -100
  45. package/dist/server/modules/client/client-service.js.map +1 -1
  46. package/dist/server/modules/client/npm-global-package-service.d.ts +21 -0
  47. package/dist/server/modules/client/npm-global-package-service.js +210 -0
  48. package/dist/server/modules/client/npm-global-package-service.js.map +1 -0
  49. package/dist/server/modules/client/service-update-task-service.d.ts +15 -0
  50. package/dist/server/modules/client/service-update-task-service.js +147 -0
  51. package/dist/server/modules/client/service-update-task-service.js.map +1 -0
  52. package/dist/server/modules/client/service-update-types.d.ts +30 -0
  53. package/dist/server/modules/client/service-update-types.js +2 -0
  54. package/dist/server/modules/client/service-update-types.js.map +1 -0
  55. package/dist/server/modules/model-switch/cc-switch-adapter.d.ts +36 -0
  56. package/dist/server/modules/model-switch/cc-switch-adapter.js +317 -0
  57. package/dist/server/modules/model-switch/cc-switch-adapter.js.map +1 -0
  58. package/dist/server/modules/model-switch/model-switch-controller.d.ts +11 -0
  59. package/dist/server/modules/model-switch/model-switch-controller.js +30 -0
  60. package/dist/server/modules/model-switch/model-switch-controller.js.map +1 -0
  61. package/dist/server/modules/model-switch/model-switch-service.d.ts +16 -0
  62. package/dist/server/modules/model-switch/model-switch-service.js +29 -0
  63. package/dist/server/modules/model-switch/model-switch-service.js.map +1 -0
  64. package/dist/server/modules/preferences/profile-service.d.ts +1 -0
  65. package/dist/server/modules/preferences/profile-service.js +9 -0
  66. package/dist/server/modules/preferences/profile-service.js.map +1 -1
  67. package/dist/server/modules/sessions/codex-app-server-helper-process.js +3 -0
  68. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  69. package/dist/server/modules/sessions/session-activity-authority-service.d.ts +3 -1
  70. package/dist/server/modules/sessions/session-activity-authority-service.js +3 -0
  71. package/dist/server/modules/sessions/session-activity-authority-service.js.map +1 -1
  72. package/dist/server/modules/sessions/session-activity-inspector.d.ts +1 -1
  73. package/dist/server/modules/sessions/session-activity-inspector.js +43 -16
  74. package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
  75. package/dist/server/modules/sessions/session-controller.d.ts +3 -3
  76. package/dist/server/modules/sessions/session-controller.js +3 -3
  77. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  78. package/dist/server/modules/sessions/session-history-service.d.ts +3 -0
  79. package/dist/server/modules/sessions/session-history-service.js +259 -39
  80. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  81. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +7 -3
  82. package/dist/server/modules/sessions/session-live-runtime-service.js +47 -11
  83. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  84. package/dist/server/modules/sessions/session-message-attachment-service.d.ts +8 -8
  85. package/dist/server/modules/sessions/session-message-attachment-service.js +25 -34
  86. package/dist/server/modules/sessions/session-message-attachment-service.js.map +1 -1
  87. package/dist/server/modules/sessions/session-provider-error-mapper.js +7 -0
  88. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  89. package/dist/server/modules/tailscale/tailscale-manager.js +5 -1
  90. package/dist/server/modules/tailscale/tailscale-manager.js.map +1 -1
  91. package/dist/server/modules/tasks/task-lane-executors.js +3 -0
  92. package/dist/server/modules/tasks/task-lane-executors.js.map +1 -1
  93. package/dist/server/modules/tasks/task-types.d.ts +2 -0
  94. package/dist/server/modules/tasks/task-types.js +3 -1
  95. package/dist/server/modules/tasks/task-types.js.map +1 -1
  96. package/dist/server/modules/terminal/command-template-service.js +10 -1
  97. package/dist/server/modules/terminal/command-template-service.js.map +1 -1
  98. package/dist/server/modules/terminal/template-port-runtime.d.ts +12 -1
  99. package/dist/server/modules/terminal/template-port-runtime.js +189 -17
  100. package/dist/server/modules/terminal/template-port-runtime.js.map +1 -1
  101. package/dist/server/modules/terminal/terminal-service.js +30 -3
  102. package/dist/server/modules/terminal/terminal-service.js.map +1 -1
  103. package/dist/server/modules/workspace/workspace-code-composition.js +95 -2
  104. package/dist/server/modules/workspace/workspace-code-composition.js.map +1 -1
  105. package/dist/server/routes/butler.js +4 -0
  106. package/dist/server/routes/butler.js.map +1 -1
  107. package/dist/server/routes/client.js +2 -0
  108. package/dist/server/routes/client.js.map +1 -1
  109. package/dist/server/routes/sessions.js +1 -1
  110. package/dist/server/routes/sessions.js.map +1 -1
  111. package/dist/server/routes/system.d.ts +2 -1
  112. package/dist/server/routes/system.js +3 -1
  113. package/dist/server/routes/system.js.map +1 -1
  114. package/dist/server/server/create-server.d.ts +4 -0
  115. package/dist/server/server/create-server.js +51 -7
  116. package/dist/server/server/create-server.js.map +1 -1
  117. package/dist/server/shared/errors/app-error.d.ts +2 -0
  118. package/dist/server/shared/errors/app-error.js +2 -0
  119. package/dist/server/shared/errors/app-error.js.map +1 -1
  120. package/dist/server/shared/http/error-handler.d.ts +2 -1
  121. package/dist/server/shared/http/error-handler.js +3 -2
  122. package/dist/server/shared/http/error-handler.js.map +1 -1
  123. package/dist/server/storage/repositories/auth-login-attempt-repository.d.ts +9 -0
  124. package/dist/server/storage/repositories/auth-login-attempt-repository.js +59 -0
  125. package/dist/server/storage/repositories/auth-login-attempt-repository.js.map +1 -0
  126. package/dist/server/storage/repositories/butler-control-session-repository.d.ts +3 -0
  127. package/dist/server/storage/repositories/butler-control-session-repository.js +80 -4
  128. package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
  129. package/dist/server/storage/repositories/butler-inbox-item-repository.js +54 -3
  130. package/dist/server/storage/repositories/butler-inbox-item-repository.js.map +1 -1
  131. package/dist/server/storage/repositories/terminal-instance-repository.js +1 -1
  132. package/dist/server/storage/repositories/terminal-instance-repository.js.map +1 -1
  133. package/dist/server/storage/repositories/user-preference-profile-repository.js +6 -3
  134. package/dist/server/storage/repositories/user-preference-profile-repository.js.map +1 -1
  135. package/dist/server/storage/sqlite/client.js +127 -0
  136. package/dist/server/storage/sqlite/client.js.map +1 -1
  137. package/dist/server/storage/sqlite/schema.sql +19 -1
  138. package/dist/server/types/domain.d.ts +37 -1
  139. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +23 -0
  140. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +162 -0
  141. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
  142. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -0
  143. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +89 -33
  144. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  145. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +18 -2
  146. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  147. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +3 -1
  148. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +238 -53
  149. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  150. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +1 -0
  151. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +1 -1
  152. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +6 -2
  153. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +1 -1
  154. package/package.json +1 -1
  155. package/dist/public/assets/index-DR2rPNi7.css +0 -1
  156. package/dist/public/assets/index-DTOruahn.js +0 -114
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
6
  <title>CodingNS</title>
7
- <script type="module" crossorigin src="/assets/index-DTOruahn.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-DR2rPNi7.css">
7
+ <script type="module" crossorigin src="/assets/index-THHY79si.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-Cek6u0b9.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
@@ -26,6 +26,8 @@ export interface HostConfig {
26
26
  claudeCodeHomeDir: string;
27
27
  codexHomeDir: string;
28
28
  tailscaleCliPath: string;
29
+ ccSwitchCliPath: string;
30
+ ccSwitchDbPath: string;
29
31
  codexCliPath: string;
30
32
  claudeHookBridgeToken: string;
31
33
  serverUpdatePackageName: string;
@@ -14,6 +14,9 @@ export function resolveHostConfig(overrides = {}) {
14
14
  const opencodeDataDir = overrides.opencodeDataDir ??
15
15
  process.env.CODINGNS_OPENCODE_DATA_DIR ??
16
16
  path.join(homeDir, ".local", "share", "opencode");
17
+ const ccSwitchDbPath = overrides.ccSwitchDbPath ??
18
+ process.env.CODINGNS_CC_SWITCH_DB_PATH ??
19
+ path.join(homeDir, ".cc-switch", "cc-switch.db");
17
20
  const databasePath = overrides.databasePath ??
18
21
  process.env.CODINGNS_DB_PATH ??
19
22
  path.join(appRootDir, "data", "host", "host.sqlite");
@@ -34,6 +37,7 @@ export function resolveHostConfig(overrides = {}) {
34
37
  process.env.CODINGNS_KIMI_CONFIG_PATH ??
35
38
  path.join(kimiHomeDir, "config.toml");
36
39
  const opencodeCliPath = resolveOpenCodeCliPath(overrides.opencodeCliPath ?? process.env.CODINGNS_OPENCODE_COMMAND, homeDir);
40
+ const ccSwitchCliPath = resolveCcSwitchCliPath(overrides.ccSwitchCliPath ?? process.env.CODINGNS_CC_SWITCH_COMMAND, homeDir);
37
41
  const configuredOpenCodeBaseUrl = normalizeOptionalText(overrides.opencodeBaseUrl ?? process.env.CODINGNS_OPENCODE_BASE_URL ?? null);
38
42
  return {
39
43
  host: overrides.host ?? process.env.CODINGNS_HOST ?? "0.0.0.0",
@@ -86,6 +90,8 @@ export function resolveHostConfig(overrides = {}) {
86
90
  tailscaleCliPath: overrides.tailscaleCliPath ??
87
91
  process.env.CODINGNS_TAILSCALE_COMMAND ??
88
92
  "tailscale",
93
+ ccSwitchCliPath,
94
+ ccSwitchDbPath,
89
95
  codexCliPath,
90
96
  claudeHookBridgeToken: overrides.claudeHookBridgeToken ??
91
97
  process.env.CODINGNS_CLAUDE_HOOK_TOKEN ??
@@ -279,6 +285,35 @@ function resolveOpenCodeCliPath(configuredPath, homeDir) {
279
285
  }
280
286
  return "opencode";
281
287
  }
288
+ function resolveCcSwitchCliPath(configuredPath, homeDir) {
289
+ const normalizedConfiguredPath = configuredPath?.trim();
290
+ if (normalizedConfiguredPath) {
291
+ return normalizedConfiguredPath;
292
+ }
293
+ const windowsGlobalNpmRoot = normalizeOptionalText(process.env.APPDATA)
294
+ ? path.join(process.env.APPDATA, "npm")
295
+ : null;
296
+ const candidates = process.platform === "win32"
297
+ ? [
298
+ path.resolve(process.cwd(), "node_modules", ".bin", "cc-switch.cmd"),
299
+ path.resolve(process.cwd(), "node_modules", ".bin", "cc-switch.exe"),
300
+ path.resolve(process.cwd(), "node_modules", ".bin", "cc-switch"),
301
+ path.join(homeDir, ".local", "bin", "cc-switch.exe"),
302
+ path.join(homeDir, ".local", "bin", "cc-switch.cmd"),
303
+ windowsGlobalNpmRoot ? path.join(windowsGlobalNpmRoot, "cc-switch.cmd") : null,
304
+ windowsGlobalNpmRoot ? path.join(windowsGlobalNpmRoot, "cc-switch.exe") : null
305
+ ]
306
+ : [
307
+ path.resolve(process.cwd(), "node_modules", ".bin", "cc-switch"),
308
+ path.join(homeDir, ".local", "bin", "cc-switch")
309
+ ];
310
+ for (const candidate of candidates) {
311
+ if (candidate && existsSync(candidate)) {
312
+ return candidate;
313
+ }
314
+ }
315
+ return "cc-switch";
316
+ }
282
317
  function resolvePersistentSecret(secretPath) {
283
318
  try {
284
319
  if (existsSync(secretPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/config/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/config/env.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { HostConfig } from "../../config/env.js";
2
2
  import type { DemoCleanupService, DemoOnlineTracker } from "../demo/demo-cleanup-service.js";
3
+ import type { AuthLoginAttemptRepository } from "../../storage/repositories/auth-login-attempt-repository.js";
3
4
  import type { AuthTokenRepository } from "../../storage/repositories/auth-token-repository.js";
4
5
  import type { AuthUserRepository } from "../../storage/repositories/auth-user-repository.js";
5
6
  import type { BootstrapStateRepository } from "../../storage/repositories/bootstrap-state-repository.js";
@@ -15,6 +16,8 @@ export interface AuthContext {
15
16
  export interface LoginInput {
16
17
  username: string;
17
18
  password: string;
19
+ captchaId?: string;
20
+ captchaCode?: string;
18
21
  }
19
22
  export interface RefreshInput {
20
23
  refreshToken: string;
@@ -32,10 +35,11 @@ export declare class AuthService {
32
35
  private readonly bootstrapStateRepository;
33
36
  private readonly authUserRepository;
34
37
  private readonly authTokenRepository;
38
+ private readonly authLoginAttemptRepository;
35
39
  private readonly config;
36
40
  private readonly demoCleanupService?;
37
41
  private readonly demoOnlineTracker?;
38
- constructor(bootstrapStateRepository: BootstrapStateRepository, authUserRepository: AuthUserRepository, authTokenRepository: AuthTokenRepository, config: HostConfig, demoServices?: {
42
+ constructor(bootstrapStateRepository: BootstrapStateRepository, authUserRepository: AuthUserRepository, authTokenRepository: AuthTokenRepository, authLoginAttemptRepository: AuthLoginAttemptRepository, config: HostConfig, demoServices?: {
39
43
  cleanupService: DemoCleanupService;
40
44
  onlineTracker: DemoOnlineTracker;
41
45
  });
@@ -47,4 +51,17 @@ export declare class AuthService {
47
51
  authenticateAccessToken(accessToken: string): AuthenticatedUser;
48
52
  ensureInitialized(): void;
49
53
  private issueTokenPair;
54
+ private normalizeUsername;
55
+ private normalizeCaptchaCode;
56
+ private readLoginAttempt;
57
+ private ensureCaptchaSatisfied;
58
+ private recordFailedLogin;
59
+ private rotateCaptchaChallenge;
60
+ private toCaptchaChallenge;
61
+ private createInvalidCredentialsError;
62
+ private createCaptchaError;
63
+ private isCaptchaRequired;
64
+ private createCaptchaCode;
65
+ private buildCaptchaImageDataUrl;
66
+ private buildCaptchaSvg;
50
67
  }
@@ -1,33 +1,47 @@
1
+ import { randomInt } from "node:crypto";
1
2
  import { AppError } from "../../shared/errors/app-error.js";
2
3
  import { hashToken, verifyPassword } from "../../shared/utils/hash.js";
3
4
  import { createId } from "../../shared/utils/id.js";
4
5
  import { addSeconds, nowIso } from "../../shared/utils/time.js";
5
6
  import { createOpaqueToken } from "../../shared/utils/tokens.js";
7
+ const LOGIN_CAPTCHA_THRESHOLD = 3;
8
+ const LOGIN_CAPTCHA_LENGTH = 4;
9
+ const LOGIN_CAPTCHA_TTL_SECONDS = 5 * 60;
10
+ const LOGIN_CAPTCHA_CHARS = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ";
11
+ const LOGIN_CAPTCHA_WIDTH = 136;
12
+ const LOGIN_CAPTCHA_HEIGHT = 48;
6
13
  export class AuthService {
7
14
  bootstrapStateRepository;
8
15
  authUserRepository;
9
16
  authTokenRepository;
17
+ authLoginAttemptRepository;
10
18
  config;
11
19
  demoCleanupService;
12
20
  demoOnlineTracker;
13
- constructor(bootstrapStateRepository, authUserRepository, authTokenRepository, config, demoServices) {
21
+ constructor(bootstrapStateRepository, authUserRepository, authTokenRepository, authLoginAttemptRepository, config, demoServices) {
14
22
  this.bootstrapStateRepository = bootstrapStateRepository;
15
23
  this.authUserRepository = authUserRepository;
16
24
  this.authTokenRepository = authTokenRepository;
25
+ this.authLoginAttemptRepository = authLoginAttemptRepository;
17
26
  this.config = config;
18
27
  this.demoCleanupService = demoServices?.cleanupService;
19
28
  this.demoOnlineTracker = demoServices?.onlineTracker;
20
29
  }
21
30
  login(input) {
22
31
  this.ensureInitialized();
23
- const user = this.authUserRepository.findByUsername(input.username.trim());
32
+ const now = new Date();
33
+ const username = this.normalizeUsername(input.username);
34
+ const attempt = this.readLoginAttempt(username, now);
35
+ this.ensureCaptchaSatisfied(input, attempt, now);
36
+ const user = this.authUserRepository.findByUsername(username);
24
37
  if (!user || !verifyPassword(input.password, user.passwordHash)) {
25
- throw new AppError({
26
- statusCode: 401,
27
- errorCode: "INVALID_CREDENTIALS",
28
- detail: "用户名或密码错误"
29
- });
38
+ const nextAttempt = this.recordFailedLogin(username, attempt, now);
39
+ if (nextAttempt.challenge) {
40
+ throw this.createInvalidCredentialsError(nextAttempt.challenge);
41
+ }
42
+ throw this.createInvalidCredentialsError();
30
43
  }
44
+ this.authLoginAttemptRepository.deleteByUsername(username);
31
45
  const result = {
32
46
  ...this.issueTokenPair(user.id),
33
47
  user: {
@@ -167,5 +181,152 @@ export class AuthService {
167
181
  expiresIn: this.config.accessTokenTtlSeconds
168
182
  };
169
183
  }
184
+ normalizeUsername(username) {
185
+ return username.trim();
186
+ }
187
+ normalizeCaptchaCode(code) {
188
+ return code?.trim().replace(/\s+/g, "").toUpperCase() ?? "";
189
+ }
190
+ readLoginAttempt(username, now) {
191
+ const attempt = this.authLoginAttemptRepository.findByUsername(username);
192
+ if (!attempt) {
193
+ return null;
194
+ }
195
+ if (!attempt.captchaExpiresAt || Date.parse(attempt.captchaExpiresAt) > now.getTime()) {
196
+ return attempt;
197
+ }
198
+ const nextAttempt = {
199
+ ...attempt,
200
+ captchaId: null,
201
+ captchaCodeHash: null,
202
+ captchaExpiresAt: null,
203
+ updatedAt: nowIso(now)
204
+ };
205
+ this.authLoginAttemptRepository.upsert(nextAttempt);
206
+ return nextAttempt;
207
+ }
208
+ ensureCaptchaSatisfied(input, attempt, now) {
209
+ if (!attempt || !this.isCaptchaRequired(attempt)) {
210
+ return;
211
+ }
212
+ const normalizedCaptchaCode = this.normalizeCaptchaCode(input.captchaCode);
213
+ if (!input.captchaId || normalizedCaptchaCode.length === 0) {
214
+ const nextChallenge = this.rotateCaptchaChallenge(attempt, now);
215
+ throw this.createCaptchaError("CAPTCHA_REQUIRED", "请先完成图形验证码", nextChallenge.challenge);
216
+ }
217
+ if (!attempt.captchaId ||
218
+ !attempt.captchaCodeHash ||
219
+ input.captchaId !== attempt.captchaId ||
220
+ hashToken(normalizedCaptchaCode) !== attempt.captchaCodeHash) {
221
+ const nextChallenge = this.rotateCaptchaChallenge(attempt, now);
222
+ throw this.createCaptchaError("CAPTCHA_INVALID", "图形验证码错误,请重试", nextChallenge.challenge);
223
+ }
224
+ }
225
+ recordFailedLogin(username, attempt, now) {
226
+ const timestamp = nowIso(now);
227
+ const nextAttempt = {
228
+ username,
229
+ failedAttemptCount: Math.min((attempt?.failedAttemptCount ?? 0) + 1, LOGIN_CAPTCHA_THRESHOLD),
230
+ captchaId: attempt?.captchaId ?? null,
231
+ captchaCodeHash: attempt?.captchaCodeHash ?? null,
232
+ captchaExpiresAt: attempt?.captchaExpiresAt ?? null,
233
+ createdAt: attempt?.createdAt ?? timestamp,
234
+ updatedAt: timestamp
235
+ };
236
+ if (!this.isCaptchaRequired(nextAttempt)) {
237
+ nextAttempt.captchaId = null;
238
+ nextAttempt.captchaCodeHash = null;
239
+ nextAttempt.captchaExpiresAt = null;
240
+ this.authLoginAttemptRepository.upsert(nextAttempt);
241
+ return {
242
+ record: nextAttempt,
243
+ challenge: null
244
+ };
245
+ }
246
+ return this.rotateCaptchaChallenge(nextAttempt, now);
247
+ }
248
+ rotateCaptchaChallenge(attempt, now) {
249
+ const captchaCode = this.createCaptchaCode();
250
+ const timestamp = nowIso(now);
251
+ const nextAttempt = {
252
+ username: attempt.username,
253
+ failedAttemptCount: Math.max(attempt.failedAttemptCount, LOGIN_CAPTCHA_THRESHOLD),
254
+ captchaId: createId(),
255
+ captchaCodeHash: hashToken(captchaCode),
256
+ captchaExpiresAt: addSeconds(now, LOGIN_CAPTCHA_TTL_SECONDS),
257
+ createdAt: attempt.createdAt,
258
+ updatedAt: timestamp
259
+ };
260
+ this.authLoginAttemptRepository.upsert(nextAttempt);
261
+ return {
262
+ record: nextAttempt,
263
+ challenge: this.toCaptchaChallenge(nextAttempt, captchaCode)
264
+ };
265
+ }
266
+ toCaptchaChallenge(attempt, captchaCode) {
267
+ return {
268
+ captchaId: attempt.captchaId ?? "",
269
+ imageDataUrl: this.buildCaptchaImageDataUrl(captchaCode)
270
+ };
271
+ }
272
+ createInvalidCredentialsError(challenge) {
273
+ return new AppError({
274
+ statusCode: 401,
275
+ errorCode: "INVALID_CREDENTIALS",
276
+ detail: challenge ? "用户名或密码错误,请完成图形验证码后重试" : "用户名或密码错误",
277
+ data: challenge
278
+ ? {
279
+ captcha: challenge
280
+ }
281
+ : undefined
282
+ });
283
+ }
284
+ createCaptchaError(errorCode, detail, challenge) {
285
+ return new AppError({
286
+ statusCode: 400,
287
+ errorCode,
288
+ detail,
289
+ field: "captchaCode",
290
+ data: {
291
+ captcha: challenge
292
+ }
293
+ });
294
+ }
295
+ isCaptchaRequired(attempt) {
296
+ return (attempt?.failedAttemptCount ?? 0) >= LOGIN_CAPTCHA_THRESHOLD;
297
+ }
298
+ createCaptchaCode() {
299
+ let code = "";
300
+ for (let index = 0; index < LOGIN_CAPTCHA_LENGTH; index += 1) {
301
+ code += LOGIN_CAPTCHA_CHARS[randomInt(0, LOGIN_CAPTCHA_CHARS.length)];
302
+ }
303
+ return code;
304
+ }
305
+ buildCaptchaImageDataUrl(code) {
306
+ const svg = this.buildCaptchaSvg(code);
307
+ return `data:image/svg+xml;base64,${Buffer.from(svg, "utf8").toString("base64")}`;
308
+ }
309
+ buildCaptchaSvg(code) {
310
+ const lines = Array.from({ length: 4 }, () => `<line x1="${randomInt(0, LOGIN_CAPTCHA_WIDTH)}" y1="${randomInt(0, LOGIN_CAPTCHA_HEIGHT)}" x2="${randomInt(0, LOGIN_CAPTCHA_WIDTH)}" y2="${randomInt(0, LOGIN_CAPTCHA_HEIGHT)}" stroke="rgba(14,165,233,0.45)" stroke-width="${randomInt(1, 3)}" />`).join("");
311
+ const dots = Array.from({ length: 16 }, () => `<circle cx="${randomInt(4, LOGIN_CAPTCHA_WIDTH - 4)}" cy="${randomInt(4, LOGIN_CAPTCHA_HEIGHT - 4)}" r="${randomInt(1, 3)}" fill="rgba(148,163,184,0.45)" />`).join("");
312
+ const chars = code
313
+ .split("")
314
+ .map((char, index) => {
315
+ const x = 18 + index * 26 + randomInt(-2, 3);
316
+ const y = 31 + randomInt(-2, 4);
317
+ const rotate = randomInt(-22, 23);
318
+ return `<text x="${x}" y="${y}" transform="rotate(${rotate} ${x} ${y})" font-size="25" font-family="monospace" font-weight="700" fill="#f8fafc">${char}</text>`;
319
+ })
320
+ .join("");
321
+ return `
322
+ <svg xmlns="http://www.w3.org/2000/svg" width="${LOGIN_CAPTCHA_WIDTH}" height="${LOGIN_CAPTCHA_HEIGHT}" viewBox="0 0 ${LOGIN_CAPTCHA_WIDTH} ${LOGIN_CAPTCHA_HEIGHT}" role="img" aria-label="login captcha">
323
+ <rect width="100%" height="100%" rx="8" fill="#0f172a" />
324
+ <rect x="1" y="1" width="${LOGIN_CAPTCHA_WIDTH - 2}" height="${LOGIN_CAPTCHA_HEIGHT - 2}" rx="7" fill="none" stroke="rgba(56,189,248,0.35)" />
325
+ ${lines}
326
+ ${dots}
327
+ ${chars}
328
+ </svg>
329
+ `.trim();
330
+ }
170
331
  }
171
332
  //# sourceMappingURL=auth-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAoCjE,MAAM,OAAO,WAAW;IAKH;IACA;IACA;IACA;IAPF,kBAAkB,CAAsB;IACxC,iBAAiB,CAAqB;IAEvD,YACmB,wBAAkD,EAClD,kBAAsC,EACtC,mBAAwC,EACxC,MAAkB,EACnC,YAAuF;QAJtE,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,WAAM,GAAN,MAAM,CAAY;QAGnC,IAAI,CAAC,kBAAkB,GAAG,YAAY,EAAE,cAAc,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,YAAY,EAAE,aAAa,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,KAAiB;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,qBAAqB;gBAChC,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG;YACb,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;SACF,CAAC;QAEF,iBAAiB;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,KAAmB;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAEvF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,eAAe;gBAC1B,MAAM,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,eAAe;gBAC1B,MAAM,EAAE,mBAAmB;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEpE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,wEAAwE;QACxE,qEAAqE;QAErE,OAAO;YACL,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAmB,EAAE,KAAmB;QAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAE1C,yBAAyB;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,YAAY,EAAE,MAAM,CAAC;QAEpC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAE7D,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;QAClF,CAAC;QAED,8BAA8B;QAC9B,IAAI,MAAM,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChE,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC7E,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,uBAAuB,CAAC,WAAmB;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;QAE3F,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,iBAAiB;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7D,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,eAAe;gBAC1B,MAAM,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1D,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,oBAAoB;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAc;QACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;QAEzC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC9B,EAAE,EAAE,QAAQ,EAAE;YACd,MAAM;YACN,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC;YACjC,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAC7D,SAAS,EAAE,IAAI;YACf,SAAS;SACV,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC9B,EAAE,EAAE,QAAQ,EAAE;YACd,MAAM;YACN,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC;YAClC,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAC9D,SAAS,EAAE,IAAI;YACf,SAAS;SACV,CAAC,CAAC;QAEH,OAAO;YACL,WAAW;YACX,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;SAC7C,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function resolveButlerCodexBackgroundModel(preferredModel: string, sourceCodexHomeDir: string | null): string | null;
@@ -0,0 +1,36 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ const CODEX_MODEL_PROVIDER_PATTERN = /^\s*model_provider\s*=\s*"([^"]+)"/m;
5
+ export function resolveButlerCodexBackgroundModel(preferredModel, sourceCodexHomeDir) {
6
+ const provider = readCodexModelProvider(sourceCodexHomeDir);
7
+ // 当前 api 供应商下,gpt-5.1-codex-mini 会出现空完成/502,后台 Butler 任务不能再强行覆盖模型。
8
+ if (provider === "api") {
9
+ return null;
10
+ }
11
+ return preferredModel;
12
+ }
13
+ function readCodexModelProvider(sourceCodexHomeDir) {
14
+ const homeDir = resolveSourceCodexHomeDir(sourceCodexHomeDir);
15
+ const configPath = path.join(homeDir, "config.toml");
16
+ if (!fs.existsSync(configPath)) {
17
+ return null;
18
+ }
19
+ try {
20
+ const content = fs.readFileSync(configPath, "utf8");
21
+ const matched = content.match(CODEX_MODEL_PROVIDER_PATTERN);
22
+ const provider = matched?.[1]?.trim() ?? "";
23
+ return provider.length > 0 ? provider : null;
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ function resolveSourceCodexHomeDir(sourceCodexHomeDir) {
30
+ const configured = sourceCodexHomeDir?.trim();
31
+ if (configured) {
32
+ return path.resolve(configured);
33
+ }
34
+ return path.resolve(path.join(os.homedir(), ".codex"));
35
+ }
36
+ //# sourceMappingURL=butler-codex-model-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"butler-codex-model-policy.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-codex-model-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,4BAA4B,GAAG,qCAAqC,CAAC;AAE3E,MAAM,UAAU,iCAAiC,CAC/C,cAAsB,EACtB,kBAAiC;IAEjC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IAE5D,mEAAmE;IACnE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,sBAAsB,CAAC,kBAAiC;IAC/D,MAAM,OAAO,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,kBAAiC;IAClE,MAAM,UAAU,GAAG,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAE9C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ButlerControlSession, SessionListItem } from "../../types/domain.js";
1
+ import type { ButlerControlSession, ButlerControlSessionPurpose, SessionListItem } from "../../types/domain.js";
2
2
  import type { ButlerControlSessionRepository } from "../../storage/repositories/butler-control-session-repository.js";
3
3
  import { type ButlerProfileService } from "./butler-profile-service.js";
4
4
  import type { ButlerAuthService } from "./butler-auth-service.js";
@@ -16,9 +16,13 @@ export interface StartButlerControlSessionInput {
16
16
  model?: string | null;
17
17
  reasoningLevel?: string | null;
18
18
  permissionMode?: string | null;
19
+ purpose?: ButlerControlSessionPurpose;
20
+ title?: string | null;
21
+ sourceItemId?: string | null;
19
22
  }
20
23
  export interface SendButlerControlMessageInput extends StartButlerControlSessionInput {
21
24
  content?: string;
25
+ controlSessionId?: string | null;
22
26
  }
23
27
  export declare class ButlerControlSessionService {
24
28
  private readonly butlerProfileService;
@@ -33,6 +37,8 @@ export declare class ButlerControlSessionService {
33
37
  private readonly sourceCodexHomeDir;
34
38
  constructor(butlerProfileService: ButlerProfileService, butlerControlSessionRepository: ButlerControlSessionRepository, workspaceService: Pick<WorkspaceService, "importWorkspace">, sessionHistoryService: Pick<SessionHistoryService, "getSession" | "resumeSession">, sessionLiveRuntimeService: Pick<SessionLiveRuntimeService, "startLiveSession" | "sendLiveMessage">, butlerContextAggregator: Pick<ButlerContextAggregator, "resolvePromptContext">, butlerAuthService: Pick<ButlerAuthService, "ensureWorkspaceCredential" | "getCredentialFilePath">, skillManagerService: Pick<SkillManagerService, "getOverview" | "importUnmanagedSkill">, codexHomeDir?: string | null, sourceCodexHomeDir?: string | null);
35
39
  getCurrentSession(userId: string): ButlerControlSessionView | null;
40
+ getSession(controlSessionId: string, userId: string): ButlerControlSessionView | null;
41
+ listSessions(userId: string): ButlerControlSessionView[];
36
42
  resetCurrentSession(): void;
37
43
  startSession(userId: string, input?: StartButlerControlSessionInput): Promise<ButlerControlSessionView>;
38
44
  resumeCurrentSession(userId: string): Promise<ButlerControlSessionView & {
@@ -50,8 +56,14 @@ export declare class ButlerControlSessionService {
50
56
  message: Awaited<ReturnType<SessionLiveRuntimeService["sendLiveMessage"]>>["message"];
51
57
  }>;
52
58
  private requireCurrentSession;
59
+ private requireSessionById;
53
60
  private toView;
54
61
  private prepareWorkspace;
55
62
  private syncWorkspaceContext;
56
63
  private markFailed;
64
+ updateSessionStatusBySessionId(input: {
65
+ sessionId: string;
66
+ status: ButlerControlSession["status"];
67
+ lastSummary?: string | null;
68
+ }): ButlerControlSession | null;
57
69
  }