@pushwoosh/rpc-gateway-ai-assistant 0.1.278 → 0.1.280
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.
- package/data.js +0 -625
- package/index.d.ts +0 -2
- package/package.json +1 -1
- package/pushwoosh_aigen_v1.d.ts +1 -1
- package/pushwoosh_vibeml_v1.d.ts +0 -698
- package/pushwoosh_vibeml_v1.js +0 -3
package/data.js
CHANGED
|
@@ -4106,630 +4106,5 @@ export const data = {
|
|
|
4106
4106
|
"pushwoosh.templates.v1.DeleteResponse": {
|
|
4107
4107
|
"type": "I",
|
|
4108
4108
|
"fields": {}
|
|
4109
|
-
},
|
|
4110
|
-
"pushwoosh.vibeml.v1.VibeDocument": {
|
|
4111
|
-
"type": "I",
|
|
4112
|
-
"fields": {
|
|
4113
|
-
"meta": {
|
|
4114
|
-
"type": "pushwoosh.vibeml.v1.VibeMeta"
|
|
4115
|
-
},
|
|
4116
|
-
"theme": {
|
|
4117
|
-
"type": "pushwoosh.vibeml.v1.VibeTheme",
|
|
4118
|
-
"optional": true
|
|
4119
|
-
},
|
|
4120
|
-
"pages": {
|
|
4121
|
-
"type": "pushwoosh.vibeml.v1.VibePage",
|
|
4122
|
-
"array": true
|
|
4123
|
-
},
|
|
4124
|
-
"attributes": {
|
|
4125
|
-
"type": "pushwoosh.vibeml.v1.VibeAttributes",
|
|
4126
|
-
"optional": true
|
|
4127
|
-
},
|
|
4128
|
-
"fonts": {
|
|
4129
|
-
"type": "pushwoosh.vibeml.v1.VibeFont",
|
|
4130
|
-
"array": true
|
|
4131
|
-
},
|
|
4132
|
-
"settings": {
|
|
4133
|
-
"type": "pushwoosh.vibeml.v1.VibeDocumentSettings"
|
|
4134
|
-
},
|
|
4135
|
-
"blockVariants": {
|
|
4136
|
-
"type": "pushwoosh.vibeml.v1.VibeBlockVariants",
|
|
4137
|
-
"mapKeyType": "string"
|
|
4138
|
-
}
|
|
4139
|
-
}
|
|
4140
|
-
},
|
|
4141
|
-
"pushwoosh.vibeml.v1.VibeBlockVariants": {
|
|
4142
|
-
"type": "I",
|
|
4143
|
-
"fields": {
|
|
4144
|
-
"byName": {
|
|
4145
|
-
"type": "pushwoosh.vibeml.v1.VibePropsDefault",
|
|
4146
|
-
"mapKeyType": "string"
|
|
4147
|
-
}
|
|
4148
|
-
}
|
|
4149
|
-
},
|
|
4150
|
-
"pushwoosh.vibeml.v1.VibeDocumentSettings": {
|
|
4151
|
-
"type": "I",
|
|
4152
|
-
"fields": {
|
|
4153
|
-
"contentWidth": {
|
|
4154
|
-
"type": "string"
|
|
4155
|
-
},
|
|
4156
|
-
"background": {
|
|
4157
|
-
"type": "string"
|
|
4158
|
-
}
|
|
4159
|
-
}
|
|
4160
|
-
},
|
|
4161
|
-
"pushwoosh.vibeml.v1.VibeAttributes": {
|
|
4162
|
-
"type": "I",
|
|
4163
|
-
"fields": {
|
|
4164
|
-
"all": {
|
|
4165
|
-
"type": "string",
|
|
4166
|
-
"mapKeyType": "string"
|
|
4167
|
-
},
|
|
4168
|
-
"byType": {
|
|
4169
|
-
"type": "pushwoosh.vibeml.v1.VibePropsDefault",
|
|
4170
|
-
"mapKeyType": "string"
|
|
4171
|
-
}
|
|
4172
|
-
}
|
|
4173
|
-
},
|
|
4174
|
-
"pushwoosh.vibeml.v1.VibePropsDefault": {
|
|
4175
|
-
"type": "I",
|
|
4176
|
-
"fields": {
|
|
4177
|
-
"props": {
|
|
4178
|
-
"type": "string",
|
|
4179
|
-
"mapKeyType": "string"
|
|
4180
|
-
}
|
|
4181
|
-
}
|
|
4182
|
-
},
|
|
4183
|
-
"pushwoosh.vibeml.v1.VibeFont": {
|
|
4184
|
-
"type": "I",
|
|
4185
|
-
"fields": {
|
|
4186
|
-
"name": {
|
|
4187
|
-
"type": "string"
|
|
4188
|
-
},
|
|
4189
|
-
"href": {
|
|
4190
|
-
"type": "string"
|
|
4191
|
-
}
|
|
4192
|
-
}
|
|
4193
|
-
},
|
|
4194
|
-
"pushwoosh.vibeml.v1.VibePage": {
|
|
4195
|
-
"type": "I",
|
|
4196
|
-
"fields": {
|
|
4197
|
-
"id": {
|
|
4198
|
-
"type": "string"
|
|
4199
|
-
},
|
|
4200
|
-
"rows": {
|
|
4201
|
-
"type": "pushwoosh.vibeml.v1.VibeRow",
|
|
4202
|
-
"array": true
|
|
4203
|
-
}
|
|
4204
|
-
}
|
|
4205
|
-
},
|
|
4206
|
-
"pushwoosh.vibeml.v1.VibeRow": {
|
|
4207
|
-
"type": "I",
|
|
4208
|
-
"fields": {
|
|
4209
|
-
"section": {
|
|
4210
|
-
"type": "pushwoosh.vibeml.v1.VibeSection"
|
|
4211
|
-
},
|
|
4212
|
-
"wrapper": {
|
|
4213
|
-
"type": "pushwoosh.vibeml.v1.VibeWrapper"
|
|
4214
|
-
}
|
|
4215
|
-
},
|
|
4216
|
-
"oneofs": {
|
|
4217
|
-
"row": {
|
|
4218
|
-
"oneof": [
|
|
4219
|
-
"section",
|
|
4220
|
-
"wrapper"
|
|
4221
|
-
]
|
|
4222
|
-
}
|
|
4223
|
-
}
|
|
4224
|
-
},
|
|
4225
|
-
"pushwoosh.vibeml.v1.VibeWrapper": {
|
|
4226
|
-
"type": "I",
|
|
4227
|
-
"fields": {
|
|
4228
|
-
"id": {
|
|
4229
|
-
"type": "string"
|
|
4230
|
-
},
|
|
4231
|
-
"props": {
|
|
4232
|
-
"type": "string",
|
|
4233
|
-
"mapKeyType": "string"
|
|
4234
|
-
},
|
|
4235
|
-
"sections": {
|
|
4236
|
-
"type": "pushwoosh.vibeml.v1.VibeSection",
|
|
4237
|
-
"array": true
|
|
4238
|
-
}
|
|
4239
|
-
}
|
|
4240
|
-
},
|
|
4241
|
-
"pushwoosh.vibeml.v1.VibeMeta": {
|
|
4242
|
-
"type": "I",
|
|
4243
|
-
"fields": {
|
|
4244
|
-
"subject": {
|
|
4245
|
-
"type": "string"
|
|
4246
|
-
},
|
|
4247
|
-
"preheader": {
|
|
4248
|
-
"type": "string"
|
|
4249
|
-
}
|
|
4250
|
-
}
|
|
4251
|
-
},
|
|
4252
|
-
"pushwoosh.vibeml.v1.VibeTheme": {
|
|
4253
|
-
"type": "I",
|
|
4254
|
-
"fields": {
|
|
4255
|
-
"colors": {
|
|
4256
|
-
"type": "string",
|
|
4257
|
-
"mapKeyType": "string"
|
|
4258
|
-
},
|
|
4259
|
-
"fontFamily": {
|
|
4260
|
-
"type": "string"
|
|
4261
|
-
},
|
|
4262
|
-
"headingFontFamily": {
|
|
4263
|
-
"type": "string"
|
|
4264
|
-
}
|
|
4265
|
-
}
|
|
4266
|
-
},
|
|
4267
|
-
"pushwoosh.vibeml.v1.VibeSection": {
|
|
4268
|
-
"type": "I",
|
|
4269
|
-
"fields": {
|
|
4270
|
-
"id": {
|
|
4271
|
-
"type": "string"
|
|
4272
|
-
},
|
|
4273
|
-
"props": {
|
|
4274
|
-
"type": "string",
|
|
4275
|
-
"mapKeyType": "string"
|
|
4276
|
-
},
|
|
4277
|
-
"columns": {
|
|
4278
|
-
"type": "pushwoosh.vibeml.v1.VibeColumn",
|
|
4279
|
-
"array": true
|
|
4280
|
-
}
|
|
4281
|
-
}
|
|
4282
|
-
},
|
|
4283
|
-
"pushwoosh.vibeml.v1.VibeColumn": {
|
|
4284
|
-
"type": "I",
|
|
4285
|
-
"fields": {
|
|
4286
|
-
"id": {
|
|
4287
|
-
"type": "string"
|
|
4288
|
-
},
|
|
4289
|
-
"props": {
|
|
4290
|
-
"type": "string",
|
|
4291
|
-
"mapKeyType": "string"
|
|
4292
|
-
},
|
|
4293
|
-
"children": {
|
|
4294
|
-
"type": "pushwoosh.vibeml.v1.VibeContentBlock",
|
|
4295
|
-
"array": true
|
|
4296
|
-
}
|
|
4297
|
-
}
|
|
4298
|
-
},
|
|
4299
|
-
"pushwoosh.vibeml.v1.VibeContentBlock": {
|
|
4300
|
-
"type": "I",
|
|
4301
|
-
"fields": {
|
|
4302
|
-
"text": {
|
|
4303
|
-
"type": "pushwoosh.vibeml.v1.VibeText"
|
|
4304
|
-
},
|
|
4305
|
-
"image": {
|
|
4306
|
-
"type": "pushwoosh.vibeml.v1.VibeImage"
|
|
4307
|
-
},
|
|
4308
|
-
"button": {
|
|
4309
|
-
"type": "pushwoosh.vibeml.v1.VibeButton"
|
|
4310
|
-
},
|
|
4311
|
-
"spacer": {
|
|
4312
|
-
"type": "pushwoosh.vibeml.v1.VibeSpacer"
|
|
4313
|
-
},
|
|
4314
|
-
"divider": {
|
|
4315
|
-
"type": "pushwoosh.vibeml.v1.VibeDivider"
|
|
4316
|
-
},
|
|
4317
|
-
"table": {
|
|
4318
|
-
"type": "pushwoosh.vibeml.v1.VibeTable"
|
|
4319
|
-
},
|
|
4320
|
-
"buttonGroup": {
|
|
4321
|
-
"type": "pushwoosh.vibeml.v1.VibeButtonGroup"
|
|
4322
|
-
}
|
|
4323
|
-
},
|
|
4324
|
-
"oneofs": {
|
|
4325
|
-
"block": {
|
|
4326
|
-
"oneof": [
|
|
4327
|
-
"text",
|
|
4328
|
-
"image",
|
|
4329
|
-
"button",
|
|
4330
|
-
"spacer",
|
|
4331
|
-
"divider",
|
|
4332
|
-
"table",
|
|
4333
|
-
"buttonGroup"
|
|
4334
|
-
]
|
|
4335
|
-
}
|
|
4336
|
-
}
|
|
4337
|
-
},
|
|
4338
|
-
"pushwoosh.vibeml.v1.VibeText": {
|
|
4339
|
-
"type": "I",
|
|
4340
|
-
"fields": {
|
|
4341
|
-
"id": {
|
|
4342
|
-
"type": "string"
|
|
4343
|
-
},
|
|
4344
|
-
"props": {
|
|
4345
|
-
"type": "string",
|
|
4346
|
-
"mapKeyType": "string"
|
|
4347
|
-
},
|
|
4348
|
-
"content": {
|
|
4349
|
-
"type": "string"
|
|
4350
|
-
},
|
|
4351
|
-
"variant": {
|
|
4352
|
-
"type": "string"
|
|
4353
|
-
}
|
|
4354
|
-
}
|
|
4355
|
-
},
|
|
4356
|
-
"pushwoosh.vibeml.v1.VibeImage": {
|
|
4357
|
-
"type": "I",
|
|
4358
|
-
"fields": {
|
|
4359
|
-
"id": {
|
|
4360
|
-
"type": "string"
|
|
4361
|
-
},
|
|
4362
|
-
"props": {
|
|
4363
|
-
"type": "string",
|
|
4364
|
-
"mapKeyType": "string"
|
|
4365
|
-
}
|
|
4366
|
-
}
|
|
4367
|
-
},
|
|
4368
|
-
"pushwoosh.vibeml.v1.VibeButton": {
|
|
4369
|
-
"type": "I",
|
|
4370
|
-
"fields": {
|
|
4371
|
-
"id": {
|
|
4372
|
-
"type": "string"
|
|
4373
|
-
},
|
|
4374
|
-
"props": {
|
|
4375
|
-
"type": "string",
|
|
4376
|
-
"mapKeyType": "string"
|
|
4377
|
-
},
|
|
4378
|
-
"content": {
|
|
4379
|
-
"type": "string"
|
|
4380
|
-
},
|
|
4381
|
-
"variant": {
|
|
4382
|
-
"type": "string"
|
|
4383
|
-
}
|
|
4384
|
-
}
|
|
4385
|
-
},
|
|
4386
|
-
"pushwoosh.vibeml.v1.VibeButtonGroup": {
|
|
4387
|
-
"type": "I",
|
|
4388
|
-
"fields": {
|
|
4389
|
-
"id": {
|
|
4390
|
-
"type": "string"
|
|
4391
|
-
},
|
|
4392
|
-
"props": {
|
|
4393
|
-
"type": "string",
|
|
4394
|
-
"mapKeyType": "string"
|
|
4395
|
-
},
|
|
4396
|
-
"items": {
|
|
4397
|
-
"type": "pushwoosh.vibeml.v1.VibeButtonGroupItem",
|
|
4398
|
-
"array": true
|
|
4399
|
-
}
|
|
4400
|
-
}
|
|
4401
|
-
},
|
|
4402
|
-
"pushwoosh.vibeml.v1.VibeButtonGroupItem": {
|
|
4403
|
-
"type": "I",
|
|
4404
|
-
"fields": {
|
|
4405
|
-
"button": {
|
|
4406
|
-
"type": "pushwoosh.vibeml.v1.VibeButton"
|
|
4407
|
-
},
|
|
4408
|
-
"image": {
|
|
4409
|
-
"type": "pushwoosh.vibeml.v1.VibeImage"
|
|
4410
|
-
}
|
|
4411
|
-
},
|
|
4412
|
-
"oneofs": {
|
|
4413
|
-
"item": {
|
|
4414
|
-
"oneof": [
|
|
4415
|
-
"button",
|
|
4416
|
-
"image"
|
|
4417
|
-
]
|
|
4418
|
-
}
|
|
4419
|
-
}
|
|
4420
|
-
},
|
|
4421
|
-
"pushwoosh.vibeml.v1.VibeSpacer": {
|
|
4422
|
-
"type": "I",
|
|
4423
|
-
"fields": {
|
|
4424
|
-
"id": {
|
|
4425
|
-
"type": "string"
|
|
4426
|
-
},
|
|
4427
|
-
"props": {
|
|
4428
|
-
"type": "string",
|
|
4429
|
-
"mapKeyType": "string"
|
|
4430
|
-
}
|
|
4431
|
-
}
|
|
4432
|
-
},
|
|
4433
|
-
"pushwoosh.vibeml.v1.VibeDivider": {
|
|
4434
|
-
"type": "I",
|
|
4435
|
-
"fields": {
|
|
4436
|
-
"id": {
|
|
4437
|
-
"type": "string"
|
|
4438
|
-
},
|
|
4439
|
-
"props": {
|
|
4440
|
-
"type": "string",
|
|
4441
|
-
"mapKeyType": "string"
|
|
4442
|
-
}
|
|
4443
|
-
}
|
|
4444
|
-
},
|
|
4445
|
-
"pushwoosh.vibeml.v1.VibeTable": {
|
|
4446
|
-
"type": "I",
|
|
4447
|
-
"fields": {
|
|
4448
|
-
"id": {
|
|
4449
|
-
"type": "string"
|
|
4450
|
-
},
|
|
4451
|
-
"props": {
|
|
4452
|
-
"type": "string",
|
|
4453
|
-
"mapKeyType": "string"
|
|
4454
|
-
},
|
|
4455
|
-
"rows": {
|
|
4456
|
-
"type": "pushwoosh.vibeml.v1.VibeTableRow",
|
|
4457
|
-
"array": true
|
|
4458
|
-
}
|
|
4459
|
-
}
|
|
4460
|
-
},
|
|
4461
|
-
"pushwoosh.vibeml.v1.VibeTableRow": {
|
|
4462
|
-
"type": "I",
|
|
4463
|
-
"fields": {
|
|
4464
|
-
"header": {
|
|
4465
|
-
"type": "boolean"
|
|
4466
|
-
},
|
|
4467
|
-
"cells": {
|
|
4468
|
-
"type": "string",
|
|
4469
|
-
"array": true
|
|
4470
|
-
}
|
|
4471
|
-
}
|
|
4472
|
-
},
|
|
4473
|
-
"pushwoosh.vibeml.v1.VibeMlService": {
|
|
4474
|
-
"type": "S",
|
|
4475
|
-
"key": "vibeMl",
|
|
4476
|
-
"methods": {
|
|
4477
|
-
"Generate": {
|
|
4478
|
-
"request": "pushwoosh.vibeml.v1.VibeMlGenerateRequest",
|
|
4479
|
-
"response": "pushwoosh.vibeml.v1.VibeMlGenerateResponse",
|
|
4480
|
-
"method": "post",
|
|
4481
|
-
"path": "/api/v1/vibeml/generate"
|
|
4482
|
-
},
|
|
4483
|
-
"Edit": {
|
|
4484
|
-
"request": "pushwoosh.vibeml.v1.VibeMlEditRequest",
|
|
4485
|
-
"response": "pushwoosh.vibeml.v1.VibeMlEditResponse",
|
|
4486
|
-
"method": "post",
|
|
4487
|
-
"path": "/api/v1/vibeml/edit"
|
|
4488
|
-
},
|
|
4489
|
-
"Restyle": {
|
|
4490
|
-
"request": "pushwoosh.vibeml.v1.VibeMlRestyleRequest",
|
|
4491
|
-
"response": "pushwoosh.vibeml.v1.VibeMlRestyleResponse",
|
|
4492
|
-
"method": "post",
|
|
4493
|
-
"path": "/api/v1/vibeml/restyle"
|
|
4494
|
-
},
|
|
4495
|
-
"ExtractTheme": {
|
|
4496
|
-
"request": "pushwoosh.vibeml.v1.VibeMlExtractThemeRequest",
|
|
4497
|
-
"response": "pushwoosh.vibeml.v1.VibeMlExtractThemeResponse",
|
|
4498
|
-
"method": "post",
|
|
4499
|
-
"path": "/api/v1/vibeml/extract-theme"
|
|
4500
|
-
},
|
|
4501
|
-
"Translate": {
|
|
4502
|
-
"request": "pushwoosh.vibeml.v1.VibeMlTranslateRequest",
|
|
4503
|
-
"response": "pushwoosh.vibeml.v1.VibeMlTranslateResponse",
|
|
4504
|
-
"method": "post",
|
|
4505
|
-
"path": "/api/v1/vibeml/translate"
|
|
4506
|
-
}
|
|
4507
|
-
}
|
|
4508
|
-
},
|
|
4509
|
-
"pushwoosh.vibeml.v1.VibeSourceFormat": {
|
|
4510
|
-
"type": "E",
|
|
4511
|
-
"values": [
|
|
4512
|
-
"VIBE_SOURCE_FORMAT_UNSPECIFIED",
|
|
4513
|
-
"VIBE_SOURCE_FORMAT_TEXT",
|
|
4514
|
-
"VIBE_SOURCE_FORMAT_MARKDOWN",
|
|
4515
|
-
"VIBE_SOURCE_FORMAT_HTML",
|
|
4516
|
-
"VIBE_SOURCE_FORMAT_PDF"
|
|
4517
|
-
]
|
|
4518
|
-
},
|
|
4519
|
-
"pushwoosh.vibeml.v1.VibeSource": {
|
|
4520
|
-
"type": "I",
|
|
4521
|
-
"fields": {
|
|
4522
|
-
"format": {
|
|
4523
|
-
"type": "pushwoosh.vibeml.v1.VibeSourceFormat"
|
|
4524
|
-
},
|
|
4525
|
-
"content": {
|
|
4526
|
-
"type": "string"
|
|
4527
|
-
},
|
|
4528
|
-
"name": {
|
|
4529
|
-
"type": "string"
|
|
4530
|
-
}
|
|
4531
|
-
}
|
|
4532
|
-
},
|
|
4533
|
-
"pushwoosh.vibeml.v1.VibeMlGenerateRequest": {
|
|
4534
|
-
"type": "I",
|
|
4535
|
-
"fields": {
|
|
4536
|
-
"prompt": {
|
|
4537
|
-
"type": "string"
|
|
4538
|
-
},
|
|
4539
|
-
"application": {
|
|
4540
|
-
"type": "string"
|
|
4541
|
-
},
|
|
4542
|
-
"styleDocument": {
|
|
4543
|
-
"type": "pushwoosh.vibeml.v1.VibeDocument"
|
|
4544
|
-
},
|
|
4545
|
-
"llmProvider": {
|
|
4546
|
-
"type": "string"
|
|
4547
|
-
},
|
|
4548
|
-
"llmModel": {
|
|
4549
|
-
"type": "string",
|
|
4550
|
-
"optional": true
|
|
4551
|
-
},
|
|
4552
|
-
"sources": {
|
|
4553
|
-
"type": "pushwoosh.vibeml.v1.VibeSource",
|
|
4554
|
-
"array": true
|
|
4555
|
-
}
|
|
4556
|
-
}
|
|
4557
|
-
},
|
|
4558
|
-
"pushwoosh.vibeml.v1.VibeMlGenerateResponse": {
|
|
4559
|
-
"type": "I",
|
|
4560
|
-
"fields": {
|
|
4561
|
-
"document": {
|
|
4562
|
-
"type": "pushwoosh.vibeml.v1.VibeDocument"
|
|
4563
|
-
},
|
|
4564
|
-
"summary": {
|
|
4565
|
-
"type": "string"
|
|
4566
|
-
}
|
|
4567
|
-
}
|
|
4568
|
-
},
|
|
4569
|
-
"pushwoosh.vibeml.v1.VibeMlEditRequest": {
|
|
4570
|
-
"type": "I",
|
|
4571
|
-
"fields": {
|
|
4572
|
-
"prompt": {
|
|
4573
|
-
"type": "string"
|
|
4574
|
-
},
|
|
4575
|
-
"document": {
|
|
4576
|
-
"type": "pushwoosh.vibeml.v1.VibeDocument"
|
|
4577
|
-
},
|
|
4578
|
-
"application": {
|
|
4579
|
-
"type": "string"
|
|
4580
|
-
},
|
|
4581
|
-
"llmProvider": {
|
|
4582
|
-
"type": "string"
|
|
4583
|
-
},
|
|
4584
|
-
"llmModel": {
|
|
4585
|
-
"type": "string",
|
|
4586
|
-
"optional": true
|
|
4587
|
-
},
|
|
4588
|
-
"sources": {
|
|
4589
|
-
"type": "pushwoosh.vibeml.v1.VibeSource",
|
|
4590
|
-
"array": true
|
|
4591
|
-
}
|
|
4592
|
-
}
|
|
4593
|
-
},
|
|
4594
|
-
"pushwoosh.vibeml.v1.VibeMlEditResponse": {
|
|
4595
|
-
"type": "I",
|
|
4596
|
-
"fields": {
|
|
4597
|
-
"document": {
|
|
4598
|
-
"type": "pushwoosh.vibeml.v1.VibeDocument"
|
|
4599
|
-
},
|
|
4600
|
-
"summary": {
|
|
4601
|
-
"type": "string"
|
|
4602
|
-
}
|
|
4603
|
-
}
|
|
4604
|
-
},
|
|
4605
|
-
"pushwoosh.vibeml.v1.VibeMlRestyleRequest": {
|
|
4606
|
-
"type": "I",
|
|
4607
|
-
"fields": {
|
|
4608
|
-
"style": {
|
|
4609
|
-
"type": "pushwoosh.vibeml.v1.VibeDocument"
|
|
4610
|
-
},
|
|
4611
|
-
"content": {
|
|
4612
|
-
"type": "pushwoosh.vibeml.v1.VibeDocument"
|
|
4613
|
-
},
|
|
4614
|
-
"application": {
|
|
4615
|
-
"type": "string"
|
|
4616
|
-
},
|
|
4617
|
-
"llmProvider": {
|
|
4618
|
-
"type": "string"
|
|
4619
|
-
},
|
|
4620
|
-
"llmModel": {
|
|
4621
|
-
"type": "string",
|
|
4622
|
-
"optional": true
|
|
4623
|
-
}
|
|
4624
|
-
}
|
|
4625
|
-
},
|
|
4626
|
-
"pushwoosh.vibeml.v1.VibeMlRestyleResponse": {
|
|
4627
|
-
"type": "I",
|
|
4628
|
-
"fields": {
|
|
4629
|
-
"document": {
|
|
4630
|
-
"type": "pushwoosh.vibeml.v1.VibeDocument"
|
|
4631
|
-
},
|
|
4632
|
-
"summary": {
|
|
4633
|
-
"type": "string"
|
|
4634
|
-
}
|
|
4635
|
-
}
|
|
4636
|
-
},
|
|
4637
|
-
"pushwoosh.vibeml.v1.VibeReferenceImage": {
|
|
4638
|
-
"type": "I",
|
|
4639
|
-
"fields": {
|
|
4640
|
-
"mediaType": {
|
|
4641
|
-
"type": "string"
|
|
4642
|
-
},
|
|
4643
|
-
"data": {
|
|
4644
|
-
"type": "string"
|
|
4645
|
-
}
|
|
4646
|
-
}
|
|
4647
|
-
},
|
|
4648
|
-
"pushwoosh.vibeml.v1.VibeMlExtractThemeRequest": {
|
|
4649
|
-
"type": "I",
|
|
4650
|
-
"fields": {
|
|
4651
|
-
"image": {
|
|
4652
|
-
"type": "pushwoosh.vibeml.v1.VibeReferenceImage",
|
|
4653
|
-
"optional": true
|
|
4654
|
-
},
|
|
4655
|
-
"application": {
|
|
4656
|
-
"type": "string"
|
|
4657
|
-
},
|
|
4658
|
-
"llmProvider": {
|
|
4659
|
-
"type": "string"
|
|
4660
|
-
},
|
|
4661
|
-
"llmModel": {
|
|
4662
|
-
"type": "string",
|
|
4663
|
-
"optional": true
|
|
4664
|
-
},
|
|
4665
|
-
"sources": {
|
|
4666
|
-
"type": "pushwoosh.vibeml.v1.VibeSource",
|
|
4667
|
-
"array": true
|
|
4668
|
-
},
|
|
4669
|
-
"description": {
|
|
4670
|
-
"type": "string"
|
|
4671
|
-
},
|
|
4672
|
-
"siteUrl": {
|
|
4673
|
-
"type": "string"
|
|
4674
|
-
}
|
|
4675
|
-
}
|
|
4676
|
-
},
|
|
4677
|
-
"pushwoosh.vibeml.v1.VibeMlExtractThemeResponse": {
|
|
4678
|
-
"type": "I",
|
|
4679
|
-
"fields": {
|
|
4680
|
-
"theme": {
|
|
4681
|
-
"type": "pushwoosh.vibeml.v1.VibeTheme"
|
|
4682
|
-
},
|
|
4683
|
-
"logoUrl": {
|
|
4684
|
-
"type": "string"
|
|
4685
|
-
},
|
|
4686
|
-
"brandVoice": {
|
|
4687
|
-
"type": "string"
|
|
4688
|
-
}
|
|
4689
|
-
}
|
|
4690
|
-
},
|
|
4691
|
-
"pushwoosh.vibeml.v1.VibeMlTranslateRequest": {
|
|
4692
|
-
"type": "I",
|
|
4693
|
-
"fields": {
|
|
4694
|
-
"application": {
|
|
4695
|
-
"type": "string"
|
|
4696
|
-
},
|
|
4697
|
-
"texts": {
|
|
4698
|
-
"type": "string",
|
|
4699
|
-
"array": true
|
|
4700
|
-
},
|
|
4701
|
-
"targetLanguages": {
|
|
4702
|
-
"type": "string",
|
|
4703
|
-
"array": true
|
|
4704
|
-
},
|
|
4705
|
-
"context": {
|
|
4706
|
-
"type": "string"
|
|
4707
|
-
},
|
|
4708
|
-
"llmProvider": {
|
|
4709
|
-
"type": "string"
|
|
4710
|
-
},
|
|
4711
|
-
"llmModel": {
|
|
4712
|
-
"type": "string",
|
|
4713
|
-
"optional": true
|
|
4714
|
-
}
|
|
4715
|
-
}
|
|
4716
|
-
},
|
|
4717
|
-
"pushwoosh.vibeml.v1.VibeMlTranslatedTexts": {
|
|
4718
|
-
"type": "I",
|
|
4719
|
-
"fields": {
|
|
4720
|
-
"texts": {
|
|
4721
|
-
"type": "string",
|
|
4722
|
-
"array": true
|
|
4723
|
-
}
|
|
4724
|
-
}
|
|
4725
|
-
},
|
|
4726
|
-
"pushwoosh.vibeml.v1.VibeMlTranslateResponse": {
|
|
4727
|
-
"type": "I",
|
|
4728
|
-
"fields": {
|
|
4729
|
-
"translations": {
|
|
4730
|
-
"type": "pushwoosh.vibeml.v1.VibeMlTranslatedTexts",
|
|
4731
|
-
"mapKeyType": "string"
|
|
4732
|
-
}
|
|
4733
|
-
}
|
|
4734
4109
|
}
|
|
4735
4110
|
};
|
package/index.d.ts
CHANGED
|
@@ -2,12 +2,10 @@ import { AgentRunner as pushwoosh_agentrunner_v1_AgentRunner } from './pushwoosh
|
|
|
2
2
|
import { AiGenService as pushwoosh_aigen_v1_AiGenService } from './pushwoosh_aigen_v1';
|
|
3
3
|
import { AssistantService as pushwoosh_accounts_assistant_v1_AssistantService } from './pushwoosh_accounts_assistant_v1';
|
|
4
4
|
import { TemplatesService as pushwoosh_templates_v1_TemplatesService } from './pushwoosh_templates_v1';
|
|
5
|
-
import { VibeMlService as pushwoosh_vibeml_v1_VibeMlService } from './pushwoosh_vibeml_v1';
|
|
6
5
|
export type API = {
|
|
7
6
|
agentRunner: pushwoosh_agentrunner_v1_AgentRunner;
|
|
8
7
|
aiGen: pushwoosh_aigen_v1_AiGenService;
|
|
9
8
|
assistant: pushwoosh_accounts_assistant_v1_AssistantService;
|
|
10
9
|
templates: pushwoosh_templates_v1_TemplatesService;
|
|
11
|
-
vibeMl: pushwoosh_vibeml_v1_VibeMlService;
|
|
12
10
|
};
|
|
13
11
|
export { data } from './data';
|
package/package.json
CHANGED
package/pushwoosh_aigen_v1.d.ts
CHANGED
|
@@ -73,7 +73,7 @@ export interface AiGenService {
|
|
|
73
73
|
ExtractStyle: AiGenService_ExtractStyle;
|
|
74
74
|
/**
|
|
75
75
|
* ExtractTheme samples a full brand theme (every palette role + both font stacks) and
|
|
76
|
-
* the brand voice from any mix of materials. See documents/
|
|
76
|
+
* the brand voice from any mix of materials. See documents/aigen-brand-utilities.md.
|
|
77
77
|
*/
|
|
78
78
|
ExtractTheme: AiGenService_ExtractTheme;
|
|
79
79
|
/**
|
package/pushwoosh_vibeml_v1.d.ts
DELETED
|
@@ -1,698 +0,0 @@
|
|
|
1
|
-
import { RpcMethod } from './commonTypes';
|
|
2
|
-
export type VibeDocument = {
|
|
3
|
-
meta: VibeMeta;
|
|
4
|
-
/** Optional document theme. Block-level props win over theme values. */
|
|
5
|
-
theme?: VibeTheme;
|
|
6
|
-
/**
|
|
7
|
-
* Pages, in render order. MVP documents always carry exactly one page;
|
|
8
|
-
* the repeated form is a forward-looking hook for multi-page documents
|
|
9
|
-
* (e.g. email digests with tabs) so adding pages later is not a wire
|
|
10
|
-
* break.
|
|
11
|
-
*/
|
|
12
|
-
pages: VibePage[];
|
|
13
|
-
/** Document-wide default props (MJML mj-attributes analog). Optional. */
|
|
14
|
-
attributes?: VibeAttributes;
|
|
15
|
-
/**
|
|
16
|
-
* Web fonts to import (MJML mj-font analog), so font-family chains in
|
|
17
|
-
* the theme/props can reference them. Order is not significant.
|
|
18
|
-
*/
|
|
19
|
-
fonts: VibeFont[];
|
|
20
|
-
/**
|
|
21
|
-
* Document-wide rendering settings: the email canvas width and
|
|
22
|
-
* background (the MJML mj-body width/background analog). Document-level
|
|
23
|
-
* and independent of the optional theme — there is no body component in
|
|
24
|
-
* the AST to carry them, and they must be settable even when no theme is
|
|
25
|
-
* given. Optional; an absent message / empty fields = renderer defaults.
|
|
26
|
-
*/
|
|
27
|
-
settings: VibeDocumentSettings;
|
|
28
|
-
/**
|
|
29
|
-
* Named styling variants ("presets") keyed by block type, e.g.
|
|
30
|
-
* block_variants["button"] = {primary, secondary}. A block opts into one by
|
|
31
|
-
* name via its own `variant` field (currently only VibeButton has one). Like
|
|
32
|
-
* `attributes`, this is client-managed style: the model READS it to pick a
|
|
33
|
-
* variant per block but never produces or edits the map itself. Optional.
|
|
34
|
-
*/
|
|
35
|
-
blockVariants: Record<string, VibeBlockVariants>;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* VibeBlockVariants holds the named styling variants for one block type:
|
|
39
|
-
* variant name ("primary", "secondary", ...) → its prop overrides. The
|
|
40
|
-
* overrides have the same shape and semantics as VibeAttributes.by_type
|
|
41
|
-
* values (a partial prop map validated against that block type). A block that
|
|
42
|
-
* names a variant resolves props highest-first: block's own prop > variant >
|
|
43
|
-
* attributes by_type > attributes all > registry default.
|
|
44
|
-
*/
|
|
45
|
-
export type VibeBlockVariants = {
|
|
46
|
-
byName: Record<string, VibePropsDefault>;
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* VibeDocumentSettings holds document-wide rendering settings that are
|
|
50
|
-
* neither palette nor content. Today just the email canvas; a bucket so
|
|
51
|
-
* future document-level knobs (e.g. direction, default link behaviour) land
|
|
52
|
-
* here without touching theme or pages. Part of the client-managed style:
|
|
53
|
-
* the model is told these values but never produces or edits them.
|
|
54
|
-
*/
|
|
55
|
-
export type VibeDocumentSettings = {
|
|
56
|
-
/**
|
|
57
|
-
* Email canvas width — the MJML mj-body width analog: the fixed pixel (or
|
|
58
|
-
* %) width the content column is laid out in. A unit value like "600px".
|
|
59
|
-
* Empty = the renderer's default (~600px).
|
|
60
|
-
*/
|
|
61
|
-
contentWidth: string;
|
|
62
|
-
/**
|
|
63
|
-
* Email canvas / body background color — the MJML mj-body background
|
|
64
|
-
* analog: the area behind the content column. Hex ("#f4f4f4"),
|
|
65
|
-
* "transparent", or a theme color token ("$background"). Empty = the
|
|
66
|
-
* renderer's default.
|
|
67
|
-
*/
|
|
68
|
-
background: string;
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* VibeAttributes ~ mj-attributes: document-wide default props. Two layers,
|
|
72
|
-
* both optional; the effective value of a prop on a block is resolved
|
|
73
|
-
* highest-first: block's own prop > by_type[block type] > all > the
|
|
74
|
-
* registry default. Values use the same CSS-flavoured strings and the
|
|
75
|
-
* same per-block prop vocabulary as blocks; font-family is NOT a block
|
|
76
|
-
* prop here — set it via the theme.
|
|
77
|
-
*/
|
|
78
|
-
export type VibeAttributes = {
|
|
79
|
-
/**
|
|
80
|
-
* mj-all: defaults applied to every block. A prop only takes effect on a
|
|
81
|
-
* block whose type actually accepts it (per the registry).
|
|
82
|
-
*/
|
|
83
|
-
all: Record<string, string>;
|
|
84
|
-
/**
|
|
85
|
-
* Defaults per block type, keyed by type name ("section", "column",
|
|
86
|
-
* "text", "image", "button", "spacer", "divider", "table"). Each value's
|
|
87
|
-
* props are validated against that type in the registry.
|
|
88
|
-
*/
|
|
89
|
-
byType: Record<string, VibePropsDefault>;
|
|
90
|
-
};
|
|
91
|
-
/**
|
|
92
|
-
* VibePropsDefault wraps a prop map so it can be a proto map value
|
|
93
|
-
* (proto3 map values cannot themselves be maps).
|
|
94
|
-
*/
|
|
95
|
-
export type VibePropsDefault = {
|
|
96
|
-
props: Record<string, string>;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* VibeFont ~ mj-font: a web font to import. name is the font-family name
|
|
100
|
-
* referenced elsewhere; href is the stylesheet/font URL to load.
|
|
101
|
-
*/
|
|
102
|
-
export type VibeFont = {
|
|
103
|
-
name: string;
|
|
104
|
-
href: string;
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* VibePage is one page of a (future) multi-page document: an ordered list
|
|
108
|
-
* of layout rows. MVP documents always carry exactly one page.
|
|
109
|
-
*/
|
|
110
|
-
export type VibePage = {
|
|
111
|
-
/**
|
|
112
|
-
* Unique within the document. Generated by the server and preserved
|
|
113
|
-
* across edits. The forward-looking addressing unit for multi-page
|
|
114
|
-
* documents.
|
|
115
|
-
*/
|
|
116
|
-
id: string;
|
|
117
|
-
/**
|
|
118
|
-
* Top-level rows of this page, in render order: each is a bare section or
|
|
119
|
-
* a wrapper grouping several sections.
|
|
120
|
-
*/
|
|
121
|
-
rows: VibeRow[];
|
|
122
|
-
};
|
|
123
|
-
export type VibeRow_row_section = {
|
|
124
|
-
type: 'section';
|
|
125
|
-
data: VibeSection;
|
|
126
|
-
};
|
|
127
|
-
export type VibeRow_row_wrapper = {
|
|
128
|
-
type: 'wrapper';
|
|
129
|
-
data: VibeWrapper;
|
|
130
|
-
};
|
|
131
|
-
export type VibeRow_row = VibeRow_row_section | VibeRow_row_wrapper;
|
|
132
|
-
/**
|
|
133
|
-
* VibeRow is one top-level page row: exactly one of a bare section or a
|
|
134
|
-
* wrapper (mirrors MJML mj-body children — mj-section / mj-wrapper).
|
|
135
|
-
*/
|
|
136
|
-
export type VibeRow = {
|
|
137
|
-
row: VibeRow_row;
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* VibeWrapper ~ mj-wrapper: groups several sections under a shared
|
|
141
|
-
* background, border and padding (a card or banded region). Holds sections,
|
|
142
|
-
* not columns; wrappers cannot nest.
|
|
143
|
-
*/
|
|
144
|
-
export type VibeWrapper = {
|
|
145
|
-
/**
|
|
146
|
-
* Unique within the document. Generated by the model on create, preserved
|
|
147
|
-
* across edits.
|
|
148
|
-
*/
|
|
149
|
-
id: string;
|
|
150
|
-
/**
|
|
151
|
-
* Allowed props (see registry): padding, background-color, border,
|
|
152
|
-
* border-radius, full-width, gap.
|
|
153
|
-
*/
|
|
154
|
-
props: Record<string, string>;
|
|
155
|
-
sections: VibeSection[];
|
|
156
|
-
};
|
|
157
|
-
export type VibeMeta = {
|
|
158
|
-
subject: string;
|
|
159
|
-
preheader: string;
|
|
160
|
-
};
|
|
161
|
-
/**
|
|
162
|
-
* VibeTheme is the minimal MVP theme: a role-keyed palette plus base
|
|
163
|
-
* typography. Renderers and the LLM read it as the document-wide
|
|
164
|
-
* defaults; individual blocks may override via their props.
|
|
165
|
-
*/
|
|
166
|
-
export type VibeTheme = {
|
|
167
|
-
/**
|
|
168
|
-
* Design-token palette keyed by semantic role (background, surface, text,
|
|
169
|
-
* heading, text-secondary, accent, text-on-accent, border, link). Free-form
|
|
170
|
-
* string keys — no key is guaranteed present. Any color-typed prop value
|
|
171
|
-
* (block props, attributes, block_variants, settings.background) may
|
|
172
|
-
* reference an entry by token: "$accent" means colors["accent"], resolved
|
|
173
|
-
* by the renderer at render time — so re-theming a document is just
|
|
174
|
-
* swapping this palette. Values here are strictly hex colors ("#155F50");
|
|
175
|
-
* a token cannot reference another token. The canvas background is NOT
|
|
176
|
-
* here — it is a guaranteed field on VibeDocumentSettings.
|
|
177
|
-
*/
|
|
178
|
-
colors: Record<string, string>;
|
|
179
|
-
/** CSS font-family chain for body text. */
|
|
180
|
-
fontFamily: string;
|
|
181
|
-
/** CSS font-family chain for headings. Empty = same as font_family. */
|
|
182
|
-
headingFontFamily: string;
|
|
183
|
-
};
|
|
184
|
-
/**
|
|
185
|
-
* VibeSection ~ mj-section: a full-width horizontal row containing
|
|
186
|
-
* columns. Sections cannot nest.
|
|
187
|
-
*/
|
|
188
|
-
export type VibeSection = {
|
|
189
|
-
/**
|
|
190
|
-
* Unique within the document. Generated by the model on create,
|
|
191
|
-
* preserved across edits.
|
|
192
|
-
*/
|
|
193
|
-
id: string;
|
|
194
|
-
/**
|
|
195
|
-
* Allowed props (see registry): padding, background-color,
|
|
196
|
-
* border-radius, full-width, text-align, columns-gap.
|
|
197
|
-
*/
|
|
198
|
-
props: Record<string, string>;
|
|
199
|
-
columns: VibeColumn[];
|
|
200
|
-
};
|
|
201
|
-
/**
|
|
202
|
-
* VibeColumn ~ mj-column: a vertical slice of a section holding
|
|
203
|
-
* content blocks. Columns cannot nest.
|
|
204
|
-
*/
|
|
205
|
-
export type VibeColumn = {
|
|
206
|
-
id: string;
|
|
207
|
-
/**
|
|
208
|
-
* Allowed props (see registry): width, padding, background-color,
|
|
209
|
-
* vertical-align, border-radius.
|
|
210
|
-
*/
|
|
211
|
-
props: Record<string, string>;
|
|
212
|
-
children: VibeContentBlock[];
|
|
213
|
-
};
|
|
214
|
-
export type VibeContentBlock_block_text = {
|
|
215
|
-
type: 'text';
|
|
216
|
-
data: VibeText;
|
|
217
|
-
};
|
|
218
|
-
export type VibeContentBlock_block_image = {
|
|
219
|
-
type: 'image';
|
|
220
|
-
data: VibeImage;
|
|
221
|
-
};
|
|
222
|
-
export type VibeContentBlock_block_button = {
|
|
223
|
-
type: 'button';
|
|
224
|
-
data: VibeButton;
|
|
225
|
-
};
|
|
226
|
-
export type VibeContentBlock_block_spacer = {
|
|
227
|
-
type: 'spacer';
|
|
228
|
-
data: VibeSpacer;
|
|
229
|
-
};
|
|
230
|
-
export type VibeContentBlock_block_divider = {
|
|
231
|
-
type: 'divider';
|
|
232
|
-
data: VibeDivider;
|
|
233
|
-
};
|
|
234
|
-
export type VibeContentBlock_block_table = {
|
|
235
|
-
type: 'table';
|
|
236
|
-
data: VibeTable;
|
|
237
|
-
};
|
|
238
|
-
export type VibeContentBlock_block_buttonGroup = {
|
|
239
|
-
type: 'buttonGroup';
|
|
240
|
-
data: VibeButtonGroup;
|
|
241
|
-
};
|
|
242
|
-
export type VibeContentBlock_block = VibeContentBlock_block_text | VibeContentBlock_block_image | VibeContentBlock_block_button | VibeContentBlock_block_spacer | VibeContentBlock_block_divider | VibeContentBlock_block_table | VibeContentBlock_block_buttonGroup;
|
|
243
|
-
/** VibeContentBlock is one leaf content block inside a column. */
|
|
244
|
-
export type VibeContentBlock = {
|
|
245
|
-
block: VibeContentBlock_block;
|
|
246
|
-
};
|
|
247
|
-
/**
|
|
248
|
-
* VibeText ~ mj-text. Content is text with a limited inline-HTML
|
|
249
|
-
* allowlist (strong, b, em, i, u, s, br, span, a, small, sup, sub);
|
|
250
|
-
* anything else is rejected by the server validator.
|
|
251
|
-
*/
|
|
252
|
-
export type VibeText = {
|
|
253
|
-
id: string;
|
|
254
|
-
/**
|
|
255
|
-
* Allowed props: align, color, font-size, font-weight, font-family,
|
|
256
|
-
* line-height, padding.
|
|
257
|
-
*/
|
|
258
|
-
props: Record<string, string>;
|
|
259
|
-
content: string;
|
|
260
|
-
/**
|
|
261
|
-
* Optional name of a styling variant to apply, resolved against
|
|
262
|
-
* VibeDocument.block_variants["text"] (e.g. "h1", "h2", "body", "caption").
|
|
263
|
-
* The variant's props are merged under the text block's own props. Empty =
|
|
264
|
-
* no variant. Mirror of VibeButton.variant.
|
|
265
|
-
*/
|
|
266
|
-
variant: string;
|
|
267
|
-
};
|
|
268
|
-
/**
|
|
269
|
-
* VibeImage ~ mj-image. No content; the image itself is addressed by
|
|
270
|
-
* the src prop. MVP does not generate images — src is either a client
|
|
271
|
-
* supplied URL or a placeholder.
|
|
272
|
-
*/
|
|
273
|
-
export type VibeImage = {
|
|
274
|
-
id: string;
|
|
275
|
-
/**
|
|
276
|
-
* Allowed props: src, alt, href, width, align, padding,
|
|
277
|
-
* border-radius.
|
|
278
|
-
*/
|
|
279
|
-
props: Record<string, string>;
|
|
280
|
-
};
|
|
281
|
-
/** VibeButton ~ mj-button. Content is the plain-text label. */
|
|
282
|
-
export type VibeButton = {
|
|
283
|
-
id: string;
|
|
284
|
-
/**
|
|
285
|
-
* Allowed props: href, align, background-color, color, border,
|
|
286
|
-
* border-radius, font-size, font-weight, padding, inner-padding, width.
|
|
287
|
-
*/
|
|
288
|
-
props: Record<string, string>;
|
|
289
|
-
content: string;
|
|
290
|
-
/**
|
|
291
|
-
* Optional name of a styling variant to apply, resolved against
|
|
292
|
-
* VibeDocument.block_variants["button"] (e.g. "primary", "secondary"). The
|
|
293
|
-
* variant's props are merged under the button's own props. Empty = no
|
|
294
|
-
* variant.
|
|
295
|
-
*/
|
|
296
|
-
variant: string;
|
|
297
|
-
};
|
|
298
|
-
/**
|
|
299
|
-
* VibeButtonGroup is a row of inline items sharing one alignment — the
|
|
300
|
-
* primitive for "two CTAs side by side, aligned together" (plus app-store
|
|
301
|
-
* badges and similar inline images) that a stack of standalone blocks cannot
|
|
302
|
-
* express (analog of ai-builder's buttonGroup). The group owns the layout
|
|
303
|
-
* (align/gap/padding); the items inside carry only their own look. Their own
|
|
304
|
-
* align and outer padding are meaningless here — the renderer ignores them.
|
|
305
|
-
*/
|
|
306
|
-
export type VibeButtonGroup = {
|
|
307
|
-
id: string;
|
|
308
|
-
/** Allowed props (see registry): align, gap, padding, background-color. */
|
|
309
|
-
props: Record<string, string>;
|
|
310
|
-
/**
|
|
311
|
-
* The items in the group, in render order: each a button or an image (e.g.
|
|
312
|
-
* CTAs plus store badges / inline logos). At least one is required. An image
|
|
313
|
-
* item renders at its natural size — it is NOT stretched to the full width;
|
|
314
|
-
* set the image's `width` prop to resize it and the height scales
|
|
315
|
-
* proportionally.
|
|
316
|
-
*/
|
|
317
|
-
items: VibeButtonGroupItem[];
|
|
318
|
-
};
|
|
319
|
-
export type VibeButtonGroupItem_item_button = {
|
|
320
|
-
type: 'button';
|
|
321
|
-
data: VibeButton;
|
|
322
|
-
};
|
|
323
|
-
export type VibeButtonGroupItem_item_image = {
|
|
324
|
-
type: 'image';
|
|
325
|
-
data: VibeImage;
|
|
326
|
-
};
|
|
327
|
-
export type VibeButtonGroupItem_item = VibeButtonGroupItem_item_button | VibeButtonGroupItem_item_image;
|
|
328
|
-
/**
|
|
329
|
-
* VibeButtonGroupItem is one entry of a button-group: a button or an image.
|
|
330
|
-
* A dedicated wrapper (not a bare VibeContentBlock) so the wire can only carry
|
|
331
|
-
* the two allowed kinds — no nested groups, text or tables.
|
|
332
|
-
*/
|
|
333
|
-
export type VibeButtonGroupItem = {
|
|
334
|
-
item: VibeButtonGroupItem_item;
|
|
335
|
-
};
|
|
336
|
-
/** VibeSpacer ~ mj-spacer: fixed vertical gap. */
|
|
337
|
-
export type VibeSpacer = {
|
|
338
|
-
id: string;
|
|
339
|
-
/** Allowed props: height. */
|
|
340
|
-
props: Record<string, string>;
|
|
341
|
-
};
|
|
342
|
-
/** VibeDivider ~ mj-divider: horizontal rule. */
|
|
343
|
-
export type VibeDivider = {
|
|
344
|
-
id: string;
|
|
345
|
-
/**
|
|
346
|
-
* Allowed props: border-color, border-width, border-style, width,
|
|
347
|
-
* align, padding.
|
|
348
|
-
*/
|
|
349
|
-
props: Record<string, string>;
|
|
350
|
-
};
|
|
351
|
-
/**
|
|
352
|
-
* VibeTable ~ mj-table, structured-only: rows/cells are explicit, raw
|
|
353
|
-
* table HTML is not accepted. Cell text follows the same inline-HTML
|
|
354
|
-
* allowlist as VibeText.
|
|
355
|
-
*/
|
|
356
|
-
export type VibeTable = {
|
|
357
|
-
id: string;
|
|
358
|
-
/** Allowed props: cell-padding, align, width, font-size. */
|
|
359
|
-
props: Record<string, string>;
|
|
360
|
-
rows: VibeTableRow[];
|
|
361
|
-
};
|
|
362
|
-
export type VibeTableRow = {
|
|
363
|
-
/**
|
|
364
|
-
* Header row renders as th cells (compiler concern; preview/LLM treat
|
|
365
|
-
* it as a styling hint).
|
|
366
|
-
*/
|
|
367
|
-
header: boolean;
|
|
368
|
-
cells: string[];
|
|
369
|
-
};
|
|
370
|
-
export type VibeMlService_Generate = RpcMethod<VibeMlGenerateRequest, VibeMlGenerateResponse>;
|
|
371
|
-
export type VibeMlService_Edit = RpcMethod<VibeMlEditRequest, VibeMlEditResponse>;
|
|
372
|
-
export type VibeMlService_Restyle = RpcMethod<VibeMlRestyleRequest, VibeMlRestyleResponse>;
|
|
373
|
-
export type VibeMlService_ExtractTheme = RpcMethod<VibeMlExtractThemeRequest, VibeMlExtractThemeResponse>;
|
|
374
|
-
export type VibeMlService_Translate = RpcMethod<VibeMlTranslateRequest, VibeMlTranslateResponse>;
|
|
375
|
-
/**
|
|
376
|
-
* VibeMlService is the email-template generation service built around a
|
|
377
|
-
* semantic, MJML-inspired (but NOT MJML) document model.
|
|
378
|
-
*
|
|
379
|
-
* The canonical artefact is the VibeDocument AST (see
|
|
380
|
-
* vibe_document.proto): a strict section → column → content-block tree.
|
|
381
|
-
* Preview HTML and final email-safe HTML are derived representations
|
|
382
|
-
* produced elsewhere — this service only creates and edits the AST.
|
|
383
|
-
*
|
|
384
|
-
* Both editing RPCs are stateless and unary: the client owns document
|
|
385
|
-
* storage and sends the full document on every Edit. Internally the LLM
|
|
386
|
-
* speaks JSON against a schema generated from the server-side block
|
|
387
|
-
* registry; on Edit the model returns patch operations which the server
|
|
388
|
-
* applies and validates before responding — only the resulting document
|
|
389
|
-
* crosses the wire.
|
|
390
|
-
*/
|
|
391
|
-
export interface VibeMlService {
|
|
392
|
-
/** Generate creates a new VibeDocument from a free-form prompt. */
|
|
393
|
-
Generate: VibeMlService_Generate;
|
|
394
|
-
/**
|
|
395
|
-
* Edit mutates an existing VibeDocument according to a free-form
|
|
396
|
-
* instruction. Layout-preserving by default: the model is told to keep
|
|
397
|
-
* existing ids, links and structure unless the instruction asks
|
|
398
|
-
* otherwise.
|
|
399
|
-
*/
|
|
400
|
-
Edit: VibeMlService_Edit;
|
|
401
|
-
/**
|
|
402
|
-
* Restyle re-skins a content document with the look of a style document.
|
|
403
|
-
* It takes two VibeDocuments — a style source and a content document — and
|
|
404
|
-
* returns the content document re-skinned to look like the style source:
|
|
405
|
-
* ALL of the content document's content is preserved (text, structure,
|
|
406
|
-
* ids, meta) and ONLY its styling changes. Document-level style
|
|
407
|
-
* (theme/settings/attributes/fonts) is copied verbatim from the style
|
|
408
|
-
* source; per-block props (colors, paddings, radii, alignment, widths) are
|
|
409
|
-
* aligned to the style source's visual language by the model, which can
|
|
410
|
-
* only set props — never edit text or structure — so content can't drift.
|
|
411
|
-
* The style source's own text is irrelevant.
|
|
412
|
-
*/
|
|
413
|
-
Restyle: VibeMlService_Restyle;
|
|
414
|
-
/**
|
|
415
|
-
* ExtractTheme samples a brand theme — the full role-keyed palette plus
|
|
416
|
-
* body/heading font stacks — from any mix of brand materials: an image, a
|
|
417
|
-
* brand-book PDF, HTML/markdown/text sources, a written brand description
|
|
418
|
-
* and/or a public site_url the server reads the brand off. At least one
|
|
419
|
-
* input (image, source, description or site_url) is required; any
|
|
420
|
-
* combination is allowed — files with a description, a site alone. Returned as a VibeTheme ready to seed a
|
|
421
|
-
* Generate request. Pure extractor — materials in, theme out, no document.
|
|
422
|
-
*
|
|
423
|
-
* The model MUST return every palette role (background, surface, text,
|
|
424
|
-
* heading, text-secondary, accent, text-on-accent, border, link) and both font
|
|
425
|
-
* families — even when the materials give no clear typographic signal it
|
|
426
|
-
* picks reasonable stacks rather than leaving them empty.
|
|
427
|
-
*
|
|
428
|
-
* When an image is attached the chosen model must be vision-capable; a
|
|
429
|
-
* PDF source requires a document-capable provider (claude/openai/gemini).
|
|
430
|
-
* Since llm_model is a client override and capability can't be derived
|
|
431
|
-
* from a model name, there is no up-front vision check: a non-vision
|
|
432
|
-
* model fails at the upstream call. Unary; the result is small.
|
|
433
|
-
*/
|
|
434
|
-
ExtractTheme: VibeMlService_ExtractTheme;
|
|
435
|
-
/**
|
|
436
|
-
* Translate renders a batch of email texts into the requested target
|
|
437
|
-
* languages in one call per language. Texts may carry the editors'
|
|
438
|
-
* inline-HTML subset plus dynamic syntax — merge tags ({{...}}), Liquid
|
|
439
|
-
* ({%...%}) and %%macros%% — all preserved verbatim in the translations.
|
|
440
|
-
* The response arrays are index-aligned with the request texts. Pure
|
|
441
|
-
* utility — strings in, strings out, no document model involved.
|
|
442
|
-
*/
|
|
443
|
-
Translate: VibeMlService_Translate;
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* VibeSourceFormat tags a reference source's content type. It decides how
|
|
447
|
-
* the server feeds the source to the model: the text-like values
|
|
448
|
-
* (TEXT/MARKDOWN/HTML) are injected as plain-text context and work with any
|
|
449
|
-
* provider; PDF is forwarded as a native document input and requires a
|
|
450
|
-
* document-capable provider (claude/openai/gemini — NOT the self-hosted
|
|
451
|
-
* Qwen/vLLM), otherwise the request is rejected with FailedPrecondition.
|
|
452
|
-
*/
|
|
453
|
-
export type VibeSourceFormat = 'VIBE_SOURCE_FORMAT_UNSPECIFIED'
|
|
454
|
-
/** Plain UTF-8 text. */
|
|
455
|
-
| 'VIBE_SOURCE_FORMAT_TEXT'
|
|
456
|
-
/** Markdown source text. */
|
|
457
|
-
| 'VIBE_SOURCE_FORMAT_MARKDOWN'
|
|
458
|
-
/**
|
|
459
|
-
* Raw HTML source (fed as text — the model reads the content, it does not
|
|
460
|
-
* render or re-emit the markup).
|
|
461
|
-
*/
|
|
462
|
-
| 'VIBE_SOURCE_FORMAT_HTML'
|
|
463
|
-
/**
|
|
464
|
-
* PDF document. content carries the base64-encoded PDF bytes (no data:
|
|
465
|
-
* prefix) and is forwarded to the model as a native document; needs a
|
|
466
|
-
* document-capable provider.
|
|
467
|
-
*/
|
|
468
|
-
| 'VIBE_SOURCE_FORMAT_PDF';
|
|
469
|
-
/**
|
|
470
|
-
* VibeSource is a piece of reference material the client uploads so the
|
|
471
|
-
* model bases the email on existing content (a brief, copy, a landing page,
|
|
472
|
-
* a PDF) instead of inventing everything from the prompt. The model treats
|
|
473
|
-
* it as factual source material — never as instructions — and still honours
|
|
474
|
-
* the document format and the fixed style.
|
|
475
|
-
*/
|
|
476
|
-
export type VibeSource = {
|
|
477
|
-
/**
|
|
478
|
-
* What the content is. Drives how the server passes it to the model.
|
|
479
|
-
* Required: VIBE_SOURCE_FORMAT_UNSPECIFIED is rejected with
|
|
480
|
-
* InvalidArgument.
|
|
481
|
-
*/
|
|
482
|
-
format: VibeSourceFormat;
|
|
483
|
-
/**
|
|
484
|
-
* The source content. For TEXT/MARKDOWN/HTML this is the UTF-8 source
|
|
485
|
-
* text; for PDF it is the base64-encoded file bytes (no data: prefix).
|
|
486
|
-
* Required, non-empty, size-capped.
|
|
487
|
-
*/
|
|
488
|
-
content: string;
|
|
489
|
-
/**
|
|
490
|
-
* Optional short label distinguishing multiple sources to the model
|
|
491
|
-
* ("product brief", "landing page").
|
|
492
|
-
*/
|
|
493
|
-
name: string;
|
|
494
|
-
};
|
|
495
|
-
export type VibeMlGenerateRequest = {
|
|
496
|
-
/** What the email should be. Required. */
|
|
497
|
-
prompt: string;
|
|
498
|
-
/** Application code, for account/app scoping middleware and logging. */
|
|
499
|
-
application: string;
|
|
500
|
-
/**
|
|
501
|
-
* Style source. Required. A VibeDocument that defines the visual style
|
|
502
|
-
* the generated document must honour:
|
|
503
|
-
* - theme + settings + attributes + fonts: the document-level style,
|
|
504
|
-
* copied verbatim into the result (the model never produces them).
|
|
505
|
-
* theme is required with at least 3 colors; the rest may be empty.
|
|
506
|
-
* - content (pages/rows): OPTIONAL example blocks — pre-configured
|
|
507
|
-
* sections/wrappers/columns with the props the client wants reused
|
|
508
|
-
* (column splits, paddings, radii, ...). They are shown to the model
|
|
509
|
-
* as layout/styling templates to follow; their TEXT is ignored
|
|
510
|
-
* (stripped server-side) — the model writes its own copy. Send no
|
|
511
|
-
* rows for pure theme-only styling.
|
|
512
|
-
*/
|
|
513
|
-
styleDocument: VibeDocument;
|
|
514
|
-
/**
|
|
515
|
-
* The LLM provider. REQUIRED — vibeml has no server default, the client
|
|
516
|
-
* picks the model. Recognised values: "qwen" (self-hosted Qwen/vLLM),
|
|
517
|
-
* "claude" (Anthropic), "openai" (OpenAI), "gemini" (Gemini). Empty or
|
|
518
|
-
* unknown → InvalidArgument.
|
|
519
|
-
*/
|
|
520
|
-
llmProvider: string;
|
|
521
|
-
/**
|
|
522
|
-
* Optional concrete model name for the chosen provider. Empty = the
|
|
523
|
-
* provider's configured default.
|
|
524
|
-
*/
|
|
525
|
-
llmModel?: string;
|
|
526
|
-
/**
|
|
527
|
-
* Optional reference material the model should base the email on (brief,
|
|
528
|
-
* copy, a web page). Injected as plain-text context; the model pulls
|
|
529
|
-
* content from it but still follows the format and fixed style.
|
|
530
|
-
*/
|
|
531
|
-
sources: VibeSource[];
|
|
532
|
-
};
|
|
533
|
-
export type VibeMlGenerateResponse = {
|
|
534
|
-
/** The generated, server-validated document. */
|
|
535
|
-
document: VibeDocument;
|
|
536
|
-
/** Short human-facing note about what was generated. */
|
|
537
|
-
summary: string;
|
|
538
|
-
};
|
|
539
|
-
export type VibeMlEditRequest = {
|
|
540
|
-
/** The edit instruction. Required. */
|
|
541
|
-
prompt: string;
|
|
542
|
-
/**
|
|
543
|
-
* The document to edit. Required. The server validates it before
|
|
544
|
-
* feeding it to the model, so a client carrying a corrupted document
|
|
545
|
-
* gets InvalidArgument instead of a garbage edit.
|
|
546
|
-
*/
|
|
547
|
-
document: VibeDocument;
|
|
548
|
-
/** Application code, same semantics as on Generate. */
|
|
549
|
-
application: string;
|
|
550
|
-
/**
|
|
551
|
-
* Provider/model, same semantics as on Generate: llm_provider is
|
|
552
|
-
* REQUIRED, llm_model optional.
|
|
553
|
-
*/
|
|
554
|
-
llmProvider: string;
|
|
555
|
-
llmModel?: string;
|
|
556
|
-
/**
|
|
557
|
-
* Optional reference material, same semantics as on Generate — lets an
|
|
558
|
-
* edit lean on an uploaded brief/page. Read-only context; never modified.
|
|
559
|
-
*/
|
|
560
|
-
sources: VibeSource[];
|
|
561
|
-
};
|
|
562
|
-
export type VibeMlEditResponse = {
|
|
563
|
-
/**
|
|
564
|
-
* The full post-edit, server-validated document. Patch operations the
|
|
565
|
-
* model produced are an internal mechanism and are not exposed.
|
|
566
|
-
*/
|
|
567
|
-
document: VibeDocument;
|
|
568
|
-
/** Short human-facing note about what was changed. */
|
|
569
|
-
summary: string;
|
|
570
|
-
};
|
|
571
|
-
export type VibeMlRestyleRequest = {
|
|
572
|
-
/**
|
|
573
|
-
* The look to adopt. Its document-level style (theme/settings/attributes/
|
|
574
|
-
* fonts) is copied verbatim and its per-block props (colors, spacings,
|
|
575
|
-
* radii, ...) define the target appearance the model aligns to. Its text
|
|
576
|
-
* content is irrelevant. Required.
|
|
577
|
-
*/
|
|
578
|
-
style: VibeDocument;
|
|
579
|
-
/**
|
|
580
|
-
* The document to re-skin. All of its content is preserved — only styling
|
|
581
|
-
* changes. Required; validated before use (a corrupt document yields
|
|
582
|
-
* InvalidArgument).
|
|
583
|
-
*/
|
|
584
|
-
content: VibeDocument;
|
|
585
|
-
/** Application code, same semantics as on Generate. */
|
|
586
|
-
application: string;
|
|
587
|
-
/**
|
|
588
|
-
* Provider/model, same semantics as on Generate: llm_provider is REQUIRED,
|
|
589
|
-
* llm_model optional.
|
|
590
|
-
*/
|
|
591
|
-
llmProvider: string;
|
|
592
|
-
llmModel?: string;
|
|
593
|
-
};
|
|
594
|
-
export type VibeMlRestyleResponse = {
|
|
595
|
-
/** The content document, re-skinned and server-validated. */
|
|
596
|
-
document: VibeDocument;
|
|
597
|
-
/** Short human-facing note about the restyle. */
|
|
598
|
-
summary: string;
|
|
599
|
-
};
|
|
600
|
-
/**
|
|
601
|
-
* VibeReferenceImage is an inline image fed to a vision model. Same shape
|
|
602
|
-
* as the AiGen reference image: a MIME type plus the base64 payload (no
|
|
603
|
-
* data: URI prefix). Named distinctly from the VibeImage content block.
|
|
604
|
-
*/
|
|
605
|
-
export type VibeReferenceImage = {
|
|
606
|
-
/** image/* MIME type, e.g. "image/png", "image/jpeg". */
|
|
607
|
-
mediaType: string;
|
|
608
|
-
/** Base64-encoded image bytes, without a data: URI prefix. */
|
|
609
|
-
data: string;
|
|
610
|
-
};
|
|
611
|
-
export type VibeMlExtractThemeRequest = {
|
|
612
|
-
/**
|
|
613
|
-
* An image to sample the theme from (screenshot, logo, moodboard).
|
|
614
|
-
* Optional — one of image / sources / description must be present. When
|
|
615
|
-
* set, the selected model must be vision-capable.
|
|
616
|
-
*/
|
|
617
|
-
image?: VibeReferenceImage;
|
|
618
|
-
/** Application code, for account/app scoping middleware and logging. */
|
|
619
|
-
application: string;
|
|
620
|
-
/**
|
|
621
|
-
* Provider/model, same semantics as on Generate: llm_provider is
|
|
622
|
-
* REQUIRED, llm_model optional.
|
|
623
|
-
*/
|
|
624
|
-
llmProvider: string;
|
|
625
|
-
llmModel?: string;
|
|
626
|
-
/**
|
|
627
|
-
* Brand materials to sample the theme from: a brand-book PDF, an HTML
|
|
628
|
-
* page, markdown or plain text. Same shape, formats and limits as
|
|
629
|
-
* Generate's sources (PDF needs a document-capable provider). Optional.
|
|
630
|
-
*/
|
|
631
|
-
sources: VibeSource[];
|
|
632
|
-
/**
|
|
633
|
-
* A written brand description ("dark green, minimalist, premium outdoor
|
|
634
|
-
* brand") the model derives the palette from. Optional; may accompany or
|
|
635
|
-
* replace the image/sources.
|
|
636
|
-
*/
|
|
637
|
-
description: string;
|
|
638
|
-
/**
|
|
639
|
-
* A public website to read the brand off ("acme.com" — the scheme may be
|
|
640
|
-
* omitted). The server fetches the page and its stylesheets and distils the
|
|
641
|
-
* brand signals (CSS custom properties, the most used colours, font stacks,
|
|
642
|
-
* meta) into one source; the logo it finds is downloaded as the reference
|
|
643
|
-
* image when none is attached, so a vision-capable model is preferred.
|
|
644
|
-
* Optional; counts as an input on its own.
|
|
645
|
-
*/
|
|
646
|
-
siteUrl: string;
|
|
647
|
-
};
|
|
648
|
-
export type VibeMlExtractThemeResponse = {
|
|
649
|
-
/**
|
|
650
|
-
* The extracted theme: full role-keyed palette + body/heading fonts.
|
|
651
|
-
* Ready to pass back as VibeMlGenerateRequest.theme.
|
|
652
|
-
*/
|
|
653
|
-
theme: VibeTheme;
|
|
654
|
-
/**
|
|
655
|
-
* Absolute URL of the logo found on site_url, empty when none was found or
|
|
656
|
-
* no site was given. The client decides whether to adopt it.
|
|
657
|
-
*/
|
|
658
|
-
logoUrl: string;
|
|
659
|
-
/**
|
|
660
|
-
* How the brand talks, 1-3 sentences, read off the copy in the materials —
|
|
661
|
-
* for a copywriter to imitate. Empty when the materials carry no copy.
|
|
662
|
-
*/
|
|
663
|
-
brandVoice: string;
|
|
664
|
-
};
|
|
665
|
-
export type VibeMlTranslateRequest = {
|
|
666
|
-
/** Application code, for account/app scoping middleware and logging. */
|
|
667
|
-
application: string;
|
|
668
|
-
/**
|
|
669
|
-
* Source texts in the document's default language. Each may be plain text
|
|
670
|
-
* or the editors' inline-HTML subset, and may embed merge tags / Liquid /
|
|
671
|
-
* %%macros%% — the model keeps all markup and dynamic syntax verbatim.
|
|
672
|
-
*/
|
|
673
|
-
texts: string[];
|
|
674
|
-
/**
|
|
675
|
-
* Language codes to translate into, as the editor names them ("es", "de",
|
|
676
|
-
* "pt-BR"). The default/source language must not be in the list.
|
|
677
|
-
*/
|
|
678
|
-
targetLanguages: string[];
|
|
679
|
-
/**
|
|
680
|
-
* Optional hint steering tone and terminology (campaign topic, brand
|
|
681
|
-
* voice). Free text.
|
|
682
|
-
*/
|
|
683
|
-
context: string;
|
|
684
|
-
/**
|
|
685
|
-
* Provider/model, same semantics as on Generate: llm_provider is
|
|
686
|
-
* REQUIRED, llm_model optional.
|
|
687
|
-
*/
|
|
688
|
-
llmProvider: string;
|
|
689
|
-
llmModel?: string;
|
|
690
|
-
};
|
|
691
|
-
export type VibeMlTranslatedTexts = {
|
|
692
|
-
/** Translations index-aligned with VibeMlTranslateRequest.texts. */
|
|
693
|
-
texts: string[];
|
|
694
|
-
};
|
|
695
|
-
export type VibeMlTranslateResponse = {
|
|
696
|
-
/** Keyed by target language, exactly the requested set. */
|
|
697
|
-
translations: Record<string, VibeMlTranslatedTexts>;
|
|
698
|
-
};
|
package/pushwoosh_vibeml_v1.js
DELETED