@industry-theme/backlogmd-kanban-panel 0.2.2 → 1.0.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.
- package/README.md +4 -0
- package/dist/adapters/PanelFileSystemAdapter.d.ts +50 -0
- package/dist/adapters/PanelFileSystemAdapter.d.ts.map +1 -0
- package/dist/adapters/index.d.ts +6 -7
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/mocks/panelContext.d.ts +14 -0
- package/dist/mocks/panelContext.d.ts.map +1 -1
- package/dist/panels/KanbanPanel.d.ts.map +1 -1
- package/dist/panels/KanbanPanel.stories.d.ts +2 -2
- package/dist/panels/KanbanPanel.stories.d.ts.map +1 -1
- package/dist/panels/kanban/backlog-utils/board.d.ts +3 -3
- package/dist/panels/kanban/backlog-utils/board.d.ts.map +1 -1
- package/dist/panels/kanban/components/EmptyState.d.ts +2 -0
- package/dist/panels/kanban/components/EmptyState.d.ts.map +1 -1
- package/dist/panels/kanban/components/KanbanColumn.d.ts +1 -1
- package/dist/panels/kanban/components/KanbanColumn.d.ts.map +1 -1
- package/dist/panels/kanban/hooks/useKanbanData.d.ts +2 -3
- package/dist/panels/kanban/hooks/useKanbanData.d.ts.map +1 -1
- package/dist/panels/kanban/mocks/mockData.d.ts +1 -1
- package/dist/panels/kanban/mocks/mockData.d.ts.map +1 -1
- package/dist/panels.bundle.js +1111 -7013
- package/dist/panels.bundle.js.map +1 -1
- package/dist/tools/index.d.ts +36 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools.bundle.js +130 -0
- package/package.json +29 -17
- package/dist/adapters/BacklogAdapter.d.ts +0 -50
- package/dist/adapters/BacklogAdapter.d.ts.map +0 -1
- package/dist/adapters/backlog-config-parser.d.ts +0 -25
- package/dist/adapters/backlog-config-parser.d.ts.map +0 -1
- package/dist/adapters/backlog-parser.d.ts +0 -24
- package/dist/adapters/backlog-parser.d.ts.map +0 -1
- package/dist/adapters/types.d.ts +0 -115
- package/dist/adapters/types.d.ts.map +0 -1
- package/dist/panels/kanban/backlog-types/index.d.ts +0 -196
- package/dist/panels/kanban/backlog-types/index.d.ts.map +0 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kanban Panel Tools
|
|
3
|
+
*
|
|
4
|
+
* UTCP-compatible tools for the Kanban panel extension.
|
|
5
|
+
* These tools can be invoked by AI agents and emit events that panels listen for.
|
|
6
|
+
*
|
|
7
|
+
* IMPORTANT: This file should NOT import any React components to ensure
|
|
8
|
+
* it can be imported server-side without pulling in React dependencies.
|
|
9
|
+
* Use the './tools' subpath export for server-safe imports.
|
|
10
|
+
*/
|
|
11
|
+
import type { PanelTool, PanelToolsMetadata } from '@principal-ade/utcp-panel-event';
|
|
12
|
+
/**
|
|
13
|
+
* Tool: Move Task
|
|
14
|
+
*/
|
|
15
|
+
export declare const moveTaskTool: PanelTool;
|
|
16
|
+
/**
|
|
17
|
+
* Tool: Select Task
|
|
18
|
+
*/
|
|
19
|
+
export declare const selectTaskTool: PanelTool;
|
|
20
|
+
/**
|
|
21
|
+
* Tool: Refresh Board
|
|
22
|
+
*/
|
|
23
|
+
export declare const refreshBoardTool: PanelTool;
|
|
24
|
+
/**
|
|
25
|
+
* Tool: Filter Tasks
|
|
26
|
+
*/
|
|
27
|
+
export declare const filterTasksTool: PanelTool;
|
|
28
|
+
/**
|
|
29
|
+
* All tools exported as an array.
|
|
30
|
+
*/
|
|
31
|
+
export declare const kanbanPanelTools: PanelTool[];
|
|
32
|
+
/**
|
|
33
|
+
* Panel tools metadata for registration with PanelToolRegistry.
|
|
34
|
+
*/
|
|
35
|
+
export declare const kanbanPanelToolsMetadata: PanelToolsMetadata;
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,SA8B1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAyB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAkB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAkC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAKvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAKtC,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// src/tools/index.ts
|
|
2
|
+
var moveTaskTool = {
|
|
3
|
+
name: "move_task",
|
|
4
|
+
description: "Moves a task to a different status column on the kanban board",
|
|
5
|
+
inputs: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
taskId: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "The ID of the task to move"
|
|
11
|
+
},
|
|
12
|
+
targetStatus: {
|
|
13
|
+
type: "string",
|
|
14
|
+
description: 'The target status column (e.g., "To Do", "In Progress", "Done")'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
required: ["taskId", "targetStatus"]
|
|
18
|
+
},
|
|
19
|
+
outputs: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
success: { type: "boolean" },
|
|
23
|
+
message: { type: "string" }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
tags: ["kanban", "task", "move", "status"],
|
|
27
|
+
tool_call_template: {
|
|
28
|
+
call_template_type: "panel_event",
|
|
29
|
+
event_type: "industry-theme.kanban-panel:move-task"
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
var selectTaskTool = {
|
|
33
|
+
name: "select_task",
|
|
34
|
+
description: "Selects a task to view its details",
|
|
35
|
+
inputs: {
|
|
36
|
+
type: "object",
|
|
37
|
+
properties: {
|
|
38
|
+
taskId: {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "The ID of the task to select"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
required: ["taskId"]
|
|
44
|
+
},
|
|
45
|
+
outputs: {
|
|
46
|
+
type: "object",
|
|
47
|
+
properties: {
|
|
48
|
+
success: { type: "boolean" },
|
|
49
|
+
task: { type: "object" }
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
tags: ["kanban", "task", "select", "view"],
|
|
53
|
+
tool_call_template: {
|
|
54
|
+
call_template_type: "panel_event",
|
|
55
|
+
event_type: "industry-theme.kanban-panel:select-task"
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var refreshBoardTool = {
|
|
59
|
+
name: "refresh_board",
|
|
60
|
+
description: "Refreshes the kanban board to reload tasks from the backlog",
|
|
61
|
+
inputs: {
|
|
62
|
+
type: "object",
|
|
63
|
+
properties: {}
|
|
64
|
+
},
|
|
65
|
+
outputs: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
success: { type: "boolean" }
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
tags: ["kanban", "board", "refresh"],
|
|
72
|
+
tool_call_template: {
|
|
73
|
+
call_template_type: "panel_event",
|
|
74
|
+
event_type: "industry-theme.kanban-panel:refresh-board"
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
var filterTasksTool = {
|
|
78
|
+
name: "filter_tasks",
|
|
79
|
+
description: "Filters tasks on the kanban board by labels, assignee, or priority",
|
|
80
|
+
inputs: {
|
|
81
|
+
type: "object",
|
|
82
|
+
properties: {
|
|
83
|
+
labels: {
|
|
84
|
+
type: "array",
|
|
85
|
+
items: { type: "string" },
|
|
86
|
+
description: "Filter by task labels"
|
|
87
|
+
},
|
|
88
|
+
assignee: {
|
|
89
|
+
type: "string",
|
|
90
|
+
description: "Filter by assignee name"
|
|
91
|
+
},
|
|
92
|
+
priority: {
|
|
93
|
+
type: "string",
|
|
94
|
+
description: "Filter by priority level"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
outputs: {
|
|
99
|
+
type: "object",
|
|
100
|
+
properties: {
|
|
101
|
+
success: { type: "boolean" },
|
|
102
|
+
count: { type: "number" }
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
tags: ["kanban", "task", "filter", "search"],
|
|
106
|
+
tool_call_template: {
|
|
107
|
+
call_template_type: "panel_event",
|
|
108
|
+
event_type: "industry-theme.kanban-panel:filter-tasks"
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
var kanbanPanelTools = [
|
|
112
|
+
moveTaskTool,
|
|
113
|
+
selectTaskTool,
|
|
114
|
+
refreshBoardTool,
|
|
115
|
+
filterTasksTool
|
|
116
|
+
];
|
|
117
|
+
var kanbanPanelToolsMetadata = {
|
|
118
|
+
id: "industry-theme.kanban-panel",
|
|
119
|
+
name: "Kanban Panel",
|
|
120
|
+
description: "Tools provided by the backlogmd kanban panel extension",
|
|
121
|
+
tools: kanbanPanelTools
|
|
122
|
+
};
|
|
123
|
+
export {
|
|
124
|
+
selectTaskTool,
|
|
125
|
+
refreshBoardTool,
|
|
126
|
+
moveTaskTool,
|
|
127
|
+
kanbanPanelToolsMetadata,
|
|
128
|
+
kanbanPanelTools,
|
|
129
|
+
filterTasksTool
|
|
130
|
+
};
|
package/package.json
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@industry-theme/backlogmd-kanban-panel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Kanban board panel for visualizing Backlog.md tasks in the industry-themed panel framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/panels.bundle.js",
|
|
7
7
|
"module": "dist/panels.bundle.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/panels.bundle.js",
|
|
13
|
+
"require": "./dist/panels.bundle.js",
|
|
14
|
+
"default": "./dist/panels.bundle.js"
|
|
15
|
+
},
|
|
16
|
+
"./tools": {
|
|
17
|
+
"types": "./dist/tools/index.d.ts",
|
|
18
|
+
"import": "./dist/tools.bundle.js",
|
|
19
|
+
"require": "./dist/tools.bundle.js",
|
|
20
|
+
"default": "./dist/tools.bundle.js"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
9
23
|
"keywords": [
|
|
10
24
|
"panel-extension",
|
|
11
25
|
"kanban",
|
|
@@ -15,8 +29,9 @@
|
|
|
15
29
|
"author": "Industry Theme",
|
|
16
30
|
"license": "MIT",
|
|
17
31
|
"scripts": {
|
|
18
|
-
"build": "bun run clean && bun run build:panel && bun run build:types",
|
|
32
|
+
"build": "bun run clean && bun run build:panel && bun run build:tools && bun run build:types",
|
|
19
33
|
"build:panel": "vite build",
|
|
34
|
+
"build:tools": "bun build ./src/tools/index.ts --outfile ./dist/tools.bundle.js --format esm --target browser",
|
|
20
35
|
"build:types": "tsc --project tsconfig.build.json --emitDeclarationOnly --declaration --declarationMap",
|
|
21
36
|
"dev": "vite build --watch",
|
|
22
37
|
"clean": "rm -rf dist",
|
|
@@ -40,23 +55,20 @@
|
|
|
40
55
|
}
|
|
41
56
|
},
|
|
42
57
|
"dependencies": {
|
|
43
|
-
"@
|
|
44
|
-
"@principal-ade/
|
|
58
|
+
"@backlog-md/core": "0.1.1",
|
|
59
|
+
"@principal-ade/industry-theme": "^0.1.3",
|
|
60
|
+
"@principal-ade/panel-framework-core": "^0.1.5",
|
|
61
|
+
"@principal-ade/utcp-panel-event": "^0.1.0",
|
|
45
62
|
"clsx": "^2.1.1",
|
|
46
|
-
"lucide-react": "^0.552.0"
|
|
47
|
-
"yaml": "^2.8.1"
|
|
63
|
+
"lucide-react": "^0.552.0"
|
|
48
64
|
},
|
|
49
65
|
"devDependencies": {
|
|
50
|
-
"@chromatic-com/storybook": "^
|
|
66
|
+
"@chromatic-com/storybook": "^4.1.3",
|
|
51
67
|
"@eslint/js": "^9.32.0",
|
|
52
|
-
"@storybook/addon-
|
|
53
|
-
"@storybook/addon-
|
|
54
|
-
"@storybook/addon-
|
|
55
|
-
"@storybook/
|
|
56
|
-
"@storybook/blocks": "^8.5.0",
|
|
57
|
-
"@storybook/react": "^8.5.0",
|
|
58
|
-
"@storybook/react-vite": "^8.5.0",
|
|
59
|
-
"@storybook/test": "^8.5.0",
|
|
68
|
+
"@storybook/addon-docs": "10.1.2",
|
|
69
|
+
"@storybook/addon-links": "10.1.2",
|
|
70
|
+
"@storybook/addon-onboarding": "10.1.2",
|
|
71
|
+
"@storybook/react-vite": "10.1.2",
|
|
60
72
|
"@types/bun": "latest",
|
|
61
73
|
"@types/node": "^22.15.26",
|
|
62
74
|
"@types/react": "^19.0.0",
|
|
@@ -69,11 +81,11 @@
|
|
|
69
81
|
"eslint-config-prettier": "^10.1.8",
|
|
70
82
|
"eslint-plugin-react": "^7.37.2",
|
|
71
83
|
"eslint-plugin-react-hooks": "^5.0.0",
|
|
72
|
-
"eslint-plugin-storybook": "
|
|
84
|
+
"eslint-plugin-storybook": "10.1.2",
|
|
73
85
|
"prettier": "^3.6.2",
|
|
74
86
|
"react": "^19.0.0",
|
|
75
87
|
"react-dom": "^19.0.0",
|
|
76
|
-
"storybook": "
|
|
88
|
+
"storybook": "10.1.2",
|
|
77
89
|
"typescript": "^5.0.4",
|
|
78
90
|
"typescript-eslint": "^8.38.0",
|
|
79
91
|
"vite": "^6.0.7"
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BacklogAdapter
|
|
3
|
-
*
|
|
4
|
-
* Provides a clean interface for accessing Backlog.md data from a repository.
|
|
5
|
-
* Encapsulates all Backlog.md-specific logic and file parsing.
|
|
6
|
-
*/
|
|
7
|
-
import type { FileAccessFunctions, IBacklogAdapter, BacklogConfig, Task } from './types';
|
|
8
|
-
export declare class BacklogAdapter implements IBacklogAdapter {
|
|
9
|
-
private fileAccess;
|
|
10
|
-
private configCache;
|
|
11
|
-
private tasksCache;
|
|
12
|
-
constructor(fileAccess: FileAccessFunctions);
|
|
13
|
-
/**
|
|
14
|
-
* Check if the repository is a Backlog.md project
|
|
15
|
-
*/
|
|
16
|
-
isBacklogProject(): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Get the Backlog.md project configuration
|
|
19
|
-
*/
|
|
20
|
-
getConfig(): Promise<BacklogConfig>;
|
|
21
|
-
/**
|
|
22
|
-
* Get the list of status columns from config
|
|
23
|
-
*/
|
|
24
|
-
getStatuses(): Promise<string[]>;
|
|
25
|
-
/**
|
|
26
|
-
* Get all tasks from the backlog
|
|
27
|
-
*/
|
|
28
|
-
getTasks(includeCompleted?: boolean): Promise<Task[]>;
|
|
29
|
-
/**
|
|
30
|
-
* Get tasks grouped by status
|
|
31
|
-
*/
|
|
32
|
-
getTasksByStatus(includeCompleted?: boolean): Promise<Map<string, Task[]>>;
|
|
33
|
-
/**
|
|
34
|
-
* Clear all caches (useful for refresh)
|
|
35
|
-
*/
|
|
36
|
-
clearCache(): void;
|
|
37
|
-
/**
|
|
38
|
-
* Find all task files in the repository
|
|
39
|
-
*/
|
|
40
|
-
private findTaskFiles;
|
|
41
|
-
/**
|
|
42
|
-
* Check if a file path is a task file
|
|
43
|
-
*/
|
|
44
|
-
private isTaskFile;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Factory function to create a BacklogAdapter
|
|
48
|
-
*/
|
|
49
|
-
export declare function createBacklogAdapter(fileAccess: FileAccessFunctions): IBacklogAdapter;
|
|
50
|
-
//# sourceMappingURL=BacklogAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BacklogAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/BacklogAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,IAAI,EACL,MAAM,SAAS,CAAC;AAQjB,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,UAAU,CAAuB;gBAE7B,UAAU,EAAE,mBAAmB;IAI3C;;OAEG;IACI,gBAAgB,IAAI,OAAO;IAiBlC;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAkDhD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAK7C;;OAEG;IACU,QAAQ,CAAC,gBAAgB,UAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAmD/D;;OAEG;IACU,gBAAgB,CAC3B,gBAAgB,UAAO,GACtB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAwC/B;;OAEG;IACI,UAAU,IAAI,IAAI;IAKzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,UAAU;CAUnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,mBAAmB,GAC9B,eAAe,CAEjB"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backlog.md Config Parser
|
|
3
|
-
*
|
|
4
|
-
* This parser implementation is copied verbatim from the official Backlog.md project:
|
|
5
|
-
* Source: https://github.com/MrLesk/Backlog.md/blob/main/src/file-system/operations.ts
|
|
6
|
-
* License: MIT
|
|
7
|
-
*
|
|
8
|
-
* This is a temporary solution with precedent in this codebase. We hope the Backlog.md
|
|
9
|
-
* maintainers will eventually publish this as a separate npm package that can be imported.
|
|
10
|
-
*
|
|
11
|
-
* The official Backlog.md project uses a custom line-by-line parser instead of a YAML library,
|
|
12
|
-
* which handles their config format more reliably than standard YAML parsers.
|
|
13
|
-
*/
|
|
14
|
-
import type { BacklogConfig } from './types';
|
|
15
|
-
/**
|
|
16
|
-
* Parse Backlog.md config.yml content using the official parser logic
|
|
17
|
-
* Copied from: https://github.com/MrLesk/Backlog.md/blob/main/src/file-system/operations.ts
|
|
18
|
-
*/
|
|
19
|
-
export declare function parseBacklogConfig(content: string): BacklogConfig;
|
|
20
|
-
/**
|
|
21
|
-
* Serialize BacklogConfig back to config.yml format
|
|
22
|
-
* Copied from: https://github.com/MrLesk/Backlog.md/blob/main/src/file-system/operations.ts
|
|
23
|
-
*/
|
|
24
|
-
export declare function serializeBacklogConfig(config: BacklogConfig): string;
|
|
25
|
-
//# sourceMappingURL=backlog-config-parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backlog-config-parser.d.ts","sourceRoot":"","sources":["../../src/adapters/backlog-config-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CA2GjE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAcpE"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backlog Parser Utilities
|
|
3
|
-
*
|
|
4
|
-
* Functions for parsing Backlog.md YAML frontmatter and markdown content.
|
|
5
|
-
*/
|
|
6
|
-
import type { Task, BacklogConfig } from './types';
|
|
7
|
-
/**
|
|
8
|
-
* Parse YAML string using the yaml library (for task frontmatter only)
|
|
9
|
-
*/
|
|
10
|
-
export declare function parseYaml(yamlString: string): Record<string, unknown>;
|
|
11
|
-
/**
|
|
12
|
-
* Parse Backlog.md config.yml file
|
|
13
|
-
* Uses the official Backlog.md parser implementation
|
|
14
|
-
*/
|
|
15
|
-
export declare function parseBacklogConfig(content: string): BacklogConfig;
|
|
16
|
-
/**
|
|
17
|
-
* Parse a Backlog.md task file
|
|
18
|
-
*/
|
|
19
|
-
export declare function parseTaskFile(content: string, filepath: string): Task;
|
|
20
|
-
/**
|
|
21
|
-
* Sort tasks within a status column
|
|
22
|
-
*/
|
|
23
|
-
export declare function sortTasks(tasks: Task[]): Task[];
|
|
24
|
-
//# sourceMappingURL=backlog-parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backlog-parser.d.ts","sourceRoot":"","sources":["../../src/adapters/backlog-parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,IAAI,EAEJ,aAAa,EAEd,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAkCjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAwCrE;AAsGD;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAqB/C"}
|
package/dist/adapters/types.d.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adapter Types
|
|
3
|
-
*
|
|
4
|
-
* Defines the interfaces and types used by the BacklogAdapter
|
|
5
|
-
* to provide a clean abstraction over Backlog.md file access.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* File access functions provided to the adapter
|
|
9
|
-
*/
|
|
10
|
-
export interface FileAccessFunctions {
|
|
11
|
-
/**
|
|
12
|
-
* Fetch the content of a file by path
|
|
13
|
-
* @param path - Relative path from repository root (e.g., "backlog/config.yml")
|
|
14
|
-
* @returns Promise resolving to file content as string
|
|
15
|
-
*/
|
|
16
|
-
fetchFile: (path: string) => Promise<string>;
|
|
17
|
-
/**
|
|
18
|
-
* List all files in the repository
|
|
19
|
-
* @returns Array of file paths relative to repository root
|
|
20
|
-
*/
|
|
21
|
-
listFiles: () => string[];
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Backlog.md project configuration
|
|
25
|
-
*/
|
|
26
|
-
export interface BacklogConfig {
|
|
27
|
-
project_name: string;
|
|
28
|
-
default_status: string;
|
|
29
|
-
statuses: string[];
|
|
30
|
-
labels?: string[];
|
|
31
|
-
milestones?: string[];
|
|
32
|
-
date_format?: string;
|
|
33
|
-
default_editor?: string;
|
|
34
|
-
auto_commit?: boolean;
|
|
35
|
-
zero_padded_ids?: number;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Task metadata from YAML frontmatter
|
|
39
|
-
*/
|
|
40
|
-
export interface TaskMetadata {
|
|
41
|
-
id: string;
|
|
42
|
-
title: string;
|
|
43
|
-
status: string;
|
|
44
|
-
assignee: string[];
|
|
45
|
-
created_date: string;
|
|
46
|
-
updated_date?: string;
|
|
47
|
-
labels: string[];
|
|
48
|
-
dependencies: string[];
|
|
49
|
-
priority?: 'low' | 'medium' | 'high';
|
|
50
|
-
ordinal?: number;
|
|
51
|
-
parent?: string;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Complete task with parsed content
|
|
55
|
-
*/
|
|
56
|
-
export interface Task extends TaskMetadata {
|
|
57
|
-
createdDate: string;
|
|
58
|
-
updatedDate?: string;
|
|
59
|
-
parentTaskId?: string;
|
|
60
|
-
body: string;
|
|
61
|
-
rawContent?: string;
|
|
62
|
-
description?: string;
|
|
63
|
-
acceptanceCriteriaItems?: AcceptanceCriterion[];
|
|
64
|
-
implementationPlan?: string;
|
|
65
|
-
implementationNotes?: string;
|
|
66
|
-
subtasks?: string[];
|
|
67
|
-
reporter?: string;
|
|
68
|
-
milestone?: string;
|
|
69
|
-
branch?: string;
|
|
70
|
-
filePath?: string;
|
|
71
|
-
lastModified?: Date;
|
|
72
|
-
source?: 'local' | 'remote' | 'completed';
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Acceptance criterion from task
|
|
76
|
-
*/
|
|
77
|
-
export interface AcceptanceCriterion {
|
|
78
|
-
index: number;
|
|
79
|
-
text: string;
|
|
80
|
-
checked: boolean;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Main adapter interface
|
|
84
|
-
*/
|
|
85
|
-
export interface IBacklogAdapter {
|
|
86
|
-
/**
|
|
87
|
-
* Get the Backlog.md project configuration
|
|
88
|
-
*/
|
|
89
|
-
getConfig(): Promise<BacklogConfig>;
|
|
90
|
-
/**
|
|
91
|
-
* Get all tasks from the backlog
|
|
92
|
-
* @param includeCompleted - Whether to include completed tasks (default: true)
|
|
93
|
-
*/
|
|
94
|
-
getTasks(includeCompleted?: boolean): Promise<Task[]>;
|
|
95
|
-
/**
|
|
96
|
-
* Get the list of status columns from config
|
|
97
|
-
*/
|
|
98
|
-
getStatuses(): Promise<string[]>;
|
|
99
|
-
/**
|
|
100
|
-
* Get tasks grouped by status
|
|
101
|
-
* @param includeCompleted - Whether to include completed tasks (default: true)
|
|
102
|
-
*/
|
|
103
|
-
getTasksByStatus(includeCompleted?: boolean): Promise<Map<string, Task[]>>;
|
|
104
|
-
/**
|
|
105
|
-
* Check if the repository is a Backlog.md project
|
|
106
|
-
*/
|
|
107
|
-
isBacklogProject(): boolean;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Error thrown when Backlog.md files are not found or invalid
|
|
111
|
-
*/
|
|
112
|
-
export declare class BacklogAdapterError extends Error {
|
|
113
|
-
constructor(message: string);
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
export type TaskStatus = string;
|
|
2
|
-
export interface AcceptanceCriterion {
|
|
3
|
-
index: number;
|
|
4
|
-
text: string;
|
|
5
|
-
checked: boolean;
|
|
6
|
-
}
|
|
7
|
-
export interface AcceptanceCriterionInput {
|
|
8
|
-
text: string;
|
|
9
|
-
checked?: boolean;
|
|
10
|
-
}
|
|
11
|
-
export interface Task {
|
|
12
|
-
id: string;
|
|
13
|
-
title: string;
|
|
14
|
-
status: TaskStatus;
|
|
15
|
-
assignee: string[];
|
|
16
|
-
reporter?: string;
|
|
17
|
-
createdDate: string;
|
|
18
|
-
updatedDate?: string;
|
|
19
|
-
labels: string[];
|
|
20
|
-
milestone?: string;
|
|
21
|
-
dependencies: string[];
|
|
22
|
-
readonly rawContent?: string;
|
|
23
|
-
description?: string;
|
|
24
|
-
implementationPlan?: string;
|
|
25
|
-
implementationNotes?: string;
|
|
26
|
-
/** Structured acceptance criteria parsed from body (checked state + text + index) */
|
|
27
|
-
acceptanceCriteriaItems?: AcceptanceCriterion[];
|
|
28
|
-
parentTaskId?: string;
|
|
29
|
-
subtasks?: string[];
|
|
30
|
-
priority?: "high" | "medium" | "low";
|
|
31
|
-
branch?: string;
|
|
32
|
-
ordinal?: number;
|
|
33
|
-
filePath?: string;
|
|
34
|
-
lastModified?: Date;
|
|
35
|
-
source?: "local" | "remote" | "completed";
|
|
36
|
-
}
|
|
37
|
-
export interface TaskCreateInput {
|
|
38
|
-
title: string;
|
|
39
|
-
description?: string;
|
|
40
|
-
status?: TaskStatus;
|
|
41
|
-
priority?: "high" | "medium" | "low";
|
|
42
|
-
labels?: string[];
|
|
43
|
-
assignee?: string[];
|
|
44
|
-
dependencies?: string[];
|
|
45
|
-
parentTaskId?: string;
|
|
46
|
-
implementationPlan?: string;
|
|
47
|
-
implementationNotes?: string;
|
|
48
|
-
acceptanceCriteria?: AcceptanceCriterionInput[];
|
|
49
|
-
rawContent?: string;
|
|
50
|
-
}
|
|
51
|
-
export interface TaskUpdateInput {
|
|
52
|
-
title?: string;
|
|
53
|
-
description?: string;
|
|
54
|
-
status?: TaskStatus;
|
|
55
|
-
priority?: "high" | "medium" | "low";
|
|
56
|
-
labels?: string[];
|
|
57
|
-
addLabels?: string[];
|
|
58
|
-
removeLabels?: string[];
|
|
59
|
-
assignee?: string[];
|
|
60
|
-
ordinal?: number;
|
|
61
|
-
dependencies?: string[];
|
|
62
|
-
addDependencies?: string[];
|
|
63
|
-
removeDependencies?: string[];
|
|
64
|
-
implementationPlan?: string;
|
|
65
|
-
appendImplementationPlan?: string[];
|
|
66
|
-
clearImplementationPlan?: boolean;
|
|
67
|
-
implementationNotes?: string;
|
|
68
|
-
appendImplementationNotes?: string[];
|
|
69
|
-
clearImplementationNotes?: boolean;
|
|
70
|
-
acceptanceCriteria?: AcceptanceCriterionInput[];
|
|
71
|
-
addAcceptanceCriteria?: Array<AcceptanceCriterionInput | string>;
|
|
72
|
-
removeAcceptanceCriteria?: number[];
|
|
73
|
-
checkAcceptanceCriteria?: number[];
|
|
74
|
-
uncheckAcceptanceCriteria?: number[];
|
|
75
|
-
rawContent?: string;
|
|
76
|
-
}
|
|
77
|
-
export interface TaskListFilter {
|
|
78
|
-
status?: string;
|
|
79
|
-
assignee?: string;
|
|
80
|
-
priority?: "high" | "medium" | "low";
|
|
81
|
-
parentTaskId?: string;
|
|
82
|
-
}
|
|
83
|
-
export interface Decision {
|
|
84
|
-
id: string;
|
|
85
|
-
title: string;
|
|
86
|
-
date: string;
|
|
87
|
-
status: "proposed" | "accepted" | "rejected" | "superseded";
|
|
88
|
-
context: string;
|
|
89
|
-
decision: string;
|
|
90
|
-
consequences: string;
|
|
91
|
-
alternatives?: string;
|
|
92
|
-
readonly rawContent: string;
|
|
93
|
-
}
|
|
94
|
-
export interface Document {
|
|
95
|
-
id: string;
|
|
96
|
-
title: string;
|
|
97
|
-
type: "readme" | "guide" | "specification" | "other";
|
|
98
|
-
createdDate: string;
|
|
99
|
-
updatedDate?: string;
|
|
100
|
-
rawContent: string;
|
|
101
|
-
tags?: string[];
|
|
102
|
-
name?: string;
|
|
103
|
-
path?: string;
|
|
104
|
-
lastModified?: string;
|
|
105
|
-
}
|
|
106
|
-
export type SearchResultType = "task" | "document" | "decision";
|
|
107
|
-
export type SearchPriorityFilter = "high" | "medium" | "low";
|
|
108
|
-
export interface SearchMatch {
|
|
109
|
-
key?: string;
|
|
110
|
-
indices: Array<[number, number]>;
|
|
111
|
-
value?: unknown;
|
|
112
|
-
}
|
|
113
|
-
export interface SearchFilters {
|
|
114
|
-
status?: string | string[];
|
|
115
|
-
priority?: SearchPriorityFilter | SearchPriorityFilter[];
|
|
116
|
-
assignee?: string | string[];
|
|
117
|
-
labels?: string | string[];
|
|
118
|
-
}
|
|
119
|
-
export interface SearchOptions {
|
|
120
|
-
query?: string;
|
|
121
|
-
limit?: number;
|
|
122
|
-
types?: SearchResultType[];
|
|
123
|
-
filters?: SearchFilters;
|
|
124
|
-
}
|
|
125
|
-
export interface TaskSearchResult {
|
|
126
|
-
type: "task";
|
|
127
|
-
score: number | null;
|
|
128
|
-
task: Task;
|
|
129
|
-
matches?: SearchMatch[];
|
|
130
|
-
}
|
|
131
|
-
export interface DocumentSearchResult {
|
|
132
|
-
type: "document";
|
|
133
|
-
score: number | null;
|
|
134
|
-
document: Document;
|
|
135
|
-
matches?: SearchMatch[];
|
|
136
|
-
}
|
|
137
|
-
export interface DecisionSearchResult {
|
|
138
|
-
type: "decision";
|
|
139
|
-
score: number | null;
|
|
140
|
-
decision: Decision;
|
|
141
|
-
matches?: SearchMatch[];
|
|
142
|
-
}
|
|
143
|
-
export type SearchResult = TaskSearchResult | DocumentSearchResult | DecisionSearchResult;
|
|
144
|
-
export interface Sequence {
|
|
145
|
-
/** 1-based sequence index */
|
|
146
|
-
index: number;
|
|
147
|
-
/** Tasks that can be executed in parallel within this sequence */
|
|
148
|
-
tasks: Task[];
|
|
149
|
-
}
|
|
150
|
-
export interface BacklogConfig {
|
|
151
|
-
projectName: string;
|
|
152
|
-
defaultAssignee?: string;
|
|
153
|
-
defaultReporter?: string;
|
|
154
|
-
statuses: string[];
|
|
155
|
-
labels: string[];
|
|
156
|
-
milestones: string[];
|
|
157
|
-
defaultStatus?: string;
|
|
158
|
-
dateFormat: string;
|
|
159
|
-
maxColumnWidth?: number;
|
|
160
|
-
taskResolutionStrategy?: "most_recent" | "most_progressed";
|
|
161
|
-
defaultEditor?: string;
|
|
162
|
-
autoOpenBrowser?: boolean;
|
|
163
|
-
defaultPort?: number;
|
|
164
|
-
remoteOperations?: boolean;
|
|
165
|
-
autoCommit?: boolean;
|
|
166
|
-
zeroPaddedIds?: number;
|
|
167
|
-
timezonePreference?: string;
|
|
168
|
-
includeDateTimeInDates?: boolean;
|
|
169
|
-
bypassGitHooks?: boolean;
|
|
170
|
-
checkActiveBranches?: boolean;
|
|
171
|
-
activeBranchDays?: number;
|
|
172
|
-
mcp?: {
|
|
173
|
-
http?: {
|
|
174
|
-
host?: string;
|
|
175
|
-
port?: number;
|
|
176
|
-
auth?: {
|
|
177
|
-
type?: "bearer" | "basic" | "none";
|
|
178
|
-
token?: string;
|
|
179
|
-
username?: string;
|
|
180
|
-
password?: string;
|
|
181
|
-
};
|
|
182
|
-
cors?: {
|
|
183
|
-
origin?: string | string[];
|
|
184
|
-
credentials?: boolean;
|
|
185
|
-
};
|
|
186
|
-
enableDnsRebindingProtection?: boolean;
|
|
187
|
-
allowedHosts?: string[];
|
|
188
|
-
allowedOrigins?: string[];
|
|
189
|
-
};
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
export interface ParsedMarkdown {
|
|
193
|
-
frontmatter: Record<string, unknown>;
|
|
194
|
-
content: string;
|
|
195
|
-
}
|
|
196
|
-
//# sourceMappingURL=index.d.ts.map
|