@oomol-lab/open-flow 0.1.0-beta.4 → 0.1.0-beta.40
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/dist/browser/{_virtual_open-flow-twemoji-DJwKsM_w.js → _virtual_open-flow-twemoji-CpHJOEsk.js} +4028 -2
- package/dist/browser/carbon-Cn-DTyjG.js +54 -0
- package/dist/browser/codeDiagnostics-BtH_YuXu.js +44 -0
- package/dist/browser/createResourceDialog-BOrW62JW.js +110 -0
- package/dist/browser/{dist-DWADUsVB.js → dist-By46o5UV.js} +47 -47
- package/dist/browser/dist-Cdna4VV_.js +795 -0
- package/dist/browser/dist-CoszrK7m.js +4 -0
- package/dist/browser/{dist-CPuF50D9.js → dist-D1VYgicl.js} +426 -305
- package/dist/browser/{dist-CeSZ2xSM.js → dist-DINmJ4Gr.js} +171 -112
- package/dist/browser/dist-DSe6KRsr.js +1224 -0
- package/dist/browser/{dist-3Mj8q8Pr.js → dist-DmuE3M0R.js} +53 -54
- package/dist/browser/{dist-BN4ZCyOB.js → dist-DpDLsYtO.js} +14 -15
- package/dist/browser/{dist-CJpzJrLM.js → dist-DwvhuMxw.js} +894 -895
- package/dist/browser/dist-DxahK_I8.js +2688 -0
- package/dist/browser/{dist-C46JByB-.js → dist-Dz6Nglsd.js} +61 -61
- package/dist/browser/{dist-DUzA0Ukh.js → dist-TJfrvoIQ.js} +141 -142
- package/dist/browser/editorComponent-0skblWYk.js +16795 -0
- package/dist/browser/{esm-C9jQK70n.js → esm-B7A42FzW.js} +68 -59
- package/dist/browser/event-sources.d.ts +30 -0
- package/dist/browser/flow-authoring-module.d.ts +2 -2
- package/dist/browser/flow-authoring-node.d.ts +34 -17
- package/dist/browser/flow-authoring.d.ts +1 -1
- package/dist/browser/flow-authoring.js +15906 -457
- package/dist/browser/flow-change-schema.d.ts +11 -0
- package/dist/browser/flow-change.d.ts +245 -44
- package/dist/browser/flow-change.js +5517 -117
- package/dist/browser/flow-input-value.d.ts +6 -0
- package/dist/browser/flow-notifications.d.ts +11 -2
- package/dist/browser/flowChanges-3o9Vs_1I.js +10137 -0
- package/dist/browser/{flowRunInputEditorStore-BYa8zFLC.js → flowRunInputEditorStore-Bgb5vSeS.js} +864 -4000
- package/dist/browser/flowWorkspace-DJzQVVtZ.js +43418 -0
- package/dist/browser/host-conformance.d.ts +7 -0
- package/dist/browser/host-conformance.js +39 -0
- package/dist/browser/inputValues-DkDT6u0o.js +43 -0
- package/dist/browser/licenses.md +137 -662
- package/dist/browser/{getPseudoElementBounds-qDxSDwzN.js → lite-BA96NG4M.js} +4409 -2987
- package/dist/browser/main-BDnNHhkU.js +50 -0
- package/dist/browser/{markdownContent-DUfLdnUt.js → markdownContent-D2oHGWc6.js} +53 -53
- package/dist/browser/theme.css +529 -34
- package/dist/browser/{typeScriptSession-CwMPjseS.js → typeScriptSession-v9Pb3G6d.js} +190 -191
- package/dist/browser/ui-input.d.ts +5 -0
- package/dist/browser/ui-label.d.ts +3 -0
- package/dist/browser/ui-textarea.d.ts +3 -0
- package/dist/browser/ui.css +3 -0
- package/dist/browser/ui.css.d.ts +1 -0
- package/dist/browser/ui.d.ts +62 -0
- package/dist/browser/ui.js +5407 -0
- package/dist/browser/value-B_yE9ean.js +101 -0
- package/dist/browser/warmCodeTheme-DVv4-rDO.js +35 -0
- package/dist/browser/webhook-method.d.ts +3 -0
- package/dist/browser/workbench-contract.d.ts +27 -2
- package/dist/browser/workbench.css +1 -1
- package/dist/browser/workbench.d.ts +2 -3
- package/dist/browser/workbench.js +4212 -1472
- package/dist/browser/workbenchSelect-B5zXyaaX.js +6423 -0
- package/dist/common/authoringExamples.d.ts +28 -0
- package/dist/common/connectorDecoders.d.ts +9 -0
- package/dist/common/control-api-conformance.d.ts +57 -0
- package/dist/common/control-api-conformance.js +9793 -208
- package/dist/common/control-api-errors.d.ts +49 -0
- package/dist/common/control-api.d.ts +484 -57
- package/dist/common/control-api.js +8917 -531
- package/dist/common/control-requests.d.ts +129 -0
- package/dist/common/control-requests.js +8662 -0
- package/dist/common/cron-trigger.d.ts +2 -1
- package/dist/common/cron-trigger.js +27 -24
- package/dist/common/draftOperations.d.ts +13 -0
- package/dist/common/engine-contract.d.ts +3 -1
- package/dist/common/event-sources.d.ts +49 -0
- package/dist/common/feishu-events.d.ts +19 -0
- package/dist/common/feishu-subscriptions.d.ts +10 -0
- package/dist/common/flow-agent.d.ts +10 -0
- package/dist/common/flow-connectionUsage.d.ts +12 -0
- package/dist/common/flow-encoding.d.ts +10 -2
- package/dist/common/flow-encoding.js +5170 -84
- package/dist/common/flow-graph.d.ts +59 -0
- package/dist/common/flow-json.d.ts +2 -0
- package/dist/common/flow-modules.d.ts +20 -0
- package/dist/common/flow-notifications.d.ts +11 -2
- package/dist/common/flow-schema.d.ts +17 -0
- package/dist/common/flow-semantics.d.ts +15 -7
- package/dist/common/flow-semantics.js +16394 -9734
- package/dist/common/flowInspection.d.ts +105 -0
- package/dist/common/fr-ClB96SQY.js +298 -0
- package/dist/common/integration-trigger.d.ts +30 -2
- package/dist/common/integration-trigger.js +7880 -71
- package/dist/common/ja-BJF-VrP2.js +298 -0
- package/dist/common/ko-Bght_VaB.js +298 -0
- package/dist/common/localization.d.ts +2 -0
- package/dist/common/localization.js +37 -1
- package/dist/common/mcp-conformance.d.ts +2 -0
- package/dist/common/mcp.d.ts +964 -0
- package/dist/common/mcp.js +9358 -0
- package/dist/common/poll-trigger.d.ts +7 -0
- package/dist/common/poll-trigger.js +7702 -25
- package/dist/common/provider-triggers.d.ts +4 -0
- package/dist/common/provider-triggers.js +11554 -2275
- package/dist/common/providerAccess.d.ts +20 -0
- package/dist/common/ru-DrP4BRM5.js +298 -0
- package/dist/common/run-events.d.ts +2 -2
- package/dist/common/run-events.js +11 -16
- package/dist/common/run-lifecycle.d.ts +5 -1
- package/dist/common/run-lifecycle.js +33 -3
- package/dist/common/run-results.d.ts +57 -0
- package/dist/common/runtime-contract.d.ts +38 -3
- package/dist/common/runtime-contract.js +312 -19
- package/dist/common/scheduler.d.ts +83 -60
- package/dist/common/scheduler.js +8625 -545
- package/dist/common/trigger-catalog.d.ts +22 -0
- package/dist/common/trigger-config-options.d.ts +13 -0
- package/dist/common/trigger-config.d.ts +7 -0
- package/dist/common/trigger-contract.d.ts +7 -0
- package/dist/common/trigger-localization.d.ts +7 -0
- package/dist/common/webhook-trigger.d.ts +5 -3
- package/dist/common/webhook-trigger.js +7071 -67
- package/dist/common/zh-CN-CxZ3yYfR.js +298 -0
- package/dist/common/zh-TW-CRmc3FMz.js +298 -0
- package/dist/index.d.ts +5 -5
- package/package.json +21 -1
- package/dist/browser/DesignerIcon-DdfuH2jW.js +0 -2066
- package/dist/browser/carbon-DMCVsjHo.js +0 -53
- package/dist/browser/createResourceDialog-4YQKl8lG.js +0 -505
- package/dist/browser/dist-BMqL-qR5.js +0 -1894
- package/dist/browser/dist-BpopSHwP.js +0 -1543
- package/dist/browser/dist-CP0883sY.js +0 -4
- package/dist/browser/dist-CUSrALSX.js +0 -1620
- package/dist/browser/flowChanges-Bs-ZcJV8.js +0 -12006
- package/dist/browser/flowWorkspace-BewofPeU.js +0 -45575
- package/dist/browser/icons-DRoMXL5h.js +0 -521
- package/dist/browser/languages-DgJehE1g.js +0 -62
- package/dist/browser/lib-GrGxYjsJ.js +0 -7855
- package/dist/browser/main-DmjVyuWr.js +0 -76
- package/dist/browser/waitNotificationInputs-DtrPBwA1.js +0 -26
- package/dist/browser/workbenchSelect-CX8KtT7L.js +0 -1375
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type ProviderAccessSource = {
|
|
2
|
+
readonly kind: 'admin-delegation';
|
|
3
|
+
} | {
|
|
4
|
+
readonly kind: 'policy';
|
|
5
|
+
readonly ruleId: string | null;
|
|
6
|
+
};
|
|
7
|
+
export interface ProviderAccessIdentity {
|
|
8
|
+
readonly accessBindingId: string;
|
|
9
|
+
readonly connectionId: string;
|
|
10
|
+
readonly providerId: string;
|
|
11
|
+
readonly source: ProviderAccessSource;
|
|
12
|
+
}
|
|
13
|
+
export type ProviderAccessReference = ProviderAccessIdentity | {
|
|
14
|
+
readonly accessBindingId: string;
|
|
15
|
+
readonly providerId: string;
|
|
16
|
+
readonly connectionId: null;
|
|
17
|
+
readonly source: null;
|
|
18
|
+
};
|
|
19
|
+
export declare function parseProviderAccessSource(value: unknown): ProviderAccessSource;
|
|
20
|
+
export declare function providerAccessBindingId(teamId: string, identity: Omit<ProviderAccessIdentity, 'accessBindingId'>): Promise<string>;
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
//#region src/trigger/providers/airtable/locales/ru.json
|
|
2
|
+
var e = { "airtable.on_record_changed": {
|
|
3
|
+
displayName: "Создание или изменение записи",
|
|
4
|
+
description: "Периодически проверяет таблицу Airtable и срабатывает при создании или изменении записи, упорядочивая записи по полю времени.",
|
|
5
|
+
configInputs: {
|
|
6
|
+
baseId: "ID базы Airtable, которую нужно отслеживать.",
|
|
7
|
+
fields: "Поля, которые должны быть включены в каждую возвращаемую запись. Оставьте пустым, чтобы включить все поля.",
|
|
8
|
+
formula: "Формула Airtable, используемая для фильтрации записей. Оставьте пустым, чтобы включить все записи.",
|
|
9
|
+
maxRecordsPerPoll: "Максимальное количество записей, обрабатываемых за одно опрос.",
|
|
10
|
+
tableIdOrName: "ID или название таблицы Airtable, которую нужно отслеживать.",
|
|
11
|
+
triggerField: "Поле даты или времени, используемое для определения созданных или обновленных записей.",
|
|
12
|
+
view: "Вид Airtable, используемый для фильтрации и сортировки записей. Оставьте пустым, чтобы использовать настройку по умолчанию для таблицы."
|
|
13
|
+
},
|
|
14
|
+
outputs: { events: "Записи, созданные или обновленные с момента предыдущего опроса." }
|
|
15
|
+
} }, t = { "feishu_app_bot.on_event": {
|
|
16
|
+
displayName: "Событие приложения",
|
|
17
|
+
description: "Получает выбранные события Feishu через общий источник.",
|
|
18
|
+
configInputs: {
|
|
19
|
+
sourceId: "Источник событий, который получает события для этого триггера.",
|
|
20
|
+
eventTypes: "Типы событий Feishu, запускающие выполнение.",
|
|
21
|
+
chatIds: "ID чатов, из которых будут получаться события. Оставьте пустым, чтобы получать события из всех доступных чатов источника.",
|
|
22
|
+
resource: "Необязательный документ, календарь или ресурс одобрения, на который можно подписаться."
|
|
23
|
+
},
|
|
24
|
+
outputs: {
|
|
25
|
+
event: "Тип события Feishu.",
|
|
26
|
+
deliveryId: "Уникальный идентификатор доставки этого события.",
|
|
27
|
+
appId: "ID приложения Feishu, получившего событие.",
|
|
28
|
+
tenantKey: "Ключ тенанта Feishu, который сгенерировал событие.",
|
|
29
|
+
occurredAt: "Время возникновения события, если оно передано Feishu.",
|
|
30
|
+
body: "Оригинальное тело события Feishu."
|
|
31
|
+
}
|
|
32
|
+
} }, n = {
|
|
33
|
+
"github.on_repo_event": {
|
|
34
|
+
displayName: "Событие репозитория",
|
|
35
|
+
description: "Срабатывает при выбранных событиях webhook GitHub в репозитории.",
|
|
36
|
+
configInputs: {
|
|
37
|
+
events: "События вебхука GitHub, запускающие выполнение.",
|
|
38
|
+
insecureSsl: "Разрешить GitHub отправлять вебхуки без проверки SSL-сертификата.",
|
|
39
|
+
owner: "Владелец репозитория GitHub.",
|
|
40
|
+
repo: "Название репозитория GitHub."
|
|
41
|
+
},
|
|
42
|
+
outputs: {
|
|
43
|
+
body: "Оригинальное тело вебхука GitHub.",
|
|
44
|
+
deliveryId: "Уникальный идентификатор доставки вебхука GitHub.",
|
|
45
|
+
event: "Название события вебхука GitHub."
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"github.watch_pull_request": {
|
|
49
|
+
displayName: "Наблюдение за пул-реквестом",
|
|
50
|
+
description: "Следит за одним пул-реквестом через уведомления и периодические проверки. Начинает с текущего состояния и сообщает о наблюдаемых изменениях, а не обо всех промежуточных переходах или событиях ревью.",
|
|
51
|
+
configInputs: {
|
|
52
|
+
owner: "Владелец репозитория GitHub.",
|
|
53
|
+
repo: "Название репозитория GitHub.",
|
|
54
|
+
number: "Номер pull‑request, который нужно отслеживать."
|
|
55
|
+
},
|
|
56
|
+
outputs: {
|
|
57
|
+
pullRequest: "Текущие данные pull‑request после обнаруженного изменения.",
|
|
58
|
+
version: "Стабильный идентификатор версии отслеживаемого pull‑request."
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}, r = { "gitlab.on_project_event": {
|
|
62
|
+
displayName: "Событие проекта",
|
|
63
|
+
description: "Срабатывает при выбранных событиях webhook GitLab в проекте.",
|
|
64
|
+
configInputs: {
|
|
65
|
+
events: "События проекта GitLab, запускающие выполнение.",
|
|
66
|
+
insecureSsl: "Разрешить GitLab отправлять вебхуки без проверки SSL-сертификата.",
|
|
67
|
+
project: "Числовой ID проекта или URL‑кодированный путь проекта.",
|
|
68
|
+
pushBranchFilter: "Ветка или шаблон для фильтрации событий push. Оставьте пустым, чтобы включить все ветки."
|
|
69
|
+
},
|
|
70
|
+
outputs: {
|
|
71
|
+
body: "Оригинальное тело вебхука GitLab.",
|
|
72
|
+
deliveryId: "Уникальный идентификатор, сгенерированный для этой доставки вебхука.",
|
|
73
|
+
event: "Нормализованное название события GitLab.",
|
|
74
|
+
gitlabEvent: "Оригинальное значение заголовка события GitLab."
|
|
75
|
+
}
|
|
76
|
+
} }, i = { "gmail.on_message_received": {
|
|
77
|
+
displayName: "Новое письмо",
|
|
78
|
+
description: "Периодически проверяет почтовый ящик Gmail и срабатывает при получении нового письма.",
|
|
79
|
+
configInputs: {
|
|
80
|
+
includeDrafts: "Также запускать при получении черновиков.",
|
|
81
|
+
includeSpamAndTrash: "Также запускать при получении сообщений из папок «Спам» и «Корзина».",
|
|
82
|
+
labelNamesOrIds: "Запускать только для сообщений, имеющих все указанные метки, по названию или ID.",
|
|
83
|
+
maxMessagesPerPoll: "Максимальное количество сообщений, обрабатываемых за одно опрос.",
|
|
84
|
+
readStatus: "Запускать только для прочитанных, непрочитанных или обоих типов сообщений.",
|
|
85
|
+
search: "Поисковый запрос Gmail, которому должно соответствовать каждое сообщение.",
|
|
86
|
+
sender: "Запускать только для сообщений, отправленных с указанного адреса или имени."
|
|
87
|
+
},
|
|
88
|
+
outputs: { events: "Сообщения, полученные с момента предыдущего опроса." }
|
|
89
|
+
} }, a = { "googlecalendar.on_event_changed": {
|
|
90
|
+
displayName: "Изменение события календаря",
|
|
91
|
+
description: "Периодически проверяет Google Calendar и срабатывает при создании, изменении или отмене события.",
|
|
92
|
+
configInputs: {
|
|
93
|
+
calendarId: "ID календаря Google, который нужно отслеживать.",
|
|
94
|
+
changes: "Изменения событий календаря, запускающие выполнение.",
|
|
95
|
+
matchTerm: "Текст, который должен присутствовать в суммарном описании, описании, месте проведения или участниках события. Оставьте пустым, чтобы отслеживать все события.",
|
|
96
|
+
maxEventsPerPoll: "Максимальное количество событий календаря, обрабатываемых за одно опрос."
|
|
97
|
+
},
|
|
98
|
+
outputs: { events: "События календаря, созданные, обновленные или отменённые с момента предыдущего опроса." }
|
|
99
|
+
} }, o = {
|
|
100
|
+
"googledrive.changes_detected": {
|
|
101
|
+
displayName: "Обнаружение изменений",
|
|
102
|
+
description: "Использует канал Google Drive changes.watch и срабатывает, когда доступны изменения Диска.",
|
|
103
|
+
configInputs: {
|
|
104
|
+
driveId: "ID общего диска. Оставьте пустым, чтобы отслеживать подключённую учётную запись.",
|
|
105
|
+
includeCorpusRemovals: "Включать доступный файловый ресурс, когда элемент покидает область изменений.",
|
|
106
|
+
includeItemsFromAllDrives: "Включать элементы из «Моего диска» и общих дисков.",
|
|
107
|
+
includeRemoved: "Включать изменения, вызванные удалением или потерей доступа.",
|
|
108
|
+
pageSize: "Максимальное количество изменений, включаемых в один запуск Flow.",
|
|
109
|
+
restrictToMyDrive: "Ограничить изменения структурой «Моего диска»."
|
|
110
|
+
},
|
|
111
|
+
outputs: { events: "Изменения Google Drive, доступные на момент получения уведомления." }
|
|
112
|
+
},
|
|
113
|
+
"googledrive.watch_changes": {
|
|
114
|
+
displayName: "Наблюдение за изменениями",
|
|
115
|
+
description: "Отслеживает изменения Диска через уведомления и периодическое сканирование одного и того же потока изменений.",
|
|
116
|
+
configInputs: {
|
|
117
|
+
driveId: "ID общего диска. Оставьте пустым, чтобы отслеживать подключённую учётную запись.",
|
|
118
|
+
includeCorpusRemovals: "Включать доступный файловый ресурс, когда элемент покидает область изменений.",
|
|
119
|
+
includeItemsFromAllDrives: "Включать элементы из «Моего диска» и общих дисков.",
|
|
120
|
+
includeRemoved: "Включать изменения, вызванные удалением или потерей доступа.",
|
|
121
|
+
pageSize: "Максимальное количество изменений, включаемых в один запуск Flow.",
|
|
122
|
+
restrictToMyDrive: "Ограничить изменения структурой «Моего диска»."
|
|
123
|
+
},
|
|
124
|
+
outputs: { events: "Изменения Google Drive, обнаруженные через уведомления или периодические сканирования." }
|
|
125
|
+
},
|
|
126
|
+
"googledrive.on_file_change": {
|
|
127
|
+
displayName: "Изменение файла или папки внутри папки",
|
|
128
|
+
description: "Периодически проверяет одну папку Google Drive и срабатывает при создании или изменении файлов и папок непосредственно в ней.",
|
|
129
|
+
configInputs: {
|
|
130
|
+
changeType: "Запускать ли выполнение при создании или обновлении элементов.",
|
|
131
|
+
driveId: "ID общего диска. Оставьте пустым, чтобы использовать «Мой диск».",
|
|
132
|
+
folderId: "ID папки Google Drive, которую нужно отслеживать.",
|
|
133
|
+
itemTypes: "Отслеживать файлы, папки или оба типа.",
|
|
134
|
+
maxFilesPerPoll: "Максимальное количество изменённых элементов, обрабатываемых за одно опрос.",
|
|
135
|
+
mimeTypes: "Запускать только для этих MIME‑типов. Оставьте пустым, чтобы включить все MIME‑типы.",
|
|
136
|
+
namePrefix: "Запускать только для элементов, чьи названия начинаются с этого текста. Оставьте пустым, чтобы включать все названия."
|
|
137
|
+
},
|
|
138
|
+
outputs: { events: "Файлы или папки, созданные или обновленные с момента предыдущего опроса." }
|
|
139
|
+
}
|
|
140
|
+
}, s = { "googlesheets.on_row_added": {
|
|
141
|
+
displayName: "Добавление строки",
|
|
142
|
+
description: "Периодически проверяет лист и срабатывает один раз для каждой новой строки, добавленной ниже последней ранее обнаруженной строки.",
|
|
143
|
+
configInputs: {
|
|
144
|
+
columnRange: "Диапазон столбцов A1 для чтения, например A:Z.",
|
|
145
|
+
dateTimeRender: "Как возвращаются значения даты и времени.",
|
|
146
|
+
firstDataRow: "Первая строка с данными, следующая за заголовком.",
|
|
147
|
+
headerRow: "Строка, ячейки которой становятся названиями полей вывода.",
|
|
148
|
+
maxRowsPerPoll: "Максимальное количество новых строк, обрабатываемых за одно опрос.",
|
|
149
|
+
sheet: "Название рабочего листа, который нужно отслеживать.",
|
|
150
|
+
spreadsheetId: "ID книги Google Sheets.",
|
|
151
|
+
valueRender: "Как возвращаются значения ячеек."
|
|
152
|
+
},
|
|
153
|
+
outputs: { events: "Строки, добавленные с момента предыдущего опроса." }
|
|
154
|
+
} }, c = { "linear.on_issue_changed": {
|
|
155
|
+
displayName: "Создание или изменение задачи",
|
|
156
|
+
description: "Периодически проверяет новые и изменённые задачи команды Linear. Начинает с текущего момента, не запуская существующие задачи. Сообщает о наблюдаемых текущих состояниях, но не об удалениях или каждом промежуточном изменении статуса.",
|
|
157
|
+
configInputs: {
|
|
158
|
+
teamId: "UUID команды Linear. Используйте UUID модели «Копировать» в Linear, чтобы найти его.",
|
|
159
|
+
stateIds: "Статусы выбранной команды. Оставьте пустым, чтобы отслеживать все статусы. Соответствует текущему статусу, а не всем переходам в него."
|
|
160
|
+
},
|
|
161
|
+
outputs: { events: "Проблемы Linear, созданные или обновленные с момента предыдущего опроса." }
|
|
162
|
+
} }, l = { "notion.on_database_page_event": {
|
|
163
|
+
displayName: "Добавление или изменение страницы базы данных",
|
|
164
|
+
description: "Периодически проверяет базу данных Notion и срабатывает при добавлении страницы или редактировании существующей.",
|
|
165
|
+
configInputs: {
|
|
166
|
+
dataSourceId: "ID источника данных внутри базы данных. Оставьте пустым, чтобы использовать основной источник.",
|
|
167
|
+
databaseId: "ID базы данных Notion, которую нужно отслеживать.",
|
|
168
|
+
events: "Изменения страниц, запускающие выполнение.",
|
|
169
|
+
includeProperties: "Включать свойства страницы в каждый выходной событие.",
|
|
170
|
+
maxItemsPerPoll: "Максимальное количество изменённых страниц, обрабатываемых за одно опрос."
|
|
171
|
+
},
|
|
172
|
+
outputs: { events: "Страницы базы данных, добавленные или обновленные с момента предыдущего опроса." }
|
|
173
|
+
} }, u = { "one_drive.on_item_changed": {
|
|
174
|
+
displayName: "Изменение файла или папки",
|
|
175
|
+
description: "Периодически проверяет поток изменений OneDrive и срабатывает при создании, изменении или удалении файла или папки.",
|
|
176
|
+
configInputs: {
|
|
177
|
+
events: "Изменения элементов OneDrive, запускающие выполнение.",
|
|
178
|
+
itemId: "Отслеживать только этот файл или папку по ID. Оставьте пустым, чтобы отслеживать несколько элементов.",
|
|
179
|
+
itemTypes: "Отслеживать файлы, папки или оба типа.",
|
|
180
|
+
maxItemsPerPoll: "Максимальное количество изменённых элементов, обрабатываемых за одно опрос.",
|
|
181
|
+
parentFolderId: "Отслеживать только элементы в этой родительской папке. Оставьте пустым, чтобы отслеживать весь диск."
|
|
182
|
+
},
|
|
183
|
+
outputs: { events: "Элементы OneDrive, созданные, обновленные или удалённые с момента предыдущего опроса." }
|
|
184
|
+
} }, d = { "outlook.on_message_received": {
|
|
185
|
+
displayName: "Новое письмо",
|
|
186
|
+
description: "Периодически проверяет почтовую папку Microsoft Outlook и срабатывает при поступлении нового письма.",
|
|
187
|
+
configInputs: {
|
|
188
|
+
folder: "Известное имя папки, ID папки или пустое значение для всей почтовой ящики.",
|
|
189
|
+
includeDrafts: "Также запускать при получении черновиков.",
|
|
190
|
+
maxMessagesPerPoll: "Максимальное количество сообщений, обрабатываемых за одно опрос.",
|
|
191
|
+
readStatus: "Запускать только для прочитанных, непрочитанных или обоих типов сообщений.",
|
|
192
|
+
senderAddress: "Точный адрес отправителя. Оставьте пустым, чтобы допустить любого отправителя.",
|
|
193
|
+
subjectContains: "Безразличный к регистру текст, который должен присутствовать в теме сообщения.",
|
|
194
|
+
withAttachmentsOnly: "Запускать только для сообщений с вложениями."
|
|
195
|
+
},
|
|
196
|
+
outputs: { events: "Сообщения Outlook, полученные с момента предыдущего опроса." }
|
|
197
|
+
} }, f = { "shopify.on_shop_event": {
|
|
198
|
+
displayName: "Событие магазина",
|
|
199
|
+
description: "Срабатывает при событиях выбранных тем webhook Shopify в подключённом магазине.",
|
|
200
|
+
configInputs: { topics: "Темы вебхуков Shopify, запускающие выполнение." },
|
|
201
|
+
outputs: {
|
|
202
|
+
apiVersion: "Версия API Shopify, использованная для вебхука.",
|
|
203
|
+
body: "Оригинальное тело вебхука Shopify.",
|
|
204
|
+
eventId: "Уникальный ID события Shopify.",
|
|
205
|
+
shopDomain: "Домен магазина Shopify, который сгенерировал событие.",
|
|
206
|
+
topic: "Тема вебхука Shopify.",
|
|
207
|
+
triggeredAt: "Время, когда Shopify инициировал вебхук.",
|
|
208
|
+
webhookId: "ID подписки на вебхук Shopify."
|
|
209
|
+
}
|
|
210
|
+
} }, p = { "slack.on_message_posted": {
|
|
211
|
+
displayName: "Новое сообщение канала",
|
|
212
|
+
description: "Периодически проверяет один разговор Slack и срабатывает при появлении нового сообщения.",
|
|
213
|
+
configInputs: {
|
|
214
|
+
channelId: "ID беседы Slack, которую нужно отслеживать, например C0122KQ70S7E.",
|
|
215
|
+
fromUserIds: "Запускать только для сообщений от этих пользователей Slack по ID. Оставьте пустым, чтобы допустить любого автора.",
|
|
216
|
+
ignoreUserIds: "Никогда не запускать для сообщений от этих пользователей Slack по ID.",
|
|
217
|
+
includeBotMessages: "Также запускать для сообщений, отправленных ботами и приложениями.",
|
|
218
|
+
includeSystemMessages: "Также запускать для системных уведомлений Slack.",
|
|
219
|
+
maxMessagesPerPoll: "Максимальное количество сообщений, обрабатываемых за одно опрос.",
|
|
220
|
+
textContains: "Запускать только при наличии этой строки в тексте сообщения, без учёта регистра."
|
|
221
|
+
},
|
|
222
|
+
outputs: { events: "Сообщения Slack, опубликованные с момента предыдущего опроса." }
|
|
223
|
+
} }, m = { "stripe.on_event": {
|
|
224
|
+
displayName: "Событие аккаунта",
|
|
225
|
+
description: "Срабатывает при выбранных событиях Stripe в подключённом аккаунте.",
|
|
226
|
+
configInputs: {
|
|
227
|
+
apiVersion: "Версия API Stripe, используемая для событий вебхука. Оставьте пустым, чтобы использовать настройку по умолчанию для аккаунта.",
|
|
228
|
+
events: "Типы событий Stripe, запускающие выполнение.",
|
|
229
|
+
includeConnectedAccounts: "Также получать события от подключённых аккаунтов Stripe."
|
|
230
|
+
},
|
|
231
|
+
outputs: {
|
|
232
|
+
body: "Оригинальное тело события Stripe.",
|
|
233
|
+
event: "Тип события Stripe.",
|
|
234
|
+
eventId: "Уникальный ID события Stripe.",
|
|
235
|
+
livemode: "Было ли событие создано в режиме реальной работы (live mode)."
|
|
236
|
+
}
|
|
237
|
+
} }, h = { "telegram.on_update": {
|
|
238
|
+
displayName: "Обновление бота",
|
|
239
|
+
description: "Срабатывает, когда подключённый бот Telegram получает выбранное обновление.",
|
|
240
|
+
configInputs: {
|
|
241
|
+
chatIds: "Принимать обновления только от этих числовых ID чатов Telegram. Оставьте пустым, чтобы допустить все чаты.",
|
|
242
|
+
dropPendingUpdates: "Отбросить обновления, находящиеся в очереди до создания или возобновления вебхука.",
|
|
243
|
+
updates: "Типы обновлений Telegram, запускающие выполнение. Используйте * для стандартного набора Telegram.",
|
|
244
|
+
userIds: "Принимать обновления только от этих числовых ID пользователей Telegram. Оставьте пустым, чтобы допустить всех пользователей."
|
|
245
|
+
},
|
|
246
|
+
outputs: {
|
|
247
|
+
body: "Оригинальное тело обновления Telegram.",
|
|
248
|
+
deliveryId: "Уникальный ID, сгенерированный для этого обновления Telegram.",
|
|
249
|
+
event: "Тип обновления Telegram."
|
|
250
|
+
}
|
|
251
|
+
} }, g = { "woocommerce.on_store_event": {
|
|
252
|
+
displayName: "Событие магазина",
|
|
253
|
+
description: "Срабатывает при выбранных событиях магазина WooCommerce.",
|
|
254
|
+
configInputs: {
|
|
255
|
+
events: "События магазина WooCommerce, запускающие выполнение.",
|
|
256
|
+
webhookName: "Название, отображаемое для вебхука в WooCommerce."
|
|
257
|
+
},
|
|
258
|
+
outputs: {
|
|
259
|
+
body: "Оригинальное тело вебхука WooCommerce.",
|
|
260
|
+
deliveryId: "Уникальный ID доставки вебхука WooCommerce.",
|
|
261
|
+
event: "Действие события WooCommerce.",
|
|
262
|
+
resource: "Тип ресурса WooCommerce.",
|
|
263
|
+
source: "URL магазина WooCommerce, который сгенерировал событие.",
|
|
264
|
+
topic: "Полная тема вебхука WooCommerce.",
|
|
265
|
+
webhookId: "ID подписки на вебхук WooCommerce."
|
|
266
|
+
}
|
|
267
|
+
} }, _ = { "zendesk.on_event": {
|
|
268
|
+
displayName: "Подписка на события",
|
|
269
|
+
description: "Срабатывает при любом из выбранных событий аккаунта Zendesk.",
|
|
270
|
+
configInputs: { events: "Типы событий Zendesk, запускающие выполнение." },
|
|
271
|
+
outputs: {
|
|
272
|
+
body: "Оригинальное тело события Zendesk.",
|
|
273
|
+
deliveryId: "Уникальный ID, сгенерированный для этой доставки события Zendesk.",
|
|
274
|
+
event: "Тип события Zendesk.",
|
|
275
|
+
subject: "Тема Zendesk, связанная со случаем."
|
|
276
|
+
}
|
|
277
|
+
} }, v = {
|
|
278
|
+
...e,
|
|
279
|
+
...t,
|
|
280
|
+
...n,
|
|
281
|
+
...r,
|
|
282
|
+
...i,
|
|
283
|
+
...a,
|
|
284
|
+
...o,
|
|
285
|
+
...s,
|
|
286
|
+
...c,
|
|
287
|
+
...l,
|
|
288
|
+
...u,
|
|
289
|
+
...d,
|
|
290
|
+
...f,
|
|
291
|
+
...p,
|
|
292
|
+
...m,
|
|
293
|
+
...h,
|
|
294
|
+
...g,
|
|
295
|
+
..._
|
|
296
|
+
};
|
|
297
|
+
//#endregion
|
|
298
|
+
export { v as default };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export type ProjectedRunEvent = {
|
|
2
|
-
readonly kind: 'node.
|
|
2
|
+
readonly kind: 'node.completed';
|
|
3
3
|
readonly payload: Readonly<Record<string, unknown>>;
|
|
4
4
|
readonly value: unknown;
|
|
5
5
|
} | {
|
|
6
|
-
readonly kind: 'node.artifact' | 'node.
|
|
6
|
+
readonly kind: 'node.artifact' | 'node.failed' | 'node.log' | 'node.progress' | 'node.started' | 'run.progress' | 'run.started';
|
|
7
7
|
readonly payload: Readonly<Record<string, unknown>>;
|
|
8
8
|
};
|
|
9
9
|
export declare function createEventProjector(platformRunId: string, nodeFailureCodes: ReadonlySet<string>): (event: unknown) => Promise<ProjectedRunEvent | undefined>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
//#region src/execution/common/events.ts
|
|
2
2
|
var e = new TextEncoder(), t = /* @__PURE__ */ new Set([
|
|
3
|
+
"agent",
|
|
4
|
+
"approval",
|
|
3
5
|
"condition",
|
|
4
6
|
"connector",
|
|
5
7
|
"javascript",
|
|
@@ -106,25 +108,22 @@ function f(e, t) {
|
|
|
106
108
|
}
|
|
107
109
|
});
|
|
108
110
|
}
|
|
109
|
-
if (_ == "
|
|
111
|
+
if (_ == "run.completed" || _ == "run.failed") {
|
|
110
112
|
o(g);
|
|
111
113
|
return;
|
|
112
114
|
}
|
|
113
|
-
if (_ == "node.started" || _ == "node.
|
|
114
|
-
let
|
|
115
|
+
if (_ == "node.started" || _ == "node.progress" || _ == "node.artifact" || _ == "node.log" || _ == "node.completed" || _ == "node.failed") {
|
|
116
|
+
let r = s(g, f, e), o = await r.executionId, m = {
|
|
115
117
|
executionId: o,
|
|
116
|
-
flowId:
|
|
117
|
-
nodeId:
|
|
118
|
-
scopeId: await c("scope", e,
|
|
118
|
+
flowId: r.flowId,
|
|
119
|
+
nodeId: r.nodeId,
|
|
120
|
+
scopeId: await c("scope", e, r.rawRunId)
|
|
119
121
|
};
|
|
120
122
|
switch (_) {
|
|
121
|
-
case "node.
|
|
123
|
+
case "node.completed": return {
|
|
122
124
|
kind: _,
|
|
123
|
-
payload:
|
|
124
|
-
|
|
125
|
-
handle: r(g.handle, "Runtime node.output handle")
|
|
126
|
-
},
|
|
127
|
-
value: g.value
|
|
125
|
+
payload: m,
|
|
126
|
+
value: n(g.outputs, "Runtime node.completed outputs")
|
|
128
127
|
};
|
|
129
128
|
case "node.started": {
|
|
130
129
|
let e = a(g.nodeKind), t = i(g.nodeTitle, "Runtime node.started nodeTitle"), n = i(g.operation, "Runtime node.started operation");
|
|
@@ -170,10 +169,6 @@ function f(e, t) {
|
|
|
170
169
|
message: l(g.message)
|
|
171
170
|
}
|
|
172
171
|
};
|
|
173
|
-
case "node.completed": return {
|
|
174
|
-
kind: _,
|
|
175
|
-
payload: m
|
|
176
|
-
};
|
|
177
172
|
case "node.failed": return {
|
|
178
173
|
kind: _,
|
|
179
174
|
payload: {
|
|
@@ -10,6 +10,8 @@ export type RunOperation = {
|
|
|
10
10
|
readonly kind: 'wait';
|
|
11
11
|
} | {
|
|
12
12
|
readonly kind: 'resolve';
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: 'fail-start' | 'fail-resume';
|
|
13
15
|
} | {
|
|
14
16
|
readonly kind: 'commit';
|
|
15
17
|
readonly status: RunTerminalStatus;
|
|
@@ -40,7 +42,7 @@ export type RunTransition = {
|
|
|
40
42
|
readonly status: 'waiting';
|
|
41
43
|
} | {
|
|
42
44
|
readonly kind: 'resolved';
|
|
43
|
-
readonly status: 'queued';
|
|
45
|
+
readonly status: 'queued' | 'starting' | 'running';
|
|
44
46
|
} | {
|
|
45
47
|
readonly kind: 'stale';
|
|
46
48
|
readonly status: RunStatus;
|
|
@@ -72,6 +74,8 @@ export interface RunLifecycleHarness {
|
|
|
72
74
|
}): Promise<RunAcceptance>;
|
|
73
75
|
claim(runId: string): Promise<RunClaim>;
|
|
74
76
|
commit(runId: string, status: RunTerminalStatus): Promise<boolean>;
|
|
77
|
+
failStarting(runId: string): Promise<boolean>;
|
|
78
|
+
failResume(runId: string): Promise<boolean>;
|
|
75
79
|
observe(runId: string): Promise<RunObservation>;
|
|
76
80
|
resolve(runId: string): Promise<boolean>;
|
|
77
81
|
start(runId: string): Promise<RunStart>;
|
|
@@ -84,9 +84,17 @@ function a(e, t) {
|
|
|
84
84
|
kind: "stale",
|
|
85
85
|
status: e
|
|
86
86
|
};
|
|
87
|
-
case "resolve": return e
|
|
87
|
+
case "resolve": return i(e) ? {
|
|
88
|
+
kind: "stale",
|
|
89
|
+
status: e
|
|
90
|
+
} : {
|
|
88
91
|
kind: "resolved",
|
|
89
|
-
status: "queued"
|
|
92
|
+
status: e == "waiting" ? "queued" : e
|
|
93
|
+
};
|
|
94
|
+
case "fail-start":
|
|
95
|
+
case "fail-resume": return e == "starting" ? {
|
|
96
|
+
kind: "committed",
|
|
97
|
+
status: t.kind == "fail-start" ? "failed" : "indeterminate"
|
|
90
98
|
} : {
|
|
91
99
|
kind: "stale",
|
|
92
100
|
status: e
|
|
@@ -94,7 +102,7 @@ function a(e, t) {
|
|
|
94
102
|
case "commit": return i(e) ? {
|
|
95
103
|
kind: "stale",
|
|
96
104
|
status: e
|
|
97
|
-
} : t.status == "canceled" || e == "running" || t.status == "failed"
|
|
105
|
+
} : t.status == "canceled" || e == "running" || t.status == "failed" ? {
|
|
98
106
|
kind: "committed",
|
|
99
107
|
status: t.status
|
|
100
108
|
} : {
|
|
@@ -115,6 +123,28 @@ async function s(e, t = "request", n = "request-a") {
|
|
|
115
123
|
return r.runId;
|
|
116
124
|
}
|
|
117
125
|
var c = [
|
|
126
|
+
{
|
|
127
|
+
name: "rejects startup failures outside the start barrier and preserves their terminal",
|
|
128
|
+
async verify(e) {
|
|
129
|
+
for (let t of ["failStarting", "failResume"]) {
|
|
130
|
+
let n = await s(e, t);
|
|
131
|
+
o(await e[t](n), !1, "Failure before claim"), await e.claim(n), o(await e.commit(n, "completed"), !1, "Completion before start"), o(await e[t](n), !0, "Startup failure");
|
|
132
|
+
let r = t == "failStarting" ? "failed" : "indeterminate";
|
|
133
|
+
o(await e.observe(n), {
|
|
134
|
+
status: r,
|
|
135
|
+
terminalEvents: [r]
|
|
136
|
+
}, "Startup terminal"), o(await e[t](n), !1, "Repeated startup failure"), o(await e.start(n), {
|
|
137
|
+
kind: "stale",
|
|
138
|
+
status: r
|
|
139
|
+
}, "Start after failure"), o(await e.commit(n, "canceled"), !1, "Cancellation after failure");
|
|
140
|
+
}
|
|
141
|
+
let t = await s(e, "running");
|
|
142
|
+
await e.claim(t), await e.start(t), o(await e.failStarting(t), !1, "Startup failure after start"), o(await e.failResume(t), !1, "Resume failure after start"), o(await e.observe(t), {
|
|
143
|
+
status: "running",
|
|
144
|
+
terminalEvents: []
|
|
145
|
+
}, "Running observation");
|
|
146
|
+
}
|
|
147
|
+
},
|
|
118
148
|
{
|
|
119
149
|
name: "pauses and resumes the same Run through the ordinary start barrier",
|
|
120
150
|
async verify(e) {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { JsonValue } from '../browser/flow-change.js';
|
|
2
|
+
export type ResultCall = {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly kind: 'connector';
|
|
5
|
+
readonly action: string;
|
|
6
|
+
readonly connectionId?: string;
|
|
7
|
+
} | {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly kind: 'code';
|
|
10
|
+
};
|
|
11
|
+
export interface ResultInfo {
|
|
12
|
+
readonly resultId: string;
|
|
13
|
+
readonly callId: string;
|
|
14
|
+
readonly toolId: string;
|
|
15
|
+
readonly source: {
|
|
16
|
+
readonly kind: 'connector';
|
|
17
|
+
readonly action: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: 'code';
|
|
20
|
+
};
|
|
21
|
+
readonly bytes: number;
|
|
22
|
+
readonly digest: string;
|
|
23
|
+
readonly createdAt: string;
|
|
24
|
+
}
|
|
25
|
+
interface ResultEntry {
|
|
26
|
+
readonly pointer: string;
|
|
27
|
+
readonly type: 'object' | 'array' | 'string' | 'number' | 'boolean' | 'null';
|
|
28
|
+
readonly length?: number;
|
|
29
|
+
readonly complete: boolean;
|
|
30
|
+
readonly value?: JsonValue;
|
|
31
|
+
}
|
|
32
|
+
export interface ResultPage extends ResultEntry {
|
|
33
|
+
readonly offset: number;
|
|
34
|
+
readonly nextOffset?: number;
|
|
35
|
+
readonly entries?: readonly ResultEntry[];
|
|
36
|
+
}
|
|
37
|
+
export interface ResultQuery {
|
|
38
|
+
readonly pointer?: string;
|
|
39
|
+
readonly offset?: number;
|
|
40
|
+
readonly limit?: number;
|
|
41
|
+
readonly maxBytes?: number;
|
|
42
|
+
}
|
|
43
|
+
export declare function parseResultQuery(value: unknown): Required<ResultQuery>;
|
|
44
|
+
export declare function decodeResultList(value: unknown): {
|
|
45
|
+
readonly version: 1;
|
|
46
|
+
readonly runId: string;
|
|
47
|
+
readonly results: readonly ResultInfo[];
|
|
48
|
+
readonly nextAfter?: string;
|
|
49
|
+
};
|
|
50
|
+
export declare function decodeResultRead(value: unknown): {
|
|
51
|
+
readonly version: 1;
|
|
52
|
+
readonly runId: string;
|
|
53
|
+
readonly result: ResultInfo;
|
|
54
|
+
readonly page: ResultPage;
|
|
55
|
+
};
|
|
56
|
+
export declare function readResult(value: JsonValue, query?: ResultQuery): ResultPage;
|
|
57
|
+
export {};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { CodeModule, JsonValue } from '../browser/flow-change.js';
|
|
2
|
-
export { currentEngineContract, findEngineContract, type EngineContract } from './engine-contract.js';
|
|
1
|
+
import type { CodeModule, ConnectorCapability, JsonValue } from '../browser/flow-change.js';
|
|
2
|
+
export { currentEngineContract, nodejsEngineContract, findEngineContract, type EngineContract } from './engine-contract.js';
|
|
3
3
|
export type RuntimeModule = Pick<CodeModule, 'imports' | 'source'>;
|
|
4
|
+
/** Snapshot a Task result before JSON transport can discard or coerce invalid values. */
|
|
5
|
+
export declare function snapshotRuntimeResult(value: unknown): JsonValue | undefined;
|
|
6
|
+
export declare const nodejsRuntimeConformanceCases: readonly RuntimeConformanceCase[];
|
|
4
7
|
export interface RuntimeProgram {
|
|
5
8
|
readonly engineContract: string;
|
|
6
9
|
readonly engineDigest: string;
|
|
@@ -8,6 +11,7 @@ export interface RuntimeProgram {
|
|
|
8
11
|
readonly modules: Readonly<Record<string, RuntimeModule>>;
|
|
9
12
|
}
|
|
10
13
|
export interface RuntimeCapabilityCall {
|
|
14
|
+
readonly callId: string;
|
|
11
15
|
readonly invocationId: string;
|
|
12
16
|
readonly kind: string;
|
|
13
17
|
readonly payload: JsonValue;
|
|
@@ -35,7 +39,32 @@ export type LlmTaskResult = {
|
|
|
35
39
|
readonly version: 1;
|
|
36
40
|
};
|
|
37
41
|
export type InvokeLlmTask = (invocation: LlmTaskInvocation) => Promise<LlmTaskResult>;
|
|
42
|
+
export interface AgentCheckpoint {
|
|
43
|
+
readonly state: JsonValue;
|
|
44
|
+
readonly callId: string;
|
|
45
|
+
readonly toolId: string;
|
|
46
|
+
readonly input: Readonly<Record<string, JsonValue>>;
|
|
47
|
+
readonly rounds: number;
|
|
48
|
+
readonly version: 1;
|
|
49
|
+
}
|
|
50
|
+
export type AgentResult = {
|
|
51
|
+
readonly kind: 'completed';
|
|
52
|
+
readonly output: JsonValue;
|
|
53
|
+
} | {
|
|
54
|
+
readonly kind: 'suspended';
|
|
55
|
+
readonly checkpoint: AgentCheckpoint;
|
|
56
|
+
};
|
|
57
|
+
export interface AgentInvocation {
|
|
58
|
+
readonly input: Readonly<Record<string, JsonValue>>;
|
|
59
|
+
readonly invocationId: string;
|
|
60
|
+
readonly signal: AbortSignal;
|
|
61
|
+
readonly resume?: {
|
|
62
|
+
readonly action: 'approve' | 'reject';
|
|
63
|
+
readonly checkpoint: AgentCheckpoint;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
38
66
|
export interface RuntimeInvocation {
|
|
67
|
+
readonly capabilities?: readonly ConnectorCapability[];
|
|
39
68
|
readonly capability: (call: RuntimeCapabilityCall) => Promise<RuntimeCapabilityResponse>;
|
|
40
69
|
readonly input: JsonValue;
|
|
41
70
|
readonly invocationId: string;
|
|
@@ -44,10 +73,16 @@ export interface RuntimeInvocation {
|
|
|
44
73
|
}
|
|
45
74
|
export interface RuntimeHarness {
|
|
46
75
|
readonly engineDigest: string;
|
|
47
|
-
invoke(invocation: RuntimeInvocation): Promise<JsonValue>;
|
|
76
|
+
invoke(invocation: RuntimeInvocation): Promise<JsonValue | undefined>;
|
|
48
77
|
}
|
|
49
78
|
export interface RuntimeConformanceCase {
|
|
50
79
|
readonly name: string;
|
|
51
80
|
verify(harness: RuntimeHarness): Promise<void>;
|
|
52
81
|
}
|
|
53
82
|
export declare const runtimeConformanceCases: readonly RuntimeConformanceCase[];
|
|
83
|
+
export declare function createActions(invoke: (payload: JsonValue) => Promise<RuntimeCapabilityResponse>): Readonly<Record<string, unknown>>;
|
|
84
|
+
export declare function resolveAction(declarations: readonly ConnectorCapability[], payload: unknown): {
|
|
85
|
+
readonly action: string;
|
|
86
|
+
readonly connectionId?: string;
|
|
87
|
+
readonly input: Readonly<Record<string, JsonValue>>;
|
|
88
|
+
};
|