aicodeman 1.33.2 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/config/cli-registry/schema.d.ts +18 -0
  2. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  3. package/dist/config/cli-registry/schema.js +27 -0
  4. package/dist/config/cli-registry/schema.js.map +1 -1
  5. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  6. package/dist/config/cli-registry/stock.js +35 -0
  7. package/dist/config/cli-registry/stock.js.map +1 -1
  8. package/dist/config/cli-registry/types.d.ts +33 -0
  9. package/dist/config/cli-registry/types.d.ts.map +1 -1
  10. package/dist/hooks-config.d.ts.map +1 -1
  11. package/dist/hooks-config.js +5 -1
  12. package/dist/hooks-config.js.map +1 -1
  13. package/dist/mcp-sync.d.ts +105 -0
  14. package/dist/mcp-sync.d.ts.map +1 -0
  15. package/dist/mcp-sync.js +619 -0
  16. package/dist/mcp-sync.js.map +1 -0
  17. package/dist/mux-interface.d.ts +4 -0
  18. package/dist/mux-interface.d.ts.map +1 -1
  19. package/dist/session-cli-builder.d.ts +20 -1
  20. package/dist/session-cli-builder.d.ts.map +1 -1
  21. package/dist/session-cli-builder.js +33 -3
  22. package/dist/session-cli-builder.js.map +1 -1
  23. package/dist/session-cli-registry-bridge.d.ts +2 -0
  24. package/dist/session-cli-registry-bridge.d.ts.map +1 -1
  25. package/dist/session-cli-registry-bridge.js +15 -8
  26. package/dist/session-cli-registry-bridge.js.map +1 -1
  27. package/dist/session.d.ts +19 -0
  28. package/dist/session.d.ts.map +1 -1
  29. package/dist/session.js +29 -2
  30. package/dist/session.js.map +1 -1
  31. package/dist/tmux-manager.d.ts +2 -0
  32. package/dist/tmux-manager.d.ts.map +1 -1
  33. package/dist/tmux-manager.js +4 -2
  34. package/dist/tmux-manager.js.map +1 -1
  35. package/dist/types/index.d.ts +3 -1
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/types/index.js +3 -1
  38. package/dist/types/index.js.map +1 -1
  39. package/dist/types/mcp-sync.d.ts +40 -0
  40. package/dist/types/mcp-sync.d.ts.map +1 -0
  41. package/dist/types/mcp-sync.js +8 -0
  42. package/dist/types/mcp-sync.js.map +1 -0
  43. package/dist/types/push.d.ts +37 -2
  44. package/dist/types/push.d.ts.map +1 -1
  45. package/dist/types/push.js +10 -3
  46. package/dist/types/push.js.map +1 -1
  47. package/dist/types/session.d.ts +34 -1
  48. package/dist/types/session.d.ts.map +1 -1
  49. package/dist/types/session.js +25 -1
  50. package/dist/types/session.js.map +1 -1
  51. package/dist/web/public/admin-ui.js.gz +0 -0
  52. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  53. package/dist/web/public/app.cf0db8ce.js +43 -0
  54. package/dist/web/public/app.cf0db8ce.js.br +0 -0
  55. package/dist/web/public/app.cf0db8ce.js.gz +0 -0
  56. package/dist/web/public/approvals-ui.js.gz +0 -0
  57. package/dist/web/public/{constants.cc927eb8.js → constants.d95fade9.js} +19 -2
  58. package/dist/web/public/constants.d95fade9.js.br +0 -0
  59. package/dist/web/public/constants.d95fade9.js.gz +0 -0
  60. package/dist/web/public/cron-ui.js.gz +0 -0
  61. package/dist/web/public/entrance-animations.js.gz +0 -0
  62. package/dist/web/public/home-sessions.js.gz +0 -0
  63. package/dist/web/public/host-wake-ui.js.gz +0 -0
  64. package/dist/web/public/i18n.398b8331.js +1 -0
  65. package/dist/web/public/i18n.398b8331.js.br +0 -0
  66. package/dist/web/public/i18n.398b8331.js.gz +0 -0
  67. package/dist/web/public/image-input.a216cf9e.js.gz +0 -0
  68. package/dist/web/public/index.html +125 -14
  69. package/dist/web/public/index.html.br +0 -0
  70. package/dist/web/public/index.html.gz +0 -0
  71. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  72. package/dist/web/public/keyboard-accessory.c1e7c7b7.js.gz +0 -0
  73. package/dist/web/public/mobile-handlers.23a85db1.js.gz +0 -0
  74. package/dist/web/public/mobile-ime-preview.2dbaf262.js +1 -0
  75. package/dist/web/public/mobile-ime-preview.2dbaf262.js.br +0 -0
  76. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  77. package/dist/web/public/mobile-overview.js.gz +0 -0
  78. package/dist/web/public/mobile.1aa4952d.css.gz +0 -0
  79. package/dist/web/public/notification-manager.50bb87d8.js.gz +0 -0
  80. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  81. package/dist/web/public/{panels-ui.67646701.js → panels-ui.6a5898d9.js} +69 -67
  82. package/dist/web/public/panels-ui.6a5898d9.js.br +0 -0
  83. package/dist/web/public/panels-ui.6a5898d9.js.gz +0 -0
  84. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  85. package/dist/web/public/{ralph-wizard.13a1831e.js → ralph-wizard.b6c0dd19.js} +2 -0
  86. package/dist/web/public/ralph-wizard.b6c0dd19.js.br +0 -0
  87. package/dist/web/public/{ralph-wizard.13a1831e.js.gz → ralph-wizard.b6c0dd19.js.gz} +0 -0
  88. package/dist/web/public/readmymind-ui.js.gz +0 -0
  89. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  90. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  91. package/dist/web/public/sanitize-html.e7147e76.js +1 -0
  92. package/dist/web/public/sanitize-html.e7147e76.js.br +0 -0
  93. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  94. package/dist/web/public/session-lineage.js +27 -11
  95. package/dist/web/public/session-lineage.js.br +0 -0
  96. package/dist/web/public/session-lineage.js.gz +0 -0
  97. package/dist/web/public/{session-ui.7575a231.js → session-ui.bf66c13b.js} +4 -4
  98. package/dist/web/public/session-ui.bf66c13b.js.br +0 -0
  99. package/dist/web/public/session-ui.bf66c13b.js.gz +0 -0
  100. package/dist/web/public/{settings-ui.c68e7f59.js → settings-ui.331d3b1d.js} +12 -10
  101. package/dist/web/public/settings-ui.331d3b1d.js.br +0 -0
  102. package/dist/web/public/settings-ui.331d3b1d.js.gz +0 -0
  103. package/dist/web/public/styles.8c485d26.css +1 -0
  104. package/dist/web/public/styles.8c485d26.css.br +0 -0
  105. package/dist/web/public/styles.8c485d26.css.gz +0 -0
  106. package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
  107. package/dist/web/public/sw.js +2 -2
  108. package/dist/web/public/sw.js.br +0 -0
  109. package/dist/web/public/sw.js.gz +0 -0
  110. package/dist/web/public/tab-layout-browser.4e0ed50c.js +1 -0
  111. package/dist/web/public/tab-layout-browser.4e0ed50c.js.br +0 -0
  112. package/dist/web/public/tab-layout-browser.4e0ed50c.js.gz +0 -0
  113. package/dist/web/public/tab-rail-resize.dcdc5772.js.gz +0 -0
  114. package/dist/web/public/terminal-keycode229-recovery.fb91b25b.js.gz +0 -0
  115. package/dist/web/public/terminal-split.js +248 -15
  116. package/dist/web/public/terminal-split.js.br +0 -0
  117. package/dist/web/public/terminal-split.js.gz +0 -0
  118. package/dist/web/public/terminal-ui.a4535311.js +2 -0
  119. package/dist/web/public/terminal-ui.a4535311.js.br +0 -0
  120. package/dist/web/public/terminal-ui.a4535311.js.gz +0 -0
  121. package/dist/web/public/ultracode-panel.js.gz +0 -0
  122. package/dist/web/public/ultracode-windows.js.gz +0 -0
  123. package/dist/web/public/upload.html.gz +0 -0
  124. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  125. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  126. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  127. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  128. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  129. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  130. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js → xterm-predictive-echo.ae5e3d5d.js} +1 -1
  131. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js.br → xterm-predictive-echo.ae5e3d5d.js.br} +0 -0
  132. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js.gz → xterm-predictive-echo.ae5e3d5d.js.gz} +0 -0
  133. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js +4 -0
  134. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.br +0 -0
  135. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.gz +0 -0
  136. package/dist/web/public/vendor/xterm.css.gz +0 -0
  137. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  138. package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
  139. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  140. package/dist/web/public/webview-tabs.js +36 -14
  141. package/dist/web/public/webview-tabs.js.br +0 -0
  142. package/dist/web/public/webview-tabs.js.gz +0 -0
  143. package/dist/web/reboot-restore-registry.d.ts +2 -1
  144. package/dist/web/reboot-restore-registry.d.ts.map +1 -1
  145. package/dist/web/reboot-restore-registry.js +2 -1
  146. package/dist/web/reboot-restore-registry.js.map +1 -1
  147. package/dist/web/routes/file-routes.d.ts.map +1 -1
  148. package/dist/web/routes/file-routes.js +2 -1
  149. package/dist/web/routes/file-routes.js.map +1 -1
  150. package/dist/web/routes/index.d.ts +2 -0
  151. package/dist/web/routes/index.d.ts.map +1 -1
  152. package/dist/web/routes/index.js +2 -0
  153. package/dist/web/routes/index.js.map +1 -1
  154. package/dist/web/routes/mcp-sync-routes.d.ts +29 -0
  155. package/dist/web/routes/mcp-sync-routes.d.ts.map +1 -0
  156. package/dist/web/routes/mcp-sync-routes.js +83 -0
  157. package/dist/web/routes/mcp-sync-routes.js.map +1 -0
  158. package/dist/web/routes/ralph-routes.d.ts.map +1 -1
  159. package/dist/web/routes/ralph-routes.js +2 -1
  160. package/dist/web/routes/ralph-routes.js.map +1 -1
  161. package/dist/web/routes/reboot-restore-routes.d.ts.map +1 -1
  162. package/dist/web/routes/reboot-restore-routes.js +2 -0
  163. package/dist/web/routes/reboot-restore-routes.js.map +1 -1
  164. package/dist/web/routes/session-routes.d.ts.map +1 -1
  165. package/dist/web/routes/session-routes.js +40 -17
  166. package/dist/web/routes/session-routes.js.map +1 -1
  167. package/dist/web/routes/webhook-routes.d.ts +21 -0
  168. package/dist/web/routes/webhook-routes.d.ts.map +1 -0
  169. package/dist/web/routes/webhook-routes.js +87 -0
  170. package/dist/web/routes/webhook-routes.js.map +1 -0
  171. package/dist/web/schemas.d.ts +47 -2
  172. package/dist/web/schemas.d.ts.map +1 -1
  173. package/dist/web/schemas.js +64 -0
  174. package/dist/web/schemas.js.map +1 -1
  175. package/dist/web/server.d.ts +4 -0
  176. package/dist/web/server.d.ts.map +1 -1
  177. package/dist/web/server.js +55 -25
  178. package/dist/web/server.js.map +1 -1
  179. package/dist/webhook-notify.d.ts +71 -0
  180. package/dist/webhook-notify.d.ts.map +1 -0
  181. package/dist/webhook-notify.js +282 -0
  182. package/dist/webhook-notify.js.map +1 -0
  183. package/package.json +2 -1
  184. package/skills/codeman/SKILL.md +26 -8
  185. package/skills/codeman/preamble.sh +16 -4
  186. package/skills/codeman/reference/endpoints.md +11 -3
  187. package/skills/codeman/reference/recipes.md +1 -1
  188. package/dist/web/public/app.91131d2c.js +0 -43
  189. package/dist/web/public/app.91131d2c.js.br +0 -0
  190. package/dist/web/public/app.91131d2c.js.gz +0 -0
  191. package/dist/web/public/constants.cc927eb8.js.br +0 -0
  192. package/dist/web/public/constants.cc927eb8.js.gz +0 -0
  193. package/dist/web/public/i18n.f094d01f.js +0 -1
  194. package/dist/web/public/i18n.f094d01f.js.br +0 -0
  195. package/dist/web/public/i18n.f094d01f.js.gz +0 -0
  196. package/dist/web/public/panels-ui.67646701.js.br +0 -0
  197. package/dist/web/public/panels-ui.67646701.js.gz +0 -0
  198. package/dist/web/public/ralph-wizard.13a1831e.js.br +0 -0
  199. package/dist/web/public/sanitize-html.bc7078d6.js +0 -1
  200. package/dist/web/public/sanitize-html.bc7078d6.js.br +0 -0
  201. package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
  202. package/dist/web/public/session-ui.7575a231.js.br +0 -0
  203. package/dist/web/public/session-ui.7575a231.js.gz +0 -0
  204. package/dist/web/public/settings-ui.c68e7f59.js.br +0 -0
  205. package/dist/web/public/settings-ui.c68e7f59.js.gz +0 -0
  206. package/dist/web/public/styles.3fe3312d.css +0 -1
  207. package/dist/web/public/styles.3fe3312d.css.br +0 -0
  208. package/dist/web/public/styles.3fe3312d.css.gz +0 -0
  209. package/dist/web/public/terminal-ui.d5223c0e.js +0 -2
  210. package/dist/web/public/terminal-ui.d5223c0e.js.br +0 -0
  211. package/dist/web/public/terminal-ui.d5223c0e.js.gz +0 -0
  212. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js +0 -4
  213. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.br +0 -0
  214. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileoverview Webhook notification settings (src/webhook-notify.ts).
3
+ *
4
+ * GET /api/webhook — the config WITHOUT its URL (scheme + host only), and the last delivery result
5
+ * PUT /api/webhook — change enabled / kind / url / scope; an empty `url` clears it
6
+ * POST /api/webhook/test — send one test message with the saved config
7
+ *
8
+ * The URL is a bearer secret (anyone holding a Slack/Discord webhook URL can post as it), so it is
9
+ * stored in its own 0600 file and never returned. In multi-user mode all three routes are admin only:
10
+ * the channel receives every session's events, the same reach an admin's own Web Push has.
11
+ */
12
+ import type { FastifyInstance } from 'fastify';
13
+ import { type WebhookNotifier } from '../../webhook-notify.js';
14
+ export interface WebhookRouteDeps {
15
+ notifier: WebhookNotifier;
16
+ configDir: string;
17
+ /** The instance's window title, so a test message says which machine sent it. */
18
+ hostTitle: () => string;
19
+ }
20
+ export declare function registerWebhookRoutes(app: FastifyInstance, deps: WebhookRouteDeps): void;
21
+ //# sourceMappingURL=webhook-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/webhook-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAY7E,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,SAAS,EAAE,MAAM,MAAM,CAAC;CACzB;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAqExF"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @fileoverview Webhook notification settings (src/webhook-notify.ts).
3
+ *
4
+ * GET /api/webhook — the config WITHOUT its URL (scheme + host only), and the last delivery result
5
+ * PUT /api/webhook — change enabled / kind / url / scope; an empty `url` clears it
6
+ * POST /api/webhook/test — send one test message with the saved config
7
+ *
8
+ * The URL is a bearer secret (anyone holding a Slack/Discord webhook URL can post as it), so it is
9
+ * stored in its own 0600 file and never returned. In multi-user mode all three routes are admin only:
10
+ * the channel receives every session's events, the same reach an admin's own Web Push has.
11
+ */
12
+ import { ApiErrorCode, createErrorResponse, getErrorMessage, } from '../../types.js';
13
+ import { isAdmin, parseBody } from '../route-helpers.js';
14
+ import { isMultiUserMode } from '../../config/multiuser.js';
15
+ import { WebhookUpdateSchema } from '../schemas.js';
16
+ import { maskWebhookUrl, readWebhookConfig, webhookUrlProblem, writeWebhookConfig, } from '../../webhook-notify.js';
17
+ export function registerWebhookRoutes(app, deps) {
18
+ const denied = (req, reply) => {
19
+ if (isMultiUserMode() && !isAdmin(req)) {
20
+ reply.code(403);
21
+ return createErrorResponse(ApiErrorCode.FORBIDDEN, 'Admin only in multi-user mode');
22
+ }
23
+ return null;
24
+ };
25
+ const status = async () => {
26
+ const cfg = await readWebhookConfig(deps.configDir);
27
+ return {
28
+ enabled: cfg.enabled,
29
+ kind: cfg.kind,
30
+ scope: cfg.scope,
31
+ hasUrl: cfg.url !== '',
32
+ urlMasked: maskWebhookUrl(cfg.url),
33
+ lastResult: deps.notifier.lastResult,
34
+ };
35
+ };
36
+ app.get('/api/webhook', async (req, reply) => {
37
+ const no = denied(req, reply);
38
+ if (no)
39
+ return no;
40
+ return { success: true, data: await status() };
41
+ });
42
+ app.put('/api/webhook', async (req, reply) => {
43
+ const no = denied(req, reply);
44
+ if (no)
45
+ return no;
46
+ const patch = parseBody(WebhookUpdateSchema, req.body, 'Invalid webhook settings');
47
+ const current = await readWebhookConfig(deps.configDir);
48
+ const next = {
49
+ enabled: patch.enabled ?? current.enabled,
50
+ kind: patch.kind ?? current.kind,
51
+ scope: patch.scope ?? current.scope,
52
+ url: patch.url !== undefined ? patch.url.trim() : current.url,
53
+ };
54
+ if (next.url) {
55
+ const problem = webhookUrlProblem(next.url);
56
+ if (problem) {
57
+ reply.code(400);
58
+ return createErrorResponse(ApiErrorCode.INVALID_INPUT, problem);
59
+ }
60
+ }
61
+ if (next.enabled && !next.url) {
62
+ reply.code(400);
63
+ return createErrorResponse(ApiErrorCode.INVALID_INPUT, 'Add a webhook URL before enabling notifications');
64
+ }
65
+ try {
66
+ await writeWebhookConfig(deps.configDir, next);
67
+ }
68
+ catch (err) {
69
+ reply.code(500);
70
+ return createErrorResponse(ApiErrorCode.OPERATION_FAILED, getErrorMessage(err));
71
+ }
72
+ return { success: true, data: await status() };
73
+ });
74
+ app.post('/api/webhook/test', async (req, reply) => {
75
+ const no = denied(req, reply);
76
+ if (no)
77
+ return no;
78
+ const cfg = await readWebhookConfig(deps.configDir);
79
+ if (!cfg.url) {
80
+ reply.code(400);
81
+ return createErrorResponse(ApiErrorCode.INVALID_INPUT, 'Save a webhook URL first');
82
+ }
83
+ // 200 even when delivery failed: the request to Codeman worked, `data.ok` says whether the webhook did.
84
+ return { success: true, data: await deps.notifier.sendTest(cfg, deps.hostTitle()) };
85
+ });
86
+ }
87
+ //# sourceMappingURL=webhook-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-routes.js","sourceRoot":"","sources":["../../../src/web/routes/webhook-routes.ts"],"names":[],"mappings":"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"}
@@ -96,7 +96,9 @@ export declare const CreateSessionSchema: z.ZodObject<{
96
96
  max: "max";
97
97
  ultracode: "ultracode";
98
98
  }>>;
99
+ advisorModel: z.ZodOptional<z.ZodString>;
99
100
  modelOverride: z.ZodOptional<z.ZodString>;
101
+ model: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
100
102
  openCodeConfig: z.ZodOptional<z.ZodObject<{
101
103
  model: z.ZodOptional<z.ZodString>;
102
104
  autoAllowTools: z.ZodOptional<z.ZodBoolean>;
@@ -106,6 +108,16 @@ export declare const CreateSessionSchema: z.ZodObject<{
106
108
  }, z.core.$strip>>;
107
109
  codexConfig: z.ZodOptional<z.ZodObject<{
108
110
  model: z.ZodOptional<z.ZodString>;
111
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
112
+ none: "none";
113
+ low: "low";
114
+ medium: "medium";
115
+ high: "high";
116
+ xhigh: "xhigh";
117
+ max: "max";
118
+ minimal: "minimal";
119
+ ultra: "ultra";
120
+ }>>;
109
121
  resumeSessionId: z.ZodOptional<z.ZodString>;
110
122
  dangerouslyBypassApprovals: z.ZodOptional<z.ZodBoolean>;
111
123
  animations: z.ZodOptional<z.ZodBoolean>;
@@ -138,8 +150,8 @@ export declare const CreateSessionSchema: z.ZodObject<{
138
150
  high: "high";
139
151
  xhigh: "xhigh";
140
152
  max: "max";
141
- off: "off";
142
153
  minimal: "minimal";
154
+ off: "off";
143
155
  }>>;
144
156
  continueSession: z.ZodOptional<z.ZodBoolean>;
145
157
  resumeSessionId: z.ZodOptional<z.ZodString>;
@@ -397,6 +409,16 @@ export declare const QuickStartSchema: z.ZodObject<{
397
409
  }, z.core.$strip>>;
398
410
  codexConfig: z.ZodOptional<z.ZodObject<{
399
411
  model: z.ZodOptional<z.ZodString>;
412
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
413
+ none: "none";
414
+ low: "low";
415
+ medium: "medium";
416
+ high: "high";
417
+ xhigh: "xhigh";
418
+ max: "max";
419
+ minimal: "minimal";
420
+ ultra: "ultra";
421
+ }>>;
400
422
  resumeSessionId: z.ZodOptional<z.ZodString>;
401
423
  dangerouslyBypassApprovals: z.ZodOptional<z.ZodBoolean>;
402
424
  animations: z.ZodOptional<z.ZodBoolean>;
@@ -429,8 +451,8 @@ export declare const QuickStartSchema: z.ZodObject<{
429
451
  high: "high";
430
452
  xhigh: "xhigh";
431
453
  max: "max";
432
- off: "off";
433
454
  minimal: "minimal";
455
+ off: "off";
434
456
  }>>;
435
457
  continueSession: z.ZodOptional<z.ZodBoolean>;
436
458
  resumeSessionId: z.ZodOptional<z.ZodString>;
@@ -467,6 +489,7 @@ export declare const QuickStartSchema: z.ZodObject<{
467
489
  max: "max";
468
490
  ultracode: "ultracode";
469
491
  }>>;
492
+ advisorModel: z.ZodOptional<z.ZodString>;
470
493
  agentOrigin: z.ZodOptional<z.ZodString>;
471
494
  customModel: z.ZodOptional<z.ZodObject<{
472
495
  endpointId: z.ZodString;
@@ -627,6 +650,7 @@ export declare const SettingsUpdateSchema: z.ZodObject<{
627
650
  readMyMindEnabled: z.ZodOptional<z.ZodBoolean>;
628
651
  customModelEndpointsEnabled: z.ZodOptional<z.ZodBoolean>;
629
652
  cliManagementEnabled: z.ZodOptional<z.ZodBoolean>;
653
+ mcpSyncEnabled: z.ZodOptional<z.ZodBoolean>;
630
654
  readMyMindModel: z.ZodOptional<z.ZodString>;
631
655
  tunnelEnabled: z.ZodOptional<z.ZodBoolean>;
632
656
  acknowledgeUnauthTunnel: z.ZodOptional<z.ZodBoolean>;
@@ -655,6 +679,7 @@ export declare const SettingsUpdateSchema: z.ZodObject<{
655
679
  opusContext1mEnabled: z.ZodOptional<z.ZodBoolean>;
656
680
  remoteAutoReconnect: z.ZodOptional<z.ZodBoolean>;
657
681
  thinkingEffort: z.ZodOptional<z.ZodString>;
682
+ claudeAdvisorModel: z.ZodOptional<z.ZodString>;
658
683
  showFontControls: z.ZodOptional<z.ZodBoolean>;
659
684
  showSystemStats: z.ZodOptional<z.ZodBoolean>;
660
685
  showTokenCount: z.ZodOptional<z.ZodBoolean>;
@@ -1139,6 +1164,25 @@ export declare const PushSubscribeSchema: z.ZodObject<{
1139
1164
  export declare const PushPreferencesUpdateSchema: z.ZodObject<{
1140
1165
  pushPreferences: z.ZodRecord<z.ZodString, z.ZodBoolean>;
1141
1166
  }, z.core.$strip>;
1167
+ /**
1168
+ * PUT /api/webhook. `.strict()` like every settings-shaped schema; `url` is optional so a change of
1169
+ * kind or scope never needs the secret re-sent, and an empty string clears it. The kind and scope
1170
+ * lists are the store's own, so the schema can never accept a value the store would coerce away.
1171
+ */
1172
+ export declare const WebhookUpdateSchema: z.ZodObject<{
1173
+ enabled: z.ZodOptional<z.ZodBoolean>;
1174
+ kind: z.ZodOptional<z.ZodEnum<{
1175
+ ntfy: "ntfy";
1176
+ slack: "slack";
1177
+ discord: "discord";
1178
+ generic: "generic";
1179
+ }>>;
1180
+ scope: z.ZodOptional<z.ZodEnum<{
1181
+ attention: "attention";
1182
+ all: "all";
1183
+ }>>;
1184
+ url: z.ZodOptional<z.ZodString>;
1185
+ }, z.core.$strict>;
1142
1186
  /** POST /api/ralph-loop/start */
1143
1187
  export declare const RalphLoopStartSchema: z.ZodObject<{
1144
1188
  caseName: z.ZodDefault<z.ZodOptional<z.ZodString>>;
@@ -1155,6 +1199,7 @@ export declare const RalphLoopStartSchema: z.ZodObject<{
1155
1199
  max: "max";
1156
1200
  ultracode: "ultracode";
1157
1201
  }>>;
1202
+ advisorModel: z.ZodOptional<z.ZodString>;
1158
1203
  planItems: z.ZodOptional<z.ZodArray<z.ZodObject<{
1159
1204
  content: z.ZodString;
1160
1205
  priority: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/web/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/web/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAuBpD;AA4BD,yEAAyE;AACzE,eAAO,MAAM,2BAA2B;;;;;;;iBAQtC,CAAC;AAEH,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B;;;;;;;iBAQvC,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;;;kBAcjB,CAAC;AAEZ;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAkVD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B;;;kBAe9B,CAAC;AAEZ;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;;kBAQxB,CAAC;AAaZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;iBAKvB,CAAC;AAwBH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBhC,CAAC;AAIH;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;iBAK3B,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;iBAU1B,CAAC;AAEH,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AA+BH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;iBAgF3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAS/B,CAAC;AAiCH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsD3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;iBA2B/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;iBAuBhC,CAAC;AAEH,mFAAmF;AACnF,eAAO,MAAM,0BAA0B;;;;iBAerC,CAAC;AAEH,gFAAgF;AAChF,eAAO,MAAM,kBAAkB;;;;iBAa7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;iBAE7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;iBAe7B,CAAC;AAKH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;iBA8BlC,CAAC;AAIH;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4D3B,CAAC;AAIH;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;iBAqB1B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;kBAMtB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;kBAInB,CAAC;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;kBAKzB,CAAC;AAIZ;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2B9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAOpB,CAAC;AAeZ;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B;;kBAI5B,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwR7B,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;iBA4BtC,CAAC;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;iBASjC,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;iBAOvC,CAAC;AAIH,iCAAiC;AACjC,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AAEH,kCAAkC;AAClC,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB;;;;;;;;iBAQ5B,CAAC;AAEH,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AAEH,wCAAwC;AACxC,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,iFAAiF;AACjF,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,2CAA2C;AAC3C,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AAEH,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AAEH,0BAA0B;AAC1B,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AA4DH,iDAAiD;AACjD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA+C,CAAC;AAE1E,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8B,CAAC;AAE/D,qCAAqC;AACrC,eAAO,MAAM,oBAAoB;;iBAAqC,CAAC;AAEvE,2BAA2B;AAC3B,eAAO,MAAM,cAAc;;;iBAGzB,CAAC;AAEH,2BAA2B;AAC3B,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB;;iBAKnC,CAAC;AAEH,4BAA4B;AAC5B,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB;;;;;;;iBAG7B,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,0BAA0B;;;iBAGrC,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAI/B,CAAC;AAEH,kDAAkD;AAClD,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAM5B,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;iBAIzB,CAAC;AAEH,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,wCAAoC,CAAC;AAEzE,sCAAsC;AACtC,eAAO,MAAM,0BAA0B;;;iBAKvB,CAAC;AAEjB,gCAAgC;AAChC,eAAO,MAAM,uBAAuB,uCAAmC,CAAC;AAExE,yCAAyC;AACzC,eAAO,MAAM,sBAAsB;;iBAOjC,CAAC;AAEH,iDAAiD;AACjD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGnC,CAAC;AAEH,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG9B,CAAC;AAIH,+BAA+B;AAC/B,eAAO,MAAM,mBAAmB;;;;;;;;iBAY9B,CAAC;AAEH,kCAAkC;AAClC,eAAO,MAAM,2BAA2B;;iBAEtC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;kBAOrB,CAAC;AAIZ,iCAAiC;AACjC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;iBAwB/B,CAAC;AAIH,mCAAmC;AACnC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;iBAelC,CAAC;AAEH,oCAAoC;AACpC,eAAO,MAAM,wBAAwB;;iBAEnC,CAAC;AAIH,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,uCAAwC,CAAC;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;iBAiB5B,CAAC;AA6CH,yBAAyB;AACzB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;iBAAoB,CAAC;AAErD,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;iBAA8B,CAAC;AAE/D,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB;;iBAAsC,CAAC;AAOtE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAqBhC,CAAC;AAcH,2IAA2I;AAC3I,eAAO,MAAM,eAAe;;iBAAqC,CAAC;AAElE;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;;;;;;;iBAQ/B,CAAC;AAEH,+FAA+F;AAC/F,eAAO,MAAM,0BAA0B;;;;;;;;mBAsBrC,CAAC"}
@@ -12,10 +12,13 @@ import { isValidWebviewUrl } from './webview-proxy.js';
12
12
  import { isBlockedWebviewUrl } from './webview-egress-policy.js';
13
13
  import { MAX_TERMINAL_BUFFER_BYTES, MAX_TERMINAL_SCROLLBACK_LINES, MIN_TERMINAL_BUFFER_BYTES, MIN_TERMINAL_SCROLLBACK_LINES, } from '../config/terminal-history.js';
14
14
  import { MAX_EDITABLE_BYTES } from '../config/file-editing.js';
15
+ import { CODEX_REASONING_EFFORTS } from '../types/session.js';
16
+ import { WEBHOOK_KINDS, WEBHOOK_SCOPES } from '../types/push.js';
15
17
  import { MIN_MATCH_LENGTH, MAX_MATCH_LENGTH } from '../config/agent-wait.js';
16
18
  import { MAX_WAKE_MACS } from '../config/remote-wake-limits.js';
17
19
  import { MAX_INPUT_LENGTH } from '../config/terminal-limits.js';
18
20
  import { enabledCliIds, enabledClis } from '../config/cli-registry/registry.js';
21
+ import { isAdvisorModel } from '../types/session.js';
19
22
  // ========== Path Validation ==========
20
23
  /** Validate a path string: no shell metacharacters, no traversal, must be absolute */
21
24
  export function isValidWorkingDir(p) {
@@ -222,6 +225,19 @@ const safeEnvOverridesSchema = z
222
225
  * block in-session `/effort` switching). `ultracode` enables dynamic workflow orchestration.
223
226
  */
224
227
  const effortLevelSchema = z.enum(['low', 'medium', 'high', 'xhigh', 'max', 'ultracode']).optional();
228
+ /**
229
+ * Claude advisor model for new sessions: `fable`/`opus`/`sonnet` or a full model id in one of
230
+ * those families (isAdvisorModel). Merged into the launch `--settings` JSON as `advisorModel`,
231
+ * a soft default that /advisor still switches in-session. The allowlist is also the injection
232
+ * guard for the single-quoted `--settings` argument.
233
+ */
234
+ const advisorModelSchema = z
235
+ .string()
236
+ .max(64)
237
+ .refine((value) => isAdvisorModel(value), {
238
+ message: 'advisorModel must be fable, opus, sonnet or a full claude-fable/opus/sonnet model id',
239
+ })
240
+ .optional();
225
241
  // ========== Session Routes ==========
226
242
  /**
227
243
  * Schema for POST /api/sessions
@@ -265,6 +281,7 @@ const CodexConfigSchema = z
265
281
  .max(100)
266
282
  .regex(/^[a-zA-Z0-9._\-/]+$/)
267
283
  .optional(),
284
+ reasoningEffort: z.enum(CODEX_REASONING_EFFORTS).optional(),
268
285
  resumeSessionId: z
269
286
  .string()
270
287
  .max(100)
@@ -481,8 +498,25 @@ export const CreateSessionSchema = z.object({
481
498
  envOverrides: safeEnvOverridesSchema,
482
499
  /** Claude CLI effort level (soft default via --settings, switchable in-session via /effort) */
483
500
  effort: effortLevelSchema,
501
+ /** Claude advisor model (soft default via --settings, switchable in-session via /advisor) */
502
+ advisorModel: advisorModelSchema,
484
503
  /** Model override to write to .claude/settings.local.json (e.g., "opus[1m]"). Empty string clears. */
485
504
  modelOverride: z.string().max(50).optional(),
505
+ /**
506
+ * Claude model for THIS session only, passed as `claude --model <id>`; nothing is written to
507
+ * disk. Wins over the app-wide default model. A subset of the registry's `model-claude`
508
+ * pattern, so a value accepted here is never rejected at launch. The first character must be
509
+ * a letter or digit: the value lands in argv, and no model id opens with `-`, so a
510
+ * flag-shaped value is refused here rather than left to the launch quoting. An empty string
511
+ * means no per-session model, as it does for `modelOverride`. Claude only: the route refuses
512
+ * it for any other CLI and on a remote attach.
513
+ */
514
+ model: z
515
+ .string()
516
+ .max(100)
517
+ .regex(/^[a-zA-Z0-9][a-zA-Z0-9._\-[\]]*$/)
518
+ .or(z.literal(''))
519
+ .optional(),
486
520
  openCodeConfig: OpenCodeConfigSchema,
487
521
  codexConfig: CodexConfigSchema,
488
522
  geminiConfig: GeminiConfigSchema,
@@ -975,6 +1009,8 @@ export const QuickStartSchema = z.object({
975
1009
  envOverrides: safeEnvOverridesSchema,
976
1010
  /** Claude CLI effort level (soft default via --settings, switchable in-session via /effort) */
977
1011
  effort: effortLevelSchema,
1012
+ /** Claude advisor model (soft default via --settings, switchable in-session via /advisor) */
1013
+ advisorModel: advisorModelSchema,
978
1014
  /**
979
1015
  * Who is spawning this worker (`codeman-skill` from the packaged agent skill), or,
980
1016
  * equivalently, the `X-Codeman-Agent-Origin` header; the body wins when both are
@@ -1232,6 +1268,13 @@ export const SettingsUpdateSchema = z
1232
1268
  * endpoints (PUT/POST/DELETE /api/clis...) answer instead of refusing outright.
1233
1269
  */
1234
1270
  cliManagementEnabled: z.boolean().optional(),
1271
+ /**
1272
+ * MCP server sync (src/mcp-sync.ts): copies each enabled CLI's user-level MCP servers into
1273
+ * the other CLIs' own config files. SYNCED, default OFF: it writes other tools' config in
1274
+ * the server user's home (including any env values and headers on the servers), so it is
1275
+ * opt-in. While OFF, GET/POST /api/mcp-sync answer 403 and the Settings controls are hidden.
1276
+ */
1277
+ mcpSyncEnabled: z.boolean().optional(),
1235
1278
  /**
1236
1279
  * Read My Mind predictor model override. Empty/absent = the AI-checker
1237
1280
  * default (opus: prediction quality is the product and it runs only on an
@@ -1279,6 +1322,12 @@ export const SettingsUpdateSchema = z
1279
1322
  // auto-reattached.
1280
1323
  remoteAutoReconnect: z.boolean().optional(),
1281
1324
  thinkingEffort: z.string().max(20).optional(),
1325
+ /** Advisor model for new Claude sessions ('' = leave it to the CLI's own /advisor choice). */
1326
+ claudeAdvisorModel: z
1327
+ .string()
1328
+ .max(64)
1329
+ .refine((value) => value === '' || isAdvisorModel(value), { message: 'Invalid advisor model' })
1330
+ .optional(),
1282
1331
  // UI visibility
1283
1332
  showFontControls: z.boolean().optional(),
1284
1333
  showSystemStats: z.boolean().optional(),
@@ -1701,6 +1750,19 @@ export const PushSubscribeSchema = z.object({
1701
1750
  export const PushPreferencesUpdateSchema = z.object({
1702
1751
  pushPreferences: z.record(z.string(), z.boolean()),
1703
1752
  });
1753
+ /**
1754
+ * PUT /api/webhook. `.strict()` like every settings-shaped schema; `url` is optional so a change of
1755
+ * kind or scope never needs the secret re-sent, and an empty string clears it. The kind and scope
1756
+ * lists are the store's own, so the schema can never accept a value the store would coerce away.
1757
+ */
1758
+ export const WebhookUpdateSchema = z
1759
+ .object({
1760
+ enabled: z.boolean().optional(),
1761
+ kind: z.enum(WEBHOOK_KINDS).optional(),
1762
+ scope: z.enum(WEBHOOK_SCOPES).optional(),
1763
+ url: z.string().max(2048).optional(),
1764
+ })
1765
+ .strict();
1704
1766
  // ========== Ralph Loop ==========
1705
1767
  /** POST /api/ralph-loop/start */
1706
1768
  export const RalphLoopStartSchema = z.object({
@@ -1716,6 +1778,8 @@ export const RalphLoopStartSchema = z.object({
1716
1778
  envOverrides: safeEnvOverridesSchema,
1717
1779
  /** Claude CLI effort level (soft default via --settings, switchable in-session via /effort) */
1718
1780
  effort: effortLevelSchema,
1781
+ /** Claude advisor model (soft default via --settings, switchable in-session via /advisor) */
1782
+ advisorModel: advisorModelSchema,
1719
1783
  planItems: z
1720
1784
  .array(z.object({
1721
1785
  content: z.string(),