@forumone/throughline-integrations 0.7.0 → 0.8.1

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.
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { deniedEnvelope, isIntegrationsAdmin } from './access.js';
3
3
  import { INTEGRATIONS_TOOLS } from './descriptors.js';
4
+ import { requestManualSync } from '../sync/manual-sync.js';
4
5
  const inputSchema = z.object({
5
6
  integrationId: z
6
7
  .string()
@@ -19,41 +20,23 @@ export function createTriggerSyncTool(deps) {
19
20
  if (!isIntegrationsAdmin(ctx)) {
20
21
  return deniedEnvelope('Only admins can manually trigger integrations.');
21
22
  }
22
- let doc = null;
23
- try {
24
- doc = (await deps.payload.findByID({
25
- collection: deps.collectionSlug,
26
- id: input.integrationId,
27
- }));
28
- }
29
- catch {
30
- doc = null;
31
- }
32
- if (!doc)
33
- return { error: `No integration instance with id "${input.integrationId}".` };
34
- if (doc['enabled'] !== true) {
35
- return {
36
- error: `Integration "${String(doc['name'])}" is disabled. Enable it in the admin before triggering.`,
37
- };
38
- }
39
- const integrationType = String(doc['integrationType']);
40
- await deps.inngest.send({
41
- name: 'integration/manual-sync',
42
- data: {
43
- integrationId: integrationType,
44
- instanceId: input.integrationId,
45
- triggeredBy: ctx.user?.id ?? null,
46
- reason: input.reason ?? null,
47
- },
23
+ // The rules — instance exists, instance enabled, this event shape — live
24
+ // in `requestManualSync`, which the admin's Sync now button calls too.
25
+ const result = await requestManualSync(deps, {
26
+ instanceId: input.integrationId,
27
+ triggeredBy: ctx.user?.id ?? null,
28
+ reason: input.reason ?? null,
48
29
  });
30
+ if (!result.ok)
31
+ return { error: result.message };
49
32
  return {
50
33
  ok: true,
51
34
  triggered: {
52
- instanceId: input.integrationId,
53
- instanceName: String(doc['name']),
54
- type: integrationType,
35
+ instanceId: result.instanceId,
36
+ instanceName: result.instanceName,
37
+ type: result.integrationType,
55
38
  },
56
- message: `Triggered manual sync for "${String(doc['name'])}". Check list_integrations or get_integration_status in a few seconds for the result.`,
39
+ message: `Triggered manual sync for "${result.instanceName}". Check list_integrations or get_integration_status in a few seconds for the result.`,
57
40
  };
58
41
  },
59
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-sync.js","sourceRoot":"","sources":["../../src/tools/trigger-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAQrD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,4DAA4D,CAAC;IACzE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;CACzE,CAAC,CAAA;AAEF,MAAM,UAAU,qBAAqB,CACnC,IAAqB;IAErB,OAAO;QACL,GAAG,kBAAkB,CAAC,WAAW;QACjC,aAAa,EAAE,sBAAsB;QACrC,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,cAAc,CAAC,gDAAgD,CAAC,CAAA;YACzE,CAAC;YAED,IAAI,GAAG,GAAmC,IAAI,CAAA;YAC9C,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;YACvF,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO;oBACL,KAAK,EAAE,gBAAgB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,0DAA0D;iBACrG,CAAA;YACH,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;YAEtD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,yBAAyB;gBAC/B,IAAI,EAAE;oBACJ,aAAa,EAAE,eAAe;oBAC9B,UAAU,EAAE,KAAK,CAAC,aAAa;oBAC/B,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI;oBACjC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;iBAC7B;aACF,CAAC,CAAA;YAEF,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,SAAS,EAAE;oBACT,UAAU,EAAE,KAAK,CAAC,aAAa;oBAC/B,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACjC,IAAI,EAAE,eAAe;iBACtB;gBACD,OAAO,EAAE,8BAA8B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,uFAAuF;aAClJ,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"trigger-sync.js","sourceRoot":"","sources":["../../src/tools/trigger-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAQ1D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,4DAA4D,CAAC;IACzE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;CACzE,CAAC,CAAA;AAEF,MAAM,UAAU,qBAAqB,CACnC,IAAqB;IAErB,OAAO;QACL,GAAG,kBAAkB,CAAC,WAAW;QACjC,aAAa,EAAE,sBAAsB;QACrC,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,cAAc,CAAC,gDAAgD,CAAC,CAAA;YACzE,CAAC;YAED,yEAAyE;YACzE,uEAAuE;YACvE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE;gBAC3C,UAAU,EAAE,KAAK,CAAC,aAAa;gBAC/B,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI;gBACjC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;aAC7B,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;YAEhD,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,SAAS,EAAE;oBACT,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,IAAI,EAAE,MAAM,CAAC,eAAe;iBAC7B;gBACD,OAAO,EAAE,8BAA8B,MAAM,CAAC,YAAY,uFAAuF;aAClJ,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forumone/throughline-integrations",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
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",
@@ -9,6 +9,10 @@
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
11
  "default": "./dist/index.js"
12
+ },
13
+ "./client": {
14
+ "types": "./dist/exports/client.d.ts",
15
+ "default": "./dist/exports/client.js"
12
16
  }
13
17
  },
14
18
  "files": [
@@ -37,8 +41,18 @@
37
41
  "access": "public"
38
42
  },
39
43
  "peerDependencies": {
44
+ "@payloadcms/ui": "^3.0.0",
40
45
  "inngest": "^4.0.0",
41
- "payload": "^3.0.0"
46
+ "payload": "^3.0.0",
47
+ "react": "^18.0.0 || ^19.0.0"
48
+ },
49
+ "peerDependenciesMeta": {
50
+ "@payloadcms/ui": {
51
+ "optional": true
52
+ },
53
+ "react": {
54
+ "optional": true
55
+ }
42
56
  },
43
57
  "dependencies": {
44
58
  "zod": "^3.23.0",
@@ -46,10 +60,13 @@
46
60
  "@forumone/throughline-plugin-contract": "0.4.0"
47
61
  },
48
62
  "devDependencies": {
63
+ "@payloadcms/ui": "^3.83.0",
49
64
  "@types/node": "^20.17.0",
65
+ "@types/react": "^19.2.0",
50
66
  "eslint": "^9.15.0",
51
67
  "inngest": "^4.2.0",
52
68
  "payload": "^3.83.0",
69
+ "react": "^19.2.0",
53
70
  "typescript": "^5.6.0",
54
71
  "vitest": "^2.1.0",
55
72
  "@forumone/throughline-eslint-config": "0.0.0",