@grigoreo-dev/otask-mcp 1.2.1 → 1.4.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 +49 -19
- package/dist/docs/parser.d.ts.map +1 -1
- package/dist/docs/parser.js +7 -5
- package/dist/docs/parser.js.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp-http.js +26 -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 +15 -32
- package/dist/schemas/task.js.map +1 -1
- package/dist/schemas/workspace.d.ts +48 -21
- package/dist/schemas/workspace.d.ts.map +1 -1
- package/dist/schemas/workspace.js +23 -8
- 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 +11 -4
- package/dist/server.js.map +1 -1
- package/dist/services/api.d.ts +3 -1
- package/dist/services/api.d.ts.map +1 -1
- package/dist/services/api.js +46 -2
- package/dist/services/api.js.map +1 -1
- package/dist/services/auth.d.ts.map +1 -1
- package/dist/services/auth.js +1 -3
- package/dist/services/auth.js.map +1 -1
- package/dist/services/client.d.ts +3 -1
- package/dist/services/client.d.ts.map +1 -1
- package/dist/services/client.js +3 -1
- package/dist/services/client.js.map +1 -1
- package/dist/services/due-filter.d.ts +27 -0
- package/dist/services/due-filter.d.ts.map +1 -0
- package/dist/services/due-filter.js +92 -0
- package/dist/services/due-filter.js.map +1 -0
- package/dist/services/me-cache.d.ts +14 -0
- package/dist/services/me-cache.d.ts.map +1 -0
- package/dist/services/me-cache.js +47 -0
- package/dist/services/me-cache.js.map +1 -0
- package/dist/services/project-guard.d.ts.map +1 -1
- package/dist/services/project-guard.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 +146 -0
- package/dist/services/scope.js.map +1 -0
- package/dist/services/task-mapper.d.ts +4 -0
- package/dist/services/task-mapper.d.ts.map +1 -1
- package/dist/services/task-mapper.js +9 -0
- package/dist/services/task-mapper.js.map +1 -1
- 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 +10 -9
- 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 +10 -9
- 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 +8 -8
- 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 +14 -10
- 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 +10 -9
- 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 +6 -4
- 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 +8 -7
- 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 +6 -4
- 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 +6 -4
- package/dist/tools/list-tags.js.map +1 -1
- package/dist/tools/list-tasks.d.ts +4 -0
- package/dist/tools/list-tasks.d.ts.map +1 -0
- package/dist/tools/list-tasks.js +113 -0
- package/dist/tools/list-tasks.js.map +1 -0
- package/dist/tools/me.d.ts +3 -0
- package/dist/tools/me.d.ts.map +1 -0
- package/dist/tools/me.js +36 -0
- package/dist/tools/me.js.map +1 -0
- 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 +11 -10
- package/dist/tools/move-task.js.map +1 -1
- package/dist/tools/registry.d.ts +3 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +4 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/types.d.ts +7 -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 +20 -33
- package/dist/tools/update-task.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-board.d.ts","sourceRoot":"","sources":["../../src/tools/list-board.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-board.d.ts","sourceRoot":"","sources":["../../src/tools/list-board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,yBAAyB,CAAC;AAIpF,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,mBAAmB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,CA6D5F"}
|
package/dist/tools/list-board.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ListBoardInputSchema
|
|
2
|
-
import {
|
|
1
|
+
import { ListBoardInputSchema } from "../schemas/workspace.js";
|
|
2
|
+
import { resolveProjectSlug, resolveWsSlug } from "../services/scope.js";
|
|
3
3
|
import { compactBoard, compactColumn } from "../services/task-mapper.js";
|
|
4
4
|
import { jsonToolResult, toolError } from "./helpers.js";
|
|
5
|
-
export function createListBoardTool({ api,
|
|
5
|
+
export function createListBoardTool({ api, scope }) {
|
|
6
6
|
return {
|
|
7
7
|
name: "otask_list_board",
|
|
8
8
|
config: {
|
|
@@ -10,10 +10,12 @@ export function createListBoardTool({ api, guard, }) {
|
|
|
10
10
|
description: `List boards and columns for a project (statuses). Project must be on the allow-list when configured.
|
|
11
11
|
|
|
12
12
|
Use before create/move to discover board_id and board_column_id.
|
|
13
|
+
API requires type=status (defaulted by this tool).
|
|
13
14
|
|
|
14
15
|
Args:
|
|
15
|
-
- ws_slug, project_slug:
|
|
16
|
-
- type
|
|
16
|
+
- ws_slug, project_slug: optional if defaults set
|
|
17
|
+
- type: defaults to "status"
|
|
18
|
+
- board_slug: optional specific board
|
|
17
19
|
|
|
18
20
|
Returns compact boards and columns (id, name, slug?, color?, board_id?).
|
|
19
21
|
|
|
@@ -28,11 +30,13 @@ Docs: https://api.otask.ru/docs`,
|
|
|
28
30
|
},
|
|
29
31
|
handler: async ({ ws_slug, project_slug, type, board_slug }) => {
|
|
30
32
|
try {
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
:
|
|
35
|
-
|
|
33
|
+
const ws = resolveWsSlug(ws_slug, scope);
|
|
34
|
+
const project = await resolveProjectSlug(project_slug, scope, () => api.listProjects(ws));
|
|
35
|
+
const query = {
|
|
36
|
+
type: type ?? "status",
|
|
37
|
+
...(board_slug !== undefined ? { board_slug } : {}),
|
|
38
|
+
};
|
|
39
|
+
const result = await api.listBoard(ws, project, query);
|
|
36
40
|
const boards = result.boards.map((b) => compactBoard(b));
|
|
37
41
|
const columns = result.columns.map((c) => compactColumn(c));
|
|
38
42
|
const payload = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-board.js","sourceRoot":"","sources":["../../src/tools/list-board.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-board.js","sourceRoot":"","sources":["../../src/tools/list-board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,mBAAmB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAY;IAC1D,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE;YACN,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE;;;;;;;;;;;;gCAYa;YAC1B,WAAW,EAAE,oBAAoB;YACjC,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;YAC7D,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1F,MAAM,KAAK,GAAG;oBACZ,IAAI,EAAE,IAAI,IAAI,QAAQ;oBACtB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpD,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,YAAY,CAAC,CAAgE,CAAC,CAC/E,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,aAAa,CACX,CAMC,CACF,CACF,CAAC;gBACF,MAAM,OAAO,GAAG;oBACd,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,cAAc,OAAO,CAAC,MAAM,YAAY;oBACjE,MAAM;oBACN,OAAO;oBACP,IAAI,EAAE,IAAI;iBACX,CAAC;gBACF,OAAO,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type ListCommentsInput } from "../schemas/task.js";
|
|
2
2
|
import type { ToolDefinition, ToolDeps } from "./types.js";
|
|
3
|
-
export declare function createListCommentsTool({ api, guard, }: ToolDeps): ToolDefinition<ListCommentsInput>;
|
|
3
|
+
export declare function createListCommentsTool({ api, guard, scope, }: ToolDeps): ToolDefinition<ListCommentsInput>;
|
|
4
4
|
//# sourceMappingURL=list-comments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-comments.d.ts","sourceRoot":"","sources":["../../src/tools/list-comments.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-comments.d.ts","sourceRoot":"","sources":["../../src/tools/list-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,oBAAoB,CAAC;AAIrF,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,KAAK,EACL,KAAK,GACN,EAAE,QAAQ,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAyC9C"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ListCommentsInputSchema
|
|
1
|
+
import { ListCommentsInputSchema } from "../schemas/task.js";
|
|
2
2
|
import { assertProjectIdAllowed } from "../services/project-guard.js";
|
|
3
|
+
import { resolveWsSlug } from "../services/scope.js";
|
|
3
4
|
import { jsonToolResult, toolError } from "./helpers.js";
|
|
4
|
-
export function createListCommentsTool({ api, guard, }) {
|
|
5
|
+
export function createListCommentsTool({ api, guard, scope, }) {
|
|
5
6
|
return {
|
|
6
7
|
name: "otask_list_comments",
|
|
7
8
|
config: {
|
|
@@ -9,7 +10,8 @@ export function createListCommentsTool({ api, guard, }) {
|
|
|
9
10
|
description: `List comments on a task. Fetches the task first to enforce project allow-list.
|
|
10
11
|
|
|
11
12
|
Args:
|
|
12
|
-
- ws_slug
|
|
13
|
+
- ws_slug: optional if OTASK_DEFAULT_WS is set
|
|
14
|
+
- task_slug: task identity
|
|
13
15
|
|
|
14
16
|
Returns API comments payload.
|
|
15
17
|
|
|
@@ -24,12 +26,11 @@ Docs: https://api.otask.ru/docs`,
|
|
|
24
26
|
},
|
|
25
27
|
handler: async ({ ws_slug, task_slug }) => {
|
|
26
28
|
try {
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const data = await api.listComments(ws_slug, task_slug);
|
|
29
|
+
const ws = resolveWsSlug(ws_slug, scope);
|
|
30
|
+
const current = await api.getTask(ws, task_slug);
|
|
31
|
+
const projectSlug = typeof current.project_slug === "string" ? current.project_slug : undefined;
|
|
32
|
+
await assertProjectIdAllowed(guard, () => api.listProjects(ws), current.project_id, projectSlug);
|
|
33
|
+
const data = await api.listComments(ws, task_slug);
|
|
33
34
|
return jsonToolResult(data, data);
|
|
34
35
|
}
|
|
35
36
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-comments.js","sourceRoot":"","sources":["../../src/tools/list-comments.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-comments.js","sourceRoot":"","sources":["../../src/tools/list-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,sBAAsB,CAAC,EACrC,GAAG,EACH,KAAK,EACL,KAAK,GACI;IACT,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE;YACN,KAAK,EAAE,2BAA2B;YAClC,WAAW,EAAE;;;;;;;;gCAQa;YAC1B,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9E,MAAM,sBAAsB,CAC1B,KAAK,EACL,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAC1B,OAAO,CAAC,UAAU,EAClB,WAAW,CACZ,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACnD,OAAO,cAAc,CAAC,IAAI,EAAE,IAA+B,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type WsSlugInput } from "../schemas/workspace.js";
|
|
2
2
|
import type { ToolDefinition, ToolDeps } from "./types.js";
|
|
3
|
-
export declare function createListMembersTool({ api, }: ToolDeps): ToolDefinition<WsSlugInput>;
|
|
3
|
+
export declare function createListMembersTool({ api, scope }: ToolDeps): ToolDefinition<WsSlugInput>;
|
|
4
4
|
//# sourceMappingURL=list-members.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-members.d.ts","sourceRoot":"","sources":["../../src/tools/list-members.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-members.d.ts","sourceRoot":"","sources":["../../src/tools/list-members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAKzE,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CA2C3F"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { WsSlugSchema
|
|
1
|
+
import { WsSlugSchema } from "../schemas/workspace.js";
|
|
2
2
|
import { agentListResult } from "../services/format.js";
|
|
3
|
+
import { resolveWsSlug } from "../services/scope.js";
|
|
3
4
|
import { compactMember } from "../services/task-mapper.js";
|
|
4
5
|
import { jsonToolResult, toolError } from "./helpers.js";
|
|
5
|
-
export function createListMembersTool({ api, }) {
|
|
6
|
+
export function createListMembersTool({ api, scope }) {
|
|
6
7
|
return {
|
|
7
8
|
name: "otask_list_members",
|
|
8
9
|
config: {
|
|
@@ -10,7 +11,7 @@ export function createListMembersTool({ api, }) {
|
|
|
10
11
|
description: `List workspace members (performers for assignment).
|
|
11
12
|
|
|
12
13
|
Args:
|
|
13
|
-
- ws_slug:
|
|
14
|
+
- ws_slug: optional if OTASK_DEFAULT_WS is set
|
|
14
15
|
|
|
15
16
|
Returns compact members: id, name, email, status_text.
|
|
16
17
|
|
|
@@ -25,7 +26,8 @@ Docs: https://api.otask.ru/docs`,
|
|
|
25
26
|
},
|
|
26
27
|
handler: async ({ ws_slug }) => {
|
|
27
28
|
try {
|
|
28
|
-
const
|
|
29
|
+
const ws = resolveWsSlug(ws_slug, scope);
|
|
30
|
+
const members = await api.listMembers(ws);
|
|
29
31
|
const items = members.map((m) => compactMember((m ?? {})));
|
|
30
32
|
const payload = agentListResult(`${items.length} member(s)`, items);
|
|
31
33
|
return jsonToolResult(payload, payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-members.js","sourceRoot":"","sources":["../../src/tools/list-members.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-members.js","sourceRoot":"","sources":["../../src/tools/list-members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,qBAAqB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAY;IAC5D,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE;YACN,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EAAE;;;;;;;gCAOa;YAC1B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,aAAa,CACX,CAAC,CAAC,IAAI,EAAE,CAMP,CACF,CACF,CAAC;gBACF,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,YAAY,EAAE,KAAK,CAAC,CAAC;gBACpE,OAAO,cAAc,CAAC,OAAO,EAAE,OAA6C,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type ListProjectTasksInput } from "../schemas/workspace.js";
|
|
2
2
|
import type { ToolDefinition, ToolDeps } from "./types.js";
|
|
3
|
-
export declare function createListProjectTasksTool({ api,
|
|
3
|
+
export declare function createListProjectTasksTool({ api, scope, }: ToolDeps): ToolDefinition<ListProjectTasksInput>;
|
|
4
4
|
//# sourceMappingURL=list-project-tasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-project-tasks.d.ts","sourceRoot":"","sources":["../../src/tools/list-project-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-project-tasks.d.ts","sourceRoot":"","sources":["../../src/tools/list-project-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAA+B,MAAM,yBAAyB,CAAC;AAKlG,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,KAAK,GACN,EAAE,QAAQ,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAyClD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ListProjectTasksInputSchema
|
|
1
|
+
import { ListProjectTasksInputSchema } from "../schemas/workspace.js";
|
|
2
2
|
import { agentListResult } from "../services/format.js";
|
|
3
|
-
import {
|
|
3
|
+
import { resolveProjectSlug, resolveWsSlug } from "../services/scope.js";
|
|
4
4
|
import { compactTask } from "../services/task-mapper.js";
|
|
5
5
|
import { jsonToolResult, toolError } from "./helpers.js";
|
|
6
|
-
export function createListProjectTasksTool({ api,
|
|
6
|
+
export function createListProjectTasksTool({ api, scope, }) {
|
|
7
7
|
return {
|
|
8
8
|
name: "otask_list_project_tasks",
|
|
9
9
|
config: {
|
|
@@ -11,7 +11,7 @@ export function createListProjectTasksTool({ api, guard, }) {
|
|
|
11
11
|
description: `List tasks in a project. Project must be on the allow-list when configured.
|
|
12
12
|
|
|
13
13
|
Args:
|
|
14
|
-
- ws_slug, project_slug:
|
|
14
|
+
- ws_slug, project_slug: optional if OTASK_DEFAULT_WS / OTASK_DEFAULT_PROJECT set
|
|
15
15
|
- page, status_id, board_id, board_column_id: optional filters
|
|
16
16
|
|
|
17
17
|
Returns compact tasks via agent list envelope.
|
|
@@ -25,9 +25,10 @@ Docs: https://api.otask.ru/docs`,
|
|
|
25
25
|
openWorldHint: true,
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
|
-
handler: async ({ ws_slug, project_slug, page, status_id, board_id, board_column_id
|
|
28
|
+
handler: async ({ ws_slug, project_slug, page, status_id, board_id, board_column_id }) => {
|
|
29
29
|
try {
|
|
30
|
-
|
|
30
|
+
const ws = resolveWsSlug(ws_slug, scope);
|
|
31
|
+
const project = await resolveProjectSlug(project_slug, scope, () => api.listProjects(ws));
|
|
31
32
|
const query = {};
|
|
32
33
|
if (page !== undefined)
|
|
33
34
|
query.page = page;
|
|
@@ -38,7 +39,7 @@ Docs: https://api.otask.ru/docs`,
|
|
|
38
39
|
if (board_column_id !== undefined)
|
|
39
40
|
query.board_column_id = board_column_id;
|
|
40
41
|
const hasQuery = Object.keys(query).length > 0;
|
|
41
|
-
const result = await api.listProjectTasks(
|
|
42
|
+
const result = await api.listProjectTasks(ws, project, hasQuery ? query : undefined);
|
|
42
43
|
const items = result.tasks.map((t) => compactTask(t));
|
|
43
44
|
const payload = agentListResult(`${items.length} task(s)`, items, result.meta);
|
|
44
45
|
return jsonToolResult(payload, payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-project-tasks.js","sourceRoot":"","sources":["../../src/tools/list-project-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-project-tasks.js","sourceRoot":"","sources":["../../src/tools/list-project-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,0BAA0B,CAAC,EACzC,GAAG,EACH,KAAK,GACI;IACT,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE;YACN,KAAK,EAAE,2BAA2B;YAClC,WAAW,EAAE;;;;;;;;gCAQa;YAC1B,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE;YACvF,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1F,MAAM,KAAK,GAAgD,EAAE,CAAC;gBAC9D,IAAI,IAAI,KAAK,SAAS;oBAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC1C,IAAI,SAAS,KAAK,SAAS;oBAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;gBACzD,IAAI,QAAQ,KAAK,SAAS;oBAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACtD,IAAI,eAAe,KAAK,SAAS;oBAAE,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;gBAC3E,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACrF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC/E,OAAO,cAAc,CAAC,OAAO,EAAE,OAA6C,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type WsSlugInput } from "../schemas/workspace.js";
|
|
2
2
|
import type { ToolDefinition, ToolDeps } from "./types.js";
|
|
3
|
-
export declare function createListProjectsTool({ api, guard, }: ToolDeps): ToolDefinition<WsSlugInput>;
|
|
3
|
+
export declare function createListProjectsTool({ api, guard, scope, }: ToolDeps): ToolDefinition<WsSlugInput>;
|
|
4
4
|
//# sourceMappingURL=list-projects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAKzE,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,KAAK,EACL,KAAK,GACN,EAAE,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAkCxC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { WsSlugSchema
|
|
1
|
+
import { WsSlugSchema } from "../schemas/workspace.js";
|
|
2
2
|
import { agentListResult } from "../services/format.js";
|
|
3
|
+
import { resolveWsSlug } from "../services/scope.js";
|
|
3
4
|
import { compactProject } from "../services/task-mapper.js";
|
|
4
5
|
import { jsonToolResult, toolError } from "./helpers.js";
|
|
5
|
-
export function createListProjectsTool({ api, guard, }) {
|
|
6
|
+
export function createListProjectsTool({ api, guard, scope, }) {
|
|
6
7
|
return {
|
|
7
8
|
name: "otask_list_projects",
|
|
8
9
|
config: {
|
|
@@ -10,7 +11,7 @@ export function createListProjectsTool({ api, guard, }) {
|
|
|
10
11
|
description: `List projects in a workspace. Results are filtered by the project allow-list when configured.
|
|
11
12
|
|
|
12
13
|
Args:
|
|
13
|
-
- ws_slug:
|
|
14
|
+
- ws_slug: optional if OTASK_DEFAULT_WS is set
|
|
14
15
|
|
|
15
16
|
Returns compact projects: id, slug, name, status_id.
|
|
16
17
|
|
|
@@ -25,7 +26,8 @@ Docs: https://api.otask.ru/docs`,
|
|
|
25
26
|
},
|
|
26
27
|
handler: async ({ ws_slug }) => {
|
|
27
28
|
try {
|
|
28
|
-
const
|
|
29
|
+
const ws = resolveWsSlug(ws_slug, scope);
|
|
30
|
+
const projects = await api.listProjects(ws);
|
|
29
31
|
const allowed = guard.filterProjects(projects);
|
|
30
32
|
const items = allowed.map((p) => compactProject(p));
|
|
31
33
|
const payload = agentListResult(`${items.length} project(s)`, items);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,sBAAsB,CAAC,EACrC,GAAG,EACH,KAAK,EACL,KAAK,GACI;IACT,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE;YACN,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE;;;;;;;gCAOa;YAC1B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,aAAa,EAAE,KAAK,CAAC,CAAC;gBACrE,OAAO,cAAc,CAAC,OAAO,EAAE,OAA6C,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type WsSlugInput } from "../schemas/workspace.js";
|
|
2
2
|
import type { ToolDefinition, ToolDeps } from "./types.js";
|
|
3
|
-
export declare function createListTagsTool({ api, }: ToolDeps): ToolDefinition<WsSlugInput>;
|
|
3
|
+
export declare function createListTagsTool({ api, scope }: ToolDeps): ToolDefinition<WsSlugInput>;
|
|
4
4
|
//# sourceMappingURL=list-tags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-tags.d.ts","sourceRoot":"","sources":["../../src/tools/list-tags.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-tags.d.ts","sourceRoot":"","sources":["../../src/tools/list-tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAKzE,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAmCxF"}
|
package/dist/tools/list-tags.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { WsSlugSchema
|
|
1
|
+
import { WsSlugSchema } from "../schemas/workspace.js";
|
|
2
2
|
import { agentListResult } from "../services/format.js";
|
|
3
|
+
import { resolveWsSlug } from "../services/scope.js";
|
|
3
4
|
import { compactTag } from "../services/task-mapper.js";
|
|
4
5
|
import { jsonToolResult, toolError } from "./helpers.js";
|
|
5
|
-
export function createListTagsTool({ api, }) {
|
|
6
|
+
export function createListTagsTool({ api, scope }) {
|
|
6
7
|
return {
|
|
7
8
|
name: "otask_list_tags",
|
|
8
9
|
config: {
|
|
@@ -10,7 +11,7 @@ export function createListTagsTool({ api, }) {
|
|
|
10
11
|
description: `List workspace tags for labeling tasks.
|
|
11
12
|
|
|
12
13
|
Args:
|
|
13
|
-
- ws_slug:
|
|
14
|
+
- ws_slug: optional if OTASK_DEFAULT_WS is set
|
|
14
15
|
|
|
15
16
|
Returns compact tags (id, name, slug?, color?) as agent list envelope.
|
|
16
17
|
|
|
@@ -25,7 +26,8 @@ Docs: https://api.otask.ru/docs`,
|
|
|
25
26
|
},
|
|
26
27
|
handler: async ({ ws_slug }) => {
|
|
27
28
|
try {
|
|
28
|
-
const
|
|
29
|
+
const ws = resolveWsSlug(ws_slug, scope);
|
|
30
|
+
const tags = await api.listTags(ws);
|
|
29
31
|
const items = tags.map((t) => compactTag(t));
|
|
30
32
|
const payload = agentListResult(`${items.length} tag(s)`, items);
|
|
31
33
|
return jsonToolResult(payload, payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-tags.js","sourceRoot":"","sources":["../../src/tools/list-tags.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-tags.js","sourceRoot":"","sources":["../../src/tools/list-tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,kBAAkB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAY;IACzD,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE;YACN,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE;;;;;;;gCAOa;YAC1B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,UAAU,CAAC,CAAgE,CAAC,CAC7E,CAAC;gBACF,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,EAAE,KAAK,CAAC,CAAC;gBACjE,OAAO,cAAc,CAAC,OAAO,EAAE,OAA6C,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ListTasksInput } from "../schemas/workspace.js";
|
|
2
|
+
import type { ToolDefinition, ToolDeps } from "./types.js";
|
|
3
|
+
export declare function createListTasksTool({ api, guard, scope, meCache, }: ToolDeps): ToolDefinition<ListTasksInput>;
|
|
4
|
+
//# sourceMappingURL=list-tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-tasks.d.ts","sourceRoot":"","sources":["../../src/tools/list-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,yBAAyB,CAAC;AAYpF,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,KAAK,EACL,KAAK,EACL,OAAO,GACR,EAAE,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,CAsH3C"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ListTasksInputSchema } from "../schemas/workspace.js";
|
|
2
|
+
import { collectTasksWithDueScan, DUE_SCAN_MAX_PAGES, } from "../services/due-filter.js";
|
|
3
|
+
import { agentListResult } from "../services/format.js";
|
|
4
|
+
import { createMeCache } from "../services/me-cache.js";
|
|
5
|
+
import { resolveWsSlug } from "../services/scope.js";
|
|
6
|
+
import { compactTask } from "../services/task-mapper.js";
|
|
7
|
+
import { jsonToolResult, toolError } from "./helpers.js";
|
|
8
|
+
export function createListTasksTool({ api, guard, scope, meCache, }) {
|
|
9
|
+
const cache = meCache ?? createMeCache(() => api.getMe());
|
|
10
|
+
return {
|
|
11
|
+
name: "otask_list_tasks",
|
|
12
|
+
config: {
|
|
13
|
+
title: "List O!task Workspace Tasks",
|
|
14
|
+
description: `List workspace tasks with optional mine / performer / project / priority / due filters.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
- ws_slug: optional if OTASK_DEFAULT_WS is set
|
|
18
|
+
- page: API page (default 1)
|
|
19
|
+
- mine: default true — filter performer_ids to current user (ignored when performer_ids set)
|
|
20
|
+
- performer_ids, project_ids, priority_ids: optional API filters
|
|
21
|
+
- due: none|overdue|today|week — client-side filter; multi-page scan when not none
|
|
22
|
+
|
|
23
|
+
Returns compact tasks via agent list envelope. Meta in next.
|
|
24
|
+
|
|
25
|
+
Docs: https://api.otask.ru/docs`,
|
|
26
|
+
inputSchema: ListTasksInputSchema,
|
|
27
|
+
annotations: {
|
|
28
|
+
readOnlyHint: true,
|
|
29
|
+
destructiveHint: false,
|
|
30
|
+
idempotentHint: true,
|
|
31
|
+
openWorldHint: true,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
handler: async (input) => {
|
|
35
|
+
try {
|
|
36
|
+
const ws = resolveWsSlug(input.ws_slug, scope);
|
|
37
|
+
const due = input.due ?? "none";
|
|
38
|
+
const page = input.page ?? 1;
|
|
39
|
+
let performer_ids;
|
|
40
|
+
let timeZone = "UTC";
|
|
41
|
+
let mineEffective = false;
|
|
42
|
+
if (input.performer_ids?.length) {
|
|
43
|
+
performer_ids = input.performer_ids;
|
|
44
|
+
if (due !== "none") {
|
|
45
|
+
const me = await cache.get();
|
|
46
|
+
timeZone = me.timezone;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (input.mine !== false) {
|
|
50
|
+
const me = await cache.get();
|
|
51
|
+
performer_ids = [me.id];
|
|
52
|
+
timeZone = me.timezone;
|
|
53
|
+
mineEffective = true;
|
|
54
|
+
}
|
|
55
|
+
else if (due !== "none") {
|
|
56
|
+
const me = await cache.get();
|
|
57
|
+
timeZone = me.timezone;
|
|
58
|
+
}
|
|
59
|
+
const baseQuery = { page };
|
|
60
|
+
if (performer_ids?.length)
|
|
61
|
+
baseQuery.performer_ids = performer_ids;
|
|
62
|
+
if (input.project_ids?.length)
|
|
63
|
+
baseQuery.project_ids = input.project_ids;
|
|
64
|
+
if (input.priority_ids?.length) {
|
|
65
|
+
baseQuery.priority_ids = input.priority_ids;
|
|
66
|
+
}
|
|
67
|
+
let idToSlug;
|
|
68
|
+
if (!guard.list.isEmpty) {
|
|
69
|
+
const projects = await api.listProjects(ws);
|
|
70
|
+
idToSlug = new Map(projects.map((p) => [p.id, p.slug]));
|
|
71
|
+
}
|
|
72
|
+
const allow = (projectId) => guard.allows({
|
|
73
|
+
id: projectId,
|
|
74
|
+
slug: idToSlug?.get(projectId),
|
|
75
|
+
});
|
|
76
|
+
if (due === "none") {
|
|
77
|
+
const result = await api.listWorkspaceTasks(ws, baseQuery);
|
|
78
|
+
const items = result.tasks.filter((t) => allow(t.project_id)).map((t) => compactTask(t));
|
|
79
|
+
const mineLabel = input.performer_ids?.length != null && input.performer_ids.length > 0
|
|
80
|
+
? "performer_ids"
|
|
81
|
+
: `mine=${mineEffective}`;
|
|
82
|
+
const payload = agentListResult(`${items.length} task(s) (${mineLabel})`, items, result.meta);
|
|
83
|
+
return jsonToolResult(payload, payload);
|
|
84
|
+
}
|
|
85
|
+
const scanned = await collectTasksWithDueScan({
|
|
86
|
+
fetchPage: async (p) => {
|
|
87
|
+
const r = await api.listWorkspaceTasks(ws, {
|
|
88
|
+
...baseQuery,
|
|
89
|
+
page: p,
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
tasks: r.tasks,
|
|
93
|
+
meta: r.meta,
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
startPage: page,
|
|
97
|
+
due,
|
|
98
|
+
now: new Date(),
|
|
99
|
+
timeZone,
|
|
100
|
+
maxPages: DUE_SCAN_MAX_PAGES,
|
|
101
|
+
allow,
|
|
102
|
+
});
|
|
103
|
+
const items = scanned.tasks.map((t) => compactTask(t));
|
|
104
|
+
const payload = agentListResult(`${items.length} task(s) (due=${due}, scanned_pages=${scanned.meta.scanned_pages})`, items, scanned.meta);
|
|
105
|
+
return jsonToolResult(payload, payload);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return toolError(error);
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=list-tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-tasks.js","sourceRoot":"","sources":["../../src/tools/list-tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/tools/me.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3D,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CA6B9F"}
|
package/dist/tools/me.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createMeCache } from "../services/me-cache.js";
|
|
3
|
+
import { jsonToolResult, toolError } from "./helpers.js";
|
|
4
|
+
const EmptySchema = z.object({}).strict();
|
|
5
|
+
export function createMeTool({ api, meCache }) {
|
|
6
|
+
const cache = meCache ?? createMeCache(() => api.getMe());
|
|
7
|
+
return {
|
|
8
|
+
name: "otask_me",
|
|
9
|
+
config: {
|
|
10
|
+
title: "Current O!task User",
|
|
11
|
+
description: `Return the authenticated O!task user (id, full_name, email, timezone).
|
|
12
|
+
|
|
13
|
+
Use before otask_list_tasks when you need the performer id explicitly.
|
|
14
|
+
No args.
|
|
15
|
+
|
|
16
|
+
Docs: https://api.otask.ru/docs`,
|
|
17
|
+
inputSchema: EmptySchema,
|
|
18
|
+
annotations: {
|
|
19
|
+
readOnlyHint: true,
|
|
20
|
+
destructiveHint: false,
|
|
21
|
+
idempotentHint: true,
|
|
22
|
+
openWorldHint: true,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
handler: async () => {
|
|
26
|
+
try {
|
|
27
|
+
const me = await cache.get();
|
|
28
|
+
return jsonToolResult(me, me);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
return toolError(error);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=me.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.js","sourceRoot":"","sources":["../../src/tools/me.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAE1C,MAAM,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAY;IACrD,MAAM,KAAK,GAAG,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EAAE;;;;;gCAKa;YAC1B,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAc,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;gBACxC,OAAO,cAAc,CAAC,EAAE,EAAE,EAAwC,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type MoveTaskInput } from "../schemas/task.js";
|
|
2
2
|
import type { ToolDefinition, ToolDeps } from "./types.js";
|
|
3
|
-
export declare function createMoveTaskTool({ api, guard, }: ToolDeps): ToolDefinition<MoveTaskInput>;
|
|
3
|
+
export declare function createMoveTaskTool({ api, guard, scope }: ToolDeps): ToolDefinition<MoveTaskInput>;
|
|
4
4
|
//# sourceMappingURL=move-task.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-task.d.ts","sourceRoot":"","sources":["../../src/tools/move-task.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"move-task.d.ts","sourceRoot":"","sources":["../../src/tools/move-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AAK7E,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CA6DjG"}
|
package/dist/tools/move-task.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { MoveTaskInputSchema
|
|
1
|
+
import { MoveTaskInputSchema } from "../schemas/task.js";
|
|
2
2
|
import { assertProjectIdAllowed } from "../services/project-guard.js";
|
|
3
|
-
import {
|
|
3
|
+
import { resolveWsSlug } from "../services/scope.js";
|
|
4
|
+
import { buildUpdateBodyFromTask, compactTask } from "../services/task-mapper.js";
|
|
4
5
|
import { jsonToolResult, toolError } from "./helpers.js";
|
|
5
|
-
export function createMoveTaskTool({ api, guard, }) {
|
|
6
|
+
export function createMoveTaskTool({ api, guard, scope }) {
|
|
6
7
|
return {
|
|
7
8
|
name: "otask_move_task",
|
|
8
9
|
config: {
|
|
@@ -12,7 +13,8 @@ export function createMoveTaskTool({ api, guard, }) {
|
|
|
12
13
|
Discover column IDs via otask_list_board. Project must be allow-listed when configured.
|
|
13
14
|
|
|
14
15
|
Args:
|
|
15
|
-
- ws_slug
|
|
16
|
+
- ws_slug: optional if OTASK_DEFAULT_WS is set
|
|
17
|
+
- task_slug: task identity
|
|
16
18
|
- board_column_id: target column
|
|
17
19
|
- board_id: optional if changing board
|
|
18
20
|
|
|
@@ -29,16 +31,15 @@ Docs: https://api.otask.ru/docs`,
|
|
|
29
31
|
},
|
|
30
32
|
handler: async ({ ws_slug, task_slug, board_column_id, board_id }) => {
|
|
31
33
|
try {
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
await assertProjectIdAllowed(guard, () => api.listProjects(ws_slug), current.project_id, projectSlug);
|
|
34
|
+
const ws = resolveWsSlug(ws_slug, scope);
|
|
35
|
+
const current = await api.getTask(ws, task_slug);
|
|
36
|
+
const projectSlug = typeof current.project_slug === "string" ? current.project_slug : undefined;
|
|
37
|
+
await assertProjectIdAllowed(guard, () => api.listProjects(ws), current.project_id, projectSlug);
|
|
37
38
|
const body = buildUpdateBodyFromTask(current, {
|
|
38
39
|
board_column_id,
|
|
39
40
|
...(board_id !== undefined ? { board_id } : {}),
|
|
40
41
|
});
|
|
41
|
-
const result = await api.updateTask(
|
|
42
|
+
const result = await api.updateTask(ws, task_slug, body);
|
|
42
43
|
const summary = compactTask(result.task);
|
|
43
44
|
return jsonToolResult({
|
|
44
45
|
success: result.success,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-task.js","sourceRoot":"","sources":["../../src/tools/move-task.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"move-task.js","sourceRoot":"","sources":["../../src/tools/move-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,UAAU,kBAAkB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAY;IAChE,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE;YACN,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE;;;;;;;;;;;;gCAYa;YAC1B,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK;gBACnB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE;YACnE,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9E,MAAM,sBAAsB,CAC1B,KAAK,EACL,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAC1B,OAAO,CAAC,UAAU,EAClB,WAAW,CACZ,CAAC;gBACF,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE;oBAC5C,eAAe;oBACf,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChD,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzC,OAAO,cAAc,CACnB;oBACE,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,IAAI,EAAE,OAAO;iBACd,EACD;oBACE,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,IAAI,EAAE,OAAO;iBACd,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|