@notionhq/apps 0.0.12 → 0.0.14
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 +32 -0
- package/dist/box.generated.d.ts +164 -0
- package/dist/box.generated.d.ts.map +1 -0
- package/dist/box.generated.js +24 -0
- package/dist/calendar.generated.d.ts +1036 -0
- package/dist/calendar.generated.d.ts.map +1 -0
- package/dist/calendar.generated.js +42 -0
- package/dist/cli/build.d.ts.map +1 -1
- package/dist/cli/build.js +41 -10
- package/dist/cli/codegen.d.ts +2 -0
- package/dist/cli/codegen.d.ts.map +1 -1
- package/dist/cli/codegen.js +13 -2
- package/dist/cli/discover.d.ts +2 -0
- package/dist/cli/discover.d.ts.map +1 -1
- package/dist/cli/discover.js +4 -2
- package/dist/cli/emit-manifest.d.ts +3 -1
- package/dist/cli/emit-manifest.d.ts.map +1 -1
- package/dist/cli/emit-manifest.js +10 -4
- package/dist/cli/index.js +33 -1
- package/dist/confluence.generated.d.ts +98 -0
- package/dist/confluence.generated.d.ts.map +1 -0
- package/dist/confluence.generated.js +18 -0
- package/dist/connection-actions.d.ts +2 -0
- package/dist/connection-actions.d.ts.map +1 -0
- package/dist/connection-actions.js +0 -0
- package/dist/connection-trigger-definitions.generated.d.ts +34 -0
- package/dist/connection-trigger-definitions.generated.d.ts.map +1 -0
- package/dist/connection-trigger-definitions.generated.js +45 -0
- package/dist/connections.d.ts +15 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +79 -0
- package/dist/connections.test.d.ts +2 -0
- package/dist/connections.test.d.ts.map +1 -0
- package/dist/cursor.generated.d.ts +154 -0
- package/dist/cursor.generated.d.ts.map +1 -0
- package/dist/cursor.generated.js +18 -0
- package/dist/custom-block.d.ts +54 -0
- package/dist/custom-block.d.ts.map +1 -0
- package/dist/custom-block.js +30 -0
- package/dist/custom-block.test.d.ts +2 -0
- package/dist/custom-block.test.d.ts.map +1 -0
- package/dist/custom-blocks.d.ts +2 -0
- package/dist/custom-blocks.d.ts.map +1 -0
- package/dist/custom-blocks.js +1 -0
- package/dist/discord.generated.d.ts +279 -0
- package/dist/discord.generated.d.ts.map +1 -0
- package/dist/discord.generated.js +33 -0
- package/dist/gmail.generated.d.ts +184 -0
- package/dist/gmail.generated.d.ts.map +1 -0
- package/dist/gmail.generated.js +21 -0
- package/dist/googleCalendar.generated.d.ts +83 -0
- package/dist/googleCalendar.generated.d.ts.map +1 -0
- package/dist/googleCalendar.generated.js +15 -0
- package/dist/googleDrive.generated.d.ts +210 -0
- package/dist/googleDrive.generated.d.ts.map +1 -0
- package/dist/googleDrive.generated.js +27 -0
- package/dist/googleDriveOauth.generated.d.ts +851 -0
- package/dist/googleDriveOauth.generated.d.ts.map +1 -0
- package/dist/googleDriveOauth.generated.js +84 -0
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/nds.css +1 -0
- package/dist/notion-as-code/database.d.ts +4 -3
- package/dist/notion-as-code/database.d.ts.map +1 -1
- package/dist/notion-as-code/database.js +11 -2
- package/dist/notion-as-code/intents.d.ts +4 -1
- package/dist/notion-as-code/intents.d.ts.map +1 -1
- package/dist/notion-as-code/page.d.ts +4 -4
- package/dist/notion-as-code/page.d.ts.map +1 -1
- package/dist/notion-as-code/page.js +11 -2
- package/dist/outlook.generated.d.ts +224 -0
- package/dist/outlook.generated.d.ts.map +1 -0
- package/dist/outlook.generated.js +24 -0
- package/dist/providers.generated.d.ts +117 -0
- package/dist/providers.generated.d.ts.map +1 -0
- package/dist/providers.generated.js +108 -0
- package/dist/react.d.ts +2 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +1 -0
- package/dist/salesforce.generated.d.ts +151 -0
- package/dist/salesforce.generated.d.ts.map +1 -0
- package/dist/salesforce.generated.js +24 -0
- package/dist/slack.generated.d.ts +290 -0
- package/dist/slack.generated.d.ts.map +1 -0
- package/dist/slack.generated.js +30 -0
- package/dist/triggers.generated.d.ts +107 -32
- package/dist/triggers.generated.d.ts.map +1 -1
- package/dist/triggers.generated.js +36 -24
- package/dist/workflow-connections-types.test.d.ts +2 -0
- package/dist/workflow-connections-types.test.d.ts.map +1 -0
- package/dist/workflow-types.test.d.ts +2 -0
- package/dist/workflow-types.test.d.ts.map +1 -0
- package/dist/workflow.d.ts +20 -16
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +14 -17
- package/docs/BUILD.md +83 -14
- package/docs/CONNECTIONS.md +129 -0
- package/package.json +16 -2
- package/src/box.generated.ts +187 -0
- package/src/calendar.generated.ts +1117 -0
- package/src/cli/build.test.ts +87 -0
- package/src/cli/build.ts +47 -9
- package/src/cli/codegen.test.ts +2 -0
- package/src/cli/codegen.ts +25 -7
- package/src/cli/discover.test.ts +12 -0
- package/src/cli/discover.ts +6 -2
- package/src/cli/emit-manifest.ts +13 -3
- package/src/cli/index.ts +33 -1
- package/src/confluence.generated.ts +109 -0
- package/src/connection-actions.ts +2 -0
- package/src/connection-trigger-definitions.generated.ts +48 -0
- package/src/connections.test.ts +157 -0
- package/src/connections.ts +126 -0
- package/src/cursor.generated.ts +167 -0
- package/src/custom-block.test.ts +19 -0
- package/src/custom-block.ts +41 -0
- package/src/custom-blocks.ts +1 -0
- package/src/discord.generated.ts +318 -0
- package/src/gmail.generated.ts +205 -0
- package/src/googleCalendar.generated.ts +95 -0
- package/src/googleDrive.generated.ts +235 -0
- package/src/googleDriveOauth.generated.ts +980 -0
- package/src/manifest.ts +1 -1
- package/src/nds.css +1 -0
- package/src/notion-as-code/database.ts +19 -11
- package/src/notion-as-code/intents.ts +2 -1
- package/src/notion-as-code/page.ts +17 -11
- package/src/outlook.generated.ts +249 -0
- package/src/providers.generated.ts +207 -0
- package/src/react.ts +1 -0
- package/src/salesforce.generated.ts +170 -0
- package/src/slack.generated.ts +330 -0
- package/src/triggers.generated.ts +112 -32
- package/src/workflow-connections-types.test.ts +59 -0
- package/src/workflow-types.test.ts +144 -0
- package/src/workflow.test.ts +112 -2
- package/src/workflow.ts +58 -29
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { connectionTriggerDefinitions } from "./connection-trigger-definitions.generated.js";
|
|
2
|
+
import { createConnectionProviders } from "./providers.generated.js";
|
|
3
|
+
import { connections } from "./providers.generated.js";
|
|
4
|
+
function validateConnectionRequirements(requirements) {
|
|
5
|
+
if (requirements.length > 100) throw new Error("Workflows support at most 100 connections.");
|
|
6
|
+
const keys = /* @__PURE__ */ new Set();
|
|
7
|
+
for (const requirement of requirements) {
|
|
8
|
+
if (!requirement.type) throw new Error("A workflow connection needs a provider type.");
|
|
9
|
+
const key = requirement.key ?? requirement.type;
|
|
10
|
+
if (!/^[a-zA-Z][a-zA-Z0-9_-]{0,127}$/.test(key)) {
|
|
11
|
+
throw new Error("Invalid workflow connection key: " + key);
|
|
12
|
+
}
|
|
13
|
+
if (keys.has(key)) throw new Error("Duplicate workflow connection: " + key);
|
|
14
|
+
keys.add(key);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function validateTriggerConnections(triggers, requirements) {
|
|
18
|
+
const seen = /* @__PURE__ */ new Set();
|
|
19
|
+
for (const trigger of triggers) {
|
|
20
|
+
if (!("connectionKey" in trigger) || trigger.connectionKey === void 0) continue;
|
|
21
|
+
const requirement = requirements.find(
|
|
22
|
+
(connection) => (connection.key ?? connection.type) === trigger.connectionKey
|
|
23
|
+
);
|
|
24
|
+
const definition = connectionTriggerDefinitions.find(
|
|
25
|
+
(definition2) => definition2.type === trigger.type
|
|
26
|
+
);
|
|
27
|
+
if (!requirement || requirement.type !== definition?.provider) {
|
|
28
|
+
throw new Error(
|
|
29
|
+
`Trigger "${trigger.type}" requires a declared ${definition?.provider ?? "supported"} connection: ${trigger.connectionKey}`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
const identity = JSON.stringify([trigger.type, trigger.connectionKey]);
|
|
33
|
+
if (seen.has(identity))
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Duplicate connection trigger: ${trigger.type} (${trigger.connectionKey})`
|
|
36
|
+
);
|
|
37
|
+
seen.add(identity);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function createWorkflowConnections(notion) {
|
|
41
|
+
const rawBindings = process.env.NOTION_CONNECTION_BINDINGS;
|
|
42
|
+
function resolveBinding(key) {
|
|
43
|
+
const bindings = JSON.parse(rawBindings ?? "[]");
|
|
44
|
+
if (!Array.isArray(bindings) || !bindings.every(isConnectionBinding)) {
|
|
45
|
+
throw new Error("Invalid NOTION_CONNECTION_BINDINGS metadata.");
|
|
46
|
+
}
|
|
47
|
+
const matches = bindings.filter((binding) => binding.key === key);
|
|
48
|
+
if (matches.length !== 1 || !matches[0]) {
|
|
49
|
+
throw new Error(
|
|
50
|
+
`Workflow connection "${key}" is not bound. Deploy and configure this requirement before running it.`
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
return { ...matches[0] };
|
|
54
|
+
}
|
|
55
|
+
function invoker(provider, key) {
|
|
56
|
+
const binding = resolveBinding(key);
|
|
57
|
+
if (binding.type !== provider) {
|
|
58
|
+
throw new Error(`Workflow connection "${key}" is ${binding.type}, not ${provider}.`);
|
|
59
|
+
}
|
|
60
|
+
return async (action, args) => {
|
|
61
|
+
const response = await notion.request({
|
|
62
|
+
path: "tools/run/internal",
|
|
63
|
+
method: "post",
|
|
64
|
+
body: { connection: binding.id, action, args }
|
|
65
|
+
});
|
|
66
|
+
return response.result;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return createConnectionProviders(invoker);
|
|
70
|
+
}
|
|
71
|
+
function isConnectionBinding(value) {
|
|
72
|
+
return typeof value === "object" && value !== null && "key" in value && typeof value.key === "string" && value.key.length > 0 && "type" in value && typeof value.type === "string" && value.type.length > 0 && "id" in value && typeof value.id === "string" && value.id.length > 0;
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
connections,
|
|
76
|
+
createWorkflowConnections,
|
|
77
|
+
validateConnectionRequirements,
|
|
78
|
+
validateTriggerConnections
|
|
79
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.test.d.ts","sourceRoot":"","sources":["../src/connections.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import type { ConnectionActionInvoker } from "./connection-actions.js";
|
|
2
|
+
/**
|
|
3
|
+
* Script input for the "Create Cursor agent" effect (`cursor.createAgent`),
|
|
4
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
5
|
+
*
|
|
6
|
+
* Create a new Cursor agent
|
|
7
|
+
*/
|
|
8
|
+
export type CreateAgentScriptInput = {
|
|
9
|
+
/**
|
|
10
|
+
* What you want the agent to do
|
|
11
|
+
*/
|
|
12
|
+
prompt: string;
|
|
13
|
+
/**
|
|
14
|
+
* GitHub repository URL or owner/repo format (e.g. 'owner/repo' or 'https://github.com/owner/repo')
|
|
15
|
+
*/
|
|
16
|
+
repository: string;
|
|
17
|
+
/**
|
|
18
|
+
* Optional branch or ref to work from (e.g. 'main', 'develop')
|
|
19
|
+
*/
|
|
20
|
+
ref?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Custom branch name for the agent to create in the target repository.
|
|
23
|
+
*/
|
|
24
|
+
branchName?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Whether to open the pull request as the Cursor GitHub App instead of as the user (default: true). Only applies when a PR is auto-created.
|
|
27
|
+
*/
|
|
28
|
+
openAsCursorGithubApp?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to skip adding the user as a reviewer on the pull request. Only applies if autoCreatePr is true and the PR is opened as the Cursor GitHub App (default: false).
|
|
31
|
+
*/
|
|
32
|
+
skipReviewerRequest?: boolean;
|
|
33
|
+
webhook?: {
|
|
34
|
+
/**
|
|
35
|
+
* Webhook URL to receive agent status updates.
|
|
36
|
+
*/
|
|
37
|
+
url: string;
|
|
38
|
+
/**
|
|
39
|
+
* Optional shared secret for verifying webhook signatures.
|
|
40
|
+
*/
|
|
41
|
+
secret?: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Canonical Tool Core output for the "Create Cursor agent" effect (`cursor.createAgent`).
|
|
46
|
+
* This is the definition's output schema; the effect's script surface may
|
|
47
|
+
* re-encode it before returning.
|
|
48
|
+
*/
|
|
49
|
+
export type CreateAgentScriptOutput = {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
/**
|
|
53
|
+
* One of: `CREATING`, `RUNNING`, `FINISHED`, `ERROR`, `EXPIRED`
|
|
54
|
+
*/
|
|
55
|
+
status: "CREATING" | "RUNNING" | "FINISHED" | "ERROR" | "EXPIRED";
|
|
56
|
+
source: {
|
|
57
|
+
repository: string;
|
|
58
|
+
ref?: string;
|
|
59
|
+
};
|
|
60
|
+
target: {
|
|
61
|
+
url: string;
|
|
62
|
+
prUrl?: string;
|
|
63
|
+
branchName?: string;
|
|
64
|
+
autoCreatePr?: boolean;
|
|
65
|
+
autoBranch?: boolean;
|
|
66
|
+
openAsCursorGithubApp?: boolean;
|
|
67
|
+
skipReviewerRequest?: boolean;
|
|
68
|
+
};
|
|
69
|
+
createdAt: string;
|
|
70
|
+
summary?: string;
|
|
71
|
+
conversation?: {
|
|
72
|
+
id: string;
|
|
73
|
+
messages: Array<{
|
|
74
|
+
id: string;
|
|
75
|
+
type: string;
|
|
76
|
+
text: string;
|
|
77
|
+
}>;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Script input for the "Get Cursor agent" effect (`cursor.getAgent`),
|
|
82
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
83
|
+
*
|
|
84
|
+
* Get a Cursor agent by ID
|
|
85
|
+
*/
|
|
86
|
+
export type GetAgentScriptInput = {
|
|
87
|
+
/**
|
|
88
|
+
* The ID of the Cursor agent to get (e.g. 'agent-123')
|
|
89
|
+
*/
|
|
90
|
+
agentId: string;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Canonical Tool Core output for the "Get Cursor agent" effect (`cursor.getAgent`).
|
|
94
|
+
* This is the definition's output schema; the effect's script surface may
|
|
95
|
+
* re-encode it before returning.
|
|
96
|
+
*/
|
|
97
|
+
export type GetAgentScriptOutput = {
|
|
98
|
+
id: string;
|
|
99
|
+
name: string;
|
|
100
|
+
/**
|
|
101
|
+
* One of: `CREATING`, `RUNNING`, `FINISHED`, `ERROR`, `EXPIRED`
|
|
102
|
+
*/
|
|
103
|
+
status: "CREATING" | "RUNNING" | "FINISHED" | "ERROR" | "EXPIRED";
|
|
104
|
+
source: {
|
|
105
|
+
repository: string;
|
|
106
|
+
ref?: string;
|
|
107
|
+
};
|
|
108
|
+
target: {
|
|
109
|
+
url: string;
|
|
110
|
+
prUrl?: string;
|
|
111
|
+
branchName?: string;
|
|
112
|
+
autoCreatePr?: boolean;
|
|
113
|
+
autoBranch?: boolean;
|
|
114
|
+
openAsCursorGithubApp?: boolean;
|
|
115
|
+
skipReviewerRequest?: boolean;
|
|
116
|
+
};
|
|
117
|
+
createdAt: string;
|
|
118
|
+
summary?: string;
|
|
119
|
+
conversation?: {
|
|
120
|
+
id: string;
|
|
121
|
+
messages: Array<{
|
|
122
|
+
id: string;
|
|
123
|
+
type: string;
|
|
124
|
+
text: string;
|
|
125
|
+
}>;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Script input for the "List Cursor repositories" effect (`cursor.listRepositories`),
|
|
130
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
131
|
+
*
|
|
132
|
+
* List accessible Cursor repositories
|
|
133
|
+
*/
|
|
134
|
+
export type ListRepositoriesScriptInput = Record<string, never>;
|
|
135
|
+
/**
|
|
136
|
+
* Canonical Tool Core output for the "List Cursor repositories" effect (`cursor.listRepositories`).
|
|
137
|
+
* This is the definition's output schema; the effect's script surface may
|
|
138
|
+
* re-encode it before returning.
|
|
139
|
+
*/
|
|
140
|
+
export type ListRepositoriesScriptOutput = {
|
|
141
|
+
repositories: Array<{
|
|
142
|
+
owner: string;
|
|
143
|
+
name: string;
|
|
144
|
+
repository: string;
|
|
145
|
+
}>;
|
|
146
|
+
};
|
|
147
|
+
export declare class CursorConnectionClient {
|
|
148
|
+
private readonly invoke;
|
|
149
|
+
constructor(invoke: ConnectionActionInvoker);
|
|
150
|
+
createAgent(args: CreateAgentScriptInput): Promise<CreateAgentScriptOutput>;
|
|
151
|
+
getAgent(args: GetAgentScriptInput): Promise<GetAgentScriptOutput>;
|
|
152
|
+
listRepositories(args: ListRepositoriesScriptInput): Promise<ListRepositoriesScriptOutput>;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=cursor.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.generated.d.ts","sourceRoot":"","sources":["../src/cursor.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class CursorConnectionClient {
|
|
2
|
+
constructor(invoke) {
|
|
3
|
+
this.invoke = invoke;
|
|
4
|
+
}
|
|
5
|
+
invoke;
|
|
6
|
+
createAgent(args) {
|
|
7
|
+
return this.invoke("createAgent", args);
|
|
8
|
+
}
|
|
9
|
+
getAgent(args) {
|
|
10
|
+
return this.invoke("getAgent", args);
|
|
11
|
+
}
|
|
12
|
+
listRepositories(args) {
|
|
13
|
+
return this.invoke("listRepositories", args);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
CursorConnectionClient
|
|
18
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ManifestDataSource } from "@notionhq/custom-blocks";
|
|
2
|
+
export type CustomBlockOptions = {
|
|
3
|
+
path: string;
|
|
4
|
+
slashCommand?: string;
|
|
5
|
+
dataSources?: Record<string, ManifestDataSource>;
|
|
6
|
+
} & ({
|
|
7
|
+
static: true;
|
|
8
|
+
command?: never;
|
|
9
|
+
output?: never;
|
|
10
|
+
} | {
|
|
11
|
+
static?: false;
|
|
12
|
+
command?: string;
|
|
13
|
+
output?: string;
|
|
14
|
+
});
|
|
15
|
+
/** Declare a browser project. Its filename under src/customBlocks supplies its key. */
|
|
16
|
+
export declare function createCustomBlock(options: CustomBlockOptions): {
|
|
17
|
+
_tag: "custom_block";
|
|
18
|
+
config: {
|
|
19
|
+
source: {
|
|
20
|
+
type: "static";
|
|
21
|
+
path: string;
|
|
22
|
+
command?: never;
|
|
23
|
+
output?: never;
|
|
24
|
+
} | {
|
|
25
|
+
type: "project";
|
|
26
|
+
path: string;
|
|
27
|
+
command: string;
|
|
28
|
+
output: string;
|
|
29
|
+
};
|
|
30
|
+
manifest: {
|
|
31
|
+
dataSources: Record<string, {
|
|
32
|
+
name: string;
|
|
33
|
+
description?: string | undefined;
|
|
34
|
+
icon?: {
|
|
35
|
+
type: "emoji";
|
|
36
|
+
emoji: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: "external";
|
|
39
|
+
url: string;
|
|
40
|
+
} | undefined;
|
|
41
|
+
properties: {
|
|
42
|
+
[x: string]: {
|
|
43
|
+
name: string;
|
|
44
|
+
description?: string | undefined;
|
|
45
|
+
type: "number" | "date" | "url" | "title" | "rich_text" | "checkbox" | "email" | "phone_number" | "select" | "multi_select" | "status" | "people" | "files" | "unique_id" | "relation" | "place" | "formula" | "rollup" | "button" | "verification" | "last_visited_time" | "location" | "created_time" | "last_edited_time" | "created_by" | "last_edited_by";
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
}>;
|
|
49
|
+
slashCommand?: string;
|
|
50
|
+
version: 1;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=custom-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-block.d.ts","sourceRoot":"","sources":["../src/custom-block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACjD,GAAG,CACD;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GACjD;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CACvD,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B5D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
function createCustomBlock(options) {
|
|
2
|
+
if (typeof options.path !== "string" || options.path.trim() === "") {
|
|
3
|
+
throw new Error("createCustomBlock requires a non-empty path relative to the app root");
|
|
4
|
+
}
|
|
5
|
+
const slashCommand = options.slashCommand?.replace(/^\//, "");
|
|
6
|
+
if (slashCommand !== void 0 && !/^[a-z0-9][a-z0-9_-]{0,63}$/.test(slashCommand)) {
|
|
7
|
+
throw new Error(
|
|
8
|
+
"Custom block slashCommand must be 1\u201364 lowercase letters, numbers, hyphens or underscores, starting with a letter or number"
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
_tag: "custom_block",
|
|
13
|
+
config: {
|
|
14
|
+
source: options.static ? { type: "static", path: options.path } : {
|
|
15
|
+
type: "project",
|
|
16
|
+
path: options.path,
|
|
17
|
+
command: options.command ?? "npx vite build",
|
|
18
|
+
output: options.output ?? "dist"
|
|
19
|
+
},
|
|
20
|
+
manifest: {
|
|
21
|
+
version: 1,
|
|
22
|
+
...slashCommand === void 0 ? {} : { slashCommand },
|
|
23
|
+
dataSources: options.dataSources ?? {}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
createCustomBlock
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-block.test.d.ts","sourceRoot":"","sources":["../src/custom-block.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-blocks.d.ts","sourceRoot":"","sources":["../src/custom-blocks.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@notionhq/custom-blocks";
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import type { ConnectionActionInvoker } from "./connection-actions.js";
|
|
2
|
+
/**
|
|
3
|
+
* Script input for the "Add Discord reaction" effect (`discord.addReaction`),
|
|
4
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
5
|
+
*
|
|
6
|
+
* Add a reaction to a Discord message
|
|
7
|
+
*/
|
|
8
|
+
export type AddReactionScriptInput = {
|
|
9
|
+
/**
|
|
10
|
+
* The Discord channel ID containing the message.
|
|
11
|
+
*/
|
|
12
|
+
channelId: string;
|
|
13
|
+
/**
|
|
14
|
+
* The Discord message ID to react to.
|
|
15
|
+
*/
|
|
16
|
+
messageId: string;
|
|
17
|
+
/**
|
|
18
|
+
* The emoji to react with. Use Unicode emoji (e.g. "👍") or custom emoji in the format "name:id" (e.g. "notionlogo:123456789").
|
|
19
|
+
*/
|
|
20
|
+
emoji: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Canonical Tool Core output for the "Add Discord reaction" effect (`discord.addReaction`).
|
|
24
|
+
* This is the definition's output schema; the effect's script surface may
|
|
25
|
+
* re-encode it before returning.
|
|
26
|
+
*/
|
|
27
|
+
export type AddReactionScriptOutput = Record<string, never>;
|
|
28
|
+
/**
|
|
29
|
+
* Script input for the "Get recent Discord channel messages" effect (`discord.getRecentChannelMessages`),
|
|
30
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
31
|
+
*
|
|
32
|
+
* Get recent messages from a Discord channel
|
|
33
|
+
*/
|
|
34
|
+
export type GetRecentChannelMessagesScriptInput = {
|
|
35
|
+
/**
|
|
36
|
+
* The Discord channel ID to read messages from.
|
|
37
|
+
*/
|
|
38
|
+
channelId: string;
|
|
39
|
+
/**
|
|
40
|
+
* Number of messages to retrieve (1-50, default 25).
|
|
41
|
+
*/
|
|
42
|
+
limit?: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Canonical Tool Core output for the "Get recent Discord channel messages" effect (`discord.getRecentChannelMessages`).
|
|
46
|
+
* This is the definition's output schema; the effect's script surface may
|
|
47
|
+
* re-encode it before returning.
|
|
48
|
+
*/
|
|
49
|
+
export type GetRecentChannelMessagesScriptOutput = Array<{
|
|
50
|
+
/**
|
|
51
|
+
* The Discord message ID (snowflake).
|
|
52
|
+
*/
|
|
53
|
+
id: string;
|
|
54
|
+
/**
|
|
55
|
+
* The Discord channel ID containing the message.
|
|
56
|
+
*/
|
|
57
|
+
channelId: string;
|
|
58
|
+
/**
|
|
59
|
+
* The Discord guild (server) ID.
|
|
60
|
+
*/
|
|
61
|
+
guildId: string;
|
|
62
|
+
/**
|
|
63
|
+
* The Discord markdown message content.
|
|
64
|
+
*/
|
|
65
|
+
content: string;
|
|
66
|
+
/**
|
|
67
|
+
* Whether the message was sent by the bot.
|
|
68
|
+
*/
|
|
69
|
+
fromBot: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* The message timestamp in ISO 8601 format.
|
|
72
|
+
*/
|
|
73
|
+
timestamp: string;
|
|
74
|
+
/**
|
|
75
|
+
* A user-navigable URL to the message.
|
|
76
|
+
*/
|
|
77
|
+
url: string;
|
|
78
|
+
/**
|
|
79
|
+
* The channel name, when available.
|
|
80
|
+
*/
|
|
81
|
+
channelName?: string;
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Script input for the "List Discord channels" effect (`discord.listChannels`),
|
|
85
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
86
|
+
*
|
|
87
|
+
* List text channels in the Discord server
|
|
88
|
+
*/
|
|
89
|
+
export type ListChannelsScriptInput = Record<string, never>;
|
|
90
|
+
/**
|
|
91
|
+
* Canonical Tool Core output for the "List Discord channels" effect (`discord.listChannels`).
|
|
92
|
+
* This is the definition's output schema; the effect's script surface may
|
|
93
|
+
* re-encode it before returning.
|
|
94
|
+
*/
|
|
95
|
+
export type ListChannelsScriptOutput = Array<{
|
|
96
|
+
/**
|
|
97
|
+
* The Discord channel ID (snowflake).
|
|
98
|
+
*/
|
|
99
|
+
id: string;
|
|
100
|
+
/**
|
|
101
|
+
* The channel name.
|
|
102
|
+
*/
|
|
103
|
+
name: string;
|
|
104
|
+
/**
|
|
105
|
+
* The channel type: "text", "announcement", "forum", or "media".
|
|
106
|
+
*/
|
|
107
|
+
type: string;
|
|
108
|
+
}>;
|
|
109
|
+
/**
|
|
110
|
+
* Script input for the "Remove Discord reaction" effect (`discord.removeReaction`),
|
|
111
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
112
|
+
*
|
|
113
|
+
* Remove a reaction from a Discord message
|
|
114
|
+
*/
|
|
115
|
+
export type RemoveReactionScriptInput = {
|
|
116
|
+
/**
|
|
117
|
+
* The Discord channel ID containing the message.
|
|
118
|
+
*/
|
|
119
|
+
channelId: string;
|
|
120
|
+
/**
|
|
121
|
+
* The Discord message ID to remove the reaction from.
|
|
122
|
+
*/
|
|
123
|
+
messageId: string;
|
|
124
|
+
/**
|
|
125
|
+
* The emoji to remove. Use Unicode emoji (e.g. "👍") or custom emoji in the format "name:id" (e.g. "notionlogo:123456789").
|
|
126
|
+
*/
|
|
127
|
+
emoji: string;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Canonical Tool Core output for the "Remove Discord reaction" effect (`discord.removeReaction`).
|
|
131
|
+
* This is the definition's output schema; the effect's script surface may
|
|
132
|
+
* re-encode it before returning.
|
|
133
|
+
*/
|
|
134
|
+
export type RemoveReactionScriptOutput = Record<string, never>;
|
|
135
|
+
/**
|
|
136
|
+
* Script input for the "Send Discord channel message" effect (`discord.sendMessageToChannel`),
|
|
137
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
138
|
+
*
|
|
139
|
+
* Send a new message to a Discord channel
|
|
140
|
+
*/
|
|
141
|
+
export type SendMessageToChannelScriptInput = {
|
|
142
|
+
/**
|
|
143
|
+
* The Discord channel ID (snowflake) to send the message to.
|
|
144
|
+
*/
|
|
145
|
+
channelId: string;
|
|
146
|
+
/**
|
|
147
|
+
* ## Follow these guidelines when sending Discord messages:
|
|
148
|
+
* **Response Length:**
|
|
149
|
+
* - Keep responses to 1-2 short sentences maximum
|
|
150
|
+
* - No long paragraphs or blocks of text
|
|
151
|
+
* - Break longer content into bullets or line breaks
|
|
152
|
+
* - Every response must be instantly scannable
|
|
153
|
+
*
|
|
154
|
+
* **Tone:**
|
|
155
|
+
* - Write like a friendly human co-worker
|
|
156
|
+
* - Be concise and direct
|
|
157
|
+
*
|
|
158
|
+
* **Formatting:**
|
|
159
|
+
* - Use standard Discord markdown
|
|
160
|
+
* - Use bullets for lists
|
|
161
|
+
* - Use **bold** for emphasis
|
|
162
|
+
* - Use line breaks for clarity
|
|
163
|
+
* - Emojis allowed sparingly for clarity or tone
|
|
164
|
+
*
|
|
165
|
+
* **Links:**
|
|
166
|
+
* - Always use markdown link syntax: [link text](url)
|
|
167
|
+
* - Never use raw URLs
|
|
168
|
+
*/
|
|
169
|
+
content: string;
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Canonical Tool Core output for the "Send Discord channel message" effect (`discord.sendMessageToChannel`).
|
|
173
|
+
* This is the definition's output schema; the effect's script surface may
|
|
174
|
+
* re-encode it before returning.
|
|
175
|
+
*/
|
|
176
|
+
export type SendMessageToChannelScriptOutput = {
|
|
177
|
+
/**
|
|
178
|
+
* The Discord message ID (snowflake).
|
|
179
|
+
*/
|
|
180
|
+
id: string;
|
|
181
|
+
/**
|
|
182
|
+
* The Discord channel ID containing the message.
|
|
183
|
+
*/
|
|
184
|
+
channelId: string;
|
|
185
|
+
/**
|
|
186
|
+
* The Discord guild (server) ID.
|
|
187
|
+
*/
|
|
188
|
+
guildId: string;
|
|
189
|
+
/**
|
|
190
|
+
* The Discord markdown message content.
|
|
191
|
+
*/
|
|
192
|
+
content: string;
|
|
193
|
+
/**
|
|
194
|
+
* Whether the message was sent by the bot.
|
|
195
|
+
*/
|
|
196
|
+
fromBot: boolean;
|
|
197
|
+
/**
|
|
198
|
+
* The message timestamp in ISO 8601 format.
|
|
199
|
+
*/
|
|
200
|
+
timestamp: string;
|
|
201
|
+
/**
|
|
202
|
+
* A user-navigable URL to the message.
|
|
203
|
+
*/
|
|
204
|
+
url: string;
|
|
205
|
+
/**
|
|
206
|
+
* The channel name, when available.
|
|
207
|
+
*/
|
|
208
|
+
channelName?: string;
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Script input for the "Update Discord message" effect (`discord.updateMessage`),
|
|
212
|
+
* derived from its Tool Core definition's call_function input projection.
|
|
213
|
+
*
|
|
214
|
+
* Update an existing Discord message
|
|
215
|
+
*/
|
|
216
|
+
export type UpdateMessageScriptInput = {
|
|
217
|
+
/**
|
|
218
|
+
* The Discord channel ID containing the message.
|
|
219
|
+
*/
|
|
220
|
+
channelId: string;
|
|
221
|
+
/**
|
|
222
|
+
* The Discord message ID to update.
|
|
223
|
+
*/
|
|
224
|
+
messageId: string;
|
|
225
|
+
/**
|
|
226
|
+
* The new content for the message (Discord markdown).
|
|
227
|
+
*/
|
|
228
|
+
content: string;
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* Canonical Tool Core output for the "Update Discord message" effect (`discord.updateMessage`).
|
|
232
|
+
* This is the definition's output schema; the effect's script surface may
|
|
233
|
+
* re-encode it before returning.
|
|
234
|
+
*/
|
|
235
|
+
export type UpdateMessageScriptOutput = {
|
|
236
|
+
/**
|
|
237
|
+
* The Discord message ID (snowflake).
|
|
238
|
+
*/
|
|
239
|
+
id: string;
|
|
240
|
+
/**
|
|
241
|
+
* The Discord channel ID containing the message.
|
|
242
|
+
*/
|
|
243
|
+
channelId: string;
|
|
244
|
+
/**
|
|
245
|
+
* The Discord guild (server) ID.
|
|
246
|
+
*/
|
|
247
|
+
guildId: string;
|
|
248
|
+
/**
|
|
249
|
+
* The Discord markdown message content.
|
|
250
|
+
*/
|
|
251
|
+
content: string;
|
|
252
|
+
/**
|
|
253
|
+
* Whether the message was sent by the bot.
|
|
254
|
+
*/
|
|
255
|
+
fromBot: boolean;
|
|
256
|
+
/**
|
|
257
|
+
* The message timestamp in ISO 8601 format.
|
|
258
|
+
*/
|
|
259
|
+
timestamp: string;
|
|
260
|
+
/**
|
|
261
|
+
* A user-navigable URL to the message.
|
|
262
|
+
*/
|
|
263
|
+
url: string;
|
|
264
|
+
/**
|
|
265
|
+
* The channel name, when available.
|
|
266
|
+
*/
|
|
267
|
+
channelName?: string;
|
|
268
|
+
};
|
|
269
|
+
export declare class DiscordConnectionClient {
|
|
270
|
+
private readonly invoke;
|
|
271
|
+
constructor(invoke: ConnectionActionInvoker);
|
|
272
|
+
addReaction(args: AddReactionScriptInput): Promise<AddReactionScriptOutput>;
|
|
273
|
+
getRecentChannelMessages(args: GetRecentChannelMessagesScriptInput): Promise<GetRecentChannelMessagesScriptOutput>;
|
|
274
|
+
listChannels(args: ListChannelsScriptInput): Promise<ListChannelsScriptOutput>;
|
|
275
|
+
removeReaction(args: RemoveReactionScriptInput): Promise<RemoveReactionScriptOutput>;
|
|
276
|
+
sendMessageToChannel(args: SendMessageToChannelScriptInput): Promise<SendMessageToChannelScriptOutput>;
|
|
277
|
+
updateMessage(args: UpdateMessageScriptInput): Promise<UpdateMessageScriptOutput>;
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=discord.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.generated.d.ts","sourceRoot":"","sources":["../src/discord.generated.ts"],"names":[],"mappings":"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"}
|