Skip to content

Commit 307ae04

Browse files
authored
Merge branch 'master' into master
2 parents 7f32907 + 194d1ef commit 307ae04

File tree

19 files changed

+956
-32
lines changed

19 files changed

+956
-32
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-create-knowledge",
5+
name: "Create Knowledge",
6+
description: "Create a new knowledge object to share information with Devin. [See the documentation](https://docs.devin.ai/api-reference/knowledge/create-knowledge)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
body: {
12+
propDefinition: [
13+
devin,
14+
"body",
15+
],
16+
},
17+
name: {
18+
propDefinition: [
19+
devin,
20+
"name",
21+
],
22+
},
23+
triggerDescription: {
24+
propDefinition: [
25+
devin,
26+
"triggerDescription",
27+
],
28+
},
29+
parentFolderId: {
30+
propDefinition: [
31+
devin,
32+
"folderId",
33+
],
34+
label: "Parent Folder ID",
35+
description: "The ID of the folder to create the knowledge in",
36+
optional: true,
37+
},
38+
pinnedRepo: {
39+
propDefinition: [
40+
devin,
41+
"pinnedRepo",
42+
],
43+
optional: true,
44+
},
45+
},
46+
async run({ $ }) {
47+
const response = await this.devin.createKnowledge({
48+
$,
49+
data: {
50+
body: this.body,
51+
name: this.name,
52+
parent_folder_id: this.parentFolderId,
53+
trigger_description: this.triggerDescription,
54+
pinned_repo: this.pinnedRepo,
55+
},
56+
});
57+
58+
$.export("$summary", `Successfully created knowledge object: ${this.name}`);
59+
return response;
60+
},
61+
};
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-create-session",
5+
name: "Create Session",
6+
description: "Create a new session with Devin. [See the documentation](https://docs.devin.ai/api-reference/sessions/create-a-new-devin-session)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
prompt: {
12+
type: "string",
13+
label: "Prompt",
14+
description: "The task description for Devin",
15+
},
16+
snapshotId: {
17+
type: "string",
18+
label: "Snapshot ID",
19+
description: "ID of a machine snapshot to use",
20+
optional: true,
21+
},
22+
unlisted: {
23+
type: "boolean",
24+
label: "Unlisted",
25+
description: "Whether the session should be unlisted",
26+
optional: true,
27+
},
28+
idempotent: {
29+
type: "boolean",
30+
label: "Idempotent",
31+
description: "Enable idempotent session creation",
32+
optional: true,
33+
},
34+
maxAcuLimit: {
35+
type: "integer",
36+
label: "Max ACU Limit",
37+
description: "Maximum ACU limit for the session",
38+
optional: true,
39+
},
40+
secretIds: {
41+
propDefinition: [
42+
devin,
43+
"secretIds",
44+
],
45+
optional: true,
46+
},
47+
knowledgeIds: {
48+
propDefinition: [
49+
devin,
50+
"knowledgeId",
51+
],
52+
type: "string[]",
53+
label: "Knowledge IDs",
54+
description: "The IDs of the knowledge objects to use",
55+
optional: true,
56+
},
57+
tags: {
58+
type: "string[]",
59+
label: "Tags",
60+
description: "List of tags to add to the session",
61+
optional: true,
62+
},
63+
title: {
64+
type: "string",
65+
label: "Title",
66+
description: "Custom title for the session. If None, a title will be generated automatically",
67+
optional: true,
68+
},
69+
},
70+
async run({ $ }) {
71+
const response = await this.devin.createSession({
72+
$,
73+
data: {
74+
prompt: this.prompt,
75+
snapshot_id: this.snapshotId,
76+
unlisted: this.unlisted,
77+
idempotent: this.idempotent,
78+
max_acu_limit: this.maxAcuLimit,
79+
secret_ids: this.secretIds,
80+
knowledge_ids: this.knowledgeIds,
81+
tags: this.tags,
82+
title: this.title,
83+
},
84+
});
85+
86+
$.export("$summary", `Successfully created session with ID: ${response.session_id}`);
87+
return response;
88+
},
89+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-delete-knowledge",
5+
name: "Delete Knowledge",
6+
description: "Delete an existing knowledge object. [See the documentation](https://docs.devin.ai/api-reference/knowledge/delete-knowledge)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
knowledgeId: {
12+
propDefinition: [
13+
devin,
14+
"knowledgeId",
15+
],
16+
},
17+
},
18+
async run({ $ }) {
19+
const response = await this.devin.deleteKnowledge({
20+
$,
21+
knowledgeId: this.knowledgeId,
22+
});
23+
24+
$.export("$summary", `Successfully deleted knowledge object: ${this.knowledgeId}`);
25+
return response;
26+
},
27+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-get-session",
5+
name: "Get Session",
6+
description: "Retrieve details about an existing session. [See the documentation](https://docs.devin.ai/api-reference/sessions/retrieve-details-about-an-existing-session)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
sessionId: {
12+
propDefinition: [
13+
devin,
14+
"sessionId",
15+
],
16+
},
17+
},
18+
async run({ $ }) {
19+
const response = await this.devin.getSession({
20+
$,
21+
sessionId: this.sessionId,
22+
});
23+
24+
$.export("$summary", `Successfully retrieved session: ${response.title || this.sessionId}`);
25+
return response;
26+
},
27+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-list-knowledge",
5+
name: "List Knowledge",
6+
description: "Retrieve a list of all knowledge objects. [See the documentation](https://docs.devin.ai/api-reference/knowledge/list-knowledge)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
},
12+
async run({ $ }) {
13+
const response = await this.devin.listKnowledge({
14+
$,
15+
});
16+
17+
$.export("$summary", `Successfully retrieved ${response.knowledge?.length || 0} knowledge objects`);
18+
return response;
19+
},
20+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-list-sessions",
5+
name: "List Sessions",
6+
description: "Retrieve a list of all sessions. [See the documentation](https://docs.devin.ai/api-reference/sessions/list-sessions)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
tags: {
12+
type: "string[]",
13+
label: "Tags",
14+
description: "Filter sessions by specific tags",
15+
optional: true,
16+
},
17+
limit: {
18+
type: "integer",
19+
label: "Limit",
20+
description: "Maximum number of sessions to retrieve",
21+
optional: true,
22+
default: 100,
23+
},
24+
offset: {
25+
type: "integer",
26+
label: "Offset",
27+
description: "Number of sessions to skip",
28+
optional: true,
29+
default: 0,
30+
},
31+
},
32+
async run({ $ }) {
33+
const response = await this.devin.listSessions({
34+
$,
35+
params: {
36+
limit: this.limit,
37+
offset: this.offset,
38+
},
39+
});
40+
41+
let sessions = response.sessions;
42+
if (this.tags) {
43+
sessions = sessions.filter((session) => session.tags.some((tag) => this.tags.includes(tag)));
44+
}
45+
46+
let summary = `Retrieved ${response.sessions.length} sessions`;
47+
if (this.tags) {
48+
summary += `, ${sessions.length} matching tags`;
49+
}
50+
51+
$.export("$summary", `${summary}`);
52+
return sessions;
53+
},
54+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-send-message-to-session",
5+
name: "Send Message to Session",
6+
description: "Send a message to an existing Devin session. [See the documentation](https://docs.devin.ai/api-reference/sessions/send-a-message-to-an-existing-devin-session)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
sessionId: {
12+
propDefinition: [
13+
devin,
14+
"sessionId",
15+
],
16+
},
17+
message: {
18+
type: "string",
19+
label: "Message",
20+
description: "The message to send to Devin",
21+
},
22+
},
23+
async run({ $ }) {
24+
const response = await this.devin.sendMessageToSession({
25+
$,
26+
sessionId: this.sessionId,
27+
data: {
28+
message: this.message,
29+
},
30+
});
31+
32+
$.export("$summary", `Successfully sent message to session ${this.sessionId}`);
33+
return response;
34+
},
35+
};
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import devin from "../../devin.app.mjs";
2+
3+
export default {
4+
key: "devin-update-knowledge",
5+
name: "Update Knowledge",
6+
description: "Update an existing knowledge object. [See the documentation](https://docs.devin.ai/api-reference/knowledge/update-knowledge)",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
devin,
11+
knowledgeId: {
12+
propDefinition: [
13+
devin,
14+
"knowledgeId",
15+
],
16+
},
17+
body: {
18+
propDefinition: [
19+
devin,
20+
"body",
21+
],
22+
optional: true,
23+
},
24+
name: {
25+
propDefinition: [
26+
devin,
27+
"name",
28+
],
29+
optional: true,
30+
},
31+
triggerDescription: {
32+
propDefinition: [
33+
devin,
34+
"triggerDescription",
35+
],
36+
optional: true,
37+
},
38+
parentFolderId: {
39+
propDefinition: [
40+
devin,
41+
"folderId",
42+
],
43+
label: "Parent Folder ID",
44+
description: "The ID of the folder to create the knowledge in",
45+
optional: true,
46+
},
47+
pinnedRepo: {
48+
propDefinition: [
49+
devin,
50+
"pinnedRepo",
51+
],
52+
optional: true,
53+
},
54+
},
55+
async run({ $ }) {
56+
const { knowledge } = await this.devin.listKnowledge({
57+
$,
58+
});
59+
60+
const current = knowledge.find(({ id }) => id === this.knowledgeId);
61+
62+
const response = await this.devin.updateKnowledge({
63+
$,
64+
knowledgeId: this.knowledgeId,
65+
data: {
66+
body: this.body || current.body,
67+
name: this.name || current.name,
68+
trigger_description: this.triggerDescription || current.trigger_description,
69+
parent_folder_id: this.parentFolderId || current.parent_folder_id,
70+
pinned_repo: this.pinnedRepo || current.pinned_repo,
71+
},
72+
});
73+
74+
$.export("$summary", `Successfully updated knowledge object: ${this.knowledgeId}`);
75+
return response;
76+
},
77+
};

0 commit comments

Comments
 (0)