@credal/actions 0.1.23 → 0.1.24
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/actions/autogen/templates.js +23 -0
- package/dist/actions/autogen/types.d.ts +25 -2
- package/dist/actions/autogen/types.js +10 -0
- package/dist/actions/providers/confluence/updatePage.js +15 -14
- package/dist/actions/providers/credal/callCopilot.js +1 -0
- package/dist/actions/providers/workday/requestTimeOff.d.ts +23 -0
- package/dist/actions/providers/workday/requestTimeOff.js +88 -0
- package/package.json +1 -1
- package/dist/actions/providers/googlemaps/nearbysearch.d.ts +0 -3
- package/dist/actions/providers/googlemaps/nearbysearch.js +0 -96
- package/dist/actions/providers/x/scrapeTweetDataWithNitter.d.ts +0 -3
- package/dist/actions/providers/x/scrapeTweetDataWithNitter.js +0 -45
@@ -538,6 +538,29 @@ exports.credalCallCopilotDefinition = {
|
|
538
538
|
},
|
539
539
|
},
|
540
540
|
},
|
541
|
+
webSearchResults: {
|
542
|
+
type: "array",
|
543
|
+
description: "The web search results in the response",
|
544
|
+
items: {
|
545
|
+
type: "object",
|
546
|
+
description: "The web search result in the response",
|
547
|
+
required: ["title", "url"],
|
548
|
+
properties: {
|
549
|
+
title: {
|
550
|
+
type: "string",
|
551
|
+
description: "The title of the web search result",
|
552
|
+
},
|
553
|
+
url: {
|
554
|
+
type: "string",
|
555
|
+
description: "The url of the web search result",
|
556
|
+
},
|
557
|
+
contents: {
|
558
|
+
type: "string",
|
559
|
+
description: "The contents of the web search result",
|
560
|
+
},
|
561
|
+
},
|
562
|
+
},
|
563
|
+
},
|
541
564
|
},
|
542
565
|
},
|
543
566
|
name: "callCopilot",
|
@@ -545,6 +545,19 @@ export declare const credalCallCopilotOutputSchema: z.ZodObject<{
|
|
545
545
|
};
|
546
546
|
url?: string | undefined;
|
547
547
|
}>, "many">>;
|
548
|
+
webSearchResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
549
|
+
title: z.ZodString;
|
550
|
+
url: z.ZodString;
|
551
|
+
contents: z.ZodOptional<z.ZodString>;
|
552
|
+
}, "strip", z.ZodTypeAny, {
|
553
|
+
title: string;
|
554
|
+
url: string;
|
555
|
+
contents?: string | undefined;
|
556
|
+
}, {
|
557
|
+
title: string;
|
558
|
+
url: string;
|
559
|
+
contents?: string | undefined;
|
560
|
+
}>, "many">>;
|
548
561
|
}, "strip", z.ZodTypeAny, {
|
549
562
|
response: string;
|
550
563
|
referencedSources?: {
|
@@ -565,6 +578,11 @@ export declare const credalCallCopilotOutputSchema: z.ZodObject<{
|
|
565
578
|
};
|
566
579
|
url?: string | undefined;
|
567
580
|
}[] | undefined;
|
581
|
+
webSearchResults?: {
|
582
|
+
title: string;
|
583
|
+
url: string;
|
584
|
+
contents?: string | undefined;
|
585
|
+
}[] | undefined;
|
568
586
|
}, {
|
569
587
|
response: string;
|
570
588
|
referencedSources?: {
|
@@ -585,6 +603,11 @@ export declare const credalCallCopilotOutputSchema: z.ZodObject<{
|
|
585
603
|
};
|
586
604
|
url?: string | undefined;
|
587
605
|
}[] | undefined;
|
606
|
+
webSearchResults?: {
|
607
|
+
title: string;
|
608
|
+
url: string;
|
609
|
+
contents?: string | undefined;
|
610
|
+
}[] | undefined;
|
588
611
|
}>;
|
589
612
|
export type credalCallCopilotOutputType = z.infer<typeof credalCallCopilotOutputSchema>;
|
590
613
|
export type credalCallCopilotFunction = ActionFunction<credalCallCopilotParamsType, AuthParamsType, credalCallCopilotOutputType>;
|
@@ -618,11 +641,11 @@ export declare const linkedinCreateShareLinkedinPostUrlParamsSchema: z.ZodObject
|
|
618
641
|
text: z.ZodOptional<z.ZodString>;
|
619
642
|
url: z.ZodOptional<z.ZodString>;
|
620
643
|
}, "strip", z.ZodTypeAny, {
|
621
|
-
text?: string | undefined;
|
622
644
|
url?: string | undefined;
|
623
|
-
}, {
|
624
645
|
text?: string | undefined;
|
646
|
+
}, {
|
625
647
|
url?: string | undefined;
|
648
|
+
text?: string | undefined;
|
626
649
|
}>;
|
627
650
|
export type linkedinCreateShareLinkedinPostUrlParamsType = z.infer<typeof linkedinCreateShareLinkedinPostUrlParamsSchema>;
|
628
651
|
export declare const linkedinCreateShareLinkedinPostUrlOutputSchema: z.ZodObject<{
|
@@ -185,6 +185,16 @@ exports.credalCallCopilotOutputSchema = zod_1.z.object({
|
|
185
185
|
.describe("The source in the data context of the response"))
|
186
186
|
.describe("The sources in the data context of the response")
|
187
187
|
.optional(),
|
188
|
+
webSearchResults: zod_1.z
|
189
|
+
.array(zod_1.z
|
190
|
+
.object({
|
191
|
+
title: zod_1.z.string().describe("The title of the web search result"),
|
192
|
+
url: zod_1.z.string().describe("The url of the web search result"),
|
193
|
+
contents: zod_1.z.string().describe("The contents of the web search result").optional(),
|
194
|
+
})
|
195
|
+
.describe("The web search result in the response"))
|
196
|
+
.describe("The web search results in the response")
|
197
|
+
.optional(),
|
188
198
|
});
|
189
199
|
exports.zendeskCreateZendeskTicketParamsSchema = zod_1.z.object({
|
190
200
|
subject: zod_1.z.string().describe("The subject of the ticket"),
|
@@ -8,28 +8,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
9
|
});
|
10
10
|
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
const
|
13
|
-
function
|
14
|
-
|
15
|
+
const axios_1 = __importDefault(require("axios"));
|
16
|
+
function getConfluenceApi(baseUrl, username, apiToken) {
|
17
|
+
const api = axios_1.default.create({
|
15
18
|
baseURL: baseUrl,
|
16
19
|
headers: {
|
17
20
|
Accept: "application/json",
|
21
|
+
// Tokens are associated with a specific user.
|
18
22
|
Authorization: `Basic ${Buffer.from(`${username}:${apiToken}`).toString("base64")}`,
|
19
23
|
},
|
20
|
-
};
|
24
|
+
});
|
25
|
+
return api;
|
21
26
|
}
|
22
27
|
const confluenceUpdatePage = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
23
|
-
const { pageId, content, title } = params;
|
24
|
-
const { baseUrl, authToken
|
25
|
-
|
26
|
-
throw new Error("Missing required authentication information");
|
27
|
-
}
|
28
|
-
const config = getConfluenceRequestConfig(baseUrl, username, authToken);
|
28
|
+
const { pageId, username, content, title } = params;
|
29
|
+
const { baseUrl, authToken } = authParams;
|
30
|
+
const api = getConfluenceApi(baseUrl, username, authToken);
|
29
31
|
// Get current version number
|
30
|
-
const response = yield
|
32
|
+
const response = yield api.get(`/api/v2/pages/${pageId}`);
|
31
33
|
const currVersion = response.data.version.number;
|
32
|
-
|
34
|
+
yield api.put(`/api/v2/pages/${pageId}`, {
|
33
35
|
id: pageId,
|
34
36
|
status: "current",
|
35
37
|
title,
|
@@ -40,7 +42,6 @@ const confluenceUpdatePage = (_a) => __awaiter(void 0, [_a], void 0, function* (
|
|
40
42
|
version: {
|
41
43
|
number: currVersion + 1,
|
42
44
|
},
|
43
|
-
};
|
44
|
-
yield axiosClient_1.axiosClient.put(`/api/v2/pages/${pageId}`, payload, config);
|
45
|
+
});
|
45
46
|
});
|
46
47
|
exports.default = confluenceUpdatePage;
|
@@ -30,6 +30,7 @@ const callCopilot = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
30
30
|
: "Error getting response",
|
31
31
|
referencedSources: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.referencedSources : [],
|
32
32
|
sourcesInDataContext: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.sourcesInDataContext : [],
|
33
|
+
webSearchResults: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.webSearchResults : [],
|
33
34
|
};
|
34
35
|
});
|
35
36
|
exports.default = callCopilot;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
declare const axios: any;
|
2
|
+
declare const WORKDAY_BASE_URL = "https://your-workday-url/ccx/service/YOUR_TENANT/Absence_Management/v43.2";
|
3
|
+
declare const TOKEN_URL = "https://your-workday-url/oauth2/YOUR_TENANT/token";
|
4
|
+
declare const CLIENT_ID = "your-client-id";
|
5
|
+
declare const CLIENT_SECRET = "your-client-secret";
|
6
|
+
/**
|
7
|
+
* Fetches an OAuth 2.0 access token from Workday.
|
8
|
+
*/
|
9
|
+
declare function getAccessToken(): Promise<any>;
|
10
|
+
/**
|
11
|
+
* Submits a time-off request to Workday.
|
12
|
+
* @param {Object} params - Time-off details.
|
13
|
+
* @param {string} params.workerId - Worker's ID in Workday.
|
14
|
+
* @param {string} params.startDate - Start date (YYYY-MM-DD).
|
15
|
+
* @param {string} params.endDate - End date (YYYY-MM-DD).
|
16
|
+
* @param {string} params.timeOffType - Time-off type (e.g., "SICK_LEAVE").
|
17
|
+
*/
|
18
|
+
declare function submitTimeOff({ workerId, startDate, endDate, timeOffType }: {
|
19
|
+
workerId: any;
|
20
|
+
startDate: any;
|
21
|
+
endDate: any;
|
22
|
+
timeOffType: any;
|
23
|
+
}): Promise<any>;
|
@@ -0,0 +1,88 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
const axios = require("axios");
|
12
|
+
const WORKDAY_BASE_URL = "https://your-workday-url/ccx/service/YOUR_TENANT/Absence_Management/v43.2";
|
13
|
+
const TOKEN_URL = "https://your-workday-url/oauth2/YOUR_TENANT/token"; // OAuth token endpoint
|
14
|
+
const CLIENT_ID = "your-client-id";
|
15
|
+
const CLIENT_SECRET = "your-client-secret";
|
16
|
+
/**
|
17
|
+
* Fetches an OAuth 2.0 access token from Workday.
|
18
|
+
*/
|
19
|
+
function getAccessToken() {
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
21
|
+
var _a;
|
22
|
+
try {
|
23
|
+
const response = yield axios.post(TOKEN_URL, new URLSearchParams({ grant_type: "client_credentials" }), {
|
24
|
+
auth: {
|
25
|
+
username: CLIENT_ID,
|
26
|
+
password: CLIENT_SECRET
|
27
|
+
},
|
28
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
29
|
+
});
|
30
|
+
return response.data.access_token;
|
31
|
+
}
|
32
|
+
catch (error) {
|
33
|
+
console.error("Error fetching access token:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
|
34
|
+
throw error;
|
35
|
+
}
|
36
|
+
});
|
37
|
+
}
|
38
|
+
/**
|
39
|
+
* Submits a time-off request to Workday.
|
40
|
+
* @param {Object} params - Time-off details.
|
41
|
+
* @param {string} params.workerId - Worker's ID in Workday.
|
42
|
+
* @param {string} params.startDate - Start date (YYYY-MM-DD).
|
43
|
+
* @param {string} params.endDate - End date (YYYY-MM-DD).
|
44
|
+
* @param {string} params.timeOffType - Time-off type (e.g., "SICK_LEAVE").
|
45
|
+
*/
|
46
|
+
function submitTimeOff(_a) {
|
47
|
+
return __awaiter(this, arguments, void 0, function* ({ workerId, startDate, endDate, timeOffType }) {
|
48
|
+
var _b;
|
49
|
+
try {
|
50
|
+
const token = yield getAccessToken(); // Get OAuth token
|
51
|
+
const requestBody = {
|
52
|
+
"wd:Enter_Time_Off_Request": {
|
53
|
+
"wd:Worker_Reference": {
|
54
|
+
"wd:ID": [{ "_": workerId, "$": { "wd:type": "WID" } }]
|
55
|
+
},
|
56
|
+
"wd:Time_Off_Entries": [
|
57
|
+
{
|
58
|
+
"wd:Start_Date": startDate,
|
59
|
+
"wd:End_Date": endDate,
|
60
|
+
"wd:Time_Off_Type_Reference": {
|
61
|
+
"wd:ID": [{ "_": timeOffType, "$": { "wd:type": "Time_Off_Type_ID" } }]
|
62
|
+
}
|
63
|
+
}
|
64
|
+
]
|
65
|
+
}
|
66
|
+
};
|
67
|
+
const response = yield axios.post(`${WORKDAY_BASE_URL}/Enter_Time_Off`, requestBody, {
|
68
|
+
headers: {
|
69
|
+
"Authorization": `Bearer ${token}`,
|
70
|
+
"Content-Type": "application/json"
|
71
|
+
}
|
72
|
+
});
|
73
|
+
console.log("Time-off request submitted successfully:", response.data);
|
74
|
+
return response.data;
|
75
|
+
}
|
76
|
+
catch (error) {
|
77
|
+
console.error("Error submitting time-off request:", ((_b = error.response) === null || _b === void 0 ? void 0 : _b.data) || error.message);
|
78
|
+
throw error;
|
79
|
+
}
|
80
|
+
});
|
81
|
+
}
|
82
|
+
// Example Usage:
|
83
|
+
submitTimeOff({
|
84
|
+
workerId: "12345",
|
85
|
+
startDate: "2025-03-10",
|
86
|
+
endDate: "2025-03-12",
|
87
|
+
timeOffType: "SICK_LEAVE"
|
88
|
+
}).then(console.log).catch(console.error);
|
package/package.json
CHANGED
@@ -1,96 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
-
});
|
10
|
-
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
const axios_1 = __importDefault(require("axios"));
|
16
|
-
const types_1 = require("../../autogen/types");
|
17
|
-
const INCLUDED_TYPES = [
|
18
|
-
"monument",
|
19
|
-
"museum",
|
20
|
-
"art_gallery",
|
21
|
-
"sculpture",
|
22
|
-
"cultural_landmark",
|
23
|
-
"historical_place",
|
24
|
-
"performing_arts_theater",
|
25
|
-
"university",
|
26
|
-
"aquarium",
|
27
|
-
"botanical_garden",
|
28
|
-
"comedy_club",
|
29
|
-
"park",
|
30
|
-
"movie_theater",
|
31
|
-
"national_park",
|
32
|
-
"garden",
|
33
|
-
"night_club",
|
34
|
-
"tourist_attraction",
|
35
|
-
"water_park",
|
36
|
-
"zoo",
|
37
|
-
"bar",
|
38
|
-
"restaurant",
|
39
|
-
"food_court",
|
40
|
-
"bakery",
|
41
|
-
"cafe",
|
42
|
-
"coffee_shop",
|
43
|
-
"pub",
|
44
|
-
"wine_bar",
|
45
|
-
"spa",
|
46
|
-
"beach",
|
47
|
-
"market",
|
48
|
-
"shopping_mall",
|
49
|
-
"stadium",
|
50
|
-
];
|
51
|
-
const nearbysearch = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
52
|
-
const url = `https://places.googleapis.com/v1/places:searchNearby`;
|
53
|
-
const fieldMask = [
|
54
|
-
"places.displayName",
|
55
|
-
"places.formattedAddress",
|
56
|
-
"places.priceLevel",
|
57
|
-
"places.rating",
|
58
|
-
"places.primaryTypeDisplayName",
|
59
|
-
"places.editorialSummary",
|
60
|
-
"places.regularOpeningHours",
|
61
|
-
].join(",");
|
62
|
-
const response = yield axios_1.default.post(url, {
|
63
|
-
maxResultCount: 20,
|
64
|
-
includedTypes: INCLUDED_TYPES,
|
65
|
-
locationRestriction: {
|
66
|
-
circle: {
|
67
|
-
center: {
|
68
|
-
latitude: params.latitude,
|
69
|
-
longitude: params.longitude,
|
70
|
-
},
|
71
|
-
radius: 10000,
|
72
|
-
},
|
73
|
-
},
|
74
|
-
}, {
|
75
|
-
headers: {
|
76
|
-
"X-Goog-Api-Key": authParams.apiKey,
|
77
|
-
"X-Goog-FieldMask": fieldMask,
|
78
|
-
"Content-Type": "application/json",
|
79
|
-
},
|
80
|
-
});
|
81
|
-
return types_1.googlemapsNearbysearchOutputSchema.parse({
|
82
|
-
results: response.data.places.map((place) => {
|
83
|
-
var _a, _b;
|
84
|
-
return ({
|
85
|
-
name: place.displayName.text,
|
86
|
-
address: place.formattedAddress,
|
87
|
-
priceLevel: place.priceLevel,
|
88
|
-
rating: place.rating,
|
89
|
-
primaryType: place.primaryTypeDisplayName.text,
|
90
|
-
editorialSummary: ((_a = place.editorialSummary) === null || _a === void 0 ? void 0 : _a.text) || "",
|
91
|
-
openingHours: ((_b = place.regularOpeningHours) === null || _b === void 0 ? void 0 : _b.weekdayDescriptions.join("\n")) || "",
|
92
|
-
});
|
93
|
-
}),
|
94
|
-
});
|
95
|
-
});
|
96
|
-
exports.default = nearbysearch;
|
@@ -1,45 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
-
});
|
10
|
-
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
const firecrawl_js_1 = __importDefault(require("@mendable/firecrawl-js"));
|
16
|
-
const scrapeTweetDataWithNitter = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
17
|
-
const tweetUrlRegex = /^(?:https?:\/\/)?(?:www\.)?(?:twitter\.com|x\.com)\/([a-zA-Z0-9_]+)\/status\/(\d+)(?:\?.*)?$/;
|
18
|
-
if (!tweetUrlRegex.test(params.tweetUrl)) {
|
19
|
-
throw new Error("Invalid tweet URL. Expected format: https://twitter.com/username/status/id or https://x.com/username/status/id");
|
20
|
-
}
|
21
|
-
const nitterUrl = params.tweetUrl.replace(/^(?:https?:\/\/)?(?:www\.)?(?:twitter\.com|x\.com)/i, "https://nitter.net");
|
22
|
-
// Initialize Firecrawl
|
23
|
-
if (!authParams.apiKey) {
|
24
|
-
throw new Error("API key is required for X+Nitter+Firecrawl");
|
25
|
-
}
|
26
|
-
const firecrawl = new firecrawl_js_1.default({
|
27
|
-
apiKey: authParams.apiKey,
|
28
|
-
});
|
29
|
-
try {
|
30
|
-
// Scrape the Nitter URL
|
31
|
-
const result = yield firecrawl.scrapeUrl(nitterUrl);
|
32
|
-
if (!result.success) {
|
33
|
-
throw new Error(`Failed to scrape tweet: ${result.error || "Unknown error"}`);
|
34
|
-
}
|
35
|
-
// Extract the tweet text from the scraped content - simple approach - in practice, you might need more robust parsing based on nitter html structure
|
36
|
-
const tweetContent = result.markdown;
|
37
|
-
return {
|
38
|
-
text: tweetContent || "Error scraping with firecrawl",
|
39
|
-
};
|
40
|
-
}
|
41
|
-
catch (error) {
|
42
|
-
throw new Error(`Error scraping tweet: ${error instanceof Error ? error.message : error}`);
|
43
|
-
}
|
44
|
-
});
|
45
|
-
exports.default = scrapeTweetDataWithNitter;
|