@forumone/throughline-integrations 0.8.4 → 0.9.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.
- package/CHANGELOG.md +53 -0
- package/README.md +28 -1
- package/dist/collection.d.ts +3 -0
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +4 -2
- package/dist/collection.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/webhook/config-fields.js +1 -1
- package/dist/integrations/webhook/config-fields.js.map +1 -1
- package/dist/integrations/webhook/functions.js +4 -1
- package/dist/integrations/webhook/functions.js.map +1 -1
- package/dist/options.d.ts +2 -2
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +3 -11
- package/dist/plugin.js.map +1 -1
- package/dist/sync/manual-sync.js +1 -1
- package/dist/sync/manual-sync.js.map +1 -1
- package/dist/sync/problems.d.ts +31 -0
- package/dist/sync/problems.d.ts.map +1 -0
- package/dist/sync/problems.js +40 -0
- package/dist/sync/problems.js.map +1 -0
- package/dist/sync/status.d.ts +15 -0
- package/dist/sync/status.d.ts.map +1 -0
- package/dist/sync/status.js +31 -0
- package/dist/sync/status.js.map +1 -0
- package/dist/tools/get-integration-status.js +1 -1
- package/dist/tools/get-integration-status.js.map +1 -1
- package/dist/tools/test-integration.js +1 -1
- package/dist/tools/test-integration.js.map +1 -1
- package/dist/types.d.ts +22 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
# @forumone/throughline-integrations
|
|
2
2
|
|
|
3
|
+
## 0.9.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 57bebe5: `ctx.updateStatus` no longer clears `lastError` on a run that was not clean, and the types now require a reason for one:
|
|
8
|
+
|
|
9
|
+
- `updateStatus(id, 'success')` takes no message and clears `lastError`.
|
|
10
|
+
- `updateStatus(id, 'partial' | 'failed', message)` requires the message, which replaces `lastError`. A call without one no longer typechecks. Before, a `partial` call with no message wrote `lastError: null`, so the admin showed a partial sync with no reason and lost the previous one. A JavaScript caller that still omits it now leaves `lastError` as it was.
|
|
11
|
+
- `updateStatus` no longer accepts `'never-run'`.
|
|
12
|
+
- A call that passes a status and a message that may be `undefined`, such as `updateStatus(id, report ? 'partial' : 'success', report)`, has to be split into two calls or use `statusFromProblems`.
|
|
13
|
+
|
|
14
|
+
New helpers for runs that skip some records:
|
|
15
|
+
|
|
16
|
+
- `problemReport(problems, { maxLength })` joins one line per problem with `|` into one string for `lastError` and the audit `errorMessage`. It caps the result at 500 characters by default, ending a cut report with the total, e.g. `… (40 problems in all)`. It returns `undefined` for an empty list.
|
|
17
|
+
- `statusFromProblems(problems)` returns `['success']` for an empty list and `['partial', report]` otherwise, to spread into `updateStatus(id, ...statusFromProblems(problems))`.
|
|
18
|
+
|
|
19
|
+
`IntegrationStatusUpdate` is exported for the status and message arguments.
|
|
20
|
+
|
|
21
|
+
- ab623e1: The `payload` peer range moves from `^3.0.0` to `^3.89.0` for every package that has one. **A site on Payload older than 3.89.0 must upgrade Payload before upgrading these packages.**
|
|
22
|
+
|
|
23
|
+
Before 3.89.0, the `payload-mcp-api-keys` collection that `@payloadcms/plugin-mcp` adds registered Payload's API-key strategy on every REST route. Any key could then become `req.user` outside `/api/mcp` and pass access rules written as `Boolean(req.user)`. Every Throughline site runs that plugin, so the floor is the same for every package. No package's code changes with this bump.
|
|
24
|
+
|
|
25
|
+
- 36728c4: Collections that Throughline plugins declare now sit in a `Throughline` group in the admin sidebar, instead of loose at the top of it above every group. That covers `audit-events` (`auditPlugin`), the approvals collection (`approvalsPlugin`), `integrations` (`integrationsPlugin`), and `forms` and `form-submissions` (`formsPlugin`).
|
|
26
|
+
|
|
27
|
+
Each of those plugins accepts `admin: { group }`, which applies to every collection it declares:
|
|
28
|
+
|
|
29
|
+
- omitted: the `Throughline` group.
|
|
30
|
+
- a string, or a locale map such as `{ en: 'Workflow', fr: 'Flux' }`: that group.
|
|
31
|
+
- `false`: ungrouped, in Payload's default "Collections" section. This does not hide the collection, which is what `false` means on a collection's own `admin.group`.
|
|
32
|
+
|
|
33
|
+
A site that groups these collections with its own config plugin can pass `admin: { group }` to each plugin and delete that code. `createAuditCollection`, `createApprovalsCollection` and `createIntegrationsCollection` accept the same `admin` option.
|
|
34
|
+
|
|
35
|
+
`@forumone/throughline-plugin-contract` exports the shared pieces: `CollectionPluginOptions`, `PluginAdminOptions`, `PluginAdminGroup`, `DEFAULT_ADMIN_GROUP` and `resolveAdminGroup`, the helper a plugin spreads into each collection's `admin` block. `@forumone/throughline-core` re-exports the types.
|
|
36
|
+
|
|
37
|
+
### Patch Changes
|
|
38
|
+
|
|
39
|
+
- Updated dependencies [006ae30]
|
|
40
|
+
- Updated dependencies [549d292]
|
|
41
|
+
- Updated dependencies [70385c4]
|
|
42
|
+
- Updated dependencies [c8a86bf]
|
|
43
|
+
- Updated dependencies [ab623e1]
|
|
44
|
+
- Updated dependencies [ab623e1]
|
|
45
|
+
- Updated dependencies [36728c4]
|
|
46
|
+
- @forumone/throughline-plugin-contract@0.5.0
|
|
47
|
+
- @forumone/throughline-core@0.10.0
|
|
48
|
+
|
|
49
|
+
## 0.8.5
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- Updated dependencies [d02772f]
|
|
54
|
+
- @forumone/throughline-core@0.9.1
|
|
55
|
+
|
|
3
56
|
## 0.8.4
|
|
4
57
|
|
|
5
58
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ The other server packages do one job well. This is a **framework within the fram
|
|
|
56
56
|
pnpm add @forumone/throughline-integrations
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
Peers: `payload@^3.
|
|
59
|
+
Peers: `payload@^3.89.0`, `inngest@^4.0.0`. Required runtime peer: `@forumone/throughline-core` (audit log). `react` and `@payloadcms/ui` are optional peers, needed only to render the Sync now button — a host that never loads `@forumone/throughline-integrations/client` needs neither.
|
|
60
60
|
|
|
61
61
|
## Usage
|
|
62
62
|
|
|
@@ -90,6 +90,32 @@ integrationsPlugin({
|
|
|
90
90
|
|
|
91
91
|
The webhook integration is registered automatically. Additional integrations are appended; duplicate ids throw at plugin init.
|
|
92
92
|
|
|
93
|
+
## Reporting a run's status
|
|
94
|
+
|
|
95
|
+
An integration records each run on its instance with `ctx.updateStatus`, which writes the `lastSyncAt` / `lastSyncStatus` / `lastError` fields the admin shows:
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
await ctx.updateStatus(instance.id, 'success') // clears lastError
|
|
99
|
+
await ctx.updateStatus(instance.id, 'failed', 'HTTP 502') // replaces lastError
|
|
100
|
+
await ctx.updateStatus(instance.id, 'partial', '3 of 40 skipped')
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`partial` and `failed` require a message, and the types refuse a call without one, so the admin never shows a run that was not clean with no reason beside it. Only `success` clears `lastError`.
|
|
104
|
+
|
|
105
|
+
A run that imports many records and skips some should collect one line per skipped record and let `statusFromProblems` choose the status:
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
import { statusFromProblems } from '@forumone/throughline-integrations'
|
|
109
|
+
|
|
110
|
+
const problems = [
|
|
111
|
+
...rejected.map((r) => `record ${r.id}: ${r.reason}`),
|
|
112
|
+
...unrenderable.map((r) => `record ${r.id}: fields this site cannot render`),
|
|
113
|
+
]
|
|
114
|
+
await ctx.updateStatus(instance.id, ...statusFromProblems(problems))
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
It returns `['success']` for an empty list and `['partial', report]` otherwise. The report comes from `problemReport(problems, { maxLength })`, which joins the lines with ` | ` and caps the result at 500 characters by default. A report over the cap is cut short and ends with the total, e.g. `… (40 problems in all)`. Pass the same `problemReport` string to the audit event's `errorMessage` so the two say the same thing.
|
|
118
|
+
|
|
93
119
|
## Wiring Inngest functions
|
|
94
120
|
|
|
95
121
|
Integration `createFunctions` returns Inngest functions, but **this plugin does not serve them**. The client app's Inngest endpoint composes them with its own functions. See [`docs/integrations-wiring.md`](../../docs/integrations-wiring.md) in the repository root for the pattern.
|
|
@@ -128,6 +154,7 @@ The HMAC is computed over the entire request body (a JSON-stringified envelope o
|
|
|
128
154
|
| `inngest` | `Inngest` | required | Throws at validate if missing |
|
|
129
155
|
| `integrations` | `Integration[]` | `[]` | Appended to the built-in webhook integration |
|
|
130
156
|
| `collectionSlug` | `string` | `'integrations'` | |
|
|
157
|
+
| `admin.group` | `string \| Record<string, string> \| false` | `'Throughline'` | Sidebar group for the collection. `false` leaves it ungrouped. [Reference](https://github.com/forumone/throughline/blob/main/docs/reference/plugin-contract.md#admin-sidebar-group) |
|
|
131
158
|
| `mcpTools` | `McpToolCollector` | — | The host's collector. Without it these five tools are unreachable. This plugin serves no HTTP endpoint of its own and takes no `routePrefix` |
|
|
132
159
|
| `enabled` | `boolean` | `true` | Set to false to no-op |
|
|
133
160
|
| `logger` | `Logger` | `defaultLogger` | |
|
package/dist/collection.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { CollectionConfig, Endpoint } from 'payload';
|
|
2
|
+
import { type PluginAdminOptions } from '@forumone/throughline-plugin-contract';
|
|
2
3
|
import type { IntegrationRegistry } from './registry.js';
|
|
3
4
|
export interface CreateIntegrationsCollectionOptions {
|
|
4
5
|
slug?: string;
|
|
5
6
|
registry: IntegrationRegistry;
|
|
6
7
|
/** Collection endpoints to mount, e.g. the manual-sync trigger. */
|
|
7
8
|
endpoints?: Endpoint[];
|
|
9
|
+
/** Sidebar placement. Default: the `'Throughline'` group; `group: false` leaves it ungrouped. */
|
|
10
|
+
admin?: PluginAdminOptions;
|
|
8
11
|
}
|
|
9
12
|
/**
|
|
10
13
|
* Collection that persists per-instance integration configuration. Configuration
|
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,gBAAgB,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAA;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AASxD,MAAM,WAAW,mCAAmC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,mEAAmE;IACnE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,gBAAgB,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,KAAK,kBAAkB,EAAqB,MAAM,uCAAuC,CAAA;AAClG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AASxD,MAAM,WAAW,mCAAmC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,mEAAmE;IACnE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,iGAAiG;IACjG,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,mCAAmC,GAC3C,gBAAgB,CAkKlB"}
|
package/dist/collection.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveAdminGroup } from '@forumone/throughline-plugin-contract';
|
|
1
2
|
import { DEFAULT_INTEGRATIONS_SLUG } from './options.js';
|
|
2
3
|
/**
|
|
3
4
|
* Where Payload resolves the admin controls from. A package specifier, not a
|
|
@@ -40,6 +41,7 @@ export function createIntegrationsCollection(options) {
|
|
|
40
41
|
return {
|
|
41
42
|
slug,
|
|
42
43
|
admin: {
|
|
44
|
+
...resolveAdminGroup(options.admin),
|
|
43
45
|
useAsTitle: 'name',
|
|
44
46
|
defaultColumns: ['name', 'integrationType', 'enabled', 'lastSyncAt', 'lastSyncStatus'],
|
|
45
47
|
description: 'External-system connections. Edit only in the admin — Claude can trigger and observe but cannot configure.',
|
|
@@ -71,7 +73,7 @@ export function createIntegrationsCollection(options) {
|
|
|
71
73
|
type: 'checkbox',
|
|
72
74
|
defaultValue: false,
|
|
73
75
|
admin: {
|
|
74
|
-
description: 'Disabled integrations
|
|
76
|
+
description: 'Disabled integrations receive no events and are hidden from Claude by default.',
|
|
75
77
|
},
|
|
76
78
|
},
|
|
77
79
|
{
|
|
@@ -106,7 +108,7 @@ export function createIntegrationsCollection(options) {
|
|
|
106
108
|
update: adminOnlyField,
|
|
107
109
|
},
|
|
108
110
|
admin: {
|
|
109
|
-
description: 'Integration-specific
|
|
111
|
+
description: 'Integration-specific settings, including credentials. Admin-only.',
|
|
110
112
|
},
|
|
111
113
|
},
|
|
112
114
|
{
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ export { DEFAULT_INTEGRATIONS_SLUG } from './options.js';
|
|
|
4
4
|
export type { IntegrationsPluginOptions } from './options.js';
|
|
5
5
|
export { webhookIntegration, WEBHOOK_INTEGRATION_ID } from './integrations/index.js';
|
|
6
6
|
export type { WebhookConfig } from './integrations/index.js';
|
|
7
|
-
export type { Integration, IntegrationCategory, IntegrationContext, IntegrationAuditEvent, IntegrationConfigValidation, IntegrationHealth, IntegrationInstance, IntegrationInstanceLoaded, IntegrationSyncStatus, } from './types.js';
|
|
7
|
+
export type { Integration, IntegrationCategory, IntegrationContext, IntegrationAuditEvent, IntegrationConfigValidation, IntegrationHealth, IntegrationInstance, IntegrationInstanceLoaded, IntegrationStatusUpdate, IntegrationSyncStatus, } from './types.js';
|
|
8
|
+
export { problemReport, statusFromProblems, DEFAULT_PROBLEM_REPORT_LENGTH, } from './sync/problems.js';
|
|
9
|
+
export type { ProblemReportOptions } from './sync/problems.js';
|
|
8
10
|
export { requestManualSync, MANUAL_SYNC_EVENT } from './sync/manual-sync.js';
|
|
9
11
|
export type { ManualSyncRefusal, RequestManualSyncArgs, RequestManualSyncDeps, RequestManualSyncResult, } from './sync/manual-sync.js';
|
|
10
12
|
export { createSyncEndpoint, ADMIN_TRIGGER_REASON } from './endpoints/sync.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACpF,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACpF,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export { integrationsPlugin, getIntegrationRegistry, getIntegrationContext, } fr
|
|
|
2
2
|
export { IntegrationRegistry } from './registry.js';
|
|
3
3
|
export { DEFAULT_INTEGRATIONS_SLUG } from './options.js';
|
|
4
4
|
export { webhookIntegration, WEBHOOK_INTEGRATION_ID } from './integrations/index.js';
|
|
5
|
+
export { problemReport, statusFromProblems, DEFAULT_PROBLEM_REPORT_LENGTH, } from './sync/problems.js';
|
|
5
6
|
export { requestManualSync, MANUAL_SYNC_EVENT } from './sync/manual-sync.js';
|
|
6
7
|
export { createSyncEndpoint, ADMIN_TRIGGER_REASON } from './endpoints/sync.js';
|
|
7
8
|
export { createListIntegrationsTool, createGetIntegrationStatusTool, createTriggerSyncTool, createTestIntegrationTool, createListIntegrationTypesTool, } from './tools/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAGxD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAGxD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAgBpF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAQ5E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAG9E,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA"}
|
|
@@ -24,7 +24,7 @@ export const configFields = [
|
|
|
24
24
|
type: 'text',
|
|
25
25
|
required: true,
|
|
26
26
|
admin: {
|
|
27
|
-
description: `Shared secret
|
|
27
|
+
description: `Shared secret for HMAC-SHA256 signatures, at least ${MIN_SIGNING_SECRET_LENGTH} characters. The receiver checks the x-throughline-signature header.`,
|
|
28
28
|
},
|
|
29
29
|
},
|
|
30
30
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-fields.js","sourceRoot":"","sources":["../../../src/integrations/webhook/config-fields.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;IAC5D,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAChE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAChE,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACxE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;CAChD,CAAA;AAEV,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAA;AACjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;KACrE;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE;YACL,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"config-fields.js","sourceRoot":"","sources":["../../../src/integrations/webhook/config-fields.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;IAC5D,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAChE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAChE,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACxE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;CAChD,CAAA;AAEV,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAA;AACjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;KACrE;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE;YACL,WAAW,EACT,sDAAsD,yBAAyB,sEAAsE;SACxJ;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/E,KAAK,EAAE;YACL,WAAW,EAAE,gFAAgF;SAC9F;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE;YACL,WAAW,EACT,sGAAsG;SACzG;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,+BAA+B;QAC7C,KAAK,EAAE,EAAE,WAAW,EAAE,2CAA2C,+BAA+B,GAAG,EAAE;KACtG;CACF,CAAA"}
|
|
@@ -107,7 +107,10 @@ async function deliverEvent({ ctx, instance, eventName, eventData, includeFullPa
|
|
|
107
107
|
clearTimeout(timer);
|
|
108
108
|
}
|
|
109
109
|
const success = response.ok;
|
|
110
|
-
|
|
110
|
+
if (success)
|
|
111
|
+
await ctx.updateStatus(instance.id, 'success');
|
|
112
|
+
else
|
|
113
|
+
await ctx.updateStatus(instance.id, 'failed', `HTTP ${response.status}`);
|
|
111
114
|
await ctx.recordAudit({
|
|
112
115
|
integrationId: WEBHOOK_INTEGRATION_ID,
|
|
113
116
|
instanceName: instance.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/integrations/webhook/functions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/integrations/webhook/functions.ts"],"names":[],"mappings":"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"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { McpToolCollector } from '@forumone/throughline-core';
|
|
2
2
|
import type { Inngest } from 'inngest';
|
|
3
|
-
import type { BaseCorePluginOptions } from '@forumone/throughline-plugin-contract';
|
|
3
|
+
import type { BaseCorePluginOptions, CollectionPluginOptions } from '@forumone/throughline-plugin-contract';
|
|
4
4
|
import type { Integration } from './types.js';
|
|
5
5
|
export declare const DEFAULT_INTEGRATIONS_SLUG = "integrations";
|
|
6
|
-
export interface IntegrationsPluginOptions extends Omit<BaseCorePluginOptions, 'routePrefix'
|
|
6
|
+
export interface IntegrationsPluginOptions extends Omit<BaseCorePluginOptions, 'routePrefix'>, CollectionPluginOptions {
|
|
7
7
|
/**
|
|
8
8
|
* Inngest client used to register integration functions and to fire
|
|
9
9
|
* manual-sync trigger events. Required: integrations are an
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,eAAO,MAAM,yBAAyB,iBAAiB,CAAA;AAOvD,MAAM,WAAW,yBACf,SAAQ,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,EAChD,uBAAuB;IACzB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC5B;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,yBAAyB,GAAG,yBAAyB,CAK7F"}
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAA;AAwCvD,MAAM,UAAU,eAAe,CAAC,OAAkC;IAChE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;IACvF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,uCAAuC,CAAA;AAG1F,OAAO,EAAE,KAAK,yBAAyB,EAA8C,MAAM,cAAc,CAAA;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,uCAAuC,CAAA;AAG1F,OAAO,EAAE,KAAK,yBAAyB,EAA8C,MAAM,cAAc,CAAA;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAKnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAgBpD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,yBAAyB,CA6HlE,CAAA;AAEH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,GAAG,OAAO,EACjD,OAAO,EAAE,OAAO,GACf,mBAAmB,CAAC,EAAE,CAAC,GAAG,SAAS,CAIrC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAEtF"}
|
package/dist/plugin.js
CHANGED
|
@@ -4,6 +4,7 @@ import { validateOptions, DEFAULT_INTEGRATIONS_SLUG } from './options.js';
|
|
|
4
4
|
import { IntegrationRegistry } from './registry.js';
|
|
5
5
|
import { createIntegrationsCollection } from './collection.js';
|
|
6
6
|
import { createSyncEndpoint } from './endpoints/sync.js';
|
|
7
|
+
import { createStatusWriter } from './sync/status.js';
|
|
7
8
|
import { webhookIntegration } from './integrations/index.js';
|
|
8
9
|
import { INTEGRATIONS_TOOL_DESCRIPTORS, createGetIntegrationStatusTool, createListIntegrationsTool, createListIntegrationTypesTool, createTestIntegrationTool, createTriggerSyncTool, } from './tools/index.js';
|
|
9
10
|
const PLUGIN_ID = '@forumone/throughline-integrations';
|
|
@@ -43,6 +44,7 @@ export const integrationsPlugin = (rawOptions) => (incomingConfig) => {
|
|
|
43
44
|
// `requestManualSync` with the `trigger_sync` MCP tool so the two cannot
|
|
44
45
|
// disagree about what a trigger checks or what event it sends.
|
|
45
46
|
endpoints: [createSyncEndpoint({ collectionSlug, inngest: options.inngest })],
|
|
47
|
+
...(options.admin ? { admin: options.admin } : {}),
|
|
46
48
|
});
|
|
47
49
|
/*
|
|
48
50
|
Declared here, bound at `onInit` — `mcpPlugin` generates its per-key
|
|
@@ -80,17 +82,7 @@ export const integrationsPlugin = (rawOptions) => (incomingConfig) => {
|
|
|
80
82
|
config: (doc['config'] ?? {}),
|
|
81
83
|
}));
|
|
82
84
|
},
|
|
83
|
-
|
|
84
|
-
await payload.update({
|
|
85
|
-
collection: collectionSlug,
|
|
86
|
-
id: instanceId,
|
|
87
|
-
data: {
|
|
88
|
-
lastSyncAt: new Date().toISOString(),
|
|
89
|
-
lastSyncStatus: status,
|
|
90
|
-
...(error !== undefined ? { lastError: error } : { lastError: null }),
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
},
|
|
85
|
+
updateStatus: createStatusWriter(payload, collectionSlug),
|
|
94
86
|
async recordAudit(event) {
|
|
95
87
|
await auditWriter({
|
|
96
88
|
actor: { type: 'system', apiKeyName: `integration:${event.integrationId}` },
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAAkC,eAAe,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,SAAS,GAAG,oCAAoC,CAAA;AACtD,MAAM,cAAc,GAAG,OAAO,CAAA;AAE9B,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;AACjF,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE;IACjC,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,cAAc,CAAA;IAEvD,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,yBAAyB,CAAA;IAC1E,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,CAAA;IAEjF,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAA;IAC1C,QAAQ,CAAC,QAAQ,CAAC,kBAAwE,CAAC,CAAA;IAC3F,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QACrD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,4BAA4B,CAAC;QAC9C,IAAI,EAAE,cAAc;QACpB,QAAQ;QACR,yDAAyD;QACzD,yEAAyE;QACzE,+DAA+D;QAC/D,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/manual-sync.js
CHANGED
|
@@ -19,7 +19,7 @@ export const MANUAL_SYNC_EVENT = 'integration/manual-sync';
|
|
|
19
19
|
* when the run completes.
|
|
20
20
|
*/
|
|
21
21
|
export async function requestManualSync(deps, args) {
|
|
22
|
-
let doc
|
|
22
|
+
let doc;
|
|
23
23
|
try {
|
|
24
24
|
doc = (await deps.payload.findByID({
|
|
25
25
|
collection: deps.collectionSlug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual-sync.js","sourceRoot":"","sources":["../../src/sync/manual-sync.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAA;AA4C1D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA2B,EAC3B,IAA2B;IAE3B,IAAI,
|
|
1
|
+
{"version":3,"file":"manual-sync.js","sourceRoot":"","sources":["../../src/sync/manual-sync.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAA;AA4C1D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA2B,EAC3B,IAA2B;IAE3B,IAAI,GAAmC,CAAA;IACvC,IAAI,CAAC;QACH,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjC,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,EAAE,EAAE,IAAI,CAAC,UAAU;SACpB,CAAC,CAAmC,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,IAAI,CAAA;IACZ,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,oCAAoC,IAAI,CAAC,UAAU,IAAI;SACjE,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAExC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,gBAAgB,YAAY,0DAA0D;SAChG,CAAA;IACH,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEtD,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE;gBACJ,aAAa,EAAE,eAAe;gBAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;gBACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;aAC5B;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf;;;;;UAKE;QACF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,8CACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;SACH,CAAA;IACH,CAAC;IAED,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,CAAA;IACvC,MAAM,UAAU,GACd,aAAa,YAAY,IAAI;QAC3B,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE;QAC7B,CAAC,CAAC,OAAO,aAAa,KAAK,QAAQ;YACjC,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,IAAI,CAAA;IAEZ,OAAO;QACL,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY;QACZ,eAAe;QACf,UAAU;KACX,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { IntegrationStatusUpdate } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The longest {@link problemReport} returns by default. Long enough for a
|
|
4
|
+
* handful of reasons; past that, the count says how many more there were.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DEFAULT_PROBLEM_REPORT_LENGTH = 500;
|
|
7
|
+
export interface ProblemReportOptions {
|
|
8
|
+
/** The longest the report may be, suffix included. Defaults to 500. */
|
|
9
|
+
maxLength?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* One line per thing a run left undone, joined into the single string that
|
|
13
|
+
* `lastError` and an audit `errorMessage` can share. `undefined` when the list
|
|
14
|
+
* is empty.
|
|
15
|
+
*
|
|
16
|
+
* A report longer than `maxLength` is cut at the limit and ends with the total,
|
|
17
|
+
* e.g. `… (40 problems in all)`, so a long run still says how much went wrong.
|
|
18
|
+
*/
|
|
19
|
+
export declare function problemReport(problems: readonly string[], options?: ProblemReportOptions): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* The `updateStatus` arguments for a run that may have left some records
|
|
22
|
+
* behind: `success` when `problems` is empty, otherwise `partial` with the
|
|
23
|
+
* capped {@link problemReport}. The status is derived from the list, so the
|
|
24
|
+
* two cannot disagree.
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* await ctx.updateStatus(instance.id, ...statusFromProblems(problems))
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function statusFromProblems(problems: readonly string[], options?: ProblemReportOptions): IntegrationStatusUpdate;
|
|
31
|
+
//# sourceMappingURL=problems.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problems.d.ts","sourceRoot":"","sources":["../../src/sync/problems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,MAAM,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,GAAE,oBAAyB,GACjC,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CAGzB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The longest {@link problemReport} returns by default. Long enough for a
|
|
3
|
+
* handful of reasons; past that, the count says how many more there were.
|
|
4
|
+
*/
|
|
5
|
+
export const DEFAULT_PROBLEM_REPORT_LENGTH = 500;
|
|
6
|
+
/**
|
|
7
|
+
* One line per thing a run left undone, joined into the single string that
|
|
8
|
+
* `lastError` and an audit `errorMessage` can share. `undefined` when the list
|
|
9
|
+
* is empty.
|
|
10
|
+
*
|
|
11
|
+
* A report longer than `maxLength` is cut at the limit and ends with the total,
|
|
12
|
+
* e.g. `… (40 problems in all)`, so a long run still says how much went wrong.
|
|
13
|
+
*/
|
|
14
|
+
export function problemReport(problems, options = {}) {
|
|
15
|
+
if (problems.length === 0)
|
|
16
|
+
return undefined;
|
|
17
|
+
const maxLength = options.maxLength ?? DEFAULT_PROBLEM_REPORT_LENGTH;
|
|
18
|
+
const joined = problems.join(' | ');
|
|
19
|
+
if (joined.length <= maxLength)
|
|
20
|
+
return joined;
|
|
21
|
+
const suffix = ` … (${problems.length} problems in all)`;
|
|
22
|
+
if (suffix.length >= maxLength)
|
|
23
|
+
return suffix.trimStart().slice(0, maxLength);
|
|
24
|
+
return `${joined.slice(0, maxLength - suffix.length).trimEnd()}${suffix}`;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The `updateStatus` arguments for a run that may have left some records
|
|
28
|
+
* behind: `success` when `problems` is empty, otherwise `partial` with the
|
|
29
|
+
* capped {@link problemReport}. The status is derived from the list, so the
|
|
30
|
+
* two cannot disagree.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* await ctx.updateStatus(instance.id, ...statusFromProblems(problems))
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function statusFromProblems(problems, options = {}) {
|
|
37
|
+
const report = problemReport(problems, options);
|
|
38
|
+
return report === undefined ? ['success'] : ['partial', report];
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=problems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problems.js","sourceRoot":"","sources":["../../src/sync/problems.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAA;AAOhD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,QAA2B,EAC3B,UAAgC,EAAE;IAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,6BAA6B,CAAA;IAEpE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,MAAM,CAAA;IAE7C,MAAM,MAAM,GAAG,OAAO,QAAQ,CAAC,MAAM,mBAAmB,CAAA;IACxD,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAC7E,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAA;AAC3E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA2B,EAC3B,UAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AACjE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Payload } from 'payload';
|
|
2
|
+
import type { IntegrationContext, IntegrationStatusUpdate } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The fields one `updateStatus` call writes to an instance.
|
|
5
|
+
*
|
|
6
|
+
* `lastError` is cleared only by a success. A partial or failed run replaces it
|
|
7
|
+
* with its message. A JavaScript caller can still reach here with a non-success
|
|
8
|
+
* status and no message, which the types refuse; then `lastError` is left alone
|
|
9
|
+
* rather than blanked, so the admin keeps the last reason it had instead of
|
|
10
|
+
* showing a partial run with no reason at all.
|
|
11
|
+
*/
|
|
12
|
+
export declare function statusUpdateData(...[status, error]: IntegrationStatusUpdate): Record<string, unknown>;
|
|
13
|
+
/** `IntegrationContext.updateStatus`, writing to `collectionSlug` through `payload`. */
|
|
14
|
+
export declare function createStatusWriter(payload: Pick<Payload, 'update'>, collectionSlug: string): IntegrationContext['updateStatus'];
|
|
15
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,uBAAuB,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAChC,cAAc,EAAE,MAAM,GACrB,kBAAkB,CAAC,cAAc,CAAC,CAQpC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fields one `updateStatus` call writes to an instance.
|
|
3
|
+
*
|
|
4
|
+
* `lastError` is cleared only by a success. A partial or failed run replaces it
|
|
5
|
+
* with its message. A JavaScript caller can still reach here with a non-success
|
|
6
|
+
* status and no message, which the types refuse; then `lastError` is left alone
|
|
7
|
+
* rather than blanked, so the admin keeps the last reason it had instead of
|
|
8
|
+
* showing a partial run with no reason at all.
|
|
9
|
+
*/
|
|
10
|
+
export function statusUpdateData(...[status, error]) {
|
|
11
|
+
const data = {
|
|
12
|
+
lastSyncAt: new Date().toISOString(),
|
|
13
|
+
lastSyncStatus: status,
|
|
14
|
+
};
|
|
15
|
+
if (status === 'success')
|
|
16
|
+
data['lastError'] = null;
|
|
17
|
+
else if (typeof error === 'string' && error.length > 0)
|
|
18
|
+
data['lastError'] = error;
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
/** `IntegrationContext.updateStatus`, writing to `collectionSlug` through `payload`. */
|
|
22
|
+
export function createStatusWriter(payload, collectionSlug) {
|
|
23
|
+
return async (instanceId, ...update) => {
|
|
24
|
+
await payload.update({
|
|
25
|
+
collection: collectionSlug,
|
|
26
|
+
id: instanceId,
|
|
27
|
+
data: statusUpdateData(...update),
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAG,CAAC,MAAM,EAAE,KAAK,CAA0B;IAE3C,MAAM,IAAI,GAA4B;QACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,cAAc,EAAE,MAAM;KACvB,CAAA;IACD,IAAI,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;SAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAA;IACjF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAChC,OAAgC,EAChC,cAAsB;IAEtB,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,CAAC,MAAM,CAAC;YACnB,UAAU,EAAE,cAAc;YAC1B,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAAC;SAClC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -14,7 +14,7 @@ export function createGetIntegrationStatusTool(deps) {
|
|
|
14
14
|
if (!isIntegrationsReader(ctx)) {
|
|
15
15
|
return deniedEnvelope('Only admins and editors can view integration status.');
|
|
16
16
|
}
|
|
17
|
-
let doc
|
|
17
|
+
let doc;
|
|
18
18
|
try {
|
|
19
19
|
doc = (await deps.payload.findByID({
|
|
20
20
|
collection: deps.collectionSlug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-integration-status.js","sourceRoot":"","sources":["../../src/tools/get-integration-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAOrD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,yEAAyE,CAAC;CACvF,CAAC,CAAA;AAEF,MAAM,UAAU,8BAA8B,CAC5C,IAA8B;IAE9B,OAAO;QACL,GAAG,kBAAkB,CAAC,oBAAoB;QAC1C,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,cAAc,CAAC,sDAAsD,CAAC,CAAA;YAC/E,CAAC;YAED,IAAI,
|
|
1
|
+
{"version":3,"file":"get-integration-status.js","sourceRoot":"","sources":["../../src/tools/get-integration-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAOrD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,yEAAyE,CAAC;CACvF,CAAC,CAAA;AAEF,MAAM,UAAU,8BAA8B,CAC5C,IAA8B;IAE9B,OAAO;QACL,GAAG,kBAAkB,CAAC,oBAAoB;QAC1C,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,cAAc,CAAC,sDAAsD,CAAC,CAAA;YAC/E,CAAC;YAED,IAAI,GAAmC,CAAA;YACvC,IAAI,CAAC;gBACH,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACjC,UAAU,EAAE,IAAI,CAAC,cAAc;oBAC/B,EAAE,EAAE,KAAK,CAAC,aAAa;iBACxB,CAAC,CAAmC,CAAA;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;YAED,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,oCAAoC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAA;YAEvF,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACpC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI;gBAChC,UAAU,EAAE,OAAO,GAAG,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC5E,cAAc,EAAE,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW;gBAC/F,SAAS,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;aAC1E,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -13,7 +13,7 @@ export function createTestIntegrationTool(deps) {
|
|
|
13
13
|
if (!isIntegrationsReader(ctx)) {
|
|
14
14
|
return deniedEnvelope('Only admins and editors can test integrations.');
|
|
15
15
|
}
|
|
16
|
-
let doc
|
|
16
|
+
let doc;
|
|
17
17
|
try {
|
|
18
18
|
doc = (await deps.payload.findByID({
|
|
19
19
|
collection: deps.collectionSlug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-integration.js","sourceRoot":"","sources":["../../src/tools/test-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAQrD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CAC/D,CAAC,CAAA;AAEF,MAAM,UAAU,yBAAyB,CACvC,IAAyB;IAEzB,OAAO;QACL,GAAG,kBAAkB,CAAC,eAAe;QACrC,aAAa,EAAE,sBAAsB;QACrC,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,cAAc,CAAC,gDAAgD,CAAC,CAAA;YACzE,CAAC;YAED,IAAI,
|
|
1
|
+
{"version":3,"file":"test-integration.js","sourceRoot":"","sources":["../../src/tools/test-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAQrD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CAC/D,CAAC,CAAA;AAEF,MAAM,UAAU,yBAAyB,CACvC,IAAyB;IAEzB,OAAO;QACL,GAAG,kBAAkB,CAAC,eAAe;QACrC,aAAa,EAAE,sBAAsB;QACrC,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,cAAc,CAAC,gDAAgD,CAAC,CAAA;YACzE,CAAC;YAED,IAAI,GAAmC,CAAA;YACvC,IAAI,CAAC;gBACH,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACjC,UAAU,EAAE,IAAI,CAAC,cAAc;oBAC/B,EAAE,EAAE,KAAK,CAAC,aAAa;iBACxB,CAAC,CAAmC,CAAA;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;YAED,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,oCAAoC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAA;YAEvF,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YACtD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,EAAE,KAAK,EAAE,6BAA6B,eAAe,IAAI,EAAE,CAAA;YACpE,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;gBAC7B,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,oCAAoC;iBACjE,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAA;YAC/D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAEpD,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,aAAa;gBAC/B,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;aAChC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,14 @@ import type { Inngest } from 'inngest';
|
|
|
3
3
|
import type { McpToolDefinition } from '@forumone/throughline-plugin-contract';
|
|
4
4
|
export type IntegrationCategory = 'crm' | 'marketing' | 'analytics' | 'webhook' | 'storage' | 'messaging' | 'other';
|
|
5
5
|
export type IntegrationSyncStatus = 'success' | 'partial' | 'failed' | 'never-run';
|
|
6
|
+
/**
|
|
7
|
+
* The status and message arguments of {@link IntegrationContext.updateStatus}.
|
|
8
|
+
*
|
|
9
|
+
* A run that was not clean has to say why: `partial` and `failed` carry a
|
|
10
|
+
* message, and `success` carries none. `never-run` is not here because a run
|
|
11
|
+
* that reports its status has run.
|
|
12
|
+
*/
|
|
13
|
+
export type IntegrationStatusUpdate = [status: 'success'] | [status: 'partial' | 'failed', error: string];
|
|
6
14
|
export interface IntegrationConfigValidation {
|
|
7
15
|
ok: boolean;
|
|
8
16
|
reason?: string;
|
|
@@ -96,8 +104,20 @@ export interface IntegrationContext {
|
|
|
96
104
|
integrationsCollectionSlug: string;
|
|
97
105
|
/** Loads all enabled instances of an integration by id. */
|
|
98
106
|
loadInstances: <Config = Record<string, unknown>>(integrationId: string) => Promise<Array<IntegrationInstanceLoaded<Config>>>;
|
|
99
|
-
/**
|
|
100
|
-
|
|
107
|
+
/**
|
|
108
|
+
* Records the outcome of a run on the instance: `lastSyncAt`,
|
|
109
|
+
* `lastSyncStatus`, and `lastError`.
|
|
110
|
+
*
|
|
111
|
+
* `success` takes no message and clears `lastError`. `partial` and `failed`
|
|
112
|
+
* require one, and it replaces `lastError`, so the admin always shows why
|
|
113
|
+
* the run was not clean. For a run with per-record failures, build the
|
|
114
|
+
* arguments from the list of failures with `statusFromProblems`:
|
|
115
|
+
*
|
|
116
|
+
* ```ts
|
|
117
|
+
* await ctx.updateStatus(instance.id, ...statusFromProblems(problems))
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
updateStatus: (instanceId: string, ...update: IntegrationStatusUpdate) => Promise<void>;
|
|
101
121
|
/** Writes an audit event. Thin wrapper over core's audit writer. */
|
|
102
122
|
recordAudit: (event: IntegrationAuditEvent) => Promise<void>;
|
|
103
123
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GACL,WAAW,GACX,WAAW,GACX,SAAS,GACT,SAAS,GACT,WAAW,GACX,OAAO,CAAA;AAEX,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;AAElF,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO;IACzE,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAA;IACV,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,QAAQ,EAAE,mBAAmB,CAAA;IAC7B;;;;;OAKG;IACH,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB;;;;OAIG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACxE,8EAA8E;IAC9E,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACrD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,eAAe,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,EAAE,EAAE,CAAA;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,iBAAiB,EAAE,CAAA;IAC3D;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC7D;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,0BAA0B,EAAE,MAAM,CAAA;IAClC,2DAA2D;IAC3D,aAAa,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9C,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACtD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forumone/throughline-integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Plugin architecture for connecting Throughline-powered Payload sites to external systems. Ships the Integration contract, registry, collection, MCP tools, and a generic outbound-webhook integration as the first concrete example.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@payloadcms/ui": "^3.0.0",
|
|
45
45
|
"inngest": "^4.0.0",
|
|
46
|
-
"payload": "^3.
|
|
46
|
+
"payload": "^3.89.0",
|
|
47
47
|
"react": "^18.0.0 || ^19.0.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependenciesMeta": {
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"zod": "^3.23.0",
|
|
59
|
-
"@forumone/throughline-core": "0.
|
|
60
|
-
"@forumone/throughline-plugin-contract": "0.
|
|
59
|
+
"@forumone/throughline-core": "0.10.0",
|
|
60
|
+
"@forumone/throughline-plugin-contract": "0.5.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@payloadcms/ui": "^3.83.0",
|
|
64
64
|
"@types/node": "^24.13.2",
|
|
65
65
|
"@types/react": "^19.2.0",
|
|
66
|
-
"eslint": "^
|
|
66
|
+
"eslint": "^10.11.0",
|
|
67
67
|
"inngest": "^4.2.0",
|
|
68
68
|
"payload": "^3.83.0",
|
|
69
69
|
"react": "^19.2.0",
|