@zonease/happy 0.6.38 → 0.6.39

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 (109) hide show
  1. package/dist/{types-BWpRU1VN.mjs → api-CIZKyfSn.mjs} +136 -1725
  2. package/dist/{types-DvTsFaqR.cjs → api-CwOCQeLH.cjs} +317 -1961
  3. package/dist/auth-0VnlXT9f.mjs +181 -0
  4. package/dist/auth-BE8dD20T.mjs +270 -0
  5. package/dist/auth-BIleVCw0.cjs +274 -0
  6. package/dist/auth-Cas9DR3b.cjs +183 -0
  7. package/dist/browser-Cc08m7of.cjs +22 -0
  8. package/dist/browser-Dll5hxOV.mjs +20 -0
  9. package/dist/claudeLocal-CPT3zcIU.mjs +344 -0
  10. package/dist/claudeLocal-WkgLbl1a.cjs +352 -0
  11. package/dist/codex/happyMcpStdioBridge.cjs +4 -1
  12. package/dist/codex/happyMcpStdioBridge.mjs +4 -1
  13. package/dist/common-BdNgghUJ.mjs +75 -0
  14. package/dist/common-CZvSRU4p.cjs +83 -0
  15. package/dist/{config-0Xnc8ARM.cjs → config-Draa-5XC.cjs} +21 -34
  16. package/dist/{config-_GW4YBCP.mjs → config-rTT4qTU5.mjs} +7 -20
  17. package/dist/connect-BfC1tYP_.mjs +679 -0
  18. package/dist/connect-CJZ73syK.cjs +681 -0
  19. package/dist/{constants-B4x1K7by.cjs → constants-E_UWYTo3.cjs} +2 -2
  20. package/dist/{constants-BO9OAFOT.mjs → constants-pmXZGibX.mjs} +1 -1
  21. package/dist/controlClient-CM_QcJnB.mjs +159 -0
  22. package/dist/controlClient-DZMIsKsT.cjs +168 -0
  23. package/dist/deviceExec-CU1R9CRb.cjs +84 -0
  24. package/dist/deviceExec-D93AOVV4.mjs +81 -0
  25. package/dist/diagnose-B3D1a_v0.cjs +60 -0
  26. package/dist/diagnose-CuRKXxt1.mjs +58 -0
  27. package/dist/doctor-C08m5Z9f.cjs +78 -0
  28. package/dist/doctor-Cya9YSA0.cjs +214 -0
  29. package/dist/doctor-DZYB6IVc.mjs +211 -0
  30. package/dist/doctor-ON7pN5G5.mjs +74 -0
  31. package/dist/downloadImage-DfSFLb-h.mjs +887 -0
  32. package/dist/downloadImage-MQMrUUxS.cjs +897 -0
  33. package/dist/enroll-BxlbVftP.cjs +115 -0
  34. package/dist/enroll-C52x8oly.mjs +113 -0
  35. package/dist/evidence-Ccd9iYcj.mjs +127 -0
  36. package/dist/evidence-CjWBG5rX.cjs +129 -0
  37. package/dist/formatImageMessage-B4lSxlk2.mjs +43 -0
  38. package/dist/formatImageMessage-DbyG8c2j.cjs +46 -0
  39. package/dist/github-DKcyF1zp.mjs +57 -0
  40. package/dist/github-h9GhJJ_C.cjs +59 -0
  41. package/dist/index-CDTNgfUf.cjs +578 -0
  42. package/dist/index-CPKdvi7J.mjs +554 -0
  43. package/dist/index.cjs +812 -40
  44. package/dist/index.mjs +813 -40
  45. package/dist/install-BokHRgFW.cjs +98 -0
  46. package/dist/install-C_cp8b2-.cjs +96 -0
  47. package/dist/install-DAeCn8ae.mjs +94 -0
  48. package/dist/install-oRAjVLjP.mjs +95 -0
  49. package/dist/lib.cjs +18 -12
  50. package/dist/lib.mjs +13 -7
  51. package/dist/{loadableToolOutput-va3RLplh.mjs → loadableToolOutput-Cuygmd4K.mjs} +4 -2
  52. package/dist/{loadableToolOutput-5vdQB98M.cjs → loadableToolOutput-DDCJjywt.cjs} +63 -61
  53. package/dist/mcpToolSchemas-CjeTfrAs.mjs +62 -0
  54. package/dist/mcpToolSchemas-DK42yoZ_.cjs +64 -0
  55. package/dist/persistence-BFjvtUad.mjs +944 -0
  56. package/dist/persistence-JLUn_Nou.cjs +996 -0
  57. package/dist/projectPath-BTBIMB57.mjs +10 -0
  58. package/dist/projectPath-ChLhdOyt.cjs +13 -0
  59. package/dist/prompt-BTWDZZO0.cjs +25 -0
  60. package/dist/prompt-BsAZsPbo.mjs +22 -0
  61. package/dist/release-BMEzNONE.mjs +168 -0
  62. package/dist/release-EhOJeAZe.cjs +171 -0
  63. package/dist/run-BDn2aE3Q.cjs +2152 -0
  64. package/dist/run-DBZqN6Kn.mjs +2128 -0
  65. package/dist/runClaude-DNHvERX0.mjs +3763 -0
  66. package/dist/runClaude-uaKxPZPm.cjs +3766 -0
  67. package/dist/{runCodex-skq0j05d.cjs → runCodex-82UrZLme.cjs} +169 -153
  68. package/dist/{runCodex-DiKzBf9q.mjs → runCodex-C-RTM0wA.mjs} +36 -20
  69. package/dist/{runGemini-BeqrVq8R.mjs → runGemini-Bm6-4Xm2.mjs} +34 -17
  70. package/dist/{runGemini-CVp-CEIh.cjs → runGemini-CXMr4Jwb.cjs} +212 -195
  71. package/dist/{runOneShot-BQNkNW61.cjs → runOneShot-1B6RMYT7.cjs} +31 -55
  72. package/dist/{runOneShot-ltCpHbBB.mjs → runOneShot-ioARRHrx.mjs} +14 -38
  73. package/dist/{serve-BECdtivY.cjs → serve-BtdAhkIE.cjs} +35 -58
  74. package/dist/{serve-BNdoEDVx.mjs → serve-CwibwU6N.mjs} +12 -35
  75. package/dist/session-2sU4Bu1R.mjs +108 -0
  76. package/dist/session-D--F87zL.cjs +110 -0
  77. package/dist/sessionKeyCache-4Tp8pJ3N.cjs +36 -0
  78. package/dist/sessionKeyCache-D2BwO91C.mjs +33 -0
  79. package/dist/sessionList-BCSw3qYt.mjs +51 -0
  80. package/dist/sessionList-ICJsjNtJ.cjs +54 -0
  81. package/dist/sessionSummary-Bkz52BPh.cjs +393 -0
  82. package/dist/sessionSummary-lHGBWQSb.mjs +387 -0
  83. package/dist/spawnHappyCLI-CoORX0YW.mjs +66 -0
  84. package/dist/spawnHappyCLI-D_V-AAoP.cjs +70 -0
  85. package/dist/ssh-BTOlhhxi.cjs +333 -0
  86. package/dist/ssh-DL_AkRAD.mjs +328 -0
  87. package/dist/systemdScope-BeOtAkhk.mjs +25 -0
  88. package/dist/systemdScope-DW3-UoKB.cjs +29 -0
  89. package/dist/task-CQzrHRZe.mjs +165 -0
  90. package/dist/task-CSpaC9HX.cjs +167 -0
  91. package/dist/time-Bj2HRkKH.cjs +33 -0
  92. package/dist/time-DgsBLJA_.mjs +29 -0
  93. package/dist/trimIdent-4gvk9Wk6.cjs +22 -0
  94. package/dist/trimIdent-BAjmv_TG.mjs +20 -0
  95. package/dist/types-BoJh4Qfv.mjs +57 -0
  96. package/dist/types-DWeB7aqh.cjs +59 -0
  97. package/dist/uninstall-BiKyRAb1.cjs +77 -0
  98. package/dist/uninstall-nFMFGUVM.mjs +75 -0
  99. package/dist/update-BcqRHXf2.mjs +109 -0
  100. package/dist/update-Dw8pgsAT.cjs +111 -0
  101. package/dist/workflowCommon-B0d01Y_a.mjs +56 -0
  102. package/dist/workflowCommon-Bl568-rt.cjs +62 -0
  103. package/dist/workflowReports-BEWuQesA.cjs +113 -0
  104. package/dist/workflowReports-Dd8-4-8f.mjs +108 -0
  105. package/package.json +1 -1
  106. package/dist/index-BbCDDvoB.cjs +0 -11376
  107. package/dist/index-vvZXdswy.mjs +0 -11336
  108. package/dist/mcpToolSchemas-CdPXJQmb.mjs +0 -175
  109. package/dist/mcpToolSchemas-f-kttjFw.cjs +0 -186
@@ -0,0 +1,578 @@
1
+ 'use strict';
2
+
3
+ var z = require('zod');
4
+ var cuid2 = require('@paralleldrive/cuid2');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
24
+
25
+ const sessionRoleSchema = z__namespace.enum(["user", "agent"]);
26
+ const sessionTextEventSchema = z__namespace.object({
27
+ t: z__namespace.literal("text"),
28
+ text: z__namespace.string(),
29
+ thinking: z__namespace.boolean().optional()
30
+ });
31
+ const sessionServiceMessageEventSchema = z__namespace.object({
32
+ t: z__namespace.literal("service"),
33
+ text: z__namespace.string()
34
+ });
35
+ const sessionToolCallStartEventSchema = z__namespace.object({
36
+ t: z__namespace.literal("tool-call-start"),
37
+ call: z__namespace.string(),
38
+ name: z__namespace.string(),
39
+ title: z__namespace.string(),
40
+ description: z__namespace.string(),
41
+ args: z__namespace.record(z__namespace.string(), z__namespace.unknown())
42
+ });
43
+ const sessionToolCallEndEventSchema = z__namespace.object({
44
+ t: z__namespace.literal("tool-call-end"),
45
+ call: z__namespace.string()
46
+ });
47
+ const sessionFileEventSchema = z__namespace.object({
48
+ t: z__namespace.literal("file"),
49
+ ref: z__namespace.string(),
50
+ name: z__namespace.string(),
51
+ size: z__namespace.number(),
52
+ image: z__namespace.object({
53
+ width: z__namespace.number(),
54
+ height: z__namespace.number(),
55
+ thumbhash: z__namespace.string()
56
+ }).optional()
57
+ });
58
+ const sessionTurnStartEventSchema = z__namespace.object({
59
+ t: z__namespace.literal("turn-start")
60
+ });
61
+ const sessionStartEventSchema = z__namespace.object({
62
+ t: z__namespace.literal("start"),
63
+ title: z__namespace.string().optional()
64
+ });
65
+ const sessionTurnEndStatusSchema = z__namespace.enum(["completed", "failed", "cancelled"]);
66
+ const sessionTurnEndEventSchema = z__namespace.object({
67
+ t: z__namespace.literal("turn-end"),
68
+ status: sessionTurnEndStatusSchema
69
+ });
70
+ const sessionStopEventSchema = z__namespace.object({
71
+ t: z__namespace.literal("stop")
72
+ });
73
+ const sessionEventSchema = z__namespace.discriminatedUnion("t", [
74
+ sessionTextEventSchema,
75
+ sessionServiceMessageEventSchema,
76
+ sessionToolCallStartEventSchema,
77
+ sessionToolCallEndEventSchema,
78
+ sessionFileEventSchema,
79
+ sessionTurnStartEventSchema,
80
+ sessionStartEventSchema,
81
+ sessionTurnEndEventSchema,
82
+ sessionStopEventSchema
83
+ ]);
84
+ const sessionEnvelopeSchema = z__namespace.object({
85
+ id: z__namespace.string(),
86
+ time: z__namespace.number(),
87
+ role: sessionRoleSchema,
88
+ turn: z__namespace.string().optional(),
89
+ subagent: z__namespace.string().refine((value) => cuid2.isCuid(value), {
90
+ message: "subagent must be a cuid2 value"
91
+ }).optional(),
92
+ ev: sessionEventSchema
93
+ }).superRefine((envelope, ctx) => {
94
+ if (envelope.ev.t === "service" && envelope.role !== "agent") {
95
+ ctx.addIssue({
96
+ code: z__namespace.ZodIssueCode.custom,
97
+ message: 'service events must use role "agent"',
98
+ path: ["role"]
99
+ });
100
+ }
101
+ if ((envelope.ev.t === "start" || envelope.ev.t === "stop") && envelope.role !== "agent") {
102
+ ctx.addIssue({
103
+ code: z__namespace.ZodIssueCode.custom,
104
+ message: `${envelope.ev.t} events must use role "agent"`,
105
+ path: ["role"]
106
+ });
107
+ }
108
+ });
109
+ const MessageMetaSchema = z__namespace.object({
110
+ sentFrom: z__namespace.string().optional(),
111
+ permissionMode: z__namespace.enum(["default", "acceptEdits", "bypassPermissions", "plan", "read-only", "safe-yolo", "yolo"]).optional(),
112
+ model: z__namespace.string().nullable().optional(),
113
+ fallbackModel: z__namespace.string().nullable().optional(),
114
+ reasoningEffort: z__namespace.string().nullable().optional(),
115
+ customSystemPrompt: z__namespace.string().nullable().optional(),
116
+ appendSystemPrompt: z__namespace.string().nullable().optional(),
117
+ allowedTools: z__namespace.array(z__namespace.string()).nullable().optional(),
118
+ disallowedTools: z__namespace.array(z__namespace.string()).nullable().optional(),
119
+ displayText: z__namespace.string().optional()
120
+ });
121
+ const UserMessageSchema = z__namespace.object({
122
+ role: z__namespace.literal("user"),
123
+ content: z__namespace.object({
124
+ type: z__namespace.literal("text"),
125
+ text: z__namespace.string()
126
+ }),
127
+ localKey: z__namespace.string().optional(),
128
+ meta: MessageMetaSchema.optional()
129
+ });
130
+ const AgentMessageSchema = z__namespace.object({
131
+ role: z__namespace.literal("agent"),
132
+ content: z__namespace.object({
133
+ type: z__namespace.string()
134
+ }).passthrough(),
135
+ meta: MessageMetaSchema.optional()
136
+ });
137
+ z__namespace.discriminatedUnion("role", [UserMessageSchema, AgentMessageSchema]);
138
+ const SessionMessageContentSchema = z__namespace.object({
139
+ c: z__namespace.string(),
140
+ t: z__namespace.literal("encrypted")
141
+ });
142
+ const SessionMessageSchema = z__namespace.object({
143
+ id: z__namespace.string(),
144
+ seq: z__namespace.number(),
145
+ localId: z__namespace.string().nullish(),
146
+ content: SessionMessageContentSchema,
147
+ createdAt: z__namespace.number(),
148
+ updatedAt: z__namespace.number()
149
+ });
150
+ const SessionProtocolMessageSchema = z__namespace.object({
151
+ role: z__namespace.literal("session"),
152
+ content: sessionEnvelopeSchema,
153
+ meta: MessageMetaSchema.optional()
154
+ });
155
+ z__namespace.discriminatedUnion("role", [
156
+ UserMessageSchema,
157
+ AgentMessageSchema,
158
+ SessionProtocolMessageSchema
159
+ ]);
160
+ const VersionedEncryptedValueSchema = z__namespace.object({
161
+ version: z__namespace.number(),
162
+ value: z__namespace.string()
163
+ });
164
+ const VersionedNullableEncryptedValueSchema = z__namespace.object({
165
+ version: z__namespace.number(),
166
+ value: z__namespace.string().nullable()
167
+ });
168
+ const UpdateNewMessageBodySchema = z__namespace.object({
169
+ t: z__namespace.literal("new-message"),
170
+ sid: z__namespace.string(),
171
+ message: SessionMessageSchema
172
+ });
173
+ const UpdateSessionBodySchema = z__namespace.object({
174
+ t: z__namespace.literal("update-session"),
175
+ id: z__namespace.string(),
176
+ metadata: VersionedEncryptedValueSchema.nullish(),
177
+ agentState: VersionedNullableEncryptedValueSchema.nullish()
178
+ });
179
+ const VersionedMachineEncryptedValueSchema = z__namespace.object({
180
+ version: z__namespace.number(),
181
+ value: z__namespace.string()
182
+ });
183
+ const UpdateMachineBodySchema = z__namespace.object({
184
+ t: z__namespace.literal("update-machine"),
185
+ machineId: z__namespace.string(),
186
+ metadata: VersionedMachineEncryptedValueSchema.nullish(),
187
+ daemonState: VersionedMachineEncryptedValueSchema.nullish(),
188
+ active: z__namespace.boolean().optional(),
189
+ activeAt: z__namespace.number().optional()
190
+ });
191
+ const CoreUpdateBodySchema = z__namespace.discriminatedUnion("t", [
192
+ UpdateNewMessageBodySchema,
193
+ UpdateSessionBodySchema,
194
+ UpdateMachineBodySchema
195
+ ]);
196
+ z__namespace.object({
197
+ id: z__namespace.string(),
198
+ seq: z__namespace.number(),
199
+ body: CoreUpdateBodySchema,
200
+ createdAt: z__namespace.number()
201
+ });
202
+ const MODEL_MODE_DEFAULT = "default";
203
+ const MODEL_MODES = [
204
+ MODEL_MODE_DEFAULT,
205
+ "claude-fable-5",
206
+ "claude-fable-5[1m]",
207
+ "claude-opus-5",
208
+ "claude-opus-5[1m]",
209
+ "claude-opus-4-8",
210
+ "claude-opus-4-8[1m]",
211
+ "claude-opus-4-6",
212
+ "claude-opus-4-6[1m]",
213
+ "claude-sonnet-4-6",
214
+ "claude-sonnet-4-6[1m]",
215
+ "claude-haiku-4-5",
216
+ "claude-fable-5-low",
217
+ "claude-fable-5-medium",
218
+ "claude-fable-5-high",
219
+ "claude-fable-5-xhigh",
220
+ "claude-fable-5-max",
221
+ "claude-fable-5[1m]-low",
222
+ "claude-fable-5[1m]-medium",
223
+ "claude-fable-5[1m]-high",
224
+ "claude-fable-5[1m]-xhigh",
225
+ "claude-fable-5[1m]-max",
226
+ "claude-opus-5-low",
227
+ "claude-opus-5-medium",
228
+ "claude-opus-5-high",
229
+ "claude-opus-5-xhigh",
230
+ "claude-opus-5-max",
231
+ "claude-opus-5[1m]-low",
232
+ "claude-opus-5[1m]-medium",
233
+ "claude-opus-5[1m]-high",
234
+ "claude-opus-5[1m]-xhigh",
235
+ "claude-opus-5[1m]-max",
236
+ "claude-opus-4-8-low",
237
+ "claude-opus-4-8-medium",
238
+ "claude-opus-4-8-high",
239
+ "claude-opus-4-8-xhigh",
240
+ "claude-opus-4-8-max",
241
+ "claude-opus-4-8[1m]-low",
242
+ "claude-opus-4-8[1m]-medium",
243
+ "claude-opus-4-8[1m]-high",
244
+ "claude-opus-4-8[1m]-xhigh",
245
+ "claude-opus-4-8[1m]-max",
246
+ "claude-opus-4-6-low",
247
+ "claude-opus-4-6-medium",
248
+ "claude-opus-4-6-high",
249
+ "claude-opus-4-6-max",
250
+ "claude-opus-4-6[1m]-low",
251
+ "claude-opus-4-6[1m]-medium",
252
+ "claude-opus-4-6[1m]-high",
253
+ "claude-opus-4-6[1m]-max",
254
+ "claude-sonnet-4-6-low",
255
+ "claude-sonnet-4-6-medium",
256
+ "claude-sonnet-4-6-high",
257
+ "claude-sonnet-4-6[1m]-low",
258
+ "claude-sonnet-4-6[1m]-medium",
259
+ "claude-sonnet-4-6[1m]-high",
260
+ "claude-haiku-4-5-low",
261
+ "claude-haiku-4-5-medium",
262
+ "claude-haiku-4-5-high",
263
+ "gpt-5.6-sol-low",
264
+ "gpt-5.6-sol-medium",
265
+ "gpt-5.6-sol-high",
266
+ "gpt-5.6-sol-xhigh",
267
+ "gpt-5.6-sol-max",
268
+ "gpt-5.6-terra-low",
269
+ "gpt-5.6-terra-medium",
270
+ "gpt-5.6-terra-high",
271
+ "gpt-5.6-terra-xhigh",
272
+ "gpt-5.6-luna-low",
273
+ "gpt-5.6-luna-medium",
274
+ "gpt-5.6-luna-high",
275
+ "gpt-5.6-luna-xhigh",
276
+ "gpt-5.5-low",
277
+ "gpt-5.5-medium",
278
+ "gpt-5.5-high",
279
+ "gpt-5.5-xhigh",
280
+ "gpt-5.4-low",
281
+ "gpt-5.4-medium",
282
+ "gpt-5.4-high",
283
+ "gpt-5.4-xhigh",
284
+ "gpt-5.3-codex-low",
285
+ "gpt-5.3-codex-medium",
286
+ "gpt-5.3-codex-high",
287
+ "gpt-5.3-codex-xhigh",
288
+ "gpt-5.2-codex-low",
289
+ "gpt-5.2-codex-medium",
290
+ "gpt-5.2-codex-high",
291
+ "gpt-5.2-codex-xhigh",
292
+ "gpt-5.2-low",
293
+ "gpt-5.2-medium",
294
+ "gpt-5.2-high",
295
+ "gpt-5.2-xhigh",
296
+ "gpt-5.1-codex-max-low",
297
+ "gpt-5.1-codex-max-medium",
298
+ "gpt-5.1-codex-max-high",
299
+ "gpt-5.1-codex-max-xhigh",
300
+ "gpt-5.1-codex-mini-medium",
301
+ "gpt-5.1-codex-mini-high",
302
+ "gemini-3-pro-preview",
303
+ "gemini-3-flash-preview",
304
+ "gemini-2.5-pro"
305
+ ];
306
+ const CLAUDE_MODEL_MODES = [
307
+ MODEL_MODE_DEFAULT,
308
+ "claude-fable-5",
309
+ "claude-fable-5[1m]",
310
+ "claude-opus-5",
311
+ "claude-opus-5[1m]",
312
+ "claude-opus-4-8",
313
+ "claude-opus-4-8[1m]",
314
+ "claude-opus-4-6",
315
+ "claude-opus-4-6[1m]",
316
+ "claude-sonnet-4-6",
317
+ "claude-sonnet-4-6[1m]",
318
+ "claude-haiku-4-5",
319
+ "claude-fable-5-low",
320
+ "claude-fable-5-medium",
321
+ "claude-fable-5-high",
322
+ "claude-fable-5-xhigh",
323
+ "claude-fable-5-max",
324
+ "claude-fable-5[1m]-low",
325
+ "claude-fable-5[1m]-medium",
326
+ "claude-fable-5[1m]-high",
327
+ "claude-fable-5[1m]-xhigh",
328
+ "claude-fable-5[1m]-max",
329
+ "claude-opus-5-low",
330
+ "claude-opus-5-medium",
331
+ "claude-opus-5-high",
332
+ "claude-opus-5-xhigh",
333
+ "claude-opus-5-max",
334
+ "claude-opus-5[1m]-low",
335
+ "claude-opus-5[1m]-medium",
336
+ "claude-opus-5[1m]-high",
337
+ "claude-opus-5[1m]-xhigh",
338
+ "claude-opus-5[1m]-max",
339
+ "claude-opus-4-8-low",
340
+ "claude-opus-4-8-medium",
341
+ "claude-opus-4-8-high",
342
+ "claude-opus-4-8-xhigh",
343
+ "claude-opus-4-8-max",
344
+ "claude-opus-4-8[1m]-low",
345
+ "claude-opus-4-8[1m]-medium",
346
+ "claude-opus-4-8[1m]-high",
347
+ "claude-opus-4-8[1m]-xhigh",
348
+ "claude-opus-4-8[1m]-max",
349
+ "claude-opus-4-6-low",
350
+ "claude-opus-4-6-medium",
351
+ "claude-opus-4-6-high",
352
+ "claude-opus-4-6-max",
353
+ "claude-opus-4-6[1m]-low",
354
+ "claude-opus-4-6[1m]-medium",
355
+ "claude-opus-4-6[1m]-high",
356
+ "claude-opus-4-6[1m]-max",
357
+ "claude-sonnet-4-6-low",
358
+ "claude-sonnet-4-6-medium",
359
+ "claude-sonnet-4-6-high",
360
+ "claude-sonnet-4-6[1m]-low",
361
+ "claude-sonnet-4-6[1m]-medium",
362
+ "claude-sonnet-4-6[1m]-high",
363
+ "claude-haiku-4-5-low",
364
+ "claude-haiku-4-5-medium",
365
+ "claude-haiku-4-5-high"
366
+ ];
367
+ const GEMINI_MODEL_MODES = [
368
+ MODEL_MODE_DEFAULT,
369
+ "gemini-3-pro-preview",
370
+ "gemini-3-flash-preview",
371
+ "gemini-2.5-pro"
372
+ ];
373
+ const CODEX_MODEL_MODES = [
374
+ MODEL_MODE_DEFAULT,
375
+ "gpt-5.6-sol-low",
376
+ "gpt-5.6-sol-medium",
377
+ "gpt-5.6-sol-high",
378
+ "gpt-5.6-sol-xhigh",
379
+ "gpt-5.6-sol-max",
380
+ "gpt-5.6-terra-low",
381
+ "gpt-5.6-terra-medium",
382
+ "gpt-5.6-terra-high",
383
+ "gpt-5.6-terra-xhigh",
384
+ "gpt-5.6-luna-low",
385
+ "gpt-5.6-luna-medium",
386
+ "gpt-5.6-luna-high",
387
+ "gpt-5.6-luna-xhigh",
388
+ "gpt-5.5-low",
389
+ "gpt-5.5-medium",
390
+ "gpt-5.5-high",
391
+ "gpt-5.5-xhigh",
392
+ "gpt-5.4-low",
393
+ "gpt-5.4-medium",
394
+ "gpt-5.4-high",
395
+ "gpt-5.4-xhigh",
396
+ "gpt-5.3-codex-low",
397
+ "gpt-5.3-codex-medium",
398
+ "gpt-5.3-codex-high",
399
+ "gpt-5.3-codex-xhigh",
400
+ "gpt-5.2-codex-low",
401
+ "gpt-5.2-codex-medium",
402
+ "gpt-5.2-codex-high",
403
+ "gpt-5.2-codex-xhigh",
404
+ "gpt-5.2-low",
405
+ "gpt-5.2-medium",
406
+ "gpt-5.2-high",
407
+ "gpt-5.2-xhigh",
408
+ "gpt-5.1-codex-max-low",
409
+ "gpt-5.1-codex-max-medium",
410
+ "gpt-5.1-codex-max-high",
411
+ "gpt-5.1-codex-max-xhigh",
412
+ "gpt-5.1-codex-mini-medium",
413
+ "gpt-5.1-codex-mini-high"
414
+ ];
415
+ const MODEL_MODE_SET = new Set(MODEL_MODES);
416
+ const CLAUDE_MODEL_MODE_SET = new Set(CLAUDE_MODEL_MODES);
417
+ const GEMINI_MODEL_MODE_SET = new Set(GEMINI_MODEL_MODES);
418
+ const CODEX_MODEL_MODE_SET = new Set(CODEX_MODEL_MODES);
419
+ function isModelMode(value) {
420
+ return MODEL_MODE_SET.has(value);
421
+ }
422
+ function isModelModeForAgent(agent, mode) {
423
+ if (!isModelMode(mode)) return false;
424
+ if (agent === "claude") return CLAUDE_MODEL_MODE_SET.has(mode);
425
+ if (agent === "gemini") return GEMINI_MODEL_MODE_SET.has(mode);
426
+ return CODEX_MODEL_MODE_SET.has(mode);
427
+ }
428
+ const CLAUDE_MODE_TO_SELECTION = {
429
+ "claude-fable-5-low": { family: "claude-fable-5", effort: "low" },
430
+ "claude-fable-5-medium": { family: "claude-fable-5", effort: "medium" },
431
+ "claude-fable-5-high": { family: "claude-fable-5", effort: "high" },
432
+ "claude-fable-5-xhigh": { family: "claude-fable-5", effort: "xhigh" },
433
+ "claude-fable-5-max": { family: "claude-fable-5", effort: "max" },
434
+ "claude-fable-5[1m]-low": { family: "claude-fable-5[1m]", effort: "low" },
435
+ "claude-fable-5[1m]-medium": { family: "claude-fable-5[1m]", effort: "medium" },
436
+ "claude-fable-5[1m]-high": { family: "claude-fable-5[1m]", effort: "high" },
437
+ "claude-fable-5[1m]-xhigh": { family: "claude-fable-5[1m]", effort: "xhigh" },
438
+ "claude-fable-5[1m]-max": { family: "claude-fable-5[1m]", effort: "max" },
439
+ "claude-opus-5-low": { family: "claude-opus-5", effort: "low" },
440
+ "claude-opus-5-medium": { family: "claude-opus-5", effort: "medium" },
441
+ "claude-opus-5-high": { family: "claude-opus-5", effort: "high" },
442
+ "claude-opus-5-xhigh": { family: "claude-opus-5", effort: "xhigh" },
443
+ "claude-opus-5-max": { family: "claude-opus-5", effort: "max" },
444
+ "claude-opus-5[1m]-low": { family: "claude-opus-5[1m]", effort: "low" },
445
+ "claude-opus-5[1m]-medium": { family: "claude-opus-5[1m]", effort: "medium" },
446
+ "claude-opus-5[1m]-high": { family: "claude-opus-5[1m]", effort: "high" },
447
+ "claude-opus-5[1m]-xhigh": { family: "claude-opus-5[1m]", effort: "xhigh" },
448
+ "claude-opus-5[1m]-max": { family: "claude-opus-5[1m]", effort: "max" },
449
+ "claude-opus-4-8-low": { family: "claude-opus-4-8", effort: "low" },
450
+ "claude-opus-4-8-medium": { family: "claude-opus-4-8", effort: "medium" },
451
+ "claude-opus-4-8-high": { family: "claude-opus-4-8", effort: "high" },
452
+ "claude-opus-4-8-xhigh": { family: "claude-opus-4-8", effort: "xhigh" },
453
+ "claude-opus-4-8-max": { family: "claude-opus-4-8", effort: "max" },
454
+ "claude-opus-4-8[1m]-low": { family: "claude-opus-4-8[1m]", effort: "low" },
455
+ "claude-opus-4-8[1m]-medium": { family: "claude-opus-4-8[1m]", effort: "medium" },
456
+ "claude-opus-4-8[1m]-high": { family: "claude-opus-4-8[1m]", effort: "high" },
457
+ "claude-opus-4-8[1m]-xhigh": { family: "claude-opus-4-8[1m]", effort: "xhigh" },
458
+ "claude-opus-4-8[1m]-max": { family: "claude-opus-4-8[1m]", effort: "max" },
459
+ "claude-opus-4-6-low": { family: "claude-opus-4-6", effort: "low" },
460
+ "claude-opus-4-6-medium": { family: "claude-opus-4-6", effort: "medium" },
461
+ "claude-opus-4-6-high": { family: "claude-opus-4-6", effort: "high" },
462
+ "claude-opus-4-6-max": { family: "claude-opus-4-6", effort: "max" },
463
+ "claude-opus-4-6[1m]-low": { family: "claude-opus-4-6[1m]", effort: "low" },
464
+ "claude-opus-4-6[1m]-medium": { family: "claude-opus-4-6[1m]", effort: "medium" },
465
+ "claude-opus-4-6[1m]-high": { family: "claude-opus-4-6[1m]", effort: "high" },
466
+ "claude-opus-4-6[1m]-max": { family: "claude-opus-4-6[1m]", effort: "max" },
467
+ "claude-sonnet-4-6-low": { family: "claude-sonnet-4-6", effort: "low" },
468
+ "claude-sonnet-4-6-medium": { family: "claude-sonnet-4-6", effort: "medium" },
469
+ "claude-sonnet-4-6-high": { family: "claude-sonnet-4-6", effort: "high" },
470
+ "claude-sonnet-4-6[1m]-low": { family: "claude-sonnet-4-6[1m]", effort: "low" },
471
+ "claude-sonnet-4-6[1m]-medium": { family: "claude-sonnet-4-6[1m]", effort: "medium" },
472
+ "claude-sonnet-4-6[1m]-high": { family: "claude-sonnet-4-6[1m]", effort: "high" },
473
+ "claude-haiku-4-5-low": { family: "claude-haiku-4-5", effort: "low" },
474
+ "claude-haiku-4-5-medium": { family: "claude-haiku-4-5", effort: "medium" },
475
+ "claude-haiku-4-5-high": { family: "claude-haiku-4-5", effort: "high" }
476
+ };
477
+ const CODEX_MODE_TO_SELECTION = {
478
+ "gpt-5.6-sol-low": { family: "gpt-5.6-sol", effort: "low" },
479
+ "gpt-5.6-sol-medium": { family: "gpt-5.6-sol", effort: "medium" },
480
+ "gpt-5.6-sol-high": { family: "gpt-5.6-sol", effort: "high" },
481
+ "gpt-5.6-sol-xhigh": { family: "gpt-5.6-sol", effort: "xhigh" },
482
+ "gpt-5.6-sol-max": { family: "gpt-5.6-sol", effort: "max" },
483
+ "gpt-5.6-terra-low": { family: "gpt-5.6-terra", effort: "low" },
484
+ "gpt-5.6-terra-medium": { family: "gpt-5.6-terra", effort: "medium" },
485
+ "gpt-5.6-terra-high": { family: "gpt-5.6-terra", effort: "high" },
486
+ "gpt-5.6-terra-xhigh": { family: "gpt-5.6-terra", effort: "xhigh" },
487
+ "gpt-5.6-luna-low": { family: "gpt-5.6-luna", effort: "low" },
488
+ "gpt-5.6-luna-medium": { family: "gpt-5.6-luna", effort: "medium" },
489
+ "gpt-5.6-luna-high": { family: "gpt-5.6-luna", effort: "high" },
490
+ "gpt-5.6-luna-xhigh": { family: "gpt-5.6-luna", effort: "xhigh" },
491
+ "gpt-5.5-low": { family: "gpt-5.5", effort: "low" },
492
+ "gpt-5.5-medium": { family: "gpt-5.5", effort: "medium" },
493
+ "gpt-5.5-high": { family: "gpt-5.5", effort: "high" },
494
+ "gpt-5.5-xhigh": { family: "gpt-5.5", effort: "xhigh" },
495
+ "gpt-5.4-low": { family: "gpt-5.4", effort: "low" },
496
+ "gpt-5.4-medium": { family: "gpt-5.4", effort: "medium" },
497
+ "gpt-5.4-high": { family: "gpt-5.4", effort: "high" },
498
+ "gpt-5.4-xhigh": { family: "gpt-5.4", effort: "xhigh" },
499
+ "gpt-5.3-codex-low": { family: "gpt-5.3-codex", effort: "low" },
500
+ "gpt-5.3-codex-medium": { family: "gpt-5.3-codex", effort: "medium" },
501
+ "gpt-5.3-codex-high": { family: "gpt-5.3-codex", effort: "high" },
502
+ "gpt-5.3-codex-xhigh": { family: "gpt-5.3-codex", effort: "xhigh" },
503
+ "gpt-5.2-codex-low": { family: "gpt-5.2-codex", effort: "low" },
504
+ "gpt-5.2-codex-medium": { family: "gpt-5.2-codex", effort: "medium" },
505
+ "gpt-5.2-codex-high": { family: "gpt-5.2-codex", effort: "high" },
506
+ "gpt-5.2-codex-xhigh": { family: "gpt-5.2-codex", effort: "xhigh" },
507
+ "gpt-5.2-low": { family: "gpt-5.2", effort: "low" },
508
+ "gpt-5.2-medium": { family: "gpt-5.2", effort: "medium" },
509
+ "gpt-5.2-high": { family: "gpt-5.2", effort: "high" },
510
+ "gpt-5.2-xhigh": { family: "gpt-5.2", effort: "xhigh" },
511
+ "gpt-5.1-codex-max-low": { family: "gpt-5.1-codex-max", effort: "low" },
512
+ "gpt-5.1-codex-max-medium": { family: "gpt-5.1-codex-max", effort: "medium" },
513
+ "gpt-5.1-codex-max-high": { family: "gpt-5.1-codex-max", effort: "high" },
514
+ "gpt-5.1-codex-max-xhigh": { family: "gpt-5.1-codex-max", effort: "xhigh" },
515
+ "gpt-5.1-codex-mini-medium": { family: "gpt-5.1-codex-mini", effort: "medium" },
516
+ "gpt-5.1-codex-mini-high": { family: "gpt-5.1-codex-mini", effort: "high" }
517
+ };
518
+ function parseClaudeModelMode(mode) {
519
+ const entry = CLAUDE_MODE_TO_SELECTION[mode];
520
+ if (entry) return entry;
521
+ if (mode === MODEL_MODE_DEFAULT) return { family: MODEL_MODE_DEFAULT, effort: null };
522
+ return { family: mode, effort: null };
523
+ }
524
+ function parseCodexModelMode(mode) {
525
+ return CODEX_MODE_TO_SELECTION[mode] ?? { family: MODEL_MODE_DEFAULT, effort: "medium" };
526
+ }
527
+ const FeishuWebhookConfigSchema = z.z.object({
528
+ url: z.z.string().url(),
529
+ secret: z.z.string().optional(),
530
+ enabled: z.z.boolean()
531
+ });
532
+ z.z.object({
533
+ url: z.z.string().nullable(),
534
+ secret_set: z.z.boolean(),
535
+ enabled: z.z.boolean(),
536
+ lastTestedAt: z.z.number().nullable()
537
+ });
538
+ z.z.object({
539
+ feishu: FeishuWebhookConfigSchema.extend({
540
+ lastTestedAt: z.z.number().optional()
541
+ }).optional(),
542
+ feishuMention: FeishuWebhookConfigSchema.extend({
543
+ lastTestedAt: z.z.number().optional()
544
+ }).optional(),
545
+ /**
546
+ * The account owner's own Feishu identity (open_id `ou_…` or tenant
547
+ * user_id). When set, collaboration @ notifications sent to any owner's
548
+ * mention webhook render this user as a real `<at>` ping instead of
549
+ * plain text. The ping only fires if the user is in the bot's group.
550
+ */
551
+ feishuUserId: z.z.string().optional()
552
+ });
553
+ const MemorySourceSchema = z.z.enum(["manual", "message-pin"]);
554
+ z.z.object({
555
+ id: z.z.string(),
556
+ content: z.z.string().min(1).max(8e3),
557
+ source: MemorySourceSchema,
558
+ sourceSessionId: z.z.string().nullable(),
559
+ sourceMessageId: z.z.string().nullable(),
560
+ archivedAt: z.z.number().nullable(),
561
+ createdAt: z.z.number(),
562
+ updatedAt: z.z.number()
563
+ });
564
+ z.z.object({
565
+ content: z.z.string().min(1).max(8e3),
566
+ source: MemorySourceSchema.optional().default("manual"),
567
+ sourceSessionId: z.z.string().optional(),
568
+ sourceMessageId: z.z.string().optional()
569
+ });
570
+ z.z.object({
571
+ content: z.z.string().min(1).max(8e3)
572
+ });
573
+
574
+ exports.GEMINI_MODEL_MODES = GEMINI_MODEL_MODES;
575
+ exports.MODEL_MODE_DEFAULT = MODEL_MODE_DEFAULT;
576
+ exports.isModelModeForAgent = isModelModeForAgent;
577
+ exports.parseClaudeModelMode = parseClaudeModelMode;
578
+ exports.parseCodexModelMode = parseCodexModelMode;