@eggjs/controller-decorator 3.77.2 → 3.78.1
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.
|
@@ -12,12 +12,18 @@ const ControllerInfoUtil_1 = __importDefault(require("../../util/ControllerInfoU
|
|
|
12
12
|
const HTTPInfoUtil_1 = __importDefault(require("../../util/HTTPInfoUtil"));
|
|
13
13
|
const MethodInfoUtil_1 = __importDefault(require("../../util/MethodInfoUtil"));
|
|
14
14
|
// Default implementations for unimplemented methods.
|
|
15
|
-
//
|
|
15
|
+
// function.length must match the param count for framework param validation.
|
|
16
16
|
// Stubs are marked with Symbol.for('AGENT_NOT_IMPLEMENTED') so agent-runtime
|
|
17
17
|
// can distinguish them from user-defined methods at enhancement time.
|
|
18
|
-
function createNotImplemented(methodName,
|
|
18
|
+
function createNotImplemented(methodName, paramCount) {
|
|
19
19
|
let fn;
|
|
20
|
-
if (
|
|
20
|
+
if (paramCount >= 2) {
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
|
+
fn = async function (_a, _b) {
|
|
23
|
+
throw new Error(`${methodName} not implemented`);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
else if (paramCount === 1) {
|
|
21
27
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
28
|
fn = async function (_arg) {
|
|
23
29
|
throw new Error(`${methodName} not implemented`);
|
|
@@ -36,52 +42,52 @@ const AGENT_ROUTES = [
|
|
|
36
42
|
methodName: 'createThread',
|
|
37
43
|
httpMethod: tegg_types_1.HTTPMethodEnum.POST,
|
|
38
44
|
path: '/threads',
|
|
39
|
-
|
|
45
|
+
params: [],
|
|
40
46
|
},
|
|
41
47
|
{
|
|
42
48
|
methodName: 'getThread',
|
|
43
49
|
httpMethod: tegg_types_1.HTTPMethodEnum.GET,
|
|
44
50
|
path: '/threads/:id',
|
|
45
|
-
|
|
46
|
-
paramName: 'id',
|
|
47
|
-
hasParam: true,
|
|
51
|
+
params: [{ index: 0, type: 'pathParam', name: 'id' }],
|
|
48
52
|
},
|
|
49
53
|
{
|
|
50
54
|
methodName: 'asyncRun',
|
|
51
55
|
httpMethod: tegg_types_1.HTTPMethodEnum.POST,
|
|
52
56
|
path: '/runs',
|
|
53
|
-
|
|
54
|
-
hasParam: true,
|
|
57
|
+
params: [{ index: 0, type: 'body' }],
|
|
55
58
|
},
|
|
56
59
|
{
|
|
57
60
|
methodName: 'streamRun',
|
|
58
61
|
httpMethod: tegg_types_1.HTTPMethodEnum.POST,
|
|
59
62
|
path: '/runs/stream',
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
params: [{ index: 0, type: 'body' }],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
methodName: 'getRunStream',
|
|
67
|
+
httpMethod: tegg_types_1.HTTPMethodEnum.GET,
|
|
68
|
+
path: '/runs/:id/stream',
|
|
69
|
+
params: [
|
|
70
|
+
{ index: 0, type: 'pathParam', name: 'id' },
|
|
71
|
+
{ index: 1, type: 'query', name: 'lastSeq' },
|
|
72
|
+
],
|
|
62
73
|
},
|
|
63
74
|
{
|
|
64
75
|
methodName: 'syncRun',
|
|
65
76
|
httpMethod: tegg_types_1.HTTPMethodEnum.POST,
|
|
66
77
|
path: '/runs/wait',
|
|
67
|
-
|
|
68
|
-
hasParam: true,
|
|
78
|
+
params: [{ index: 0, type: 'body' }],
|
|
69
79
|
},
|
|
70
80
|
{
|
|
71
81
|
methodName: 'getRun',
|
|
72
82
|
httpMethod: tegg_types_1.HTTPMethodEnum.GET,
|
|
73
83
|
path: '/runs/:id',
|
|
74
|
-
|
|
75
|
-
paramName: 'id',
|
|
76
|
-
hasParam: true,
|
|
84
|
+
params: [{ index: 0, type: 'pathParam', name: 'id' }],
|
|
77
85
|
},
|
|
78
86
|
{
|
|
79
87
|
methodName: 'cancelRun',
|
|
80
88
|
httpMethod: tegg_types_1.HTTPMethodEnum.POST,
|
|
81
89
|
path: '/runs/:id/cancel',
|
|
82
|
-
|
|
83
|
-
paramName: 'id',
|
|
84
|
-
hasParam: true,
|
|
90
|
+
params: [{ index: 0, type: 'pathParam', name: 'id' }],
|
|
85
91
|
},
|
|
86
92
|
];
|
|
87
93
|
function AgentController() {
|
|
@@ -103,7 +109,7 @@ function AgentController() {
|
|
|
103
109
|
for (const route of AGENT_ROUTES) {
|
|
104
110
|
// Inject default implementation if method not defined
|
|
105
111
|
if (!constructor.prototype[route.methodName]) {
|
|
106
|
-
constructor.prototype[route.methodName] = createNotImplemented(route.methodName, route.
|
|
112
|
+
constructor.prototype[route.methodName] = createNotImplemented(route.methodName, route.params.length);
|
|
107
113
|
}
|
|
108
114
|
// Set method controller type
|
|
109
115
|
MethodInfoUtil_1.default.setMethodControllerType(constructor, route.methodName, tegg_types_1.ControllerType.HTTP);
|
|
@@ -112,16 +118,22 @@ function AgentController() {
|
|
|
112
118
|
// Set HTTP path
|
|
113
119
|
HTTPInfoUtil_1.default.setHTTPMethodPath(route.path, constructor, route.methodName);
|
|
114
120
|
// Set parameter metadata
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
for (const param of route.params) {
|
|
122
|
+
if (param.type === 'body') {
|
|
123
|
+
HTTPInfoUtil_1.default.setHTTPMethodParamType(tegg_types_1.HTTPParamType.BODY, param.index, constructor, route.methodName);
|
|
124
|
+
}
|
|
125
|
+
else if (param.type === 'pathParam') {
|
|
126
|
+
HTTPInfoUtil_1.default.setHTTPMethodParamType(tegg_types_1.HTTPParamType.PARAM, param.index, constructor, route.methodName);
|
|
127
|
+
HTTPInfoUtil_1.default.setHTTPMethodParamName(param.name, param.index, constructor, route.methodName);
|
|
128
|
+
}
|
|
129
|
+
else if (param.type === 'query') {
|
|
130
|
+
HTTPInfoUtil_1.default.setHTTPMethodParamType(tegg_types_1.HTTPParamType.QUERY, param.index, constructor, route.methodName);
|
|
131
|
+
HTTPInfoUtil_1.default.setHTTPMethodParamName(param.name, param.index, constructor, route.methodName);
|
|
132
|
+
}
|
|
121
133
|
}
|
|
122
134
|
}
|
|
123
135
|
// Mark the class as an AgentController for precise detection
|
|
124
136
|
AgentInfoUtil_1.AgentInfoUtil.setAgentController(constructor);
|
|
125
137
|
};
|
|
126
138
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdlbnRDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RlY29yYXRvci9hZ2VudC9BZ2VudENvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE0R0EsMENBb0RDO0FBaEtELDBEQUFzRTtBQUN0RSw4REFBb0Q7QUFFcEQsa0RBTTJCO0FBRTNCLDREQUF5RDtBQUN6RCx1RkFBK0Q7QUFDL0QsMkVBQW1EO0FBQ25ELCtFQUF1RDtBQWV2RCxxREFBcUQ7QUFDckQsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSxzRUFBc0U7QUFDdEUsU0FBUyxvQkFBb0IsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO0lBQ2xFLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsNkRBQTZEO1FBQzdELEVBQUUsR0FBRyxLQUFLLFdBQVUsRUFBVyxFQUFFLEVBQVc7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsa0JBQWtCLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUM7SUFDSixDQUFDO1NBQU0sSUFBSSxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsNkRBQTZEO1FBQzdELEVBQUUsR0FBRyxLQUFLLFdBQVUsSUFBYTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsVUFBVSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sRUFBRSxHQUFHLEtBQUs7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsVUFBVSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCw2QkFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELE1BQU0sWUFBWSxHQUEyQjtJQUMz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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ThreadObject, ThreadObjectWithMessages, CreateRunInput, RunObject,
|
|
1
|
+
import type { ThreadObject, ThreadObjectWithMessages, CreateRunInput, RunObject, AgentMessage } from '@eggjs/tegg-types/agent-runtime';
|
|
2
2
|
export interface AgentHandler {
|
|
3
|
-
execRun(input: CreateRunInput, signal?: AbortSignal): AsyncGenerator<
|
|
3
|
+
execRun(input: CreateRunInput, signal?: AbortSignal): AsyncGenerator<AgentMessage>;
|
|
4
4
|
/** Create the AgentStore used to persist threads and runs. */
|
|
5
5
|
createStore(): Promise<unknown>;
|
|
6
6
|
createThread?(): Promise<ThreadObject>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/controller-decorator",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.78.1",
|
|
4
4
|
"description": "tegg controller decorator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"egg",
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
"node": ">=14.0.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@eggjs/aop-decorator": "^3.
|
|
40
|
+
"@eggjs/aop-decorator": "^3.78.1",
|
|
41
41
|
"@eggjs/cookies": "^3.0.1",
|
|
42
|
-
"@eggjs/core-decorator": "^3.
|
|
43
|
-
"@eggjs/tegg-common-util": "^3.
|
|
44
|
-
"@eggjs/tegg-metadata": "^3.
|
|
45
|
-
"@eggjs/tegg-types": "^3.
|
|
42
|
+
"@eggjs/core-decorator": "^3.78.1",
|
|
43
|
+
"@eggjs/tegg-common-util": "^3.78.1",
|
|
44
|
+
"@eggjs/tegg-metadata": "^3.78.1",
|
|
45
|
+
"@eggjs/tegg-types": "^3.78.1",
|
|
46
46
|
"@modelcontextprotocol/sdk": "^1.23.0",
|
|
47
47
|
"is-type-of": "^1.2.1",
|
|
48
48
|
"path-to-regexp": "^1.8.0",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"publishConfig": {
|
|
63
63
|
"access": "public"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "e131fdb561c81ed09ff1689a277cba36604359e5"
|
|
66
66
|
}
|