@onkeiki/agents 0.1.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/dist/Alert.d.ts +56 -0
- package/dist/Alert.d.ts.map +1 -0
- package/dist/Alert.js +8 -0
- package/dist/Alert.js.map +1 -0
- package/dist/Entity.d.ts +158 -0
- package/dist/Entity.d.ts.map +1 -0
- package/dist/Entity.js +289 -0
- package/dist/Entity.js.map +1 -0
- package/dist/Kit.d.ts +138 -0
- package/dist/Kit.d.ts.map +1 -0
- package/dist/Kit.js +517 -0
- package/dist/Kit.js.map +1 -0
- package/dist/OpenApi.d.ts +151 -0
- package/dist/OpenApi.d.ts.map +1 -0
- package/dist/OpenApi.js +222 -0
- package/dist/OpenApi.js.map +1 -0
- package/dist/Plugin.d.ts +183 -0
- package/dist/Plugin.d.ts.map +1 -0
- package/dist/Plugin.js +10 -0
- package/dist/Plugin.js.map +1 -0
- package/dist/Server.d.ts +71 -0
- package/dist/Server.d.ts.map +1 -0
- package/dist/Server.js +476 -0
- package/dist/Server.js.map +1 -0
- package/dist/Tool.d.ts +86 -0
- package/dist/Tool.d.ts.map +1 -0
- package/dist/Tool.js +27 -0
- package/dist/Tool.js.map +1 -0
- package/dist/bundle.d.ts +17 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +101 -0
- package/dist/bundle.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/services/Blackboard.d.ts +18 -0
- package/dist/services/Blackboard.d.ts.map +1 -0
- package/dist/services/Blackboard.js +4 -0
- package/dist/services/Blackboard.js.map +1 -0
- package/dist/services/Observability.d.ts +102 -0
- package/dist/services/Observability.d.ts.map +1 -0
- package/dist/services/Observability.js +238 -0
- package/dist/services/Observability.js.map +1 -0
- package/dist/services/Platform.d.ts +112 -0
- package/dist/services/Platform.d.ts.map +1 -0
- package/dist/services/Platform.js +13 -0
- package/dist/services/Platform.js.map +1 -0
- package/dist/services/PluginDb.d.ts +44 -0
- package/dist/services/PluginDb.d.ts.map +1 -0
- package/dist/services/PluginDb.js +5 -0
- package/dist/services/PluginDb.js.map +1 -0
- package/dist/services/Sandbox.d.ts +68 -0
- package/dist/services/Sandbox.d.ts.map +1 -0
- package/dist/services/Sandbox.js +4 -0
- package/dist/services/Sandbox.js.map +1 -0
- package/dist/services/Steering.d.ts +46 -0
- package/dist/services/Steering.d.ts.map +1 -0
- package/dist/services/Steering.js +4 -0
- package/dist/services/Steering.js.map +1 -0
- package/dist/services/Storage.d.ts +63 -0
- package/dist/services/Storage.d.ts.map +1 -0
- package/dist/services/Storage.js +13 -0
- package/dist/services/Storage.js.map +1 -0
- package/dist/services/Transport.d.ts +19 -0
- package/dist/services/Transport.d.ts.map +1 -0
- package/dist/services/Transport.js +4 -0
- package/dist/services/Transport.js.map +1 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +9 -0
- package/dist/services/index.js.map +1 -0
- package/dist/types/config.d.ts +526 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/message.d.ts +54 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +47 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/user.d.ts +16 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +14 -0
- package/dist/types/user.js.map +1 -0
- package/package.json +39 -0
- package/src/Alert.ts +51 -0
- package/src/Entity.ts +543 -0
- package/src/Kit.ts +705 -0
- package/src/OpenApi.ts +343 -0
- package/src/Plugin.ts +209 -0
- package/src/Server.ts +618 -0
- package/src/Tool.ts +110 -0
- package/src/bundle.ts +114 -0
- package/src/index.ts +209 -0
- package/src/services/Blackboard.ts +19 -0
- package/src/services/Observability.ts +320 -0
- package/src/services/Platform.ts +125 -0
- package/src/services/PluginDb.ts +48 -0
- package/src/services/Sandbox.ts +74 -0
- package/src/services/Steering.ts +45 -0
- package/src/services/Storage.ts +76 -0
- package/src/services/Transport.ts +21 -0
- package/src/services/index.ts +8 -0
- package/src/types/config.ts +531 -0
- package/src/types/index.ts +3 -0
- package/src/types/message.ts +60 -0
- package/src/types/user.ts +17 -0
package/dist/Kit.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Kit.js","sourceRoot":"","sources":["../src/Kit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builders for the compact OpenAPI documents a user connection registers with
|
|
3
|
+
* the Executor daemon.
|
|
4
|
+
*
|
|
5
|
+
* Why write a document at all, when every provider publishes one: the daemon
|
|
6
|
+
* derives the OAuth authorization request from the document's security scheme,
|
|
7
|
+
* so a published description is also a scope request. Google's Gmail
|
|
8
|
+
* description declares fourteen scopes headed by `https://mail.google.com/` —
|
|
9
|
+
* full mailbox read, send, delete and settings — which is the hardest thing to
|
|
10
|
+
* get through verification (restricted scope, brand review, annual CASA
|
|
11
|
+
* assessment) and what the consent screen would ask a stranger for over SMS.
|
|
12
|
+
* A connection that reads unread mail and sends replies needs two scopes.
|
|
13
|
+
*
|
|
14
|
+
* So the deal is: name the scopes you want and the operations you drive, and
|
|
15
|
+
* this returns the document declaring exactly that.
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* const drive = googleOpenApiSpec({
|
|
19
|
+
* title: 'Google Drive',
|
|
20
|
+
* baseUrl: 'https://www.googleapis.com/drive/v3',
|
|
21
|
+
* scopes: { 'https://www.googleapis.com/auth/drive.readonly': 'Read the user’s files' },
|
|
22
|
+
* operations: [
|
|
23
|
+
* { operationId: 'files.list', path: '/files', summary: 'Search the user’s files',
|
|
24
|
+
* parameters: [{ name: 'q', in: 'query', schema: { type: 'string' } }] },
|
|
25
|
+
* ],
|
|
26
|
+
* })
|
|
27
|
+
*
|
|
28
|
+
* mcp({ userConnections: [{ name: 'drive', spec: drive.spec, baseUrl: drive.baseUrl, ... }] })
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* The checks below all catch mistakes that are invisible until a user clicks a
|
|
32
|
+
* connect link, which is the worst place to find them.
|
|
33
|
+
*/
|
|
34
|
+
export type OpenApiMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';
|
|
35
|
+
export type OpenApiParameter = {
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly in: 'path' | 'query' | 'header';
|
|
38
|
+
readonly required?: boolean;
|
|
39
|
+
readonly description?: string;
|
|
40
|
+
readonly schema?: unknown;
|
|
41
|
+
};
|
|
42
|
+
/** A parameter declared once in `parameters` and referenced by name. */
|
|
43
|
+
export type OpenApiParameterRef = {
|
|
44
|
+
readonly ref: string;
|
|
45
|
+
};
|
|
46
|
+
export type OpenApiOperation = {
|
|
47
|
+
/**
|
|
48
|
+
* The name the model calls the operation by, and the name a health check
|
|
49
|
+
* names (e.g. `users.messages.send`). Dotted provider-style names keep the
|
|
50
|
+
* generated tools recognizable to a model that knows the real API.
|
|
51
|
+
*/
|
|
52
|
+
readonly operationId: string;
|
|
53
|
+
/** Defaults to `get`. */
|
|
54
|
+
readonly method?: OpenApiMethod;
|
|
55
|
+
/** Server-relative, with `{braces}` around path parameters. */
|
|
56
|
+
readonly path: string;
|
|
57
|
+
readonly summary?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Worth writing whenever the provider does something the schema cannot say
|
|
60
|
+
* — an encoding, a 404 that is not an error, a field that must be echoed
|
|
61
|
+
* back. This is the only documentation the model gets.
|
|
62
|
+
*/
|
|
63
|
+
readonly description?: string;
|
|
64
|
+
readonly parameters?: ReadonlyArray<OpenApiParameter | OpenApiParameterRef>;
|
|
65
|
+
readonly requestBody?: {
|
|
66
|
+
readonly required?: boolean;
|
|
67
|
+
readonly description?: string;
|
|
68
|
+
readonly schema: unknown;
|
|
69
|
+
};
|
|
70
|
+
readonly response?: {
|
|
71
|
+
/** Success status. Defaults to `200`; a delete usually answers `204`. */
|
|
72
|
+
readonly status?: string;
|
|
73
|
+
readonly description?: string;
|
|
74
|
+
/** Omit for a status that has no body. */
|
|
75
|
+
readonly schema?: unknown;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export type OAuthOpenApiSpecInput = {
|
|
79
|
+
readonly title: string;
|
|
80
|
+
readonly description?: string;
|
|
81
|
+
/** Document version, not the provider's API version. Defaults to `1.0`. */
|
|
82
|
+
readonly version?: string;
|
|
83
|
+
/** Absolute base every path is relative to, without a trailing slash. */
|
|
84
|
+
readonly baseUrl: string;
|
|
85
|
+
/** Security scheme name, e.g. `googleOAuth`. */
|
|
86
|
+
readonly schemeName: string;
|
|
87
|
+
readonly authorizationUrl: string;
|
|
88
|
+
readonly tokenUrl: string;
|
|
89
|
+
/**
|
|
90
|
+
* Scope -> what it is for. Every one of these lands on the consent screen,
|
|
91
|
+
* so the map is the review surface: if a scope has no operation here that
|
|
92
|
+
* needs it, drop it.
|
|
93
|
+
*/
|
|
94
|
+
readonly scopes: Readonly<Record<string, string>>;
|
|
95
|
+
/** Shared `#/components/schemas` entries the operations `$ref`. */
|
|
96
|
+
readonly schemas?: Readonly<Record<string, unknown>>;
|
|
97
|
+
/** Shared `#/components/parameters` entries, referenced by `{ ref: name }`. */
|
|
98
|
+
readonly parameters?: Readonly<Record<string, OpenApiParameter>>;
|
|
99
|
+
readonly operations: ReadonlyArray<OpenApiOperation>;
|
|
100
|
+
};
|
|
101
|
+
export type OAuthOpenApiSpec = {
|
|
102
|
+
/** Serialized document, ready for a user connection's `spec`. */
|
|
103
|
+
readonly spec: string;
|
|
104
|
+
/** Matches the connection's `baseUrl` — the daemon calls operations there. */
|
|
105
|
+
readonly baseUrl: string;
|
|
106
|
+
/** Declared scopes, in order: what the client's consent screen must allow. */
|
|
107
|
+
readonly scopes: ReadonlyArray<string>;
|
|
108
|
+
/** Declared operation ids: what a `healthCheck.operation` may name. */
|
|
109
|
+
readonly operations: ReadonlyArray<string>;
|
|
110
|
+
};
|
|
111
|
+
export declare class OpenApiSpecError extends Error {
|
|
112
|
+
readonly name = "OpenApiSpecError";
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* An OpenAPI document with a single OAuth2 authorization-code scheme required
|
|
116
|
+
* for every operation.
|
|
117
|
+
*
|
|
118
|
+
* @throws OpenApiSpecError when the document would be accepted and then
|
|
119
|
+
* misbehave: no scopes (the daemon finds no OAuth scheme and the connection
|
|
120
|
+
* silently becomes unauthenticated), a duplicate operation id (one operation
|
|
121
|
+
* shadows the other), a path parameter nothing declares (the daemon sends
|
|
122
|
+
* `{braces}` to the provider), or a method reused on one path.
|
|
123
|
+
*/
|
|
124
|
+
export declare function oauthOpenApiSpec(input: OAuthOpenApiSpecInput): OAuthOpenApiSpec;
|
|
125
|
+
export declare const GOOGLE_AUTHORIZATION_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
126
|
+
export declare const GOOGLE_TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
127
|
+
/**
|
|
128
|
+
* `oauthOpenApiSpec` with Google's endpoints and a `googleOAuth` scheme.
|
|
129
|
+
*
|
|
130
|
+
* Two Google-specific refusals, both of which otherwise surface as a dead
|
|
131
|
+
* consent screen or a scope no one meant to ask for:
|
|
132
|
+
* - `offline_access` is not a Google scope (Microsoft's is). A refresh token
|
|
133
|
+
* comes from `access_type=offline&prompt=consent`, which the daemon appends
|
|
134
|
+
* to the authorize URL itself.
|
|
135
|
+
* - whole-service scopes, which cost months of verification and ask a user
|
|
136
|
+
* over SMS for their entire mailbox or calendar. Pass `allowBroadScopes`
|
|
137
|
+
* when a connection genuinely needs one.
|
|
138
|
+
*/
|
|
139
|
+
export declare function googleOpenApiSpec(input: Omit<OAuthOpenApiSpecInput, 'schemeName' | 'authorizationUrl' | 'tokenUrl'> & {
|
|
140
|
+
readonly allowBroadScopes?: boolean;
|
|
141
|
+
}): OAuthOpenApiSpec;
|
|
142
|
+
export declare const MICROSOFT_AUTHORIZATION_URL = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
|
|
143
|
+
export declare const MICROSOFT_TOKEN_URL = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
|
|
144
|
+
/**
|
|
145
|
+
* `oauthOpenApiSpec` with Microsoft identity-platform endpoints and a
|
|
146
|
+
* `microsoftOAuth` scheme. `offline_access` is added when absent: unlike
|
|
147
|
+
* Google, Microsoft only issues a refresh token when that scope is requested,
|
|
148
|
+
* and a connection without one dies at the first token expiry.
|
|
149
|
+
*/
|
|
150
|
+
export declare function microsoftOpenApiSpec(input: Omit<OAuthOpenApiSpecInput, 'schemeName' | 'authorizationUrl' | 'tokenUrl'>): OAuthOpenApiSpec;
|
|
151
|
+
//# sourceMappingURL=OpenApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenApi.d.ts","sourceRoot":"","sources":["../src/OpenApi.ts"],"names":[],"mappings":"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"}
|
package/dist/OpenApi.js
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builders for the compact OpenAPI documents a user connection registers with
|
|
3
|
+
* the Executor daemon.
|
|
4
|
+
*
|
|
5
|
+
* Why write a document at all, when every provider publishes one: the daemon
|
|
6
|
+
* derives the OAuth authorization request from the document's security scheme,
|
|
7
|
+
* so a published description is also a scope request. Google's Gmail
|
|
8
|
+
* description declares fourteen scopes headed by `https://mail.google.com/` —
|
|
9
|
+
* full mailbox read, send, delete and settings — which is the hardest thing to
|
|
10
|
+
* get through verification (restricted scope, brand review, annual CASA
|
|
11
|
+
* assessment) and what the consent screen would ask a stranger for over SMS.
|
|
12
|
+
* A connection that reads unread mail and sends replies needs two scopes.
|
|
13
|
+
*
|
|
14
|
+
* So the deal is: name the scopes you want and the operations you drive, and
|
|
15
|
+
* this returns the document declaring exactly that.
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* const drive = googleOpenApiSpec({
|
|
19
|
+
* title: 'Google Drive',
|
|
20
|
+
* baseUrl: 'https://www.googleapis.com/drive/v3',
|
|
21
|
+
* scopes: { 'https://www.googleapis.com/auth/drive.readonly': 'Read the user’s files' },
|
|
22
|
+
* operations: [
|
|
23
|
+
* { operationId: 'files.list', path: '/files', summary: 'Search the user’s files',
|
|
24
|
+
* parameters: [{ name: 'q', in: 'query', schema: { type: 'string' } }] },
|
|
25
|
+
* ],
|
|
26
|
+
* })
|
|
27
|
+
*
|
|
28
|
+
* mcp({ userConnections: [{ name: 'drive', spec: drive.spec, baseUrl: drive.baseUrl, ... }] })
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* The checks below all catch mistakes that are invisible until a user clicks a
|
|
32
|
+
* connect link, which is the worst place to find them.
|
|
33
|
+
*/
|
|
34
|
+
export class OpenApiSpecError extends Error {
|
|
35
|
+
name = 'OpenApiSpecError';
|
|
36
|
+
}
|
|
37
|
+
const PATH_PARAM = /\{([^}]+)\}/g;
|
|
38
|
+
function pathParameterNames(path) {
|
|
39
|
+
return [...path.matchAll(PATH_PARAM)].map((m) => m[1]);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* An OpenAPI document with a single OAuth2 authorization-code scheme required
|
|
43
|
+
* for every operation.
|
|
44
|
+
*
|
|
45
|
+
* @throws OpenApiSpecError when the document would be accepted and then
|
|
46
|
+
* misbehave: no scopes (the daemon finds no OAuth scheme and the connection
|
|
47
|
+
* silently becomes unauthenticated), a duplicate operation id (one operation
|
|
48
|
+
* shadows the other), a path parameter nothing declares (the daemon sends
|
|
49
|
+
* `{braces}` to the provider), or a method reused on one path.
|
|
50
|
+
*/
|
|
51
|
+
export function oauthOpenApiSpec(input) {
|
|
52
|
+
const scopes = Object.keys(input.scopes);
|
|
53
|
+
if (scopes.length === 0) {
|
|
54
|
+
throw new OpenApiSpecError(`"${input.title}" declares no OAuth scopes: the daemon would find no security scheme `
|
|
55
|
+
+ 'and authorize nothing.');
|
|
56
|
+
}
|
|
57
|
+
if (input.operations.length === 0) {
|
|
58
|
+
throw new OpenApiSpecError(`"${input.title}" declares no operations.`);
|
|
59
|
+
}
|
|
60
|
+
if (input.baseUrl.endsWith('/')) {
|
|
61
|
+
throw new OpenApiSpecError(`baseUrl "${input.baseUrl}" ends in a slash, which doubles up with every path.`);
|
|
62
|
+
}
|
|
63
|
+
const shared = input.parameters ?? {};
|
|
64
|
+
const paths = {};
|
|
65
|
+
const seenOperations = new Set();
|
|
66
|
+
for (const op of input.operations) {
|
|
67
|
+
if (seenOperations.has(op.operationId)) {
|
|
68
|
+
throw new OpenApiSpecError(`Duplicate operationId "${op.operationId}".`);
|
|
69
|
+
}
|
|
70
|
+
seenOperations.add(op.operationId);
|
|
71
|
+
if (!op.path.startsWith('/')) {
|
|
72
|
+
throw new OpenApiSpecError(`Path "${op.path}" of "${op.operationId}" has to be server-relative and start with "/".`);
|
|
73
|
+
}
|
|
74
|
+
const parameters = (op.parameters ?? []).map((p) => {
|
|
75
|
+
if (!('ref' in p))
|
|
76
|
+
return p;
|
|
77
|
+
if (!(p.ref in shared)) {
|
|
78
|
+
throw new OpenApiSpecError(`"${op.operationId}" references parameter "${p.ref}", which is not declared.`);
|
|
79
|
+
}
|
|
80
|
+
return { $ref: `#/components/parameters/${p.ref}` };
|
|
81
|
+
});
|
|
82
|
+
// Resolved names, so a `{userId}` answered by a shared parameter counts.
|
|
83
|
+
const declared = new Set((op.parameters ?? []).map((p) => ('ref' in p ? shared[p.ref].name : p.name)));
|
|
84
|
+
for (const name of pathParameterNames(op.path)) {
|
|
85
|
+
if (!declared.has(name)) {
|
|
86
|
+
throw new OpenApiSpecError(`"${op.operationId}" has a path parameter "{${name}}" that no parameter declares, `
|
|
87
|
+
+ 'so the daemon would send the braces to the provider verbatim.');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const method = op.method ?? 'get';
|
|
91
|
+
const entry = (paths[op.path] ??= {});
|
|
92
|
+
if (method in entry) {
|
|
93
|
+
throw new OpenApiSpecError(`"${op.path}" declares ${method.toUpperCase()} twice.`);
|
|
94
|
+
}
|
|
95
|
+
entry[method] = {
|
|
96
|
+
operationId: op.operationId,
|
|
97
|
+
...(op.summary ? { summary: op.summary } : {}),
|
|
98
|
+
...(op.description ? { description: op.description } : {}),
|
|
99
|
+
...(parameters.length > 0 ? { parameters } : {}),
|
|
100
|
+
...(op.requestBody
|
|
101
|
+
? {
|
|
102
|
+
requestBody: {
|
|
103
|
+
required: op.requestBody.required ?? true,
|
|
104
|
+
...(op.requestBody.description ? { description: op.requestBody.description } : {}),
|
|
105
|
+
content: { 'application/json': { schema: op.requestBody.schema } },
|
|
106
|
+
},
|
|
107
|
+
}
|
|
108
|
+
: {}),
|
|
109
|
+
responses: {
|
|
110
|
+
[op.response?.status ?? '200']: {
|
|
111
|
+
description: op.response?.description ?? 'Success.',
|
|
112
|
+
...(op.response?.schema
|
|
113
|
+
? { content: { 'application/json': { schema: op.response.schema } } }
|
|
114
|
+
: {}),
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const spec = {
|
|
120
|
+
openapi: '3.0.3',
|
|
121
|
+
info: {
|
|
122
|
+
title: input.title,
|
|
123
|
+
...(input.description ? { description: input.description } : {}),
|
|
124
|
+
version: input.version ?? '1.0',
|
|
125
|
+
},
|
|
126
|
+
servers: [{ url: input.baseUrl }],
|
|
127
|
+
security: [{ [input.schemeName]: scopes }],
|
|
128
|
+
components: {
|
|
129
|
+
securitySchemes: {
|
|
130
|
+
[input.schemeName]: {
|
|
131
|
+
type: 'oauth2',
|
|
132
|
+
flows: {
|
|
133
|
+
authorizationCode: {
|
|
134
|
+
authorizationUrl: input.authorizationUrl,
|
|
135
|
+
tokenUrl: input.tokenUrl,
|
|
136
|
+
scopes: input.scopes,
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
...(Object.keys(shared).length > 0 ? { parameters: shared } : {}),
|
|
142
|
+
...(input.schemas && Object.keys(input.schemas).length > 0
|
|
143
|
+
? { schemas: input.schemas }
|
|
144
|
+
: {}),
|
|
145
|
+
},
|
|
146
|
+
paths,
|
|
147
|
+
};
|
|
148
|
+
return {
|
|
149
|
+
spec: JSON.stringify(spec),
|
|
150
|
+
baseUrl: input.baseUrl,
|
|
151
|
+
scopes,
|
|
152
|
+
operations: [...seenOperations],
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export const GOOGLE_AUTHORIZATION_URL = 'https://accounts.google.com/o/oauth2/v2/auth';
|
|
156
|
+
export const GOOGLE_TOKEN_URL = 'https://oauth2.googleapis.com/token';
|
|
157
|
+
/**
|
|
158
|
+
* Scopes that cover a whole Google service rather than a use of it. Each is a
|
|
159
|
+
* restricted or sensitive scope whose consent screen reads like handing over
|
|
160
|
+
* the account, and each has a narrow sibling that does the actual job
|
|
161
|
+
* (`gmail.readonly` + `gmail.send`, `calendar.events`, `drive.file`).
|
|
162
|
+
*/
|
|
163
|
+
const GOOGLE_WHOLE_ACCOUNT_SCOPES = new Set([
|
|
164
|
+
'https://mail.google.com/',
|
|
165
|
+
'https://www.googleapis.com/auth/gmail.modify',
|
|
166
|
+
'https://www.googleapis.com/auth/calendar',
|
|
167
|
+
'https://www.googleapis.com/auth/drive',
|
|
168
|
+
'https://www.googleapis.com/auth/contacts',
|
|
169
|
+
'https://www.googleapis.com/auth/cloud-platform',
|
|
170
|
+
]);
|
|
171
|
+
/**
|
|
172
|
+
* `oauthOpenApiSpec` with Google's endpoints and a `googleOAuth` scheme.
|
|
173
|
+
*
|
|
174
|
+
* Two Google-specific refusals, both of which otherwise surface as a dead
|
|
175
|
+
* consent screen or a scope no one meant to ask for:
|
|
176
|
+
* - `offline_access` is not a Google scope (Microsoft's is). A refresh token
|
|
177
|
+
* comes from `access_type=offline&prompt=consent`, which the daemon appends
|
|
178
|
+
* to the authorize URL itself.
|
|
179
|
+
* - whole-service scopes, which cost months of verification and ask a user
|
|
180
|
+
* over SMS for their entire mailbox or calendar. Pass `allowBroadScopes`
|
|
181
|
+
* when a connection genuinely needs one.
|
|
182
|
+
*/
|
|
183
|
+
export function googleOpenApiSpec(input) {
|
|
184
|
+
for (const scope of Object.keys(input.scopes)) {
|
|
185
|
+
if (scope === 'offline_access') {
|
|
186
|
+
throw new OpenApiSpecError('Google rejects "offline_access" as a scope; refresh tokens come from '
|
|
187
|
+
+ 'access_type=offline, which the daemon requests for you.');
|
|
188
|
+
}
|
|
189
|
+
if (!input.allowBroadScopes && GOOGLE_WHOLE_ACCOUNT_SCOPES.has(scope)) {
|
|
190
|
+
throw new OpenApiSpecError(`"${scope}" covers the whole service. Declare the narrow scopes the operations need `
|
|
191
|
+
+ '(e.g. gmail.readonly + gmail.send instead of https://mail.google.com/), or pass '
|
|
192
|
+
+ 'allowBroadScopes when the connection really does need it.');
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return oauthOpenApiSpec({
|
|
196
|
+
...input,
|
|
197
|
+
schemeName: 'googleOAuth',
|
|
198
|
+
authorizationUrl: GOOGLE_AUTHORIZATION_URL,
|
|
199
|
+
tokenUrl: GOOGLE_TOKEN_URL,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
export const MICROSOFT_AUTHORIZATION_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize';
|
|
203
|
+
export const MICROSOFT_TOKEN_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
|
|
204
|
+
/**
|
|
205
|
+
* `oauthOpenApiSpec` with Microsoft identity-platform endpoints and a
|
|
206
|
+
* `microsoftOAuth` scheme. `offline_access` is added when absent: unlike
|
|
207
|
+
* Google, Microsoft only issues a refresh token when that scope is requested,
|
|
208
|
+
* and a connection without one dies at the first token expiry.
|
|
209
|
+
*/
|
|
210
|
+
export function microsoftOpenApiSpec(input) {
|
|
211
|
+
const scopes = 'offline_access' in input.scopes
|
|
212
|
+
? input.scopes
|
|
213
|
+
: { offline_access: 'Keep access when the user is away (refresh token)', ...input.scopes };
|
|
214
|
+
return oauthOpenApiSpec({
|
|
215
|
+
...input,
|
|
216
|
+
scopes,
|
|
217
|
+
schemeName: 'microsoftOAuth',
|
|
218
|
+
authorizationUrl: MICROSOFT_AUTHORIZATION_URL,
|
|
219
|
+
tokenUrl: MICROSOFT_TOKEN_URL,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=OpenApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenApi.js","sourceRoot":"","sources":["../src/OpenApi.ts"],"names":[],"mappings":"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"}
|
package/dist/Plugin.d.ts
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import type { Effect, Layer } from 'effect';
|
|
2
|
+
import type { AlertDefinition } from './Alert.js';
|
|
3
|
+
import type { ToolDefinition } from './Tool.js';
|
|
4
|
+
import type { AgentConfig, AgentKitConfig } from './types/config.js';
|
|
5
|
+
import type { PluginMigration } from './services/PluginDb.js';
|
|
6
|
+
export type TurnEvent = {
|
|
7
|
+
readonly phone: string;
|
|
8
|
+
readonly messages: ReadonlyArray<{
|
|
9
|
+
content: string;
|
|
10
|
+
direction: 'inbound' | 'outbound';
|
|
11
|
+
}>;
|
|
12
|
+
readonly context: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
export type TurnResult = {
|
|
15
|
+
readonly phone: string;
|
|
16
|
+
readonly response: string;
|
|
17
|
+
readonly toolCalls: ReadonlyArray<{
|
|
18
|
+
name: string;
|
|
19
|
+
input: unknown;
|
|
20
|
+
output: unknown;
|
|
21
|
+
}>;
|
|
22
|
+
readonly tokensUsed: {
|
|
23
|
+
in: number;
|
|
24
|
+
out: number;
|
|
25
|
+
};
|
|
26
|
+
readonly durationMs: number;
|
|
27
|
+
};
|
|
28
|
+
export type ToolCallEvent = {
|
|
29
|
+
readonly phone: string;
|
|
30
|
+
readonly toolName: string;
|
|
31
|
+
readonly input: unknown;
|
|
32
|
+
};
|
|
33
|
+
export type ToolCallResult = {
|
|
34
|
+
readonly phone: string;
|
|
35
|
+
readonly toolName: string;
|
|
36
|
+
readonly input: unknown;
|
|
37
|
+
readonly output: unknown;
|
|
38
|
+
readonly durationMs: number;
|
|
39
|
+
readonly error?: string;
|
|
40
|
+
};
|
|
41
|
+
export type RouteContext = {
|
|
42
|
+
readonly config: AgentKitConfig;
|
|
43
|
+
readonly request: Request;
|
|
44
|
+
};
|
|
45
|
+
export type PluginContext = {
|
|
46
|
+
readonly config: AgentKitConfig;
|
|
47
|
+
readonly agentConfig: AgentConfig;
|
|
48
|
+
};
|
|
49
|
+
export type SyncPayload = {
|
|
50
|
+
readonly name: string;
|
|
51
|
+
readonly model: string;
|
|
52
|
+
readonly tools: ReadonlyArray<{
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
inputSchema: unknown;
|
|
56
|
+
}>;
|
|
57
|
+
readonly features: Record<string, boolean>;
|
|
58
|
+
readonly extra: Record<string, unknown>;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* A plugin extends AgentKit with tools, hooks, routes, and layers.
|
|
62
|
+
*
|
|
63
|
+
* Modeled after Better Auth's plugin system — composable, isolated,
|
|
64
|
+
* and declarative. Each plugin owns its own config and contributes
|
|
65
|
+
* capabilities to the runtime without touching the core agent config.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* import { definePlugin } from '@onkeiki/agents'
|
|
70
|
+
*
|
|
71
|
+
* export const rateLimiter = (opts: { maxTurnsPerMinute: number }) =>
|
|
72
|
+
* definePlugin({
|
|
73
|
+
* id: 'rate-limiter',
|
|
74
|
+
* hooks: {
|
|
75
|
+
* beforeTurn: (turn) =>
|
|
76
|
+
* Effect.gen(function* () {
|
|
77
|
+
* // check rate, throw if exceeded
|
|
78
|
+
* return turn
|
|
79
|
+
* }),
|
|
80
|
+
* },
|
|
81
|
+
* })
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export type AgentKitPlugin = {
|
|
85
|
+
/** Unique plugin identifier. */
|
|
86
|
+
readonly id: string;
|
|
87
|
+
/**
|
|
88
|
+
* Called once at boot. May return partial config overrides
|
|
89
|
+
* that are merged into the agent config (e.g. inject default tools).
|
|
90
|
+
* Similar to Better Auth's `init`.
|
|
91
|
+
*/
|
|
92
|
+
readonly init?: (ctx: PluginContext) => PluginInitResult | void;
|
|
93
|
+
/**
|
|
94
|
+
* Tools this plugin contributes to the agent.
|
|
95
|
+
*/
|
|
96
|
+
readonly tools?: ReadonlyArray<ToolDefinition<any, any>>;
|
|
97
|
+
/**
|
|
98
|
+
* Alert definitions this plugin contributes, registered with the platform
|
|
99
|
+
* alongside the agent's own `alerts` at `kit.sync()`. Additive — never
|
|
100
|
+
* overridden by the agent config.
|
|
101
|
+
*/
|
|
102
|
+
readonly alerts?: ReadonlyArray<AlertDefinition>;
|
|
103
|
+
/**
|
|
104
|
+
* HTTP routes this plugin serves (e.g. webhooks, alert execution).
|
|
105
|
+
* Keys are pathnames like "/alerts/execute".
|
|
106
|
+
* Similar to Better Auth's `endpoints`.
|
|
107
|
+
*/
|
|
108
|
+
readonly routes?: Readonly<Record<string, (req: Request, ctx: RouteContext) => Promise<Response>>>;
|
|
109
|
+
/**
|
|
110
|
+
* Lifecycle hooks around turns and tool calls.
|
|
111
|
+
* Similar to Better Auth's `hooks.before` / `hooks.after`.
|
|
112
|
+
*/
|
|
113
|
+
readonly hooks?: {
|
|
114
|
+
readonly beforeTurn?: (turn: TurnEvent) => Effect.Effect<TurnEvent>;
|
|
115
|
+
readonly afterTurn?: (result: TurnResult) => Effect.Effect<void>;
|
|
116
|
+
readonly beforeToolCall?: (call: ToolCallEvent) => Effect.Effect<ToolCallEvent>;
|
|
117
|
+
readonly afterToolCall?: (result: ToolCallResult) => Effect.Effect<ToolCallResult>;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Global request interceptor. Return a Response to short-circuit,
|
|
121
|
+
* a modified Request to rewrite, or void to pass through.
|
|
122
|
+
* Similar to Better Auth's `onRequest`.
|
|
123
|
+
*/
|
|
124
|
+
readonly onRequest?: (req: Request) => Effect.Effect<Request | Response | void>;
|
|
125
|
+
/**
|
|
126
|
+
* Global response interceptor.
|
|
127
|
+
* Similar to Better Auth's `onResponse`.
|
|
128
|
+
*/
|
|
129
|
+
readonly onResponse?: (res: Response) => Effect.Effect<Response>;
|
|
130
|
+
/**
|
|
131
|
+
* Additional Effect layers to provide to the runtime.
|
|
132
|
+
*/
|
|
133
|
+
readonly layers?: ReadonlyArray<Layer.Layer<any>>;
|
|
134
|
+
/**
|
|
135
|
+
* Hook into the platform sync. Receives the current payload
|
|
136
|
+
* and returns a modified version. Used by plugins that need
|
|
137
|
+
* to push their own state (alerts, secrets, schemas, etc.)
|
|
138
|
+
*
|
|
139
|
+
* `name`, `model`, `features`, and `extra` from the returned payload are
|
|
140
|
+
* sent to the platform. The `tools` list is read-only context — the sync
|
|
141
|
+
* request always carries the fully-bundled tool definitions.
|
|
142
|
+
*/
|
|
143
|
+
readonly onSync?: (payload: SyncPayload) => SyncPayload;
|
|
144
|
+
/**
|
|
145
|
+
* Middleware that runs on every request before route matching.
|
|
146
|
+
* Return void to pass through, or a Response to short-circuit.
|
|
147
|
+
*/
|
|
148
|
+
readonly middleware?: ReadonlyArray<{
|
|
149
|
+
readonly path: string;
|
|
150
|
+
readonly handler: (req: Request, ctx: RouteContext) => Effect.Effect<Response | void>;
|
|
151
|
+
}>;
|
|
152
|
+
/**
|
|
153
|
+
* Database migrations owned by this plugin. Declared statically so they
|
|
154
|
+
* can be collected before storage initialization. Run once by the storage
|
|
155
|
+
* adapter at boot, tracked in `smskit_plugin_migrations`. Tables are
|
|
156
|
+
* NEVER dropped when the plugin is disabled — data is preserved.
|
|
157
|
+
*/
|
|
158
|
+
readonly migrations?: ReadonlyArray<PluginMigration>;
|
|
159
|
+
};
|
|
160
|
+
export type PluginInitResult = {
|
|
161
|
+
readonly config?: Partial<AgentConfig>;
|
|
162
|
+
readonly extra?: Record<string, unknown>;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* @deprecated Use `AgentKitPlugin` instead. This type is kept for backwards
|
|
166
|
+
* compatibility and will be removed in a future release.
|
|
167
|
+
*/
|
|
168
|
+
export type Plugin = {
|
|
169
|
+
readonly name: string;
|
|
170
|
+
readonly tools?: ReadonlyArray<ToolDefinition<any, any>>;
|
|
171
|
+
readonly onTurn?: (turn: TurnEvent) => Effect.Effect<TurnEvent>;
|
|
172
|
+
readonly afterTurn?: (result: TurnResult) => Effect.Effect<void>;
|
|
173
|
+
readonly layers?: ReadonlyArray<Layer.Layer<any>>;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Define a type-safe AgentKit plugin.
|
|
177
|
+
*/
|
|
178
|
+
export declare function definePlugin(plugin: AgentKitPlugin): AgentKitPlugin;
|
|
179
|
+
/**
|
|
180
|
+
* @deprecated Use {@link AgentKitPlugin} instead. Kept for backwards compatibility.
|
|
181
|
+
*/
|
|
182
|
+
export type SmsKitPlugin = AgentKitPlugin;
|
|
183
|
+
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../src/Plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/Plugin.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Helpers
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
/**
|
|
5
|
+
* Define a type-safe AgentKit plugin.
|
|
6
|
+
*/
|
|
7
|
+
export function definePlugin(plugin) {
|
|
8
|
+
return plugin;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=Plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../src/Plugin.ts"],"names":[],"mappings":"AAkMA,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,OAAO,MAAM,CAAA;AACf,CAAC"}
|