@grigoreo-dev/otask-mcp 1.2.0 → 1.3.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 +33 -19
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp-http.js +30 -10
- package/dist/mcp-http.js.map +1 -1
- package/dist/schemas/task.d.ts +27 -27
- package/dist/schemas/task.d.ts.map +1 -1
- package/dist/schemas/task.js +9 -3
- package/dist/schemas/task.js.map +1 -1
- package/dist/schemas/workspace.d.ts +21 -21
- package/dist/schemas/workspace.d.ts.map +1 -1
- package/dist/schemas/workspace.js +8 -3
- package/dist/schemas/workspace.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -4
- package/dist/server.js.map +1 -1
- package/dist/services/scope.d.ts +45 -0
- package/dist/services/scope.d.ts.map +1 -0
- package/dist/services/scope.js +147 -0
- package/dist/services/scope.js.map +1 -0
- package/dist/tools/add-comment.d.ts +1 -1
- package/dist/tools/add-comment.d.ts.map +1 -1
- package/dist/tools/add-comment.js +8 -5
- package/dist/tools/add-comment.js.map +1 -1
- package/dist/tools/archive-task.d.ts +1 -1
- package/dist/tools/archive-task.d.ts.map +1 -1
- package/dist/tools/archive-task.js +8 -5
- package/dist/tools/archive-task.js.map +1 -1
- package/dist/tools/create-task.d.ts +1 -1
- package/dist/tools/create-task.d.ts.map +1 -1
- package/dist/tools/create-task.js +7 -7
- package/dist/tools/create-task.js.map +1 -1
- package/dist/tools/get-task.d.ts +1 -1
- package/dist/tools/get-task.d.ts.map +1 -1
- package/dist/tools/get-task.js +6 -4
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/list-board.d.ts +1 -1
- package/dist/tools/list-board.d.ts.map +1 -1
- package/dist/tools/list-board.js +13 -9
- package/dist/tools/list-board.js.map +1 -1
- package/dist/tools/list-comments.d.ts +1 -1
- package/dist/tools/list-comments.d.ts.map +1 -1
- package/dist/tools/list-comments.js +8 -5
- package/dist/tools/list-comments.js.map +1 -1
- package/dist/tools/list-members.d.ts +1 -1
- package/dist/tools/list-members.d.ts.map +1 -1
- package/dist/tools/list-members.js +5 -3
- package/dist/tools/list-members.js.map +1 -1
- package/dist/tools/list-project-tasks.d.ts +1 -1
- package/dist/tools/list-project-tasks.d.ts.map +1 -1
- package/dist/tools/list-project-tasks.js +6 -5
- package/dist/tools/list-project-tasks.js.map +1 -1
- package/dist/tools/list-projects.d.ts +1 -1
- package/dist/tools/list-projects.d.ts.map +1 -1
- package/dist/tools/list-projects.js +5 -3
- package/dist/tools/list-projects.js.map +1 -1
- package/dist/tools/list-tags.d.ts +1 -1
- package/dist/tools/list-tags.d.ts.map +1 -1
- package/dist/tools/list-tags.js +5 -3
- package/dist/tools/list-tags.js.map +1 -1
- package/dist/tools/move-task.d.ts +1 -1
- package/dist/tools/move-task.d.ts.map +1 -1
- package/dist/tools/move-task.js +8 -5
- package/dist/tools/move-task.js.map +1 -1
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/update-task.d.ts +1 -1
- package/dist/tools/update-task.d.ts.map +1 -1
- package/dist/tools/update-task.js +10 -7
- package/dist/tools/update-task.js.map +1 -1
- package/package.json +2 -2
- package/dist/http-server.d.ts +0 -3
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js +0 -92
- package/dist/http-server.js.map +0 -1
- package/dist/proxy/headers.d.ts +0 -3
- package/dist/proxy/headers.d.ts.map +0 -1
- package/dist/proxy/headers.js +0 -37
- package/dist/proxy/headers.js.map +0 -1
- package/dist/proxy/read-body.d.ts +0 -3
- package/dist/proxy/read-body.d.ts.map +0 -1
- package/dist/proxy/read-body.js +0 -18
- package/dist/proxy/read-body.js.map +0 -1
- package/dist/services/http-auth-context.d.ts +0 -7
- package/dist/services/http-auth-context.d.ts.map +0 -1
- package/dist/services/http-auth-context.js +0 -9
- package/dist/services/http-auth-context.js.map +0 -1
package/README.md
CHANGED
|
@@ -32,24 +32,32 @@ stdio требует `OTASK_*` (без них падает при старте).
|
|
|
32
32
|
| `OTASK_EMAIL` | stdio, HTTP gateway | вместе с `OTASK_PASSWORD` как альтернатива ключу | Логин для получения токена |
|
|
33
33
|
| `OTASK_PASSWORD` | stdio, HTTP gateway | вместе с `OTASK_EMAIL` | Пароль для логина |
|
|
34
34
|
| `MCP_AUTH_TOKEN` | HTTP gateway | режим gateway | Общий секрет, который должен отправлять клиент; **не** токен O!task |
|
|
35
|
-
| `
|
|
35
|
+
| `OTASK_DEFAULT_WS` | stdio, HTTP | опционально | Workspace slug по умолчанию (если tool не передал `ws_slug`) |
|
|
36
|
+
| `OTASK_DEFAULT_PROJECT` | stdio, HTTP | опционально | Project slug **или** numeric id по умолчанию |
|
|
37
|
+
| `OTASK_ALLOWED_WS` | stdio, HTTP gateway | опционально | Allow-list workspace slug через запятую |
|
|
38
|
+
| `OTASK_ALLOWED_PROJECTS` | stdio, HTTP gateway | опционально | Allow-list project slug и/или numeric id через запятую |
|
|
36
39
|
| `PORT` | HTTP | опционально (по умолчанию `3847`) | Порт прослушивания |
|
|
37
40
|
| `HOST` | HTTP | опционально (по умолчанию `0.0.0.0`) | Адрес привязки |
|
|
38
41
|
|
|
42
|
+
Default должен входить в allow-list, если list непустой (иначе сервер падает при старте).
|
|
43
|
+
|
|
39
44
|
## HTTP-заголовки
|
|
40
45
|
|
|
41
46
|
| Заголовок | Режим | Назначение |
|
|
42
47
|
|-----------|-------|------------|
|
|
43
48
|
| `Authorization: Bearer …` | gateway | Должен совпадать с `MCP_AUTH_TOKEN` |
|
|
44
49
|
| `Authorization: Bearer …` | passthrough | Токен O!task API; проксируется на каждый запрос к API |
|
|
45
|
-
| `X-Otask-Allowed-Projects` | **только passthrough** |
|
|
50
|
+
| `X-Otask-Allowed-Projects` | **только passthrough** | Allow-list projects; в gateway — env |
|
|
51
|
+
| `X-Otask-Allowed-Ws` | **только passthrough** | Allow-list workspaces |
|
|
52
|
+
| `X-Otask-Default-Ws` | **passthrough** (override env) | Default workspace slug |
|
|
53
|
+
| `X-Otask-Default-Project` | **passthrough** (override env) | Default project slug/id |
|
|
46
54
|
|
|
47
55
|
## Эндпоинты (HTTP)
|
|
48
56
|
|
|
49
57
|
| | |
|
|
50
58
|
|---|---|
|
|
51
59
|
| MCP | `POST`/`GET` `/mcp` (Streamable HTTP) |
|
|
52
|
-
| Health | `GET /health` → `{ ok, mode, authMode, projectGuard
|
|
60
|
+
| Health | `GET /health` → `{ ok, mode, authMode, projectGuard, wsGuard, defaults }` (`"env" \| "header" \| "off"`) |
|
|
53
61
|
|
|
54
62
|
Пример деплоя: `https://otask-mcp.grigoreo.dev/mcp` (порт `3847` в Docker).
|
|
55
63
|
|
|
@@ -62,7 +70,10 @@ Env сервера:
|
|
|
62
70
|
```env
|
|
63
71
|
OTASK_AUTH_KEY=...
|
|
64
72
|
MCP_AUTH_TOKEN=super-secret-mcp-token
|
|
65
|
-
|
|
73
|
+
OTASK_DEFAULT_WS=246cd090-27a2-4f00-b4d6-2018d4d7ffe1
|
|
74
|
+
OTASK_DEFAULT_PROJECT=3156e838-b2b8-4537-8379-97131c22f60b
|
|
75
|
+
OTASK_ALLOWED_WS=246cd090-27a2-4f00-b4d6-2018d4d7ffe1
|
|
76
|
+
OTASK_ALLOWED_PROJECTS=3156e838-b2b8-4537-8379-97131c22f60b,35747
|
|
66
77
|
```
|
|
67
78
|
|
|
68
79
|
n8n **MCP Client Tool**:
|
|
@@ -70,7 +81,7 @@ n8n **MCP Client Tool**:
|
|
|
70
81
|
- URL: `https://otask-mcp.example/mcp`
|
|
71
82
|
- Transport: **HTTP Streamable**
|
|
72
83
|
- Credential / header: `Authorization: Bearer super-secret-mcp-token`
|
|
73
|
-
- **Не** отправляйте `X-Otask
|
|
84
|
+
- **Не** отправляйте `X-Otask-*` allow/default headers (берутся из env сервера)
|
|
74
85
|
|
|
75
86
|
### Passthrough (токен O!task у клиента)
|
|
76
87
|
|
|
@@ -81,13 +92,16 @@ n8n **MCP Client Tool**:
|
|
|
81
92
|
- URL: `https://otask-mcp.example/mcp`
|
|
82
93
|
- Transport: **HTTP Streamable**
|
|
83
94
|
- Credential / header: `Authorization: Bearer <тот же токен, что и для api.otask.ru>`
|
|
84
|
-
- Опционально: `X-Otask-Allowed-Projects
|
|
95
|
+
- Опционально: `X-Otask-Allowed-Projects`, `X-Otask-Allowed-Ws`, `X-Otask-Default-Ws`, `X-Otask-Default-Project`
|
|
85
96
|
|
|
86
97
|
### Stdio (Cursor / OpenCode)
|
|
87
98
|
|
|
88
99
|
```env
|
|
89
100
|
OTASK_AUTH_KEY=...
|
|
90
101
|
# или OTASK_EMAIL + OTASK_PASSWORD
|
|
102
|
+
OTASK_DEFAULT_WS=...
|
|
103
|
+
OTASK_DEFAULT_PROJECT=my-project
|
|
104
|
+
OTASK_ALLOWED_WS=...
|
|
91
105
|
OTASK_ALLOWED_PROJECTS=my-project
|
|
92
106
|
```
|
|
93
107
|
|
|
@@ -116,25 +130,25 @@ bun start
|
|
|
116
130
|
|
|
117
131
|
Если активен allow-list проектов, project-scoped инструменты проверяют членство (или фильтруют списки); пустой allow-list = доступны все проекты.
|
|
118
132
|
|
|
119
|
-
##
|
|
133
|
+
## Defaults и allow-list (ws + projects)
|
|
120
134
|
|
|
121
|
-
|
|
135
|
+
| Что | Env (gateway/stdio) | Header (passthrough) |
|
|
136
|
+
|-----|---------------------|----------------------|
|
|
137
|
+
| Default workspace | `OTASK_DEFAULT_WS` | `X-Otask-Default-Ws` (override) |
|
|
138
|
+
| Default project | `OTASK_DEFAULT_PROJECT` (slug или id) | `X-Otask-Default-Project` |
|
|
139
|
+
| Limit workspaces | `OTASK_ALLOWED_WS` | `X-Otask-Allowed-Ws` |
|
|
140
|
+
| Limit projects | `OTASK_ALLOWED_PROJECTS` | `X-Otask-Allowed-Projects` |
|
|
122
141
|
|
|
123
|
-
|
|
142
|
+
Формат allow-list: значения через запятую (пробелы обрезаются). Projects: **slug** и/или **numeric id**. WS: только slug. Пусто = off.
|
|
124
143
|
|
|
125
144
|
```env
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
### Passthrough — заголовок запроса
|
|
132
|
-
|
|
133
|
-
```http
|
|
134
|
-
X-Otask-Allowed-Projects: product-roadmap,42
|
|
145
|
+
OTASK_DEFAULT_WS=246cd090-27a2-4f00-b4d6-2018d4d7ffe1
|
|
146
|
+
OTASK_DEFAULT_PROJECT=3156e838-b2b8-4537-8379-97131c22f60b
|
|
147
|
+
OTASK_ALLOWED_WS=246cd090-27a2-4f00-b4d6-2018d4d7ffe1
|
|
148
|
+
OTASK_ALLOWED_PROJECTS=3156e838-b2b8-4537-8379-97131c22f60b,product-roadmap,42
|
|
135
149
|
```
|
|
136
150
|
|
|
137
|
-
`
|
|
151
|
+
`otask_list_board` по умолчанию шлёт `type=status` (так требует O!task API).
|
|
138
152
|
|
|
139
153
|
## Снимок API-документации
|
|
140
154
|
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import { createEnvAuthResolver, validateStdioAuthConfig } from "./services/auth.js";
|
|
4
|
-
import {
|
|
4
|
+
import { assertDefaultsAllowed, scopeFromEnv, } from "./services/scope.js";
|
|
5
5
|
import { createMcpServer } from "./server.js";
|
|
6
6
|
async function main() {
|
|
7
7
|
try {
|
|
8
8
|
validateStdioAuthConfig();
|
|
9
|
+
const scope = scopeFromEnv();
|
|
10
|
+
assertDefaultsAllowed(scope);
|
|
11
|
+
const server = createMcpServer(createEnvAuthResolver(), scope);
|
|
12
|
+
const transport = new StdioServerTransport();
|
|
13
|
+
await server.connect(transport);
|
|
9
14
|
}
|
|
10
15
|
catch (error) {
|
|
11
16
|
const message = error instanceof Error ? error.message : String(error);
|
|
12
17
|
console.error(`ERROR: ${message}`);
|
|
13
18
|
process.exit(1);
|
|
14
19
|
}
|
|
15
|
-
const server = createMcpServer(createEnvAuthResolver(), projectGuardFromEnv());
|
|
16
|
-
const transport = new StdioServerTransport();
|
|
17
|
-
await server.connect(transport);
|
|
18
20
|
}
|
|
19
21
|
main().catch((error) => {
|
|
20
22
|
console.error("Server error:", error);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EACL,qBAAqB,EACrB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,uBAAuB,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAG,eAAe,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/mcp-http.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import http from "node:http";
|
|
3
3
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
4
|
import { createMcpServer } from "./server.js";
|
|
5
|
-
import { authorizeHttpMcpRequest, createEnvAuthResolver, createPassthroughAuthResolver, extractBearerToken,
|
|
6
|
-
import {
|
|
5
|
+
import { authorizeHttpMcpRequest, createEnvAuthResolver, createPassthroughAuthResolver, extractBearerToken, getHttpAuthMode, validateHttpAuthConfig, } from "./services/auth.js";
|
|
6
|
+
import { assertDefaultsAllowed, resolveHttpScope, scopeFromEnv, } from "./services/scope.js";
|
|
7
7
|
function getPort() {
|
|
8
8
|
const raw = process.env.PORT?.trim() || "3847";
|
|
9
9
|
const port = Number.parseInt(raw, 10);
|
|
@@ -16,6 +16,24 @@ function sendJson(res, status, body) {
|
|
|
16
16
|
res.writeHead(status, { "Content-Type": "application/json" });
|
|
17
17
|
res.end(JSON.stringify(body));
|
|
18
18
|
}
|
|
19
|
+
function scopeModes(authMode, scope) {
|
|
20
|
+
return {
|
|
21
|
+
wsGuard: scope.wsGuard.list.isEmpty
|
|
22
|
+
? "off"
|
|
23
|
+
: authMode === "gateway"
|
|
24
|
+
? "env"
|
|
25
|
+
: "header",
|
|
26
|
+
projectGuard: scope.projectGuard.list.isEmpty
|
|
27
|
+
? "off"
|
|
28
|
+
: authMode === "gateway"
|
|
29
|
+
? "env"
|
|
30
|
+
: "header",
|
|
31
|
+
defaults: {
|
|
32
|
+
ws: Boolean(scope.defaultWs),
|
|
33
|
+
project: Boolean(scope.defaultProject),
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
19
37
|
async function handleMcpRequest(req, res) {
|
|
20
38
|
const clientBearer = extractBearerToken(req.headers.authorization);
|
|
21
39
|
const authResult = authorizeHttpMcpRequest(clientBearer);
|
|
@@ -30,17 +48,16 @@ async function handleMcpRequest(req, res) {
|
|
|
30
48
|
? createPassthroughAuthResolver(authResult.otaskBearer)
|
|
31
49
|
: createEnvAuthResolver();
|
|
32
50
|
const authMode = getHttpAuthMode();
|
|
33
|
-
const
|
|
34
|
-
const guard = resolveHttpProjectGuard({
|
|
51
|
+
const scope = resolveHttpScope({
|
|
35
52
|
authMode,
|
|
36
53
|
env: process.env,
|
|
37
|
-
|
|
54
|
+
headers: req.headers,
|
|
38
55
|
});
|
|
39
56
|
const transport = new StreamableHTTPServerTransport({
|
|
40
57
|
sessionIdGenerator: undefined,
|
|
41
58
|
enableJsonResponse: true,
|
|
42
59
|
});
|
|
43
|
-
const server = createMcpServer(auth,
|
|
60
|
+
const server = createMcpServer(auth, scope);
|
|
44
61
|
res.on("close", () => {
|
|
45
62
|
void transport.close();
|
|
46
63
|
});
|
|
@@ -51,17 +68,19 @@ async function handleRequest(req, res) {
|
|
|
51
68
|
const requestUrl = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
|
|
52
69
|
if (requestUrl.pathname === "/health") {
|
|
53
70
|
const authMode = getHttpAuthMode();
|
|
54
|
-
const
|
|
55
|
-
const guard = resolveHttpProjectGuard({
|
|
71
|
+
const scope = resolveHttpScope({
|
|
56
72
|
authMode,
|
|
57
73
|
env: process.env,
|
|
58
|
-
|
|
74
|
+
headers: req.headers,
|
|
59
75
|
});
|
|
76
|
+
const modes = scopeModes(authMode, scope);
|
|
60
77
|
sendJson(res, 200, {
|
|
61
78
|
ok: true,
|
|
62
79
|
mode: "mcp-streamable-http",
|
|
63
80
|
authMode,
|
|
64
|
-
projectGuard:
|
|
81
|
+
projectGuard: modes.projectGuard,
|
|
82
|
+
wsGuard: modes.wsGuard,
|
|
83
|
+
defaults: modes.defaults,
|
|
65
84
|
});
|
|
66
85
|
return;
|
|
67
86
|
}
|
|
@@ -76,6 +95,7 @@ async function handleRequest(req, res) {
|
|
|
76
95
|
}
|
|
77
96
|
function main() {
|
|
78
97
|
validateHttpAuthConfig();
|
|
98
|
+
assertDefaultsAllowed(scopeFromEnv());
|
|
79
99
|
const port = getPort();
|
|
80
100
|
const host = process.env.HOST?.trim() || "0.0.0.0";
|
|
81
101
|
http
|
package/dist/mcp-http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-http.js","sourceRoot":"","sources":["../src/mcp-http.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"mcp-http.js","sourceRoot":"","sources":["../src/mcp-http.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas/task.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const WsTaskSlugSchema: z.ZodObject<{
|
|
3
|
-
ws_slug: z.ZodString
|
|
3
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
4
4
|
task_slug: z.ZodString;
|
|
5
5
|
}, "strict", z.ZodTypeAny, {
|
|
6
|
-
ws_slug: string;
|
|
7
6
|
task_slug: string;
|
|
7
|
+
ws_slug?: string | undefined;
|
|
8
8
|
}, {
|
|
9
|
-
ws_slug: string;
|
|
10
9
|
task_slug: string;
|
|
10
|
+
ws_slug?: string | undefined;
|
|
11
11
|
}>;
|
|
12
12
|
export declare const SubtaskSchema: z.ZodObject<{
|
|
13
13
|
id: z.ZodNullable<z.ZodNumber>;
|
|
@@ -39,7 +39,7 @@ export declare const FileSchema: z.ZodObject<{
|
|
|
39
39
|
temp_src: string;
|
|
40
40
|
}>;
|
|
41
41
|
export declare const UpdateTaskInputSchema: z.ZodObject<{
|
|
42
|
-
ws_slug: z.ZodString
|
|
42
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
43
43
|
task_slug: z.ZodString;
|
|
44
44
|
} & {
|
|
45
45
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -82,7 +82,6 @@ export declare const UpdateTaskInputSchema: z.ZodObject<{
|
|
|
82
82
|
}>, "many">>;
|
|
83
83
|
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
84
84
|
}, "strict", z.ZodTypeAny, {
|
|
85
|
-
ws_slug: string;
|
|
86
85
|
task_slug: string;
|
|
87
86
|
name?: string | undefined;
|
|
88
87
|
priority_id?: number | undefined;
|
|
@@ -104,9 +103,9 @@ export declare const UpdateTaskInputSchema: z.ZodObject<{
|
|
|
104
103
|
name: string;
|
|
105
104
|
temp_src: string;
|
|
106
105
|
}[] | undefined;
|
|
106
|
+
ws_slug?: string | undefined;
|
|
107
107
|
comment?: string | undefined;
|
|
108
108
|
}, {
|
|
109
|
-
ws_slug: string;
|
|
110
109
|
task_slug: string;
|
|
111
110
|
name?: string | undefined;
|
|
112
111
|
priority_id?: number | undefined;
|
|
@@ -128,41 +127,42 @@ export declare const UpdateTaskInputSchema: z.ZodObject<{
|
|
|
128
127
|
name: string;
|
|
129
128
|
temp_src: string;
|
|
130
129
|
}[] | undefined;
|
|
130
|
+
ws_slug?: string | undefined;
|
|
131
131
|
comment?: string | undefined;
|
|
132
132
|
}>;
|
|
133
133
|
export type UpdateTaskInput = z.infer<typeof UpdateTaskInputSchema>;
|
|
134
134
|
export declare const GetTaskInputSchema: z.ZodObject<{
|
|
135
|
-
ws_slug: z.ZodString
|
|
135
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
136
136
|
task_slug: z.ZodString;
|
|
137
137
|
}, "strict", z.ZodTypeAny, {
|
|
138
|
-
ws_slug: string;
|
|
139
138
|
task_slug: string;
|
|
139
|
+
ws_slug?: string | undefined;
|
|
140
140
|
}, {
|
|
141
|
-
ws_slug: string;
|
|
142
141
|
task_slug: string;
|
|
142
|
+
ws_slug?: string | undefined;
|
|
143
143
|
}>;
|
|
144
144
|
export type GetTaskInput = z.infer<typeof GetTaskInputSchema>;
|
|
145
145
|
export declare const MoveTaskInputSchema: z.ZodObject<{
|
|
146
|
-
ws_slug: z.ZodString
|
|
146
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
147
147
|
task_slug: z.ZodString;
|
|
148
148
|
} & {
|
|
149
149
|
board_column_id: z.ZodNumber;
|
|
150
150
|
board_id: z.ZodOptional<z.ZodNumber>;
|
|
151
151
|
}, "strict", z.ZodTypeAny, {
|
|
152
152
|
board_column_id: number;
|
|
153
|
-
ws_slug: string;
|
|
154
153
|
task_slug: string;
|
|
155
154
|
board_id?: number | undefined;
|
|
155
|
+
ws_slug?: string | undefined;
|
|
156
156
|
}, {
|
|
157
157
|
board_column_id: number;
|
|
158
|
-
ws_slug: string;
|
|
159
158
|
task_slug: string;
|
|
160
159
|
board_id?: number | undefined;
|
|
160
|
+
ws_slug?: string | undefined;
|
|
161
161
|
}>;
|
|
162
162
|
export type MoveTaskInput = z.infer<typeof MoveTaskInputSchema>;
|
|
163
163
|
export declare const CreateTaskInputSchema: z.ZodObject<{
|
|
164
|
-
ws_slug: z.ZodString
|
|
165
|
-
project_id: z.ZodNumber
|
|
164
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
165
|
+
project_id: z.ZodOptional<z.ZodNumber>;
|
|
166
166
|
name: z.ZodString;
|
|
167
167
|
board_id: z.ZodNumber;
|
|
168
168
|
board_column_id: z.ZodNumber;
|
|
@@ -175,66 +175,66 @@ export declare const CreateTaskInputSchema: z.ZodObject<{
|
|
|
175
175
|
}, "strict", z.ZodTypeAny, {
|
|
176
176
|
name: string;
|
|
177
177
|
end_at: string;
|
|
178
|
-
project_id: number;
|
|
179
178
|
board_id: number;
|
|
180
179
|
board_column_id: number;
|
|
181
|
-
ws_slug: string;
|
|
182
180
|
priority_id?: number | undefined;
|
|
183
181
|
description?: string | undefined;
|
|
182
|
+
project_id?: number | undefined;
|
|
184
183
|
performers?: string[] | undefined;
|
|
185
184
|
tags?: string[] | undefined;
|
|
185
|
+
ws_slug?: string | undefined;
|
|
186
186
|
comment?: string | undefined;
|
|
187
187
|
}, {
|
|
188
188
|
name: string;
|
|
189
189
|
end_at: string;
|
|
190
|
-
project_id: number;
|
|
191
190
|
board_id: number;
|
|
192
191
|
board_column_id: number;
|
|
193
|
-
ws_slug: string;
|
|
194
192
|
priority_id?: number | undefined;
|
|
195
193
|
description?: string | undefined;
|
|
194
|
+
project_id?: number | undefined;
|
|
196
195
|
performers?: string[] | undefined;
|
|
197
196
|
tags?: string[] | undefined;
|
|
197
|
+
ws_slug?: string | undefined;
|
|
198
198
|
comment?: string | undefined;
|
|
199
199
|
}>;
|
|
200
200
|
export type CreateTaskInput = z.infer<typeof CreateTaskInputSchema>;
|
|
201
201
|
export declare const ArchiveTaskInputSchema: z.ZodObject<{
|
|
202
|
-
ws_slug: z.ZodString
|
|
202
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
203
203
|
task_slug: z.ZodString;
|
|
204
204
|
}, "strict", z.ZodTypeAny, {
|
|
205
|
-
ws_slug: string;
|
|
206
205
|
task_slug: string;
|
|
206
|
+
ws_slug?: string | undefined;
|
|
207
207
|
}, {
|
|
208
|
-
ws_slug: string;
|
|
209
208
|
task_slug: string;
|
|
209
|
+
ws_slug?: string | undefined;
|
|
210
210
|
}>;
|
|
211
211
|
export type ArchiveTaskInput = z.infer<typeof ArchiveTaskInputSchema>;
|
|
212
212
|
export declare const ListCommentsInputSchema: z.ZodObject<{
|
|
213
|
-
ws_slug: z.ZodString
|
|
213
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
214
214
|
task_slug: z.ZodString;
|
|
215
215
|
}, "strict", z.ZodTypeAny, {
|
|
216
|
-
ws_slug: string;
|
|
217
216
|
task_slug: string;
|
|
217
|
+
ws_slug?: string | undefined;
|
|
218
218
|
}, {
|
|
219
|
-
ws_slug: string;
|
|
220
219
|
task_slug: string;
|
|
220
|
+
ws_slug?: string | undefined;
|
|
221
221
|
}>;
|
|
222
222
|
export type ListCommentsInput = z.infer<typeof ListCommentsInputSchema>;
|
|
223
223
|
export declare const AddCommentInputSchema: z.ZodObject<{
|
|
224
|
-
ws_slug: z.ZodString
|
|
224
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
225
225
|
task_slug: z.ZodString;
|
|
226
226
|
} & {
|
|
227
227
|
comment: z.ZodString;
|
|
228
228
|
parent_id: z.ZodOptional<z.ZodNumber>;
|
|
229
229
|
}, "strict", z.ZodTypeAny, {
|
|
230
|
-
ws_slug: string;
|
|
231
230
|
task_slug: string;
|
|
232
231
|
comment: string;
|
|
232
|
+
ws_slug?: string | undefined;
|
|
233
233
|
parent_id?: number | undefined;
|
|
234
234
|
}, {
|
|
235
|
-
ws_slug: string;
|
|
236
235
|
task_slug: string;
|
|
237
236
|
comment: string;
|
|
237
|
+
ws_slug?: string | undefined;
|
|
238
238
|
parent_id?: number | undefined;
|
|
239
239
|
}>;
|
|
240
240
|
export type AddCommentInput = z.infer<typeof AddCommentInputSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;EAclB,CAAC;AAEZ,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;EAQf,CAAC;AAEZ,eAAO,MAAM,UAAU;;;;;;;;;EAKZ,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB;;;;;;;;;EAAmB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;EAOrB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,sBAAsB;;;;;;;;;EAAmB,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,uBAAuB;;;;;;;;;EAAmB,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/schemas/task.js
CHANGED
|
@@ -4,7 +4,8 @@ export const WsTaskSlugSchema = z
|
|
|
4
4
|
ws_slug: z
|
|
5
5
|
.string()
|
|
6
6
|
.min(1)
|
|
7
|
-
.
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("Workspace slug (UUID from panel.otask.ru). Optional if OTASK_DEFAULT_WS is set."),
|
|
8
9
|
task_slug: z
|
|
9
10
|
.string()
|
|
10
11
|
.min(1)
|
|
@@ -60,8 +61,13 @@ export const CreateTaskInputSchema = z
|
|
|
60
61
|
ws_slug: z
|
|
61
62
|
.string()
|
|
62
63
|
.min(1)
|
|
63
|
-
.
|
|
64
|
-
|
|
64
|
+
.optional()
|
|
65
|
+
.describe("Workspace slug. Optional if OTASK_DEFAULT_WS is set."),
|
|
66
|
+
project_id: z
|
|
67
|
+
.number()
|
|
68
|
+
.int()
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("Project ID (must be allow-listed). Optional if OTASK_DEFAULT_PROJECT is set."),
|
|
65
71
|
name: z.string().min(1).describe("Task title"),
|
|
66
72
|
board_id: z
|
|
67
73
|
.number()
|
package/dist/schemas/task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,66 +1,66 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const WsSlugSchema: z.ZodObject<{
|
|
3
|
-
ws_slug: z.ZodString
|
|
3
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
4
4
|
}, "strict", z.ZodTypeAny, {
|
|
5
|
-
ws_slug
|
|
5
|
+
ws_slug?: string | undefined;
|
|
6
6
|
}, {
|
|
7
|
-
ws_slug
|
|
7
|
+
ws_slug?: string | undefined;
|
|
8
8
|
}>;
|
|
9
9
|
export type WsSlugInput = z.infer<typeof WsSlugSchema>;
|
|
10
10
|
export declare const ProjectSlugSchema: z.ZodObject<{
|
|
11
|
-
ws_slug: z.ZodString
|
|
11
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
12
12
|
} & {
|
|
13
|
-
project_slug: z.ZodString
|
|
13
|
+
project_slug: z.ZodOptional<z.ZodString>;
|
|
14
14
|
}, "strict", z.ZodTypeAny, {
|
|
15
|
-
ws_slug
|
|
16
|
-
project_slug
|
|
15
|
+
ws_slug?: string | undefined;
|
|
16
|
+
project_slug?: string | undefined;
|
|
17
17
|
}, {
|
|
18
|
-
ws_slug
|
|
19
|
-
project_slug
|
|
18
|
+
ws_slug?: string | undefined;
|
|
19
|
+
project_slug?: string | undefined;
|
|
20
20
|
}>;
|
|
21
21
|
export type ProjectSlugInput = z.infer<typeof ProjectSlugSchema>;
|
|
22
22
|
export declare const ListProjectTasksInputSchema: z.ZodObject<{
|
|
23
|
-
ws_slug: z.ZodString
|
|
23
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
24
24
|
} & {
|
|
25
|
-
project_slug: z.ZodString
|
|
25
|
+
project_slug: z.ZodOptional<z.ZodString>;
|
|
26
26
|
} & {
|
|
27
27
|
page: z.ZodOptional<z.ZodNumber>;
|
|
28
28
|
status_id: z.ZodOptional<z.ZodNumber>;
|
|
29
29
|
board_id: z.ZodOptional<z.ZodNumber>;
|
|
30
30
|
board_column_id: z.ZodOptional<z.ZodNumber>;
|
|
31
31
|
}, "strict", z.ZodTypeAny, {
|
|
32
|
-
ws_slug: string;
|
|
33
|
-
project_slug: string;
|
|
34
32
|
status_id?: number | undefined;
|
|
35
33
|
board_id?: number | undefined;
|
|
36
34
|
board_column_id?: number | undefined;
|
|
35
|
+
ws_slug?: string | undefined;
|
|
36
|
+
project_slug?: string | undefined;
|
|
37
37
|
page?: number | undefined;
|
|
38
38
|
}, {
|
|
39
|
-
ws_slug: string;
|
|
40
|
-
project_slug: string;
|
|
41
39
|
status_id?: number | undefined;
|
|
42
40
|
board_id?: number | undefined;
|
|
43
41
|
board_column_id?: number | undefined;
|
|
42
|
+
ws_slug?: string | undefined;
|
|
43
|
+
project_slug?: string | undefined;
|
|
44
44
|
page?: number | undefined;
|
|
45
45
|
}>;
|
|
46
46
|
export type ListProjectTasksInput = z.infer<typeof ListProjectTasksInputSchema>;
|
|
47
47
|
export declare const ListBoardInputSchema: z.ZodObject<{
|
|
48
|
-
ws_slug: z.ZodString
|
|
48
|
+
ws_slug: z.ZodOptional<z.ZodString>;
|
|
49
49
|
} & {
|
|
50
|
-
project_slug: z.ZodString
|
|
50
|
+
project_slug: z.ZodOptional<z.ZodString>;
|
|
51
51
|
} & {
|
|
52
52
|
type: z.ZodOptional<z.ZodString>;
|
|
53
53
|
board_slug: z.ZodOptional<z.ZodString>;
|
|
54
54
|
}, "strict", z.ZodTypeAny, {
|
|
55
|
-
ws_slug: string;
|
|
56
|
-
project_slug: string;
|
|
57
55
|
type?: string | undefined;
|
|
58
56
|
board_slug?: string | undefined;
|
|
57
|
+
ws_slug?: string | undefined;
|
|
58
|
+
project_slug?: string | undefined;
|
|
59
59
|
}, {
|
|
60
|
-
ws_slug: string;
|
|
61
|
-
project_slug: string;
|
|
62
60
|
type?: string | undefined;
|
|
63
61
|
board_slug?: string | undefined;
|
|
62
|
+
ws_slug?: string | undefined;
|
|
63
|
+
project_slug?: string | undefined;
|
|
64
64
|
}>;
|
|
65
65
|
export type ListBoardInput = z.infer<typeof ListBoardInputSchema>;
|
|
66
66
|
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/schemas/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/schemas/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;EAUd,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,iBAAiB;;;;;;;;;;EAQnB,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAEZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -4,14 +4,16 @@ export const WsSlugSchema = z
|
|
|
4
4
|
ws_slug: z
|
|
5
5
|
.string()
|
|
6
6
|
.min(1)
|
|
7
|
-
.
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("Workspace slug (UUID from panel.otask.ru). Optional if OTASK_DEFAULT_WS is set."),
|
|
8
9
|
})
|
|
9
10
|
.strict();
|
|
10
11
|
export const ProjectSlugSchema = WsSlugSchema.extend({
|
|
11
12
|
project_slug: z
|
|
12
13
|
.string()
|
|
13
14
|
.min(1)
|
|
14
|
-
.
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Project slug (UUID from panel.otask.ru). Optional if OTASK_DEFAULT_PROJECT is set."),
|
|
15
17
|
}).strict();
|
|
16
18
|
export const ListProjectTasksInputSchema = ProjectSlugSchema.extend({
|
|
17
19
|
page: z.number().int().optional().describe("Page number for pagination"),
|
|
@@ -24,7 +26,10 @@ export const ListProjectTasksInputSchema = ProjectSlugSchema.extend({
|
|
|
24
26
|
.describe("Filter by board column id"),
|
|
25
27
|
}).strict();
|
|
26
28
|
export const ListBoardInputSchema = ProjectSlugSchema.extend({
|
|
27
|
-
type: z
|
|
29
|
+
type: z
|
|
30
|
+
.string()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe('Board type filter (API requires "status"; defaulted by tool)'),
|
|
28
33
|
board_slug: z.string().optional().describe("Specific board slug"),
|
|
29
34
|
}).strict();
|
|
30
35
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/schemas/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/schemas/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,CAClF;CACJ,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;IACnD,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,oFAAoF,CACrF;CACJ,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACpE,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,2BAA2B,CAAC;CACzC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAC3D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAClE,CAAC,CAAC,MAAM,EAAE,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { OtaskAuthResolver } from "./services/auth.js";
|
|
3
|
-
import { type
|
|
4
|
-
export declare function createMcpServer(auth: OtaskAuthResolver,
|
|
3
|
+
import { type ScopeContext } from "./services/scope.js";
|
|
4
|
+
export declare function createMcpServer(auth: OtaskAuthResolver, scope?: ScopeContext): McpServer;
|
|
5
5
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAG7B,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,EACvB,KAAK,GAAE,YAA+B,GACrC,SAAS,CAaX"}
|