@picteus/extension-sdk 0.18.0 → 0.19.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 (29) hide show
  1. package/dist/generated/backEndIntents.d.ts +216 -0
  2. package/dist/generated/backEndIntents.js +12 -0
  3. package/dist/generated/frontEndIntents.d.ts +1112 -0
  4. package/dist/generated/frontEndIntents.js +97 -0
  5. package/dist/generated/intentValidator.d.ts +49 -0
  6. package/dist/generated/intentValidator.js +363 -0
  7. package/dist/generated/viewKit.d.ts +1689 -366
  8. package/dist/generated/viewKit.js +994 -290
  9. package/dist/index.d.ts +3 -2
  10. package/dist/index.js +3 -2
  11. package/dist/picteusExtension.d.ts +13 -4
  12. package/dist/picteusExtension.js +45 -24
  13. package/package.json +4 -6
  14. package/dist/featureViewGrammar.d.ts +0 -2814
  15. package/dist/featureViewGrammar.js +0 -2612
  16. package/dist/generated/featureViewGrammar.d.ts +0 -3913
  17. package/dist/generated/featureViewGrammar.js +0 -4099
  18. package/dist/intents.d.ts +0 -188
  19. package/dist/intents.js +0 -26
  20. package/dist/picteus-ws-client/models/ExtensionActivityKind.d.ts +0 -26
  21. package/dist/picteus-ws-client/models/ExtensionActivityKind.js +0 -44
  22. package/dist/picteus-ws-client/models/ExtensionStatus.d.ts +0 -25
  23. package/dist/picteus-ws-client/models/ExtensionStatus.js +0 -43
  24. package/dist/picteus-ws-client/models/ImageEmbeddings.d.ts +0 -32
  25. package/dist/picteus-ws-client/models/ImageEmbeddings.js +0 -43
  26. package/dist/picteus-ws-client/models/RepositoryStatus.d.ts +0 -27
  27. package/dist/picteus-ws-client/models/RepositoryStatus.js +0 -45
  28. package/dist/picteus-ws-client/models/Settings.d.ts +0 -32
  29. package/dist/picteus-ws-client/models/Settings.js +0 -41
@@ -0,0 +1,1112 @@
1
+ import type { Buffer } from "node:buffer";
2
+ /**
3
+ * Target layout anchor where an embedded extension user interface should be integrated.
4
+ *
5
+ * @remarks
6
+ * The selected anchor is the discriminator for the supported integration surface. Its string value is part of the serialized intent contract and must match one of these declared choices.
7
+ */
8
+ declare enum UiAnchor {
9
+ /** Rendered inside a centered or full-screen modal dialog. */
10
+ Modal = "modal",
11
+ /** Docked within the collateral sidebar navigation. */
12
+ Sidebar = "sidebar",
13
+ /** Rendered inside an independent floating desktop window. */
14
+ Window = "window",
15
+ /** Embedded within the image detail inspection view. */
16
+ ImageDetail = "imageDetail",
17
+ /** Displayed within a dedicated tab. */
18
+ Tab = "tab"
19
+ }
20
+ /**
21
+ * Target layout anchor where an embedded extension user interface should be integrated.
22
+ *
23
+ * @remarks
24
+ * The selected anchor is the discriminator for the supported integration surface. Its string value is part of the serialized intent contract and must match one of these declared choices.
25
+ */
26
+ export declare const IntentUiAnchor: typeof UiAnchor;
27
+ /**
28
+ * Target layout anchor where an embedded extension user interface should be integrated.
29
+ *
30
+ * @remarks
31
+ * The selected anchor is the discriminator for the supported integration surface. Its string value is part of the serialized intent contract and must match one of these declared choices.
32
+ */
33
+ export type IntentUiAnchor = UiAnchor;
34
+ /** Semantic classification and visual styling category of a modal dialog. */
35
+ declare enum DialogType {
36
+ /** Error notice dialog indicating a failure or critical condition. */
37
+ Error = "error",
38
+ /** Informational dialog displaying status, instructions, or notices. */
39
+ Info = "info",
40
+ /** Question or confirmation prompt requiring explicit user decision. */
41
+ Question = "question"
42
+ }
43
+ /** Semantic classification and visual styling category of a modal dialog. */
44
+ export declare const IntentDialogType: typeof DialogType;
45
+ /** Semantic classification and visual styling category of a modal dialog. */
46
+ export type IntentDialogType = DialogType;
47
+ /** Target view or entity type to display in the front-end. */
48
+ declare enum ShowType {
49
+ /** Registered collateral sidebar panel. */
50
+ Sidebar = "sidebar",
51
+ /** Extension settings configuration modal. */
52
+ ExtensionSettings = "extensionSettings",
53
+ /** Full-screen image detail inspection view. */
54
+ Image = "image",
55
+ /** Repository details and contents view. */
56
+ Repository = "repository"
57
+ }
58
+ /** Target view or entity type to display in the front-end. */
59
+ export declare const IntentShowType: typeof ShowType;
60
+ /** Target view or entity type to display in the front-end. */
61
+ export type IntentShowType = ShowType;
62
+ /** Visual style and severity variant for toast notifications. */
63
+ declare enum ToastType {
64
+ /** Informational toast indicating general status or successful completion. */
65
+ Info = "info",
66
+ /** Cancellation toast indicating an operation was aborted or cancelled. */
67
+ Cancel = "cancel",
68
+ /** Error toast indicating a failure or warning condition. */
69
+ Error = "error"
70
+ }
71
+ /** Visual style and severity variant for toast notifications. */
72
+ export declare const IntentToastType: typeof ToastType;
73
+ /** Visual style and severity variant for toast notifications. */
74
+ export type IntentToastType = ToastType;
75
+ /**
76
+ * Unique identity metadata for an intent invocation.
77
+ *
78
+ * @remarks
79
+ * The identity is carried by intent envelopes that inherit from BasisIntent. Producers may use it to correlate an intent with its request or response; it does not identify the user, extension, or target entity.
80
+ */
81
+ interface Identity {
82
+ /**
83
+ * Unique identifier string for the intent invocation.
84
+ *
85
+ * @remarks
86
+ * Opaque correlation value supplied by the producer. Preserve the value unchanged when forwarding or responding to the same invocation.
87
+ */
88
+ readonly id: string;
89
+ }
90
+ /**
91
+ * Unique identity metadata for an intent invocation.
92
+ *
93
+ * @remarks
94
+ * The identity is carried by intent envelopes that inherit from BasisIntent. Producers may use it to correlate an intent with its request or response; it does not identify the user, extension, or target entity.
95
+ */
96
+ export type IntentIdentity = Identity;
97
+ /**
98
+ * Contextual entity identifiers associated with an intent execution.
99
+ *
100
+ * @remarks
101
+ * Context communicates which entities are currently selected or otherwise relevant to an operation. It is supplementary to the payload and must not be treated as a substitute for an explicit target required by that payload.
102
+ */
103
+ interface Context {
104
+ /** Optional collection of image identifiers. */
105
+ readonly imageIds?: string[];
106
+ }
107
+ /**
108
+ * Contextual entity identifiers associated with an intent execution.
109
+ *
110
+ * @remarks
111
+ * Context communicates which entities are currently selected or otherwise relevant to an operation. It is supplementary to the payload and must not be treated as a substitute for an explicit target required by that payload.
112
+ */
113
+ export type IntentContext = Context;
114
+ /**
115
+ * Base intent model providing optional identity tracking.
116
+ *
117
+ * @remarks
118
+ * Intent payload models inherit this envelope when they need request correlation. The identity is optional so intents can also be dispatched without a correlation token.
119
+ */
120
+ export interface BasisIntent {
121
+ /**
122
+ * Optional unique identity metadata for the intent invocation.
123
+ *
124
+ * @remarks
125
+ * Correlation metadata for the invocation, should be kept intact during its whole lifecycle.
126
+ */
127
+ readonly identity?: IntentIdentity;
128
+ }
129
+ /**
130
+ * Base intent model extending BasisIntent with execution context references.
131
+ *
132
+ * @remarks
133
+ * It offers additional information about the context of execution the intent.
134
+ */
135
+ export interface WithContextIntent extends BasisIntent {
136
+ /** Optional execution context containing target entity identifiers such as image identifiers. */
137
+ readonly context?: IntentContext;
138
+ }
139
+ /**
140
+ * Base content structure providing an optional title.
141
+ *
142
+ * @remarks
143
+ * Reusable heading metadata for dialog, notification, and view content. The title is optional in this base so that a consumer can render content that has a description or body without a heading.
144
+ */
145
+ interface WithTitle {
146
+ /**
147
+ * Optional headline or primary title text.
148
+ *
149
+ * @remarks
150
+ * Short heading intended for a title position in the associated UI. Keep this concise; place explanatory prose in description, subtitle, or details fields.
151
+ */
152
+ readonly title?: string;
153
+ }
154
+ /**
155
+ * Base content structure providing an optional title.
156
+ *
157
+ * @remarks
158
+ * Reusable heading metadata for dialog, notification, and view content. The title is optional in this base so that a consumer can render content that has a description or body without a heading.
159
+ */
160
+ export type IntentWithTitle = WithTitle;
161
+ /**
162
+ * Base content structure providing a title and subtitle.
163
+ *
164
+ * @remarks
165
+ * Composition of the reusable title and subtitle fields for compact content that needs a heading and one supporting line.
166
+ */
167
+ interface TitleSubtitle extends WithTitle {
168
+ /**
169
+ * Descriptive subtitle or message text.
170
+ *
171
+ * @remarks
172
+ * Short supporting message displayed below a title or as the main text of a compact notification. Use details or body fields for longer content.
173
+ */
174
+ readonly subtitle: string;
175
+ }
176
+ /**
177
+ * Base content structure providing a title and subtitle.
178
+ *
179
+ * @remarks
180
+ * Composition of the reusable title and subtitle fields for compact content that needs a heading and one supporting line.
181
+ */
182
+ export type IntentTitleSubtitle = TitleSubtitle;
183
+ /**
184
+ * Base content structure providing a description.
185
+ *
186
+ * @remarks
187
+ * Reusable explanatory text for content that needs a description independent of its heading. The value is plain text and is not interpreted as markup.
188
+ */
189
+ interface WithDescription {
190
+ /**
191
+ * Descriptive subtitle or explanatory message text.
192
+ *
193
+ * @remarks
194
+ * Explanatory text associated with the content. Use this for a short overview; additional or more detailed text can be supplied through a details field.
195
+ */
196
+ readonly description: string;
197
+ }
198
+ /**
199
+ * Base content structure providing a description.
200
+ *
201
+ * @remarks
202
+ * Reusable explanatory text for content that needs a description independent of its heading. The value is plain text and is not interpreted as markup.
203
+ */
204
+ export type IntentWithDescription = WithDescription;
205
+ /**
206
+ * Base content structure providing a description and optional details.
207
+ *
208
+ * @remarks
209
+ * Composition for explanatory content with a required overview and optional supplementary body text.
210
+ */
211
+ interface DescriptionDetails extends WithDescription {
212
+ /**
213
+ * Optional supplementary details or extended body text.
214
+ *
215
+ * @remarks
216
+ * Optional longer-form supporting content. Consumers may present it as secondary or expandable text; it remains plain text rather than a markup document.
217
+ */
218
+ readonly details?: string;
219
+ }
220
+ /**
221
+ * Base content structure providing a description and optional details.
222
+ *
223
+ * @remarks
224
+ * Composition for explanatory content with a required overview and optional supplementary body text.
225
+ */
226
+ export type IntentDescriptionDetails = DescriptionDetails;
227
+ /**
228
+ * Base content structure providing a title, description, and optional details.
229
+ *
230
+ * @remarks
231
+ * Combines required descriptive content with an additional required title, suitable for cards where a heading and explanatory body are both needed.
232
+ */
233
+ interface TitleDescriptionDetails extends DescriptionDetails {
234
+ /** Primary title text displayed in the header. */
235
+ readonly title: string;
236
+ }
237
+ /**
238
+ * Base content structure providing a title, description, and optional details.
239
+ *
240
+ * @remarks
241
+ * Combines required descriptive content with an additional required title, suitable for cards where a heading and explanatory body are both needed.
242
+ */
243
+ export type IntentTitleDescriptionDetails = TitleDescriptionDetails;
244
+ /**
245
+ * Resource reference pointing to an external or local URL.
246
+ *
247
+ * @remarks
248
+ * Use a URL reference when the resource is available to the consumer through a location rather than inline bytes. The value is interpreted according to the resource consumer and may refer to remote or local content.
249
+ */
250
+ interface ResourceUrl {
251
+ /**
252
+ * Resource destination URL.
253
+ *
254
+ * @remarks
255
+ * Location from which the front-end can retrieve the resource.
256
+ */
257
+ readonly url: string;
258
+ }
259
+ /**
260
+ * Resource reference pointing to an external or local URL.
261
+ *
262
+ * @remarks
263
+ * Use a URL reference when the resource is available to the consumer through a location rather than inline bytes. The value is interpreted according to the resource consumer and may refer to remote or local content.
264
+ */
265
+ export type IntentResourceUrl = ResourceUrl;
266
+ /**
267
+ * Resource payload containing raw binary data.
268
+ *
269
+ * @remarks
270
+ * Use this representation to transfer a resource as bytes in the intent payload instead of requiring the consumer to resolve a separate URL.
271
+ */
272
+ interface ResourceContent {
273
+ /**
274
+ * Raw binary byte content of the resource.
275
+ *
276
+ * @remarks
277
+ * Complete binary representation of the resource. The consumer is responsible for interpreting the bytes in the context in which the resource is used.
278
+ */
279
+ readonly content: Buffer;
280
+ }
281
+ /**
282
+ * Resource payload containing raw binary data.
283
+ *
284
+ * @remarks
285
+ * Use this representation to transfer a resource as bytes in the intent payload instead of requiring the consumer to resolve a separate URL.
286
+ */
287
+ export type IntentResourceContent = ResourceContent;
288
+ /**
289
+ * Base content structure extending TitleDescriptionDetails with an optional icon resource.
290
+ *
291
+ * @remarks
292
+ * Combines a title and explanatory text with an optional icon for headers and notification cards. The icon can be supplied by URL or as bytes through Resource.
293
+ */
294
+ interface TitleDescriptionDetailsIcon extends TitleDescriptionDetails {
295
+ /**
296
+ * Optional visual icon resource — supplied as a URL or binary bytes.
297
+ *
298
+ * @remarks
299
+ * Decorative or identifying image for the content header. Choose a URL for separately hosted assets or inline bytes when the asset must travel with the payload.
300
+ */
301
+ readonly icon?: IntentResourceUrl | IntentResourceContent;
302
+ }
303
+ /**
304
+ * Base content structure extending TitleDescriptionDetails with an optional icon resource.
305
+ *
306
+ * @remarks
307
+ * Combines a title and explanatory text with an optional icon for headers and notification cards. The icon can be supplied by URL or as bytes through Resource.
308
+ */
309
+ export type IntentTitleDescriptionDetailsIcon = TitleDescriptionDetailsIcon;
310
+ /**
311
+ * Base content structure extending title, subtitle, description, and details content with an optional icon.
312
+ *
313
+ * @remarks
314
+ * Combines the common heading and body fields for richer views. The title is required here; subtitle, description, and details are supplied by the composed content structures, while the icon remains optional.
315
+ */
316
+ interface TitleSubtitleDescriptionDetailsIcon extends TitleSubtitle {
317
+ /**
318
+ * Primary title text.
319
+ *
320
+ * @remarks
321
+ * Required concise heading for the content. It is distinct from the supporting subtitle and longer description/details fields.
322
+ */
323
+ readonly title: string;
324
+ /**
325
+ * Optional supplementary details or extended body text.
326
+ *
327
+ * @remarks
328
+ * Optional longer-form supporting content. Consumers may present it as secondary or expandable text; it remains plain text rather than a markup document.
329
+ */
330
+ readonly details?: string;
331
+ /**
332
+ * Descriptive subtitle or explanatory message text.
333
+ *
334
+ * @remarks
335
+ * Explanatory text associated with the content. Use this for a short overview; additional or more detailed text can be supplied through a details field.
336
+ */
337
+ readonly description: string;
338
+ /**
339
+ * Optional visual icon resource — supplied as a URL or binary bytes.
340
+ *
341
+ * @remarks
342
+ * Optional image accompanying the content heading. Its resource can be inline or externally located, as described by Resource.
343
+ */
344
+ readonly icon?: IntentResourceUrl | IntentResourceContent;
345
+ }
346
+ /**
347
+ * Base content structure extending title, subtitle, description, and details content with an optional icon.
348
+ *
349
+ * @remarks
350
+ * Combines the common heading and body fields for richer views. The title is required here; subtitle, description, and details are supplied by the composed content structures, while the icon remains optional.
351
+ */
352
+ export type IntentTitleSubtitleDescriptionDetailsIcon = TitleSubtitleDescriptionDetailsIcon;
353
+ /**
354
+ * Dialog content structure extending TitleDescriptionDetailsIcon with an optional icon resource.
355
+ *
356
+ * @remarks
357
+ * Adds the optional resource icon to standard title and description content for dialogs.
358
+ */
359
+ interface DialogIconContent extends TitleDescriptionDetailsIcon {
360
+ }
361
+ /**
362
+ * Dialog content structure extending TitleDescriptionDetailsIcon with an optional icon resource.
363
+ *
364
+ * @remarks
365
+ * Adds the optional resource icon to standard title and description content for dialogs.
366
+ */
367
+ export type IntentDialogIconContent = DialogIconContent;
368
+ /**
369
+ * Dialog content structure extending DialogIconContent with a modal window size preference.
370
+ *
371
+ * @remarks
372
+ * Controls the preferred width class of a modal dialog. The front-end may choose an appropriate actual width for its viewport when the preference is automatic or a fixed size cannot fit.
373
+ */
374
+ interface DialogIconSizeContent extends DialogIconContent {
375
+ /**
376
+ * Modal dialog window size variant.
377
+ *
378
+ * @remarks
379
+ * Preferred modal size. Use auto when content should determine a suitable width; named sizes express a relative front-end-defined width rather than a pixel measurement.
380
+ */
381
+ readonly size?: "auto" | "xs" | "s" | "m" | "l" | "xl";
382
+ }
383
+ /**
384
+ * Dialog content structure extending DialogIconContent with a modal window size preference.
385
+ *
386
+ * @remarks
387
+ * Controls the preferred width class of a modal dialog. The front-end may choose an appropriate actual width for its viewport when the preference is automatic or a fixed size cannot fit.
388
+ */
389
+ export type IntentDialogIconSizeContent = DialogIconSizeContent;
390
+ /**
391
+ * Form configuration containing JSON Schema fields and optional dialog presentation settings.
392
+ *
393
+ * @remarks
394
+ * The parameters value is a JSON Schema object used by the front-end to construct inputs and validate submitted values. Dialog content controls the surrounding modal presentation; it does not change the parameter schema.
395
+ */
396
+ interface FormContent {
397
+ /**
398
+ * JSON Schema specification describing form parameters, input types, default values, and validation rules.
399
+ *
400
+ * @remarks
401
+ * JSON Schema object describing the fields to render, including their types, titles, defaults, and validation constraints. Define an object schema with named properties so collected values can be returned as a keyed object.
402
+ */
403
+ readonly parameters: Record<string, unknown>;
404
+ /**
405
+ * Optional presentation settings for the modal dialog housing the form.
406
+ *
407
+ * @remarks
408
+ * Optional title, descriptive content, icon, and preferred size for the form dialog. Leave this out when the form can use the front-end's default dialog presentation.
409
+ */
410
+ readonly dialogContent?: IntentDialogIconSizeContent;
411
+ }
412
+ /**
413
+ * Form configuration containing JSON Schema fields and optional dialog presentation settings.
414
+ *
415
+ * @remarks
416
+ * The parameters value is a JSON Schema object used by the front-end to construct inputs and validate submitted values. Dialog content controls the surrounding modal presentation; it does not change the parameter schema.
417
+ */
418
+ export type IntentFormContent = FormContent;
419
+ /**
420
+ * An intent that displays a JSON Schema-based form in a modal dialog to collect user input.
421
+ *
422
+ * @remarks
423
+ * The front-end renders the form associated to the schema, collects values, and returns them through the intent interaction flow. Use this for capturing structured input rather than embedding a hand-built form in a custom UI frame.
424
+ */
425
+ export interface FormIntent extends WithContextIntent {
426
+ /**
427
+ * Form configuration containing the JSON Schema parameters definition and dialog presentation settings.
428
+ *
429
+ * @remarks
430
+ * Schema and optional modal presentation configuration for the requested form. The schema defines the form's inputs and validation rules.
431
+ */
432
+ readonly form: IntentFormContent;
433
+ }
434
+ /**
435
+ * UI integration configuration for mounting an extension view inside the collateral sidebar.
436
+ *
437
+ * @remarks
438
+ * Selects the front-end's sidebar host as the integration point. The external flag allows the view to be presented in an independent window instead of occupying the docked sidebar surface.
439
+ */
440
+ interface UISidebarIntegration {
441
+ /**
442
+ * Layout anchor discriminator specifying sidebar placement.
443
+ *
444
+ * @remarks
445
+ * Literal integration discriminator for the sidebar variant. Keep it set to sidebar so consumers can distinguish this payload from other integration modes.
446
+ */
447
+ readonly anchor: "sidebar";
448
+ /**
449
+ * Whether the sidebar view should open in an external window rather than docked directly in the sidebar.
450
+ *
451
+ * @remarks
452
+ * When true, asks the front-end to open the sidebar-backed view in a separate window. When false, the view is embedded in the sidebar; this flag does not change the integration anchor.
453
+ */
454
+ readonly isExternal: boolean;
455
+ }
456
+ /**
457
+ * UI integration configuration for mounting an extension view inside the collateral sidebar.
458
+ *
459
+ * @remarks
460
+ * Selects the front-end's sidebar host as the integration point. The external flag allows the view to be presented in an independent window instead of occupying the docked sidebar surface.
461
+ */
462
+ export type IntentUISidebarIntegration = UISidebarIntegration;
463
+ /**
464
+ * UI integration configuration for rendering an extension view inside an independent window.
465
+ *
466
+ * @remarks
467
+ * Selects a standalone host window without additional window-specific options in this contract.
468
+ */
469
+ interface UIWindowIntegration {
470
+ /**
471
+ * Layout anchor discriminator specifying window placement.
472
+ *
473
+ * @remarks
474
+ * Literal integration discriminator for the independent-window variant.
475
+ */
476
+ readonly anchor: "window";
477
+ }
478
+ /**
479
+ * UI integration configuration for rendering an extension view inside an independent window.
480
+ *
481
+ * @remarks
482
+ * Selects a standalone host window without additional window-specific options in this contract.
483
+ */
484
+ export type IntentUIWindowIntegration = UIWindowIntegration;
485
+ /**
486
+ * UI integration configuration for rendering an extension view inside a modal dialog.
487
+ *
488
+ * @remarks
489
+ * Selects a front-end-managed modal as the host surface for the embedded extension view.
490
+ */
491
+ interface UIModalIntegration {
492
+ /**
493
+ * Layout anchor discriminator specifying modal placement.
494
+ *
495
+ * @remarks
496
+ * Literal integration discriminator for the modal variant.
497
+ */
498
+ readonly anchor: "modal";
499
+ }
500
+ /**
501
+ * UI integration configuration for rendering an extension view inside a modal dialog.
502
+ *
503
+ * @remarks
504
+ * Selects a front-end-managed modal as the host surface for the embedded extension view.
505
+ */
506
+ export type IntentUIModalIntegration = UIModalIntegration;
507
+ /**
508
+ * UI integration configuration for rendering an extension view inside a tab.
509
+ *
510
+ * @remarks
511
+ * Selects a dedicated front-end tab as the host surface for the embedded extension view.
512
+ */
513
+ interface UITabIntegration {
514
+ /**
515
+ * Layout anchor discriminator specifying tab placement.
516
+ *
517
+ * @remarks
518
+ * Literal integration discriminator for the tab variant.
519
+ */
520
+ readonly anchor: "tab";
521
+ }
522
+ /**
523
+ * UI integration configuration for rendering an extension view inside a tab.
524
+ *
525
+ * @remarks
526
+ * Selects a dedicated front-end tab as the host surface for the embedded extension view.
527
+ */
528
+ export type IntentUITabIntegration = UITabIntegration;
529
+ /**
530
+ * Embedded frame content specified by a web URL.
531
+ *
532
+ * @remarks
533
+ * URL-backed frame content is loaded by the front-end. The target must be reachable from that front-end's environment and should use an appropriate secure scheme.
534
+ */
535
+ interface UrlContent {
536
+ /**
537
+ * Target web URL to load inside the embedded frame.
538
+ *
539
+ * @remarks
540
+ * Address of the web document to load. The frame host must be able to reach the location; use a secure URL for remote content.
541
+ */
542
+ readonly url: string;
543
+ }
544
+ /**
545
+ * Embedded frame content specified by a web URL.
546
+ *
547
+ * @remarks
548
+ * URL-backed frame content is loaded by the front-end. The target must be reachable from that front-end's environment and should use an appropriate secure scheme.
549
+ */
550
+ export type IntentUrlContent = UrlContent;
551
+ /**
552
+ * Embedded frame content specified by raw inline HTML markup.
553
+ *
554
+ * @remarks
555
+ * Inline document content supplied as a string. It is rendered by the host frame rather than fetched as a separate page; callers should not assume access to the host application's privileges.
556
+ */
557
+ interface HtmlContent {
558
+ /**
559
+ * Raw HTML markup string to render directly inside the embedded frame.
560
+ *
561
+ * @remarks
562
+ * HTML source rendered as the frame document. The TypeSpec contract treats it as an opaque string and does not validate markup or grant access to the host application's privileges.
563
+ */
564
+ readonly html: string;
565
+ }
566
+ /**
567
+ * Embedded frame content specified by raw inline HTML markup.
568
+ *
569
+ * @remarks
570
+ * Inline document content supplied as a string. It is rendered by the host frame rather than fetched as a separate page; callers should not assume access to the host application's privileges.
571
+ */
572
+ export type IntentHtmlContent = HtmlContent;
573
+ /**
574
+ * Complete specification for embedding a custom extension user interface within the front-end.
575
+ *
576
+ * @remarks
577
+ * The front-end uses id to identify the view, integration to choose its host surface, and frameContent to load its contents. dialogContent supplies optional header metadata where the selected integration supports it.
578
+ */
579
+ interface Ui {
580
+ /**
581
+ * Unique identifier for the UI instance or transient panel.
582
+ *
583
+ * @remarks
584
+ * Identifier for this view instance. Supply a stable identifier when the front-end should recognize the same registered view across invocations; otherwise use an identifier appropriate to the transient view lifecycle.
585
+ */
586
+ readonly id: string;
587
+ /**
588
+ * Placement strategy defining where and how the UI is mounted.
589
+ *
590
+ * @remarks
591
+ * Discriminated integration configuration. The anchor selects a supported host surface, while fields on that specific variant refine its presentation.
592
+ */
593
+ readonly integration: IntentUISidebarIntegration | IntentUIWindowIntegration | IntentUIModalIntegration | IntentUITabIntegration;
594
+ /**
595
+ * Web content to render inside the frame — either a URL or raw HTML.
596
+ *
597
+ * @remarks
598
+ * Content source for the embedded frame. Supply one supported variant; use a URL for hosted application content or inline HTML for a self-contained document.
599
+ */
600
+ readonly frameContent: IntentUrlContent | IntentHtmlContent;
601
+ /**
602
+ * Optional header title, description, and icon metadata for the view.
603
+ *
604
+ * @remarks
605
+ * Optional display metadata associated with the embedded view. It does not control the integration anchor or the content rendered within the frame.
606
+ */
607
+ readonly dialogContent?: IntentDialogIconContent;
608
+ }
609
+ /**
610
+ * Complete specification for embedding a custom extension user interface within the front-end.
611
+ *
612
+ * @remarks
613
+ * The front-end uses id to identify the view, integration to choose its host surface, and frameContent to load its contents. dialogContent supplies optional header metadata where the selected integration supports it.
614
+ */
615
+ export type IntentUi = Ui;
616
+ /**
617
+ * An intent that opens a dedicated UI frame — modal, sidebar, window or tab — rendering a URL or raw inline HTML.
618
+ *
619
+ * @remarks
620
+ * Requests that the front-end mount the content in the selected integration surface, supplying the frame source and optional header metadata.
621
+ */
622
+ export interface UiIntent extends WithContextIntent {
623
+ /**
624
+ * UI view configuration specifying placement anchor, content, and header metadata.
625
+ *
626
+ * @remarks
627
+ * Required view descriptor containing the host integration, content source, and optional display metadata.
628
+ */
629
+ readonly ui: IntentUi;
630
+ }
631
+ /**
632
+ * Parameters for opening an external web URL in the user's default browser.
633
+ *
634
+ * @remarks
635
+ * This payload targets external browser navigation rather than an embedded UI frame. The operating system or front-end handles the actual hand-off to the default browser.
636
+ */
637
+ interface OpenBrowser {
638
+ /**
639
+ * Destination web URL to open externally in the default browser.
640
+ *
641
+ * @remarks
642
+ * External destination passed to the platform's default browser.
643
+ */
644
+ readonly url: string;
645
+ }
646
+ /**
647
+ * Parameters for opening an external web URL in the user's default browser.
648
+ *
649
+ * @remarks
650
+ * This payload targets external browser navigation rather than an embedded UI frame. The operating system or front-end handles the actual hand-off to the default browser.
651
+ */
652
+ export type IntentOpenBrowser = OpenBrowser;
653
+ /** An intent that prompts the user for confirmation and opens an external URL in the default web browser. */
654
+ export interface OpenBrowserIntent extends BasisIntent {
655
+ /**
656
+ * External browser navigation payload containing the target URL.
657
+ *
658
+ * @remarks
659
+ * Required URL payload passed to the operating system or front-end for external browser navigation.
660
+ */
661
+ readonly openBrowser: IntentOpenBrowser;
662
+ }
663
+ /**
664
+ * Embedded frame configuration rendered within a dialog modal.
665
+ *
666
+ * @remarks
667
+ * The frame embeds URL- or HTML-based content in a dialog body. Its height is expressed as a percentage of the available dialog height so that the front-end can adapt the frame to the dialog's rendered dimensions.
668
+ */
669
+ interface Frame {
670
+ /**
671
+ * Embedded web content to render inside the dialog frame.
672
+ *
673
+ * @remarks
674
+ * Source for the embedded content. The selected FrameContent variant determines whether the front-end loads a URL or renders supplied markup.
675
+ */
676
+ readonly content: IntentUrlContent | IntentHtmlContent;
677
+ /**
678
+ * Frame height expressed as a percentage of available dialog height (0 to 100).
679
+ *
680
+ * @remarks
681
+ * Relative height request, bounded from 0 through 100. A value of 100 requests the full available dialog height; the final rendered dimensions remain controlled by the front-end.
682
+ */
683
+ readonly height: number;
684
+ }
685
+ /**
686
+ * Embedded frame configuration rendered within a dialog modal.
687
+ *
688
+ * @remarks
689
+ * The frame embeds URL- or HTML-based content in a dialog body. Its height is expressed as a percentage of the available dialog height so that the front-end can adapt the frame to the dialog's rendered dimensions.
690
+ */
691
+ export type IntentFrame = Frame;
692
+ /**
693
+ * Button label configuration for interactive dialog actions.
694
+ *
695
+ * @remarks
696
+ * Defines user-visible text for the dialog's affirmative choice and optional secondary choice. These labels are presentation strings, not command identifiers.
697
+ */
698
+ interface DialogButtons {
699
+ /**
700
+ * Label text for the primary affirmative / confirmation button.
701
+ *
702
+ * @remarks
703
+ * Text shown for the affirmative action. Keep it specific to the requested decision when possible.
704
+ */
705
+ readonly yes: string;
706
+ /**
707
+ * Optional label text for the secondary negative / cancellation button.
708
+ *
709
+ * @remarks
710
+ * Text shown for the secondary choice, commonly a cancellation label. Omission leaves that choice to the front-end's default dialog behavior.
711
+ */
712
+ readonly no?: string;
713
+ }
714
+ /**
715
+ * Button label configuration for interactive dialog actions.
716
+ *
717
+ * @remarks
718
+ * Defines user-visible text for the dialog's affirmative choice and optional secondary choice. These labels are presentation strings, not command identifiers.
719
+ */
720
+ export type IntentDialogButtons = DialogButtons;
721
+ /**
722
+ * Configuration for interactive modal dialogs displaying notices, confirmation questions, or embedded frames.
723
+ *
724
+ * @remarks
725
+ * Defines the dialog's semantic type and user-facing content, with optional embedded content and button labels. Use question for a decision that requires an explicit response; other types communicate status or errors.
726
+ */
727
+ interface Dialog extends DialogIconSizeContent {
728
+ /**
729
+ * Semantic dialog type — error, info, or question.
730
+ *
731
+ * @remarks
732
+ * Selects the dialog's interaction and visual treatment. Use question when the caller needs a yes/no choice, and error or info for non-question messages.
733
+ */
734
+ readonly type: IntentDialogType;
735
+ /**
736
+ * Optional embedded HTML or URL frame rendered inside the dialog body.
737
+ *
738
+ * @remarks
739
+ * Optional embedded content displayed within the dialog. Omit it for text-only dialogs; when present, content should be suitable for the dialog's available space.
740
+ */
741
+ readonly frame?: IntentFrame;
742
+ /**
743
+ * Button label definitions for user response choices.
744
+ *
745
+ * @remarks
746
+ * Labels for the affirmative action and optional secondary cancellation action. The front-end determines the button behavior and returns the user's choice to the intent caller.
747
+ */
748
+ readonly buttons: IntentDialogButtons;
749
+ }
750
+ /**
751
+ * Configuration for interactive modal dialogs displaying notices, confirmation questions, or embedded frames.
752
+ *
753
+ * @remarks
754
+ * Defines the dialog's semantic type and user-facing content, with optional embedded content and button labels. Use question for a decision that requires an explicit response; other types communicate status or errors.
755
+ */
756
+ export type IntentDialog = Dialog;
757
+ /**
758
+ * An intent that displays an interactive modal dialog and returns the user's response.
759
+ *
760
+ * @remarks
761
+ * Requests a front-end-managed modal using the supplied dialog configuration. The front-end presents the available controls and resolves the interaction with the user's response.
762
+ */
763
+ export interface DialogIntent extends WithContextIntent {
764
+ /**
765
+ * Modal dialog configuration including type, title, buttons, and optional frame content.
766
+ *
767
+ * @remarks
768
+ * Required modal content and interaction configuration. Its type, buttons, and optional frame determine what the user sees and which response can be returned.
769
+ */
770
+ readonly dialog: IntentDialog;
771
+ }
772
+ /**
773
+ * Individual image descriptor for gallery presentation.
774
+ *
775
+ * @remarks
776
+ * An image entry references an existing image by identifier and may override or augment its displayed textual details.
777
+ */
778
+ interface Image {
779
+ /**
780
+ * Unique identifier of the image in repositories.
781
+ *
782
+ * @remarks
783
+ * Identifier used by the front-end to resolve the image from its repositories. This is a image identifier, not an image URL or binary payload.
784
+ */
785
+ readonly imageId: string;
786
+ /**
787
+ * Optional title, description, or detail text for the individual image.
788
+ *
789
+ * @remarks
790
+ * Optional display metadata associated with this image entry. The front-end can use it as a per-image caption or descriptive context without changing the referenced image.
791
+ */
792
+ readonly details?: IntentTitleDescriptionDetails;
793
+ }
794
+ /**
795
+ * Individual image descriptor for gallery presentation.
796
+ *
797
+ * @remarks
798
+ * An image entry references an existing image by identifier and may override or augment its displayed textual details.
799
+ */
800
+ export type IntentImage = Image;
801
+ /**
802
+ * Content configuration for image gallery presentation containing title, subtitle, description, details, and an optional icon.
803
+ *
804
+ * @remarks
805
+ * Header metadata specialized for the image gallery tab. It reuses the common content fields so gallery presentation follows the same title, text, and icon conventions as other views.
806
+ */
807
+ interface ImagesContent extends TitleSubtitleDescriptionDetailsIcon {
808
+ }
809
+ /**
810
+ * Content configuration for image gallery presentation containing title, subtitle, description, details, and an optional icon.
811
+ *
812
+ * @remarks
813
+ * Header metadata specialized for the image gallery tab. It reuses the common content fields so gallery presentation follows the same title, text, and icon conventions as other views.
814
+ */
815
+ export type IntentImagesContent = ImagesContent;
816
+ /**
817
+ * Collection of image items displayed inside a dedicated gallery tab.
818
+ *
819
+ * @remarks
820
+ * Pairs the gallery's image entries with the header content shown above them. Each entry points to an existing image; this model does not carry image bytes.
821
+ */
822
+ interface Images {
823
+ /**
824
+ * List of image items to display in the gallery tab.
825
+ *
826
+ * @remarks
827
+ * Ordered gallery entries. The sequence supplied here is the order in which images are presented by the front-end.
828
+ */
829
+ readonly images: IntentImage[];
830
+ /**
831
+ * Header content configuration for the image gallery tab.
832
+ *
833
+ * @remarks
834
+ * Title, subtitle, description, details, and optional icon for the gallery view header.
835
+ */
836
+ readonly content: IntentImagesContent;
837
+ }
838
+ /**
839
+ * Collection of image items displayed inside a dedicated gallery tab.
840
+ *
841
+ * @remarks
842
+ * Pairs the gallery's image entries with the header content shown above them. Each entry points to an existing image; this model does not carry image bytes.
843
+ */
844
+ export type IntentImages = Images;
845
+ /**
846
+ * An intent that opens a tab displaying an image gallery.
847
+ *
848
+ * @remarks
849
+ * Requests a dedicated desk tab for the supplied ordered image collection and header metadata.
850
+ */
851
+ export interface ImagesIntent extends WithContextIntent {
852
+ /**
853
+ * Image collection items and header metadata for the tab view.
854
+ *
855
+ * @remarks
856
+ * Required gallery payload containing both the image references and the content used to describe the tab.
857
+ */
858
+ readonly images: IntentImages;
859
+ }
860
+ /**
861
+ * Navigation payload targeting a specific view, panel, or entity.
862
+ *
863
+ * @remarks
864
+ * Combines a front-end-recognized view category with the identifier needed to resolve the destination. Valid identifier formats depend on the selected view type.
865
+ */
866
+ interface Show {
867
+ /**
868
+ * Target view or entity category discriminator.
869
+ *
870
+ * @remarks
871
+ * Selects which front-end surface or entity resolver handles the navigation request. The id property must identify an entity compatible with this category.
872
+ */
873
+ readonly type: IntentShowType;
874
+ /**
875
+ * Unique identifier of the target entity — such as an image ID, repository ID, sidebar UUID, or extension ID.
876
+ *
877
+ * @remarks
878
+ * Identifier consumed by the selected destination resolver, for example an image ID for image, repository ID for repository, or extension ID for extensionSettings.
879
+ */
880
+ readonly id: string;
881
+ }
882
+ /**
883
+ * Navigation payload targeting a specific view, panel, or entity.
884
+ *
885
+ * @remarks
886
+ * Combines a front-end-recognized view category with the identifier needed to resolve the destination. Valid identifier formats depend on the selected view type.
887
+ */
888
+ export type IntentShow = Show;
889
+ /**
890
+ * An intent that navigates the front-end to a specific view, opening an image detail modal, a registered sidebar panel, an extension settings modal, or a repository view.
891
+ *
892
+ * @remarks
893
+ * It requests navigation in the front-end using a type-and-identifier pair.
894
+ */
895
+ export interface ShowIntent extends BasisIntent {
896
+ /**
897
+ * Target entity and view type specification to display.
898
+ *
899
+ * @remarks
900
+ * Destination descriptor used by the front-end to select the view and resolve its target.
901
+ */
902
+ readonly show: IntentShow;
903
+ }
904
+ /**
905
+ * Configuration payload for brief, non-intrusive toast notifications.
906
+ *
907
+ * @remarks
908
+ * Toast content is intended for transient status feedback rather than a durable notification or an interaction requiring a decision.
909
+ */
910
+ interface Toast extends TitleSubtitle {
911
+ /**
912
+ * Visual style and severity variant of the toast.
913
+ *
914
+ * @remarks
915
+ * Controls the font-end-side visual treatment and communicates the message category; it does not alter the notification text.
916
+ */
917
+ readonly type: IntentToastType;
918
+ }
919
+ /**
920
+ * Configuration payload for brief, non-intrusive toast notifications.
921
+ *
922
+ * @remarks
923
+ * Toast content is intended for transient status feedback rather than a durable notification or an interaction requiring a decision.
924
+ */
925
+ export type IntentToast = Toast;
926
+ /**
927
+ * An intent that displays a brief, non-intrusive toast notification in the front-end.
928
+ *
929
+ * @remarks
930
+ * It dispatches a transient status feedback to the front-end.
931
+ */
932
+ export interface ToastIntent extends WithContextIntent {
933
+ /**
934
+ * Toast notification configuration specifying type, title, and subtitle text.
935
+ *
936
+ * @remarks
937
+ * Required toast content and severity configuration.
938
+ */
939
+ readonly toast: IntentToast;
940
+ }
941
+ /**
942
+ * Notification payload for notification center cards or native desktop notifications.
943
+ *
944
+ * @remarks
945
+ * Provides content and delivery preferences for a notification. The consumer can route it to the in-app notification center, the operating system notification manager, or both according to its supported behavior.
946
+ */
947
+ interface Notification extends TitleSubtitle {
948
+ /**
949
+ * Primary notification title heading.
950
+ *
951
+ * @remarks
952
+ * Short heading shown as the notification's primary label.
953
+ */
954
+ readonly title: string;
955
+ /**
956
+ * Detailed notification message body.
957
+ *
958
+ * @remarks
959
+ * Main explanatory text shown with the notification title and subtitle. Keep the body understandable when the user sees it outside the surrounding application context.
960
+ */
961
+ readonly body: string;
962
+ /**
963
+ * Whether audio alert chimes and sounds should be suppressed.
964
+ *
965
+ * @remarks
966
+ * Set true when delivery should not produce an audible alert. This preference does not suppress the visual notification.
967
+ */
968
+ readonly silent: boolean;
969
+ /**
970
+ * Optional raw binary image icon displayed with the notification.
971
+ *
972
+ * @remarks
973
+ * Image bytes supplied for the notification icon. The target notification surface may apply its own size and format constraints.
974
+ */
975
+ readonly icon?: Buffer;
976
+ /**
977
+ * Whether the notification is dispatched through the operating system native desktop notification manager.
978
+ *
979
+ * @remarks
980
+ * Selects native desktop notification delivery when true. When false, the front-end notification center is the target; actual OS behavior is subject to platform support.
981
+ */
982
+ readonly isNative: boolean;
983
+ }
984
+ /**
985
+ * Notification payload for notification center cards or native desktop notifications.
986
+ *
987
+ * @remarks
988
+ * Provides content and delivery preferences for a notification. The consumer can route it to the in-app notification center, the operating system notification manager, or both according to its supported behavior.
989
+ */
990
+ export type IntentNotification = Notification;
991
+ /**
992
+ * An intent that dispatches a notification to the front-end notification center or operating system native desktop notification manager.
993
+ *
994
+ * @remarks
995
+ * It sends a notification content with delivery preferences to the front-end.
996
+ */
997
+ export interface NotificationIntent extends WithContextIntent {
998
+ /**
999
+ * Notification details including title, subtitle, body, icon, and delivery mode.
1000
+ *
1001
+ * @remarks
1002
+ * Required notification content and delivery options.
1003
+ */
1004
+ readonly notification: IntentNotification;
1005
+ }
1006
+ /**
1007
+ * Specification identifying an extension command for programmatic invocation.
1008
+ *
1009
+ * @remarks
1010
+ * A command is resolved within its owning extension, so both identifiers are required to avoid ambiguity across installed extensions.
1011
+ */
1012
+ interface ProcessCommand {
1013
+ /**
1014
+ * Unique identifier of the extension owning the target command.
1015
+ *
1016
+ * @remarks
1017
+ * Identifier of the installed extension that registers the command. It scopes commandId to the correct extension.
1018
+ */
1019
+ readonly extensionId: string;
1020
+ /**
1021
+ * Unique identifier of the command to execute on the extension.
1022
+ *
1023
+ * @remarks
1024
+ * Identifier of the command registered by the owning extension. The extension's command handler determines the accepted input and execution behavior.
1025
+ */
1026
+ readonly commandId: string;
1027
+ }
1028
+ /**
1029
+ * Specification identifying an extension command for programmatic invocation.
1030
+ *
1031
+ * @remarks
1032
+ * A command is resolved within its owning extension, so both identifiers are required to avoid ambiguity across installed extensions.
1033
+ */
1034
+ export type IntentProcessCommand = ProcessCommand;
1035
+ /**
1036
+ * An intent that triggers execution of an extension command within the current context.
1037
+ *
1038
+ * @remarks
1039
+ * It asks the front-end to execute an command, submitted its form when it requires inputs.
1040
+ */
1041
+ export interface ProcessCommandIntent extends WithContextIntent {
1042
+ /**
1043
+ * Extension and command identification payload.
1044
+ *
1045
+ * @remarks
1046
+ * Identifies the extension and command that the front-end should invoke.
1047
+ */
1048
+ readonly processCommand: IntentProcessCommand;
1049
+ }
1050
+ /**
1051
+ * Interactive action card configuration bundling an executable intent triggered by a notification button.
1052
+ *
1053
+ * @remarks
1054
+ * Combines user-facing card content and an executable intent. The notification center can present the card and dispatch the nested intent only after the user activates its action.
1055
+ */
1056
+ interface Action {
1057
+ /**
1058
+ * Underlying intent executed when the user confirms the action button.
1059
+ *
1060
+ * @remarks
1061
+ * Intent dispatched as the action's effect. Only the supported intent variants are accepted; the action itself does not execute or validate the nested operation.
1062
+ */
1063
+ readonly intent: ShowIntent | UiIntent | OpenBrowserIntent | ProcessCommandIntent;
1064
+ /**
1065
+ * Header title, description, details, icon, and sizing configuration for the action card.
1066
+ *
1067
+ * @remarks
1068
+ * User-facing card content displayed with the action button.
1069
+ */
1070
+ readonly dialogContent: IntentDialogIconSizeContent;
1071
+ /**
1072
+ * Optional label text for the action confirmation button.
1073
+ *
1074
+ * @remarks
1075
+ * Optional concise text for the button that activates the nested intent.
1076
+ */
1077
+ readonly label?: string;
1078
+ }
1079
+ /**
1080
+ * Interactive action card configuration bundling an executable intent triggered by a notification button.
1081
+ *
1082
+ * @remarks
1083
+ * Combines user-facing card content and an executable intent. The notification center can present the card and dispatch the nested intent only after the user activates its action.
1084
+ */
1085
+ export type IntentAction = Action;
1086
+ /**
1087
+ * An intent that posts an entry to the front-end notification center, executing an action when the user clicks its action button.
1088
+ *
1089
+ * @remarks
1090
+ * It publishes a user-facing action card containing a nested intent. The nested operation is dispatched in response to the user's activation rather than immediately when this intent is handled.
1091
+ */
1092
+ export interface ActionIntent extends WithContextIntent {
1093
+ /**
1094
+ * Action card configuration including header content, action button label, and underlying intent.
1095
+ *
1096
+ * @remarks
1097
+ * Required card configuration, including the intent to dispatch after user activation.
1098
+ */
1099
+ readonly action: IntentAction;
1100
+ }
1101
+ export declare function isFormIntent(intent: unknown): intent is FormIntent;
1102
+ export declare function isUiIntent(intent: unknown): intent is UiIntent;
1103
+ export declare function isOpenBrowserIntent(intent: unknown): intent is OpenBrowserIntent;
1104
+ export declare function isDialogIntent(intent: unknown): intent is DialogIntent;
1105
+ export declare function isImagesIntent(intent: unknown): intent is ImagesIntent;
1106
+ export declare function isShowIntent(intent: unknown): intent is ShowIntent;
1107
+ export declare function isToastIntent(intent: unknown): intent is ToastIntent;
1108
+ export declare function isNotificationIntent(intent: unknown): intent is NotificationIntent;
1109
+ export declare function isProcessCommandIntent(intent: unknown): intent is ProcessCommandIntent;
1110
+ export declare function isActionIntent(intent: unknown): intent is ActionIntent;
1111
+ export type FrontIntent = FormIntent | UiIntent | OpenBrowserIntent | DialogIntent | ImagesIntent | ShowIntent | ToastIntent | NotificationIntent | ProcessCommandIntent | ActionIntent;
1112
+ export {};