@ubiquity-os/plugin-sdk 1.1.0 → 2.0.0
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 +4 -0
- package/dist/index.d.mts +14 -17
- package/dist/index.d.ts +14 -17
- package/dist/index.js +158 -91
- package/dist/index.mjs +152 -85
- package/dist/manifest.d.mts +2 -2
- package/dist/manifest.d.ts +2 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -17,6 +17,10 @@ The `createActionsPlugin` function allows users to create plugins that will be a
|
|
|
17
17
|
|
|
18
18
|
The `createPlugin` function enables users to create a plugin that will run on Cloudflare Workers environment.
|
|
19
19
|
|
|
20
|
+
### `postComment`
|
|
21
|
+
|
|
22
|
+
The `postComment` function enables users to easily post a comment to an issue, a pull-request, or a pull request review thread.
|
|
23
|
+
|
|
20
24
|
## Getting Started
|
|
21
25
|
|
|
22
26
|
To set up the project locally, `bun` is the preferred package manager.
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as hono_types from 'hono/types';
|
|
2
2
|
import { EmitterWebhookEventName, EmitterWebhookEvent } from '@octokit/webhooks';
|
|
3
|
-
import { TAnySchema } from '@sinclair/typebox';
|
|
4
|
-
import { Logs, LogLevel, LogReturn } from '@ubiquity-os/ubiquity-os-logger';
|
|
5
3
|
import { Hono } from 'hono';
|
|
4
|
+
import { Logs, LogLevel, LogReturn } from '@ubiquity-os/ubiquity-os-logger';
|
|
6
5
|
import { customOctokit } from './octokit.mjs';
|
|
7
6
|
import { Manifest } from './manifest.mjs';
|
|
7
|
+
import { TAnySchema } from '@sinclair/typebox';
|
|
8
8
|
import '@octokit/core/dist-types/types';
|
|
9
9
|
import '@octokit/plugin-paginate-graphql';
|
|
10
10
|
import '@octokit/plugin-rest-endpoint-methods';
|
|
@@ -27,7 +27,7 @@ interface Context<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSuppor
|
|
|
27
27
|
type Return = Record<string, unknown> | undefined | void;
|
|
28
28
|
type HandlerReturn = Promise<Return> | Return;
|
|
29
29
|
|
|
30
|
-
interface Options
|
|
30
|
+
interface Options {
|
|
31
31
|
kernelPublicKey?: string;
|
|
32
32
|
logLevel?: LogLevel;
|
|
33
33
|
postCommentOnError?: boolean;
|
|
@@ -39,25 +39,22 @@ interface Options$1 {
|
|
|
39
39
|
*/
|
|
40
40
|
bypassSignatureVerification?: boolean;
|
|
41
41
|
}
|
|
42
|
-
declare function createPlugin<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSupportedEvents extends EmitterWebhookEventName = EmitterWebhookEventName>(handler: (context: Context<TConfig, TEnv, TCommand, TSupportedEvents>) => HandlerReturn, manifest: Manifest, options?: Options$1): Hono<hono_types.BlankEnv, hono_types.BlankSchema, "/">;
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
postCommentOnError?: boolean;
|
|
47
|
-
settingsSchema?: TAnySchema;
|
|
48
|
-
envSchema?: TAnySchema;
|
|
49
|
-
commandSchema?: TAnySchema;
|
|
50
|
-
kernelPublicKey?: string;
|
|
51
|
-
/**
|
|
52
|
-
* @deprecated This disables signature verification - only for local development
|
|
53
|
-
*/
|
|
54
|
-
bypassSignatureVerification?: boolean;
|
|
55
|
-
}
|
|
43
|
+
declare function createPlugin<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSupportedEvents extends EmitterWebhookEventName = EmitterWebhookEventName>(handler: (context: Context<TConfig, TEnv, TCommand, TSupportedEvents>) => HandlerReturn, manifest: Manifest, options?: Options): Hono<hono_types.BlankEnv, hono_types.BlankSchema, "/">;
|
|
44
|
+
|
|
56
45
|
declare function createActionsPlugin<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSupportedEvents extends EmitterWebhookEventName = EmitterWebhookEventName>(handler: (context: Context<TConfig, TEnv, TCommand, TSupportedEvents>) => HandlerReturn, options?: Options): Promise<void>;
|
|
57
46
|
|
|
47
|
+
interface CommentOptions {
|
|
48
|
+
raw?: boolean;
|
|
49
|
+
updateComment?: boolean;
|
|
50
|
+
}
|
|
51
|
+
type PostComment = {
|
|
52
|
+
(context: Context, message: LogReturn | Error, options?: CommentOptions): Promise<void>;
|
|
53
|
+
lastCommentId?: number;
|
|
54
|
+
};
|
|
58
55
|
/**
|
|
59
56
|
* Posts a comment on a GitHub issue if the issue exists in the context payload, embedding structured metadata to it.
|
|
60
57
|
*/
|
|
61
|
-
declare
|
|
58
|
+
declare const postComment: PostComment;
|
|
62
59
|
|
|
63
60
|
export { type Context, createActionsPlugin, createPlugin, postComment };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as hono_types from 'hono/types';
|
|
2
2
|
import { EmitterWebhookEventName, EmitterWebhookEvent } from '@octokit/webhooks';
|
|
3
|
-
import { TAnySchema } from '@sinclair/typebox';
|
|
4
|
-
import { Logs, LogLevel, LogReturn } from '@ubiquity-os/ubiquity-os-logger';
|
|
5
3
|
import { Hono } from 'hono';
|
|
4
|
+
import { Logs, LogLevel, LogReturn } from '@ubiquity-os/ubiquity-os-logger';
|
|
6
5
|
import { customOctokit } from './octokit.js';
|
|
7
6
|
import { Manifest } from './manifest.js';
|
|
7
|
+
import { TAnySchema } from '@sinclair/typebox';
|
|
8
8
|
import '@octokit/core/dist-types/types';
|
|
9
9
|
import '@octokit/plugin-paginate-graphql';
|
|
10
10
|
import '@octokit/plugin-rest-endpoint-methods';
|
|
@@ -27,7 +27,7 @@ interface Context<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSuppor
|
|
|
27
27
|
type Return = Record<string, unknown> | undefined | void;
|
|
28
28
|
type HandlerReturn = Promise<Return> | Return;
|
|
29
29
|
|
|
30
|
-
interface Options
|
|
30
|
+
interface Options {
|
|
31
31
|
kernelPublicKey?: string;
|
|
32
32
|
logLevel?: LogLevel;
|
|
33
33
|
postCommentOnError?: boolean;
|
|
@@ -39,25 +39,22 @@ interface Options$1 {
|
|
|
39
39
|
*/
|
|
40
40
|
bypassSignatureVerification?: boolean;
|
|
41
41
|
}
|
|
42
|
-
declare function createPlugin<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSupportedEvents extends EmitterWebhookEventName = EmitterWebhookEventName>(handler: (context: Context<TConfig, TEnv, TCommand, TSupportedEvents>) => HandlerReturn, manifest: Manifest, options?: Options$1): Hono<hono_types.BlankEnv, hono_types.BlankSchema, "/">;
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
postCommentOnError?: boolean;
|
|
47
|
-
settingsSchema?: TAnySchema;
|
|
48
|
-
envSchema?: TAnySchema;
|
|
49
|
-
commandSchema?: TAnySchema;
|
|
50
|
-
kernelPublicKey?: string;
|
|
51
|
-
/**
|
|
52
|
-
* @deprecated This disables signature verification - only for local development
|
|
53
|
-
*/
|
|
54
|
-
bypassSignatureVerification?: boolean;
|
|
55
|
-
}
|
|
43
|
+
declare function createPlugin<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSupportedEvents extends EmitterWebhookEventName = EmitterWebhookEventName>(handler: (context: Context<TConfig, TEnv, TCommand, TSupportedEvents>) => HandlerReturn, manifest: Manifest, options?: Options): Hono<hono_types.BlankEnv, hono_types.BlankSchema, "/">;
|
|
44
|
+
|
|
56
45
|
declare function createActionsPlugin<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSupportedEvents extends EmitterWebhookEventName = EmitterWebhookEventName>(handler: (context: Context<TConfig, TEnv, TCommand, TSupportedEvents>) => HandlerReturn, options?: Options): Promise<void>;
|
|
57
46
|
|
|
47
|
+
interface CommentOptions {
|
|
48
|
+
raw?: boolean;
|
|
49
|
+
updateComment?: boolean;
|
|
50
|
+
}
|
|
51
|
+
type PostComment = {
|
|
52
|
+
(context: Context, message: LogReturn | Error, options?: CommentOptions): Promise<void>;
|
|
53
|
+
lastCommentId?: number;
|
|
54
|
+
};
|
|
58
55
|
/**
|
|
59
56
|
* Posts a comment on a GitHub issue if the issue exists in the context payload, embedding structured metadata to it.
|
|
60
57
|
*/
|
|
61
|
-
declare
|
|
58
|
+
declare const postComment: PostComment;
|
|
62
59
|
|
|
63
60
|
export { type Context, createActionsPlugin, createPlugin, postComment };
|
package/dist/index.js
CHANGED
|
@@ -39,39 +39,152 @@ module.exports = __toCommonJS(src_exports);
|
|
|
39
39
|
// src/server.ts
|
|
40
40
|
var import_typebox = require("@sinclair/typebox");
|
|
41
41
|
var import_value = require("@sinclair/typebox/value");
|
|
42
|
-
var
|
|
42
|
+
var import_ubiquity_os_logger2 = require("@ubiquity-os/ubiquity-os-logger");
|
|
43
43
|
var import_hono = require("hono");
|
|
44
|
-
var
|
|
44
|
+
var import_adapter2 = require("hono/adapter");
|
|
45
45
|
var import_http_exception = require("hono/http-exception");
|
|
46
46
|
|
|
47
|
+
// src/helpers/runtime-info.ts
|
|
48
|
+
var import_github = __toESM(require("@actions/github"));
|
|
49
|
+
var import_adapter = require("hono/adapter");
|
|
50
|
+
var PluginRuntimeInfo = class _PluginRuntimeInfo {
|
|
51
|
+
static _instance = null;
|
|
52
|
+
_env = {};
|
|
53
|
+
constructor(env) {
|
|
54
|
+
if (env) {
|
|
55
|
+
this._env = env;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
static getInstance(env) {
|
|
59
|
+
if (!_PluginRuntimeInfo._instance) {
|
|
60
|
+
_PluginRuntimeInfo._instance = (0, import_adapter.getRuntimeKey)() === "workerd" ? new CfRuntimeInfo(env) : new NodeRuntimeInfo(env);
|
|
61
|
+
}
|
|
62
|
+
return _PluginRuntimeInfo._instance;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
var CfRuntimeInfo = class extends PluginRuntimeInfo {
|
|
66
|
+
get version() {
|
|
67
|
+
return Promise.resolve(this._env.CLOUDFLARE_VERSION_METADATA?.id ?? "CLOUDFLARE_VERSION_METADATA");
|
|
68
|
+
}
|
|
69
|
+
get runUrl() {
|
|
70
|
+
const accountId = this._env.CLOUDFLARE_ACCOUNT_ID ?? "<missing-cloudflare-account-id>";
|
|
71
|
+
const workerName = this._env.CLOUDFLARE_WORKER_NAME;
|
|
72
|
+
const toTime = Date.now() + 6e4;
|
|
73
|
+
const fromTime = Date.now() - 6e4;
|
|
74
|
+
const timeParam = encodeURIComponent(`{"type":"absolute","to":${toTime},"from":${fromTime}}`);
|
|
75
|
+
return `https://dash.cloudflare.com/${accountId}/workers/services/view/${workerName}/production/observability/logs?granularity=0&time=${timeParam}`;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
var NodeRuntimeInfo = class extends PluginRuntimeInfo {
|
|
79
|
+
get version() {
|
|
80
|
+
return Promise.resolve(import_github.default.context.sha);
|
|
81
|
+
}
|
|
82
|
+
get runUrl() {
|
|
83
|
+
return import_github.default.context.payload.repository ? `${import_github.default.context.payload.repository?.html_url}/actions/runs/${import_github.default.context.runId}` : "http://localhost";
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// src/util.ts
|
|
88
|
+
var import_ubiquity_os_logger = require("@ubiquity-os/ubiquity-os-logger");
|
|
89
|
+
|
|
90
|
+
// src/constants.ts
|
|
91
|
+
var KERNEL_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----
|
|
92
|
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs96DOU+JqM8SyNXOB6u3
|
|
93
|
+
uBKIFiyrcST/LZTYN6y7LeJlyCuGPqSDrWCfjU9Ph5PLf9TWiNmeM8DGaOpwEFC7
|
|
94
|
+
U3NRxOSglo4plnQ5zRwIHHXvxyK400sQP2oISXymISuBQWjEIqkC9DybQrKwNzf+
|
|
95
|
+
I0JHWPqmwMIw26UvVOtXGOOWBqTkk+N2+/9f8eDIJP5QQVwwszc8s1rXOsLMlVIf
|
|
96
|
+
wShw7GO4E2jyK8TSJKpyjV8eb1JJMDwFhPiRrtZfQJUtDf2mV/67shQww61BH2Y/
|
|
97
|
+
Plnalo58kWIbkqZoq1yJrL5sFb73osM5+vADTXVn79bkvea7W19nSkdMiarYt4Hq
|
|
98
|
+
JQIDAQAB
|
|
99
|
+
-----END PUBLIC KEY-----
|
|
100
|
+
`;
|
|
101
|
+
|
|
47
102
|
// src/util.ts
|
|
48
103
|
function sanitizeMetadata(obj) {
|
|
49
104
|
return JSON.stringify(obj, null, 2).replace(/</g, "<").replace(/>/g, ">").replace(/--/g, "--");
|
|
50
105
|
}
|
|
106
|
+
function getPluginOptions(options) {
|
|
107
|
+
return {
|
|
108
|
+
// Important to use || and not ?? to not consider empty strings
|
|
109
|
+
kernelPublicKey: options?.kernelPublicKey || KERNEL_PUBLIC_KEY,
|
|
110
|
+
logLevel: options?.logLevel ?? import_ubiquity_os_logger.LOG_LEVEL.INFO,
|
|
111
|
+
postCommentOnError: options?.postCommentOnError ?? true,
|
|
112
|
+
settingsSchema: options?.settingsSchema,
|
|
113
|
+
envSchema: options?.envSchema,
|
|
114
|
+
commandSchema: options?.commandSchema,
|
|
115
|
+
bypassSignatureVerification: options?.bypassSignatureVerification || false
|
|
116
|
+
};
|
|
117
|
+
}
|
|
51
118
|
|
|
52
119
|
// src/comment.ts
|
|
53
|
-
var HEADER_NAME = "
|
|
54
|
-
async function
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
});
|
|
120
|
+
var HEADER_NAME = "UbiquityOS";
|
|
121
|
+
var postComment = async function(context2, message, options = { updateComment: true, raw: false }) {
|
|
122
|
+
let issueNumber;
|
|
123
|
+
if ("issue" in context2.payload) {
|
|
124
|
+
issueNumber = context2.payload.issue.number;
|
|
125
|
+
} else if ("pull_request" in context2.payload) {
|
|
126
|
+
issueNumber = context2.payload.pull_request.number;
|
|
127
|
+
} else if ("discussion" in context2.payload) {
|
|
128
|
+
issueNumber = context2.payload.discussion.number;
|
|
63
129
|
} else {
|
|
64
|
-
context2.logger.info("Cannot post comment because issue is not found in the payload");
|
|
130
|
+
context2.logger.info("Cannot post comment because issue is not found in the payload.");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if ("repository" in context2.payload && context2.payload.repository?.owner?.login) {
|
|
134
|
+
const body = await createStructuredMetadataWithMessage(context2, message, options);
|
|
135
|
+
if (options.updateComment && postComment.lastCommentId) {
|
|
136
|
+
await context2.octokit.rest.issues.updateComment({
|
|
137
|
+
owner: context2.payload.repository.owner.login,
|
|
138
|
+
repo: context2.payload.repository.name,
|
|
139
|
+
comment_id: postComment.lastCommentId,
|
|
140
|
+
body
|
|
141
|
+
});
|
|
142
|
+
} else {
|
|
143
|
+
const commentData = await context2.octokit.rest.issues.createComment({
|
|
144
|
+
owner: context2.payload.repository.owner.login,
|
|
145
|
+
repo: context2.payload.repository.name,
|
|
146
|
+
issue_number: issueNumber,
|
|
147
|
+
body
|
|
148
|
+
});
|
|
149
|
+
postComment.lastCommentId = commentData.data.id;
|
|
150
|
+
}
|
|
151
|
+
} else {
|
|
152
|
+
context2.logger.info("Cannot post comment because repository is not found in the payload.", { payload: context2.payload });
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
async function createStructuredMetadataWithMessage(context2, message, options) {
|
|
156
|
+
let logMessage;
|
|
157
|
+
let callingFnName;
|
|
158
|
+
let instigatorName;
|
|
159
|
+
let metadata;
|
|
160
|
+
if (message instanceof Error) {
|
|
161
|
+
metadata = {
|
|
162
|
+
message: message.message,
|
|
163
|
+
name: message.name,
|
|
164
|
+
stack: message.stack
|
|
165
|
+
};
|
|
166
|
+
callingFnName = message.stack?.split("\n")[2]?.match(/at (\S+)/)?.[1] ?? "anonymous";
|
|
167
|
+
logMessage = context2.logger.error(message.message).logMessage;
|
|
168
|
+
} else if (message.metadata) {
|
|
169
|
+
metadata = {
|
|
170
|
+
message: message.metadata.message,
|
|
171
|
+
stack: message.metadata.stack || message.metadata.error?.stack,
|
|
172
|
+
caller: message.metadata.caller || message.metadata.error?.stack?.split("\n")[2]?.match(/at (\S+)/)?.[1]
|
|
173
|
+
};
|
|
174
|
+
logMessage = message.logMessage;
|
|
175
|
+
callingFnName = metadata.caller;
|
|
176
|
+
} else {
|
|
177
|
+
metadata = { ...message };
|
|
65
178
|
}
|
|
66
|
-
}
|
|
67
|
-
function createStructuredMetadata(className, logReturn) {
|
|
68
|
-
const logMessage = logReturn.logMessage;
|
|
69
|
-
const metadata = logReturn.metadata;
|
|
70
179
|
const jsonPretty = sanitizeMetadata(metadata);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
180
|
+
if ("installation" in context2.payload && context2.payload.installation && "account" in context2.payload.installation) {
|
|
181
|
+
instigatorName = context2.payload.installation?.account?.name;
|
|
182
|
+
} else {
|
|
183
|
+
instigatorName = context2.payload.sender?.login || HEADER_NAME;
|
|
184
|
+
}
|
|
185
|
+
const runUrl = PluginRuntimeInfo.getInstance().runUrl;
|
|
186
|
+
const version = await PluginRuntimeInfo.getInstance().version;
|
|
187
|
+
const ubiquityMetadataHeader = `<!-- ${HEADER_NAME} - ${runUrl} - ${callingFnName} - ${version} - @${instigatorName}`;
|
|
75
188
|
let metadataSerialized;
|
|
76
189
|
const metadataSerializedVisible = ["```json", jsonPretty, "```"].join("\n");
|
|
77
190
|
const metadataSerializedHidden = [ubiquityMetadataHeader, jsonPretty, "-->"].join("\n");
|
|
@@ -80,23 +193,12 @@ function createStructuredMetadata(className, logReturn) {
|
|
|
80
193
|
} else {
|
|
81
194
|
metadataSerialized = metadataSerializedHidden;
|
|
82
195
|
}
|
|
83
|
-
return
|
|
196
|
+
return `${options.raw ? logMessage?.raw : logMessage?.diff}
|
|
197
|
+
|
|
84
198
|
${metadataSerialized}
|
|
85
199
|
`;
|
|
86
200
|
}
|
|
87
201
|
|
|
88
|
-
// src/constants.ts
|
|
89
|
-
var KERNEL_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----
|
|
90
|
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs96DOU+JqM8SyNXOB6u3
|
|
91
|
-
uBKIFiyrcST/LZTYN6y7LeJlyCuGPqSDrWCfjU9Ph5PLf9TWiNmeM8DGaOpwEFC7
|
|
92
|
-
U3NRxOSglo4plnQ5zRwIHHXvxyK400sQP2oISXymISuBQWjEIqkC9DybQrKwNzf+
|
|
93
|
-
I0JHWPqmwMIw26UvVOtXGOOWBqTkk+N2+/9f8eDIJP5QQVwwszc8s1rXOsLMlVIf
|
|
94
|
-
wShw7GO4E2jyK8TSJKpyjV8eb1JJMDwFhPiRrtZfQJUtDf2mV/67shQww61BH2Y/
|
|
95
|
-
Plnalo58kWIbkqZoq1yJrL5sFb73osM5+vADTXVn79bkvea7W19nSkdMiarYt4Hq
|
|
96
|
-
JQIDAQAB
|
|
97
|
-
-----END PUBLIC KEY-----
|
|
98
|
-
`;
|
|
99
|
-
|
|
100
202
|
// src/octokit.ts
|
|
101
203
|
var import_core = require("@octokit/core");
|
|
102
204
|
var import_plugin_paginate_rest = require("@octokit/plugin-paginate-rest");
|
|
@@ -169,15 +271,7 @@ var inputSchema = import_typebox.Type.Object({
|
|
|
169
271
|
signature: import_typebox.Type.String()
|
|
170
272
|
});
|
|
171
273
|
function createPlugin(handler, manifest, options) {
|
|
172
|
-
const pluginOptions =
|
|
173
|
-
kernelPublicKey: options?.kernelPublicKey ?? KERNEL_PUBLIC_KEY,
|
|
174
|
-
logLevel: options?.logLevel ?? import_ubiquity_os_logger.LOG_LEVEL.INFO,
|
|
175
|
-
postCommentOnError: options?.postCommentOnError ?? true,
|
|
176
|
-
settingsSchema: options?.settingsSchema,
|
|
177
|
-
envSchema: options?.envSchema,
|
|
178
|
-
commandSchema: options?.commandSchema,
|
|
179
|
-
bypassSignatureVerification: options?.bypassSignatureVerification || false
|
|
180
|
-
};
|
|
274
|
+
const pluginOptions = getPluginOptions(options);
|
|
181
275
|
const app = new import_hono.Hono();
|
|
182
276
|
app.get("/manifest.json", (ctx) => {
|
|
183
277
|
return ctx.json(manifest);
|
|
@@ -209,7 +303,7 @@ function createPlugin(handler, manifest, options) {
|
|
|
209
303
|
config2 = inputs.settings;
|
|
210
304
|
}
|
|
211
305
|
let env;
|
|
212
|
-
const honoEnvironment = (0,
|
|
306
|
+
const honoEnvironment = (0, import_adapter2.env)(ctx);
|
|
213
307
|
if (pluginOptions.envSchema) {
|
|
214
308
|
try {
|
|
215
309
|
env = import_value.Value.Decode(pluginOptions.envSchema, import_value.Value.Default(pluginOptions.envSchema, honoEnvironment));
|
|
@@ -220,6 +314,8 @@ function createPlugin(handler, manifest, options) {
|
|
|
220
314
|
} else {
|
|
221
315
|
env = ctx.env;
|
|
222
316
|
}
|
|
317
|
+
const workerName = new URL(inputs.ref).hostname.split(".")[0];
|
|
318
|
+
PluginRuntimeInfo.getInstance({ ...env, CLOUDFLARE_WORKER_NAME: workerName });
|
|
223
319
|
let command = null;
|
|
224
320
|
if (inputs.command && pluginOptions.commandSchema) {
|
|
225
321
|
try {
|
|
@@ -238,7 +334,7 @@ function createPlugin(handler, manifest, options) {
|
|
|
238
334
|
octokit: new customOctokit({ auth: inputs.authToken }),
|
|
239
335
|
config: config2,
|
|
240
336
|
env,
|
|
241
|
-
logger: new
|
|
337
|
+
logger: new import_ubiquity_os_logger2.Logs(pluginOptions.logLevel)
|
|
242
338
|
};
|
|
243
339
|
try {
|
|
244
340
|
const result = await handler(context2);
|
|
@@ -246,9 +342,7 @@ function createPlugin(handler, manifest, options) {
|
|
|
246
342
|
} catch (error) {
|
|
247
343
|
console.error(error);
|
|
248
344
|
let loggerError;
|
|
249
|
-
if (error instanceof Error) {
|
|
250
|
-
loggerError = context2.logger.error(`Error: ${error}`, { error });
|
|
251
|
-
} else if (error instanceof import_ubiquity_os_logger.LogReturn) {
|
|
345
|
+
if (error instanceof Error || error instanceof import_ubiquity_os_logger2.LogReturn) {
|
|
252
346
|
loggerError = error;
|
|
253
347
|
} else {
|
|
254
348
|
loggerError = context2.logger.error(`Error: ${error}`);
|
|
@@ -264,26 +358,26 @@ function createPlugin(handler, manifest, options) {
|
|
|
264
358
|
|
|
265
359
|
// src/actions.ts
|
|
266
360
|
var core = __toESM(require("@actions/core"));
|
|
267
|
-
var
|
|
361
|
+
var github2 = __toESM(require("@actions/github"));
|
|
268
362
|
var import_typebox4 = require("@sinclair/typebox");
|
|
269
363
|
var import_value3 = require("@sinclair/typebox/value");
|
|
270
|
-
var
|
|
364
|
+
var import_ubiquity_os_logger3 = require("@ubiquity-os/ubiquity-os-logger");
|
|
271
365
|
var import_dotenv = require("dotenv");
|
|
272
366
|
|
|
273
|
-
// src/types/
|
|
367
|
+
// src/types/command.ts
|
|
274
368
|
var import_typebox2 = require("@sinclair/typebox");
|
|
369
|
+
var commandCallSchema = import_typebox2.Type.Union([import_typebox2.Type.Null(), import_typebox2.Type.Object({ name: import_typebox2.Type.String(), parameters: import_typebox2.Type.Unknown() })]);
|
|
370
|
+
|
|
371
|
+
// src/types/util.ts
|
|
372
|
+
var import_typebox3 = require("@sinclair/typebox");
|
|
275
373
|
var import_value2 = require("@sinclair/typebox/value");
|
|
276
374
|
function jsonType(type) {
|
|
277
|
-
return
|
|
375
|
+
return import_typebox3.Type.Transform(import_typebox3.Type.String()).Decode((value) => {
|
|
278
376
|
const parsed = JSON.parse(value);
|
|
279
377
|
return import_value2.Value.Decode(type, import_value2.Value.Default(type, parsed));
|
|
280
378
|
}).Encode((value) => JSON.stringify(value));
|
|
281
379
|
}
|
|
282
380
|
|
|
283
|
-
// src/types/command.ts
|
|
284
|
-
var import_typebox3 = require("@sinclair/typebox");
|
|
285
|
-
var commandCallSchema = import_typebox3.Type.Union([import_typebox3.Type.Null(), import_typebox3.Type.Object({ name: import_typebox3.Type.String(), parameters: import_typebox3.Type.Unknown() })]);
|
|
286
|
-
|
|
287
381
|
// src/actions.ts
|
|
288
382
|
(0, import_dotenv.config)();
|
|
289
383
|
var inputSchema2 = import_typebox4.Type.Object({
|
|
@@ -297,27 +391,19 @@ var inputSchema2 = import_typebox4.Type.Object({
|
|
|
297
391
|
signature: import_typebox4.Type.String()
|
|
298
392
|
});
|
|
299
393
|
async function createActionsPlugin(handler, options) {
|
|
300
|
-
const pluginOptions =
|
|
301
|
-
logLevel: options?.logLevel ?? import_ubiquity_os_logger2.LOG_LEVEL.INFO,
|
|
302
|
-
postCommentOnError: options?.postCommentOnError ?? true,
|
|
303
|
-
settingsSchema: options?.settingsSchema,
|
|
304
|
-
envSchema: options?.envSchema,
|
|
305
|
-
commandSchema: options?.commandSchema,
|
|
306
|
-
kernelPublicKey: options?.kernelPublicKey ?? KERNEL_PUBLIC_KEY,
|
|
307
|
-
bypassSignatureVerification: options?.bypassSignatureVerification || false
|
|
308
|
-
};
|
|
394
|
+
const pluginOptions = getPluginOptions(options);
|
|
309
395
|
const pluginGithubToken = process.env.PLUGIN_GITHUB_TOKEN;
|
|
310
396
|
if (!pluginGithubToken) {
|
|
311
397
|
core.setFailed("Error: PLUGIN_GITHUB_TOKEN env is not set");
|
|
312
398
|
return;
|
|
313
399
|
}
|
|
314
|
-
const body =
|
|
400
|
+
const body = github2.context.payload.inputs;
|
|
315
401
|
const signature = body.signature;
|
|
316
402
|
if (!pluginOptions.bypassSignatureVerification && !await verifySignature(pluginOptions.kernelPublicKey, body, signature)) {
|
|
317
403
|
core.setFailed(`Error: Invalid signature`);
|
|
318
404
|
return;
|
|
319
405
|
}
|
|
320
|
-
const inputPayload =
|
|
406
|
+
const inputPayload = github2.context.payload.inputs;
|
|
321
407
|
const inputSchemaErrors = [...import_value3.Value.Errors(inputSchema2, inputPayload)];
|
|
322
408
|
if (inputSchemaErrors.length) {
|
|
323
409
|
console.dir(inputSchemaErrors, { depth: null });
|
|
@@ -365,7 +451,7 @@ async function createActionsPlugin(handler, options) {
|
|
|
365
451
|
octokit: new customOctokit({ auth: inputs.authToken }),
|
|
366
452
|
config: config2,
|
|
367
453
|
env,
|
|
368
|
-
logger: new
|
|
454
|
+
logger: new import_ubiquity_os_logger3.Logs(pluginOptions.logLevel)
|
|
369
455
|
};
|
|
370
456
|
try {
|
|
371
457
|
const result = await handler(context2);
|
|
@@ -377,7 +463,7 @@ async function createActionsPlugin(handler, options) {
|
|
|
377
463
|
if (error instanceof Error) {
|
|
378
464
|
core.setFailed(error);
|
|
379
465
|
loggerError = context2.logger.error(`Error: ${error}`, { error });
|
|
380
|
-
} else if (error instanceof
|
|
466
|
+
} else if (error instanceof import_ubiquity_os_logger3.LogReturn) {
|
|
381
467
|
core.setFailed(error.logMessage.raw);
|
|
382
468
|
loggerError = error;
|
|
383
469
|
} else {
|
|
@@ -385,34 +471,15 @@ async function createActionsPlugin(handler, options) {
|
|
|
385
471
|
loggerError = context2.logger.error(`Error: ${error}`);
|
|
386
472
|
}
|
|
387
473
|
if (pluginOptions.postCommentOnError && loggerError) {
|
|
388
|
-
await
|
|
474
|
+
await postComment(context2, loggerError);
|
|
389
475
|
}
|
|
390
476
|
}
|
|
391
477
|
}
|
|
392
|
-
async function postErrorComment(context2, error) {
|
|
393
|
-
if ("issue" in context2.payload && context2.payload.repository?.owner?.login) {
|
|
394
|
-
await context2.octokit.rest.issues.createComment({
|
|
395
|
-
owner: context2.payload.repository.owner.login,
|
|
396
|
-
repo: context2.payload.repository.name,
|
|
397
|
-
issue_number: context2.payload.issue.number,
|
|
398
|
-
body: `${error.logMessage.diff}
|
|
399
|
-
<!--
|
|
400
|
-
${getGithubWorkflowRunUrl()}
|
|
401
|
-
${sanitizeMetadata(error.metadata)}
|
|
402
|
-
-->`
|
|
403
|
-
});
|
|
404
|
-
} else {
|
|
405
|
-
context2.logger.info("Cannot post error comment because issue is not found in the payload");
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
function getGithubWorkflowRunUrl() {
|
|
409
|
-
return `${github.context.payload.repository?.html_url}/actions/runs/${github.context.runId}`;
|
|
410
|
-
}
|
|
411
478
|
async function returnDataToKernel(repoToken, stateId, output) {
|
|
412
479
|
const octokit = new customOctokit({ auth: repoToken });
|
|
413
480
|
await octokit.rest.repos.createDispatchEvent({
|
|
414
|
-
owner:
|
|
415
|
-
repo:
|
|
481
|
+
owner: github2.context.repo.owner,
|
|
482
|
+
repo: github2.context.repo.repo,
|
|
416
483
|
event_type: "return-data-to-ubiquity-os-kernel",
|
|
417
484
|
client_payload: {
|
|
418
485
|
state_id: stateId,
|
package/dist/index.mjs
CHANGED
|
@@ -1,39 +1,152 @@
|
|
|
1
1
|
// src/server.ts
|
|
2
2
|
import { Type as T } from "@sinclair/typebox";
|
|
3
3
|
import { Value } from "@sinclair/typebox/value";
|
|
4
|
-
import {
|
|
4
|
+
import { LogReturn as LogReturn2, Logs } from "@ubiquity-os/ubiquity-os-logger";
|
|
5
5
|
import { Hono } from "hono";
|
|
6
6
|
import { env as honoEnv } from "hono/adapter";
|
|
7
7
|
import { HTTPException } from "hono/http-exception";
|
|
8
8
|
|
|
9
|
+
// src/helpers/runtime-info.ts
|
|
10
|
+
import github from "@actions/github";
|
|
11
|
+
import { getRuntimeKey } from "hono/adapter";
|
|
12
|
+
var PluginRuntimeInfo = class _PluginRuntimeInfo {
|
|
13
|
+
static _instance = null;
|
|
14
|
+
_env = {};
|
|
15
|
+
constructor(env) {
|
|
16
|
+
if (env) {
|
|
17
|
+
this._env = env;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static getInstance(env) {
|
|
21
|
+
if (!_PluginRuntimeInfo._instance) {
|
|
22
|
+
_PluginRuntimeInfo._instance = getRuntimeKey() === "workerd" ? new CfRuntimeInfo(env) : new NodeRuntimeInfo(env);
|
|
23
|
+
}
|
|
24
|
+
return _PluginRuntimeInfo._instance;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var CfRuntimeInfo = class extends PluginRuntimeInfo {
|
|
28
|
+
get version() {
|
|
29
|
+
return Promise.resolve(this._env.CLOUDFLARE_VERSION_METADATA?.id ?? "CLOUDFLARE_VERSION_METADATA");
|
|
30
|
+
}
|
|
31
|
+
get runUrl() {
|
|
32
|
+
const accountId = this._env.CLOUDFLARE_ACCOUNT_ID ?? "<missing-cloudflare-account-id>";
|
|
33
|
+
const workerName = this._env.CLOUDFLARE_WORKER_NAME;
|
|
34
|
+
const toTime = Date.now() + 6e4;
|
|
35
|
+
const fromTime = Date.now() - 6e4;
|
|
36
|
+
const timeParam = encodeURIComponent(`{"type":"absolute","to":${toTime},"from":${fromTime}}`);
|
|
37
|
+
return `https://dash.cloudflare.com/${accountId}/workers/services/view/${workerName}/production/observability/logs?granularity=0&time=${timeParam}`;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var NodeRuntimeInfo = class extends PluginRuntimeInfo {
|
|
41
|
+
get version() {
|
|
42
|
+
return Promise.resolve(github.context.sha);
|
|
43
|
+
}
|
|
44
|
+
get runUrl() {
|
|
45
|
+
return github.context.payload.repository ? `${github.context.payload.repository?.html_url}/actions/runs/${github.context.runId}` : "http://localhost";
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/util.ts
|
|
50
|
+
import { LOG_LEVEL } from "@ubiquity-os/ubiquity-os-logger";
|
|
51
|
+
|
|
52
|
+
// src/constants.ts
|
|
53
|
+
var KERNEL_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----
|
|
54
|
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs96DOU+JqM8SyNXOB6u3
|
|
55
|
+
uBKIFiyrcST/LZTYN6y7LeJlyCuGPqSDrWCfjU9Ph5PLf9TWiNmeM8DGaOpwEFC7
|
|
56
|
+
U3NRxOSglo4plnQ5zRwIHHXvxyK400sQP2oISXymISuBQWjEIqkC9DybQrKwNzf+
|
|
57
|
+
I0JHWPqmwMIw26UvVOtXGOOWBqTkk+N2+/9f8eDIJP5QQVwwszc8s1rXOsLMlVIf
|
|
58
|
+
wShw7GO4E2jyK8TSJKpyjV8eb1JJMDwFhPiRrtZfQJUtDf2mV/67shQww61BH2Y/
|
|
59
|
+
Plnalo58kWIbkqZoq1yJrL5sFb73osM5+vADTXVn79bkvea7W19nSkdMiarYt4Hq
|
|
60
|
+
JQIDAQAB
|
|
61
|
+
-----END PUBLIC KEY-----
|
|
62
|
+
`;
|
|
63
|
+
|
|
9
64
|
// src/util.ts
|
|
10
65
|
function sanitizeMetadata(obj) {
|
|
11
66
|
return JSON.stringify(obj, null, 2).replace(/</g, "<").replace(/>/g, ">").replace(/--/g, "--");
|
|
12
67
|
}
|
|
68
|
+
function getPluginOptions(options) {
|
|
69
|
+
return {
|
|
70
|
+
// Important to use || and not ?? to not consider empty strings
|
|
71
|
+
kernelPublicKey: options?.kernelPublicKey || KERNEL_PUBLIC_KEY,
|
|
72
|
+
logLevel: options?.logLevel ?? LOG_LEVEL.INFO,
|
|
73
|
+
postCommentOnError: options?.postCommentOnError ?? true,
|
|
74
|
+
settingsSchema: options?.settingsSchema,
|
|
75
|
+
envSchema: options?.envSchema,
|
|
76
|
+
commandSchema: options?.commandSchema,
|
|
77
|
+
bypassSignatureVerification: options?.bypassSignatureVerification || false
|
|
78
|
+
};
|
|
79
|
+
}
|
|
13
80
|
|
|
14
81
|
// src/comment.ts
|
|
15
|
-
var HEADER_NAME = "
|
|
16
|
-
async function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
82
|
+
var HEADER_NAME = "UbiquityOS";
|
|
83
|
+
var postComment = async function(context2, message, options = { updateComment: true, raw: false }) {
|
|
84
|
+
let issueNumber;
|
|
85
|
+
if ("issue" in context2.payload) {
|
|
86
|
+
issueNumber = context2.payload.issue.number;
|
|
87
|
+
} else if ("pull_request" in context2.payload) {
|
|
88
|
+
issueNumber = context2.payload.pull_request.number;
|
|
89
|
+
} else if ("discussion" in context2.payload) {
|
|
90
|
+
issueNumber = context2.payload.discussion.number;
|
|
25
91
|
} else {
|
|
26
|
-
context2.logger.info("Cannot post comment because issue is not found in the payload");
|
|
92
|
+
context2.logger.info("Cannot post comment because issue is not found in the payload.");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if ("repository" in context2.payload && context2.payload.repository?.owner?.login) {
|
|
96
|
+
const body = await createStructuredMetadataWithMessage(context2, message, options);
|
|
97
|
+
if (options.updateComment && postComment.lastCommentId) {
|
|
98
|
+
await context2.octokit.rest.issues.updateComment({
|
|
99
|
+
owner: context2.payload.repository.owner.login,
|
|
100
|
+
repo: context2.payload.repository.name,
|
|
101
|
+
comment_id: postComment.lastCommentId,
|
|
102
|
+
body
|
|
103
|
+
});
|
|
104
|
+
} else {
|
|
105
|
+
const commentData = await context2.octokit.rest.issues.createComment({
|
|
106
|
+
owner: context2.payload.repository.owner.login,
|
|
107
|
+
repo: context2.payload.repository.name,
|
|
108
|
+
issue_number: issueNumber,
|
|
109
|
+
body
|
|
110
|
+
});
|
|
111
|
+
postComment.lastCommentId = commentData.data.id;
|
|
112
|
+
}
|
|
113
|
+
} else {
|
|
114
|
+
context2.logger.info("Cannot post comment because repository is not found in the payload.", { payload: context2.payload });
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
async function createStructuredMetadataWithMessage(context2, message, options) {
|
|
118
|
+
let logMessage;
|
|
119
|
+
let callingFnName;
|
|
120
|
+
let instigatorName;
|
|
121
|
+
let metadata;
|
|
122
|
+
if (message instanceof Error) {
|
|
123
|
+
metadata = {
|
|
124
|
+
message: message.message,
|
|
125
|
+
name: message.name,
|
|
126
|
+
stack: message.stack
|
|
127
|
+
};
|
|
128
|
+
callingFnName = message.stack?.split("\n")[2]?.match(/at (\S+)/)?.[1] ?? "anonymous";
|
|
129
|
+
logMessage = context2.logger.error(message.message).logMessage;
|
|
130
|
+
} else if (message.metadata) {
|
|
131
|
+
metadata = {
|
|
132
|
+
message: message.metadata.message,
|
|
133
|
+
stack: message.metadata.stack || message.metadata.error?.stack,
|
|
134
|
+
caller: message.metadata.caller || message.metadata.error?.stack?.split("\n")[2]?.match(/at (\S+)/)?.[1]
|
|
135
|
+
};
|
|
136
|
+
logMessage = message.logMessage;
|
|
137
|
+
callingFnName = metadata.caller;
|
|
138
|
+
} else {
|
|
139
|
+
metadata = { ...message };
|
|
27
140
|
}
|
|
28
|
-
}
|
|
29
|
-
function createStructuredMetadata(className, logReturn) {
|
|
30
|
-
const logMessage = logReturn.logMessage;
|
|
31
|
-
const metadata = logReturn.metadata;
|
|
32
141
|
const jsonPretty = sanitizeMetadata(metadata);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
142
|
+
if ("installation" in context2.payload && context2.payload.installation && "account" in context2.payload.installation) {
|
|
143
|
+
instigatorName = context2.payload.installation?.account?.name;
|
|
144
|
+
} else {
|
|
145
|
+
instigatorName = context2.payload.sender?.login || HEADER_NAME;
|
|
146
|
+
}
|
|
147
|
+
const runUrl = PluginRuntimeInfo.getInstance().runUrl;
|
|
148
|
+
const version = await PluginRuntimeInfo.getInstance().version;
|
|
149
|
+
const ubiquityMetadataHeader = `<!-- ${HEADER_NAME} - ${runUrl} - ${callingFnName} - ${version} - @${instigatorName}`;
|
|
37
150
|
let metadataSerialized;
|
|
38
151
|
const metadataSerializedVisible = ["```json", jsonPretty, "```"].join("\n");
|
|
39
152
|
const metadataSerializedHidden = [ubiquityMetadataHeader, jsonPretty, "-->"].join("\n");
|
|
@@ -42,23 +155,12 @@ function createStructuredMetadata(className, logReturn) {
|
|
|
42
155
|
} else {
|
|
43
156
|
metadataSerialized = metadataSerializedHidden;
|
|
44
157
|
}
|
|
45
|
-
return
|
|
158
|
+
return `${options.raw ? logMessage?.raw : logMessage?.diff}
|
|
159
|
+
|
|
46
160
|
${metadataSerialized}
|
|
47
161
|
`;
|
|
48
162
|
}
|
|
49
163
|
|
|
50
|
-
// src/constants.ts
|
|
51
|
-
var KERNEL_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----
|
|
52
|
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs96DOU+JqM8SyNXOB6u3
|
|
53
|
-
uBKIFiyrcST/LZTYN6y7LeJlyCuGPqSDrWCfjU9Ph5PLf9TWiNmeM8DGaOpwEFC7
|
|
54
|
-
U3NRxOSglo4plnQ5zRwIHHXvxyK400sQP2oISXymISuBQWjEIqkC9DybQrKwNzf+
|
|
55
|
-
I0JHWPqmwMIw26UvVOtXGOOWBqTkk+N2+/9f8eDIJP5QQVwwszc8s1rXOsLMlVIf
|
|
56
|
-
wShw7GO4E2jyK8TSJKpyjV8eb1JJMDwFhPiRrtZfQJUtDf2mV/67shQww61BH2Y/
|
|
57
|
-
Plnalo58kWIbkqZoq1yJrL5sFb73osM5+vADTXVn79bkvea7W19nSkdMiarYt4Hq
|
|
58
|
-
JQIDAQAB
|
|
59
|
-
-----END PUBLIC KEY-----
|
|
60
|
-
`;
|
|
61
|
-
|
|
62
164
|
// src/octokit.ts
|
|
63
165
|
import { Octokit } from "@octokit/core";
|
|
64
166
|
import { paginateRest } from "@octokit/plugin-paginate-rest";
|
|
@@ -131,15 +233,7 @@ var inputSchema = T.Object({
|
|
|
131
233
|
signature: T.String()
|
|
132
234
|
});
|
|
133
235
|
function createPlugin(handler, manifest, options) {
|
|
134
|
-
const pluginOptions =
|
|
135
|
-
kernelPublicKey: options?.kernelPublicKey ?? KERNEL_PUBLIC_KEY,
|
|
136
|
-
logLevel: options?.logLevel ?? LOG_LEVEL.INFO,
|
|
137
|
-
postCommentOnError: options?.postCommentOnError ?? true,
|
|
138
|
-
settingsSchema: options?.settingsSchema,
|
|
139
|
-
envSchema: options?.envSchema,
|
|
140
|
-
commandSchema: options?.commandSchema,
|
|
141
|
-
bypassSignatureVerification: options?.bypassSignatureVerification || false
|
|
142
|
-
};
|
|
236
|
+
const pluginOptions = getPluginOptions(options);
|
|
143
237
|
const app = new Hono();
|
|
144
238
|
app.get("/manifest.json", (ctx) => {
|
|
145
239
|
return ctx.json(manifest);
|
|
@@ -182,6 +276,8 @@ function createPlugin(handler, manifest, options) {
|
|
|
182
276
|
} else {
|
|
183
277
|
env = ctx.env;
|
|
184
278
|
}
|
|
279
|
+
const workerName = new URL(inputs.ref).hostname.split(".")[0];
|
|
280
|
+
PluginRuntimeInfo.getInstance({ ...env, CLOUDFLARE_WORKER_NAME: workerName });
|
|
185
281
|
let command = null;
|
|
186
282
|
if (inputs.command && pluginOptions.commandSchema) {
|
|
187
283
|
try {
|
|
@@ -208,9 +304,7 @@ function createPlugin(handler, manifest, options) {
|
|
|
208
304
|
} catch (error) {
|
|
209
305
|
console.error(error);
|
|
210
306
|
let loggerError;
|
|
211
|
-
if (error instanceof Error) {
|
|
212
|
-
loggerError = context2.logger.error(`Error: ${error}`, { error });
|
|
213
|
-
} else if (error instanceof LogReturn) {
|
|
307
|
+
if (error instanceof Error || error instanceof LogReturn2) {
|
|
214
308
|
loggerError = error;
|
|
215
309
|
} else {
|
|
216
310
|
loggerError = context2.logger.error(`Error: ${error}`);
|
|
@@ -226,12 +320,16 @@ function createPlugin(handler, manifest, options) {
|
|
|
226
320
|
|
|
227
321
|
// src/actions.ts
|
|
228
322
|
import * as core from "@actions/core";
|
|
229
|
-
import * as
|
|
323
|
+
import * as github2 from "@actions/github";
|
|
230
324
|
import { Type as T3 } from "@sinclair/typebox";
|
|
231
325
|
import { Value as Value3 } from "@sinclair/typebox/value";
|
|
232
|
-
import {
|
|
326
|
+
import { LogReturn as LogReturn3, Logs as Logs2 } from "@ubiquity-os/ubiquity-os-logger";
|
|
233
327
|
import { config } from "dotenv";
|
|
234
328
|
|
|
329
|
+
// src/types/command.ts
|
|
330
|
+
import { Type as T2 } from "@sinclair/typebox";
|
|
331
|
+
var commandCallSchema = T2.Union([T2.Null(), T2.Object({ name: T2.String(), parameters: T2.Unknown() })]);
|
|
332
|
+
|
|
235
333
|
// src/types/util.ts
|
|
236
334
|
import { Type } from "@sinclair/typebox";
|
|
237
335
|
import { Value as Value2 } from "@sinclair/typebox/value";
|
|
@@ -242,10 +340,6 @@ function jsonType(type) {
|
|
|
242
340
|
}).Encode((value) => JSON.stringify(value));
|
|
243
341
|
}
|
|
244
342
|
|
|
245
|
-
// src/types/command.ts
|
|
246
|
-
import { Type as T2 } from "@sinclair/typebox";
|
|
247
|
-
var commandCallSchema = T2.Union([T2.Null(), T2.Object({ name: T2.String(), parameters: T2.Unknown() })]);
|
|
248
|
-
|
|
249
343
|
// src/actions.ts
|
|
250
344
|
config();
|
|
251
345
|
var inputSchema2 = T3.Object({
|
|
@@ -259,27 +353,19 @@ var inputSchema2 = T3.Object({
|
|
|
259
353
|
signature: T3.String()
|
|
260
354
|
});
|
|
261
355
|
async function createActionsPlugin(handler, options) {
|
|
262
|
-
const pluginOptions =
|
|
263
|
-
logLevel: options?.logLevel ?? LOG_LEVEL2.INFO,
|
|
264
|
-
postCommentOnError: options?.postCommentOnError ?? true,
|
|
265
|
-
settingsSchema: options?.settingsSchema,
|
|
266
|
-
envSchema: options?.envSchema,
|
|
267
|
-
commandSchema: options?.commandSchema,
|
|
268
|
-
kernelPublicKey: options?.kernelPublicKey ?? KERNEL_PUBLIC_KEY,
|
|
269
|
-
bypassSignatureVerification: options?.bypassSignatureVerification || false
|
|
270
|
-
};
|
|
356
|
+
const pluginOptions = getPluginOptions(options);
|
|
271
357
|
const pluginGithubToken = process.env.PLUGIN_GITHUB_TOKEN;
|
|
272
358
|
if (!pluginGithubToken) {
|
|
273
359
|
core.setFailed("Error: PLUGIN_GITHUB_TOKEN env is not set");
|
|
274
360
|
return;
|
|
275
361
|
}
|
|
276
|
-
const body =
|
|
362
|
+
const body = github2.context.payload.inputs;
|
|
277
363
|
const signature = body.signature;
|
|
278
364
|
if (!pluginOptions.bypassSignatureVerification && !await verifySignature(pluginOptions.kernelPublicKey, body, signature)) {
|
|
279
365
|
core.setFailed(`Error: Invalid signature`);
|
|
280
366
|
return;
|
|
281
367
|
}
|
|
282
|
-
const inputPayload =
|
|
368
|
+
const inputPayload = github2.context.payload.inputs;
|
|
283
369
|
const inputSchemaErrors = [...Value3.Errors(inputSchema2, inputPayload)];
|
|
284
370
|
if (inputSchemaErrors.length) {
|
|
285
371
|
console.dir(inputSchemaErrors, { depth: null });
|
|
@@ -339,7 +425,7 @@ async function createActionsPlugin(handler, options) {
|
|
|
339
425
|
if (error instanceof Error) {
|
|
340
426
|
core.setFailed(error);
|
|
341
427
|
loggerError = context2.logger.error(`Error: ${error}`, { error });
|
|
342
|
-
} else if (error instanceof
|
|
428
|
+
} else if (error instanceof LogReturn3) {
|
|
343
429
|
core.setFailed(error.logMessage.raw);
|
|
344
430
|
loggerError = error;
|
|
345
431
|
} else {
|
|
@@ -347,34 +433,15 @@ async function createActionsPlugin(handler, options) {
|
|
|
347
433
|
loggerError = context2.logger.error(`Error: ${error}`);
|
|
348
434
|
}
|
|
349
435
|
if (pluginOptions.postCommentOnError && loggerError) {
|
|
350
|
-
await
|
|
436
|
+
await postComment(context2, loggerError);
|
|
351
437
|
}
|
|
352
438
|
}
|
|
353
439
|
}
|
|
354
|
-
async function postErrorComment(context2, error) {
|
|
355
|
-
if ("issue" in context2.payload && context2.payload.repository?.owner?.login) {
|
|
356
|
-
await context2.octokit.rest.issues.createComment({
|
|
357
|
-
owner: context2.payload.repository.owner.login,
|
|
358
|
-
repo: context2.payload.repository.name,
|
|
359
|
-
issue_number: context2.payload.issue.number,
|
|
360
|
-
body: `${error.logMessage.diff}
|
|
361
|
-
<!--
|
|
362
|
-
${getGithubWorkflowRunUrl()}
|
|
363
|
-
${sanitizeMetadata(error.metadata)}
|
|
364
|
-
-->`
|
|
365
|
-
});
|
|
366
|
-
} else {
|
|
367
|
-
context2.logger.info("Cannot post error comment because issue is not found in the payload");
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
function getGithubWorkflowRunUrl() {
|
|
371
|
-
return `${github.context.payload.repository?.html_url}/actions/runs/${github.context.runId}`;
|
|
372
|
-
}
|
|
373
440
|
async function returnDataToKernel(repoToken, stateId, output) {
|
|
374
441
|
const octokit = new customOctokit({ auth: repoToken });
|
|
375
442
|
await octokit.rest.repos.createDispatchEvent({
|
|
376
|
-
owner:
|
|
377
|
-
repo:
|
|
443
|
+
owner: github2.context.repo.owner,
|
|
444
|
+
repo: github2.context.repo.repo,
|
|
378
445
|
event_type: "return-data-to-ubiquity-os-kernel",
|
|
379
446
|
client_payload: {
|
|
380
447
|
state_id: stateId,
|
package/dist/manifest.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _sinclair_typebox from '@sinclair/typebox';
|
|
2
2
|
import { Static } from '@sinclair/typebox';
|
|
3
3
|
|
|
4
|
-
declare const runEvent: _sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.
|
|
4
|
+
declare const runEvent: _sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "projects_v2_status_update" | "projects_v2_status_update.created" | "projects_v2_status_update.deleted" | "projects_v2_status_update.edited" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.validated" | "secret_scanning_alert_location" | "secret_scanning_alert_location.created" | "security_advisory" | "security_advisory.published" | "security_advisory.updated" | "security_advisory.withdrawn" | "security_and_analysis" | "sponsorship" | "sponsorship.cancelled" | "sponsorship.created" | "sponsorship.edited" | "sponsorship.pending_cancellation" | "sponsorship.pending_tier_change" | "sponsorship.tier_changed" | "star" | "star.created" | "star.deleted" | "status" | "sub_issues" | "sub_issues.parent_issue_added" | "sub_issues.parent_issue_removed" | "sub_issues.sub_issue_added" | "sub_issues.sub_issue_removed" | "team" | "team.added_to_repository" | "team.created" | "team.deleted" | "team.edited" | "team.removed_from_repository" | "team_add" | "watch" | "watch.started" | "workflow_dispatch" | "workflow_job" | "workflow_job.completed" | "workflow_job.in_progress" | "workflow_job.queued" | "workflow_job.waiting" | "workflow_run" | "workflow_run.completed" | "workflow_run.in_progress" | "workflow_run.requested">[]>;
|
|
5
5
|
declare const commandSchema: _sinclair_typebox.TObject<{
|
|
6
6
|
description: _sinclair_typebox.TString;
|
|
7
7
|
"ubiquity:example": _sinclair_typebox.TString;
|
|
@@ -15,7 +15,7 @@ declare const manifestSchema: _sinclair_typebox.TObject<{
|
|
|
15
15
|
"ubiquity:example": _sinclair_typebox.TString;
|
|
16
16
|
parameters: _sinclair_typebox.TOptional<_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TAny>>;
|
|
17
17
|
}>>>;
|
|
18
|
-
"ubiquity:listeners": _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.
|
|
18
|
+
"ubiquity:listeners": _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "projects_v2_status_update" | "projects_v2_status_update.created" | "projects_v2_status_update.deleted" | "projects_v2_status_update.edited" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.validated" | "secret_scanning_alert_location" | "secret_scanning_alert_location.created" | "security_advisory" | "security_advisory.published" | "security_advisory.updated" | "security_advisory.withdrawn" | "security_and_analysis" | "sponsorship" | "sponsorship.cancelled" | "sponsorship.created" | "sponsorship.edited" | "sponsorship.pending_cancellation" | "sponsorship.pending_tier_change" | "sponsorship.tier_changed" | "star" | "star.created" | "star.deleted" | "status" | "sub_issues" | "sub_issues.parent_issue_added" | "sub_issues.parent_issue_removed" | "sub_issues.sub_issue_added" | "sub_issues.sub_issue_removed" | "team" | "team.added_to_repository" | "team.created" | "team.deleted" | "team.edited" | "team.removed_from_repository" | "team_add" | "watch" | "watch.started" | "workflow_dispatch" | "workflow_job" | "workflow_job.completed" | "workflow_job.in_progress" | "workflow_job.queued" | "workflow_job.waiting" | "workflow_run" | "workflow_run.completed" | "workflow_run.in_progress" | "workflow_run.requested">[]>>>;
|
|
19
19
|
configuration: _sinclair_typebox.TOptional<_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TAny>>;
|
|
20
20
|
skipBotEvents: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
21
21
|
}>;
|
package/dist/manifest.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _sinclair_typebox from '@sinclair/typebox';
|
|
2
2
|
import { Static } from '@sinclair/typebox';
|
|
3
3
|
|
|
4
|
-
declare const runEvent: _sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.
|
|
4
|
+
declare const runEvent: _sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "projects_v2_status_update" | "projects_v2_status_update.created" | "projects_v2_status_update.deleted" | "projects_v2_status_update.edited" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.validated" | "secret_scanning_alert_location" | "secret_scanning_alert_location.created" | "security_advisory" | "security_advisory.published" | "security_advisory.updated" | "security_advisory.withdrawn" | "security_and_analysis" | "sponsorship" | "sponsorship.cancelled" | "sponsorship.created" | "sponsorship.edited" | "sponsorship.pending_cancellation" | "sponsorship.pending_tier_change" | "sponsorship.tier_changed" | "star" | "star.created" | "star.deleted" | "status" | "sub_issues" | "sub_issues.parent_issue_added" | "sub_issues.parent_issue_removed" | "sub_issues.sub_issue_added" | "sub_issues.sub_issue_removed" | "team" | "team.added_to_repository" | "team.created" | "team.deleted" | "team.edited" | "team.removed_from_repository" | "team_add" | "watch" | "watch.started" | "workflow_dispatch" | "workflow_job" | "workflow_job.completed" | "workflow_job.in_progress" | "workflow_job.queued" | "workflow_job.waiting" | "workflow_run" | "workflow_run.completed" | "workflow_run.in_progress" | "workflow_run.requested">[]>;
|
|
5
5
|
declare const commandSchema: _sinclair_typebox.TObject<{
|
|
6
6
|
description: _sinclair_typebox.TString;
|
|
7
7
|
"ubiquity:example": _sinclair_typebox.TString;
|
|
@@ -15,7 +15,7 @@ declare const manifestSchema: _sinclair_typebox.TObject<{
|
|
|
15
15
|
"ubiquity:example": _sinclair_typebox.TString;
|
|
16
16
|
parameters: _sinclair_typebox.TOptional<_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TAny>>;
|
|
17
17
|
}>>>;
|
|
18
|
-
"ubiquity:listeners": _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.
|
|
18
|
+
"ubiquity:listeners": _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"branch_protection_configuration" | "branch_protection_configuration.disabled" | "branch_protection_configuration.enabled" | "branch_protection_rule" | "branch_protection_rule.created" | "branch_protection_rule.deleted" | "branch_protection_rule.edited" | "check_run" | "check_run.completed" | "check_run.created" | "check_run.requested_action" | "check_run.rerequested" | "check_suite" | "check_suite.completed" | "check_suite.requested" | "check_suite.rerequested" | "code_scanning_alert" | "code_scanning_alert.appeared_in_branch" | "code_scanning_alert.closed_by_user" | "code_scanning_alert.created" | "code_scanning_alert.fixed" | "code_scanning_alert.reopened" | "code_scanning_alert.reopened_by_user" | "commit_comment" | "commit_comment.created" | "create" | "custom_property" | "custom_property.created" | "custom_property.deleted" | "custom_property.updated" | "custom_property_values" | "custom_property_values.updated" | "delete" | "dependabot_alert" | "dependabot_alert.auto_dismissed" | "dependabot_alert.auto_reopened" | "dependabot_alert.created" | "dependabot_alert.dismissed" | "dependabot_alert.fixed" | "dependabot_alert.reintroduced" | "dependabot_alert.reopened" | "deploy_key" | "deploy_key.created" | "deploy_key.deleted" | "deployment" | "deployment.created" | "deployment_protection_rule" | "deployment_protection_rule.requested" | "deployment_review" | "deployment_review.approved" | "deployment_review.rejected" | "deployment_review.requested" | "deployment_status" | "deployment_status.created" | "discussion" | "discussion.answered" | "discussion.category_changed" | "discussion.closed" | "discussion.created" | "discussion.deleted" | "discussion.edited" | "discussion.labeled" | "discussion.locked" | "discussion.pinned" | "discussion.reopened" | "discussion.transferred" | "discussion.unanswered" | "discussion.unlabeled" | "discussion.unlocked" | "discussion.unpinned" | "discussion_comment" | "discussion_comment.created" | "discussion_comment.deleted" | "discussion_comment.edited" | "fork" | "github_app_authorization" | "github_app_authorization.revoked" | "gollum" | "installation" | "installation.created" | "installation.deleted" | "installation.new_permissions_accepted" | "installation.suspend" | "installation.unsuspend" | "installation_repositories" | "installation_repositories.added" | "installation_repositories.removed" | "installation_target" | "installation_target.renamed" | "issue_comment" | "issue_comment.created" | "issue_comment.deleted" | "issue_comment.edited" | "issues" | "issues.assigned" | "issues.closed" | "issues.deleted" | "issues.demilestoned" | "issues.edited" | "issues.labeled" | "issues.locked" | "issues.milestoned" | "issues.opened" | "issues.pinned" | "issues.reopened" | "issues.transferred" | "issues.unassigned" | "issues.unlabeled" | "issues.unlocked" | "issues.unpinned" | "label" | "label.created" | "label.deleted" | "label.edited" | "marketplace_purchase" | "marketplace_purchase.cancelled" | "marketplace_purchase.changed" | "marketplace_purchase.pending_change" | "marketplace_purchase.pending_change_cancelled" | "marketplace_purchase.purchased" | "member" | "member.added" | "member.edited" | "member.removed" | "membership" | "membership.added" | "membership.removed" | "merge_group" | "merge_group.checks_requested" | "merge_group.destroyed" | "meta" | "meta.deleted" | "milestone" | "milestone.closed" | "milestone.created" | "milestone.deleted" | "milestone.edited" | "milestone.opened" | "org_block" | "org_block.blocked" | "org_block.unblocked" | "organization" | "organization.deleted" | "organization.member_added" | "organization.member_invited" | "organization.member_removed" | "organization.renamed" | "package" | "package.published" | "package.updated" | "page_build" | "personal_access_token_request" | "personal_access_token_request.approved" | "personal_access_token_request.cancelled" | "personal_access_token_request.created" | "personal_access_token_request.denied" | "ping" | "project" | "project.closed" | "project.created" | "project.deleted" | "project.edited" | "project.reopened" | "project_card" | "project_card.converted" | "project_card.created" | "project_card.deleted" | "project_card.edited" | "project_card.moved" | "project_column" | "project_column.created" | "project_column.deleted" | "project_column.edited" | "project_column.moved" | "projects_v2" | "projects_v2.closed" | "projects_v2.created" | "projects_v2.deleted" | "projects_v2.edited" | "projects_v2.reopened" | "projects_v2_item" | "projects_v2_item.archived" | "projects_v2_item.converted" | "projects_v2_item.created" | "projects_v2_item.deleted" | "projects_v2_item.edited" | "projects_v2_item.reordered" | "projects_v2_item.restored" | "projects_v2_status_update" | "projects_v2_status_update.created" | "projects_v2_status_update.deleted" | "projects_v2_status_update.edited" | "public" | "pull_request" | "pull_request.assigned" | "pull_request.auto_merge_disabled" | "pull_request.auto_merge_enabled" | "pull_request.closed" | "pull_request.converted_to_draft" | "pull_request.demilestoned" | "pull_request.dequeued" | "pull_request.edited" | "pull_request.enqueued" | "pull_request.labeled" | "pull_request.locked" | "pull_request.milestoned" | "pull_request.opened" | "pull_request.ready_for_review" | "pull_request.reopened" | "pull_request.review_request_removed" | "pull_request.review_requested" | "pull_request.synchronize" | "pull_request.unassigned" | "pull_request.unlabeled" | "pull_request.unlocked" | "pull_request_review" | "pull_request_review.dismissed" | "pull_request_review.edited" | "pull_request_review.submitted" | "pull_request_review_comment" | "pull_request_review_comment.created" | "pull_request_review_comment.deleted" | "pull_request_review_comment.edited" | "pull_request_review_thread" | "pull_request_review_thread.resolved" | "pull_request_review_thread.unresolved" | "push" | "registry_package" | "registry_package.published" | "registry_package.updated" | "release" | "release.created" | "release.deleted" | "release.edited" | "release.prereleased" | "release.published" | "release.released" | "release.unpublished" | "repository" | "repository.archived" | "repository.created" | "repository.deleted" | "repository.edited" | "repository.privatized" | "repository.publicized" | "repository.renamed" | "repository.transferred" | "repository.unarchived" | "repository_advisory" | "repository_advisory.published" | "repository_advisory.reported" | "repository_dispatch" | "repository_dispatch.sample.collected" | "repository_import" | "repository_ruleset" | "repository_ruleset.created" | "repository_ruleset.deleted" | "repository_ruleset.edited" | "repository_vulnerability_alert" | "repository_vulnerability_alert.create" | "repository_vulnerability_alert.dismiss" | "repository_vulnerability_alert.reopen" | "repository_vulnerability_alert.resolve" | "secret_scanning_alert" | "secret_scanning_alert.created" | "secret_scanning_alert.reopened" | "secret_scanning_alert.resolved" | "secret_scanning_alert.validated" | "secret_scanning_alert_location" | "secret_scanning_alert_location.created" | "security_advisory" | "security_advisory.published" | "security_advisory.updated" | "security_advisory.withdrawn" | "security_and_analysis" | "sponsorship" | "sponsorship.cancelled" | "sponsorship.created" | "sponsorship.edited" | "sponsorship.pending_cancellation" | "sponsorship.pending_tier_change" | "sponsorship.tier_changed" | "star" | "star.created" | "star.deleted" | "status" | "sub_issues" | "sub_issues.parent_issue_added" | "sub_issues.parent_issue_removed" | "sub_issues.sub_issue_added" | "sub_issues.sub_issue_removed" | "team" | "team.added_to_repository" | "team.created" | "team.deleted" | "team.edited" | "team.removed_from_repository" | "team_add" | "watch" | "watch.started" | "workflow_dispatch" | "workflow_job" | "workflow_job.completed" | "workflow_job.in_progress" | "workflow_job.queued" | "workflow_job.waiting" | "workflow_run" | "workflow_run.completed" | "workflow_run.in_progress" | "workflow_run.requested">[]>>>;
|
|
19
19
|
configuration: _sinclair_typebox.TOptional<_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TAny>>;
|
|
20
20
|
skipBotEvents: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
21
21
|
}>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ubiquity-os/plugin-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "SDK for plugin support.",
|
|
5
5
|
"author": "Ubiquity DAO",
|
|
6
6
|
"license": "MIT",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"eslint-config-prettier": "^9.1.0",
|
|
111
111
|
"eslint-plugin-check-file": "^2.8.0",
|
|
112
112
|
"eslint-plugin-prettier": "^5.2.1",
|
|
113
|
-
"eslint-plugin-sonarjs": "^
|
|
113
|
+
"eslint-plugin-sonarjs": "^3.0.1",
|
|
114
114
|
"husky": "^9.0.11",
|
|
115
115
|
"jest": "^29.7.0",
|
|
116
116
|
"jest-junit": "^16.0.0",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
},
|
|
130
130
|
"lint-staged": {
|
|
131
131
|
"*.ts": [
|
|
132
|
-
"
|
|
132
|
+
"prettier --write",
|
|
133
133
|
"eslint --fix"
|
|
134
134
|
],
|
|
135
135
|
"src/**.{ts,json}": [
|