@activepieces/piece-fellow 0.0.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.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # pieces-fellow
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build pieces-fellow` to build the library.
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@activepieces/piece-fellow",
3
+ "version": "0.0.1",
4
+ "type": "commonjs",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "dependencies": {
8
+ "@sinclair/typebox": "0.34.11",
9
+ "axios": "1.13.1",
10
+ "axios-retry": "4.4.1",
11
+ "dayjs": "1.11.9",
12
+ "deepmerge-ts": "7.1.0",
13
+ "mime-types": "2.1.35",
14
+ "nanoid": "3.3.8",
15
+ "semver": "7.6.0",
16
+ "socket.io-client": "4.8.1",
17
+ "tslib": "^2.3.0",
18
+ "zod": "4.1.13",
19
+ "@activepieces/pieces-common": "0.10.1",
20
+ "@activepieces/pieces-framework": "0.22.2",
21
+ "@activepieces/shared": "0.29.0"
22
+ },
23
+ "resolutions": {
24
+ "rollup": "npm:@rollup/wasm-node"
25
+ }
26
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare const fellow: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ apiKey: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ subdomain: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ }>>;
package/src/index.js ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fellow = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const auth_1 = require("./lib/common/auth");
7
+ const shared_1 = require("@activepieces/shared");
8
+ const get_note_1 = require("./lib/actions/get-note");
9
+ const new_recording_1 = require("./lib/triggers/new-recording");
10
+ const pieces_common_1 = require("@activepieces/pieces-common");
11
+ exports.fellow = (0, pieces_framework_1.createPiece)({
12
+ displayName: 'Fellow.ai',
13
+ description: 'AI Meeting Assistant and Notetaker',
14
+ categories: [shared_1.PieceCategory.ARTIFICIAL_INTELLIGENCE, shared_1.PieceCategory.PRODUCTIVITY],
15
+ auth: auth_1.fellowAuth,
16
+ minimumSupportedRelease: '0.36.1',
17
+ logoUrl: 'https://cdn.activepieces.com/pieces/fellow.png',
18
+ authors: ['kishanprmr'],
19
+ actions: [get_note_1.getNoteAction,
20
+ (0, pieces_common_1.createCustomApiCallAction)({
21
+ auth: auth_1.fellowAuth,
22
+ baseUrl: (auth) => {
23
+ var _a;
24
+ return (0, auth_1.getBaseUrl)((_a = auth === null || auth === void 0 ? void 0 : auth.props.subdomain) !== null && _a !== void 0 ? _a : '');
25
+ },
26
+ authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
27
+ return {
28
+ 'X-API-KEY': `${auth.props.apiKey}`
29
+ };
30
+ })
31
+ })],
32
+ triggers: [new_recording_1.newRecordingTrigger],
33
+ });
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/fellow/src/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA6D;AAC7D,4CAA2D;AAC3D,iDAAqD;AACrD,qDAAuD;AACvD,gEAAmE;AACnE,+DAAwE;AAE3D,QAAA,MAAM,GAAG,IAAA,8BAAW,EAAC;IAChC,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,oCAAoC;IACjD,UAAU,EAAE,CAAC,sBAAa,CAAC,uBAAuB,EAAE,sBAAa,CAAC,YAAY,CAAC;IAC/E,IAAI,EAAE,iBAAU;IAChB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,gDAAgD;IACzD,OAAO,EAAE,CAAC,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,wBAAa;QACrB,IAAA,yCAAyB,EAAC;YACxB,IAAI,EAAE,iBAAU;YAChB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;;gBAChB,OAAO,IAAA,iBAAU,EAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAA;YAChD,CAAC;YACD,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;gBAC1B,OAAO;oBACL,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;iBACpC,CAAA;YACH,CAAC,CAAA;SACF,CAAC,CAAC;IACL,QAAQ,EAAE,CAAC,mCAAmB,CAAC;CAChC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const getNoteAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ apiKey: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ subdomain: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ }>, {
5
+ noteId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
6
+ }>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNoteAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const auth_1 = require("../common/auth");
7
+ const pieces_common_1 = require("@activepieces/pieces-common");
8
+ exports.getNoteAction = (0, pieces_framework_1.createAction)({
9
+ name: 'get-note',
10
+ auth: auth_1.fellowAuth,
11
+ displayName: 'Get AI Note',
12
+ description: 'Retrieves a note by its ID.',
13
+ props: {
14
+ noteId: pieces_framework_1.Property.ShortText({
15
+ displayName: 'Note ID',
16
+ required: true
17
+ })
18
+ },
19
+ run(context) {
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ const { subdomain, apiKey } = context.auth.props;
22
+ const { noteId } = context.propsValue;
23
+ const response = yield pieces_common_1.httpClient.sendRequest({
24
+ method: pieces_common_1.HttpMethod.GET,
25
+ url: (0, auth_1.getBaseUrl)(subdomain) + `/note/${noteId}`,
26
+ headers: {
27
+ 'X-API-KEY': apiKey
28
+ }
29
+ });
30
+ return response.body;
31
+ });
32
+ }
33
+ });
34
+ //# sourceMappingURL=get-note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-note.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/fellow/src/lib/actions/get-note.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,yCAAwD;AACxD,+DAAqE;AAExD,QAAA,aAAa,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,iBAAU;IAChB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,6BAA6B;IAC1C,KAAK,EAAE;QACH,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;SACjB,CAAC;KACL;IACK,GAAG,CAAC,OAAO;;YACb,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACjD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC1C,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,IAAA,iBAAU,EAAC,SAAS,CAAC,GAAG,SAAS,MAAM,EAAE;gBAC9C,OAAO,EAAE;oBACL,WAAW,EAAE,MAAM;iBACtB;aACJ,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;QAEzB,CAAC;KAAA;CACJ,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare const fellowAuth: import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ apiKey: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ subdomain: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ }>;
5
+ export declare const getBaseUrl: (subdomain: string) => string;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBaseUrl = exports.fellowAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ exports.fellowAuth = pieces_framework_1.PieceAuth.CustomAuth({
8
+ required: true,
9
+ props: {
10
+ apiKey: pieces_framework_1.Property.ShortText({
11
+ displayName: 'API Key',
12
+ description: `You can obtain API key by navigating to **User Settings -> Developer Tools**.`,
13
+ required: true,
14
+ }),
15
+ subdomain: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Subdomain',
17
+ description: `You can obtain your workspace domain from URL.For example,subdomain for 'https://**test**.fellow.app/' is **test**.`,
18
+ required: true,
19
+ }),
20
+ },
21
+ validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
22
+ try {
23
+ yield pieces_common_1.httpClient.sendRequest({
24
+ method: pieces_common_1.HttpMethod.GET,
25
+ url: (0, exports.getBaseUrl)(auth.subdomain) + '/me',
26
+ headers: {
27
+ 'X-API-KEY': auth.apiKey
28
+ }
29
+ });
30
+ return {
31
+ valid: true
32
+ };
33
+ }
34
+ catch (_b) {
35
+ return {
36
+ valid: false,
37
+ error: 'Invalid Credentials.'
38
+ };
39
+ }
40
+ })
41
+ });
42
+ const getBaseUrl = (subdomain) => {
43
+ return `https://${subdomain}.fellow.app/api/v1`;
44
+ };
45
+ exports.getBaseUrl = getBaseUrl;
46
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/fellow/src/lib/common/auth.ts"],"names":[],"mappings":";;;;AAAA,qEAAqE;AACrE,+DAAqE;AAExD,QAAA,UAAU,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC3C,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE;QACH,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,+EAA+E;YAC5F,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,qHAAqH;YAClI,QAAQ,EAAE,IAAI;SACjB,CAAC;KACL;IACD,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACrB,IAAI,CAAC;YACD,MAAM,0BAAU,CAAC,WAAW,CAAC;gBACzB,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,IAAA,kBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK;gBACvC,OAAO,EAAE;oBACL,WAAW,EAAE,IAAI,CAAC,MAAM;iBAC3B;aACJ,CAAC,CAAA;YAEF,OAAO;gBACH,KAAK,EAAE,IAAI;aACd,CAAA;QACL,CAAC;QACD,WAAM,CAAC;YACH,OAAO;gBACH,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,sBAAsB;aAChC,CAAA;QACL,CAAC;IACL,CAAC,CAAA;CACJ,CAAC,CAAC;AAEI,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC5C,OAAO,WAAW,SAAS,oBAAoB,CAAC;AACpD,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB"}
@@ -0,0 +1,12 @@
1
+ export type ListRecordingsResponse = {
2
+ recordings: {
3
+ page_info: {
4
+ cursor: string | null;
5
+ page_size: number;
6
+ };
7
+ data: {
8
+ id: string;
9
+ started_at: string;
10
+ }[];
11
+ };
12
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/fellow/src/lib/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { TriggerStrategy } from "@activepieces/pieces-framework";
2
+ export declare const newRecordingTrigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
3
+ apiKey: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ subdomain: import("@activepieces/pieces-framework").ShortTextProperty<true>;
5
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
6
+ apiKey: import("@activepieces/pieces-framework").ShortTextProperty<true>;
7
+ subdomain: import("@activepieces/pieces-framework").ShortTextProperty<true>;
8
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
9
+ apiKey: import("@activepieces/pieces-framework").ShortTextProperty<true>;
10
+ subdomain: import("@activepieces/pieces-framework").ShortTextProperty<true>;
11
+ }>, {}>;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newRecordingTrigger = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const auth_1 = require("../common/auth");
7
+ const pieces_common_1 = require("@activepieces/pieces-common");
8
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
9
+ const shared_1 = require("@activepieces/shared");
10
+ const polling = {
11
+ strategy: pieces_common_1.DedupeStrategy.TIMEBASED,
12
+ items(_a) {
13
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, lastFetchEpochMS }) {
14
+ var _b;
15
+ const { subdomain, apiKey } = auth.props;
16
+ const isTestMode = lastFetchEpochMS === 0;
17
+ let hasMore = true;
18
+ let cursor = null;
19
+ const recordings = [];
20
+ do {
21
+ const requestBody = {
22
+ pagination: {
23
+ page_size: 20,
24
+ cursor
25
+ },
26
+ include: {
27
+ transcript: true,
28
+ ai_notes: true
29
+ },
30
+ };
31
+ if (!isTestMode) {
32
+ requestBody['filters'] = {
33
+ created_at_start: (0, dayjs_1.default)(lastFetchEpochMS).toISOString()
34
+ };
35
+ }
36
+ const response = yield pieces_common_1.httpClient.sendRequest({
37
+ method: pieces_common_1.HttpMethod.POST,
38
+ url: (0, auth_1.getBaseUrl)(subdomain) + '/recordings',
39
+ headers: {
40
+ 'X-API-KEY': apiKey
41
+ },
42
+ body: requestBody
43
+ });
44
+ for (const recording of (_b = response.body.recordings.data) !== null && _b !== void 0 ? _b : []) {
45
+ recordings.push(recording);
46
+ }
47
+ if (isTestMode)
48
+ break;
49
+ cursor = response.body.recordings.page_info.cursor;
50
+ hasMore = !(0, shared_1.isNil)(cursor);
51
+ } while (hasMore);
52
+ return recordings.map((rec) => ({
53
+ epochMilliSeconds: (0, dayjs_1.default)(rec.started_at).valueOf(),
54
+ data: rec
55
+ }));
56
+ });
57
+ },
58
+ };
59
+ exports.newRecordingTrigger = (0, pieces_framework_1.createTrigger)({
60
+ name: 'new-recording',
61
+ auth: auth_1.fellowAuth,
62
+ displayName: 'New Recording',
63
+ description: 'Triggers when a new recording is created.',
64
+ type: pieces_framework_1.TriggerStrategy.POLLING,
65
+ props: {},
66
+ onEnable(context) {
67
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
68
+ yield pieces_common_1.pollingHelper.onEnable(polling, {
69
+ auth: context.auth,
70
+ store: context.store,
71
+ propsValue: context.propsValue,
72
+ });
73
+ });
74
+ },
75
+ onDisable(context) {
76
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
77
+ yield pieces_common_1.pollingHelper.onDisable(polling, {
78
+ auth: context.auth,
79
+ store: context.store,
80
+ propsValue: context.propsValue,
81
+ });
82
+ });
83
+ },
84
+ test(context) {
85
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
86
+ return yield pieces_common_1.pollingHelper.test(polling, context);
87
+ });
88
+ },
89
+ run(context) {
90
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
91
+ return yield pieces_common_1.pollingHelper.poll(polling, context);
92
+ });
93
+ },
94
+ sampleData: undefined
95
+ });
96
+ //# sourceMappingURL=new-recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-recording.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/fellow/src/lib/triggers/new-recording.ts"],"names":[],"mappings":"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"}