argustack 0.1.11 → 0.1.13

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.
Files changed (99) hide show
  1. package/dist/adapters/board/index.d.ts +6 -0
  2. package/dist/adapters/board/index.d.ts.map +1 -0
  3. package/dist/adapters/board/index.js +6 -0
  4. package/dist/adapters/board/index.js.map +1 -0
  5. package/dist/adapters/board/mapper.d.ts +14 -0
  6. package/dist/adapters/board/mapper.d.ts.map +1 -0
  7. package/dist/adapters/board/mapper.js +25 -0
  8. package/dist/adapters/board/mapper.js.map +1 -0
  9. package/dist/adapters/board/md-parser.d.ts +16 -0
  10. package/dist/adapters/board/md-parser.d.ts.map +1 -0
  11. package/dist/adapters/board/md-parser.js +44 -0
  12. package/dist/adapters/board/md-parser.js.map +1 -0
  13. package/dist/adapters/board/skill-discovery.d.ts +8 -0
  14. package/dist/adapters/board/skill-discovery.d.ts.map +1 -0
  15. package/dist/adapters/board/skill-discovery.js +60 -0
  16. package/dist/adapters/board/skill-discovery.js.map +1 -0
  17. package/dist/adapters/board/skill-runner.d.ts +10 -0
  18. package/dist/adapters/board/skill-runner.d.ts.map +1 -0
  19. package/dist/adapters/board/skill-runner.js +65 -0
  20. package/dist/adapters/board/skill-runner.js.map +1 -0
  21. package/dist/adapters/board/store.d.ts +21 -0
  22. package/dist/adapters/board/store.d.ts.map +1 -0
  23. package/dist/adapters/board/store.js +176 -0
  24. package/dist/adapters/board/store.js.map +1 -0
  25. package/dist/adapters/postgres/storage.d.ts +2 -1
  26. package/dist/adapters/postgres/storage.d.ts.map +1 -1
  27. package/dist/adapters/postgres/storage.js +55 -0
  28. package/dist/adapters/postgres/storage.js.map +1 -1
  29. package/dist/board/assets/index-Bnh8GW_4.css +1 -0
  30. package/dist/board/assets/index-CEXc5QXH.js +68 -0
  31. package/dist/board/favicon.png +0 -0
  32. package/dist/board/index.html +14 -0
  33. package/dist/cli/board-server.d.ts +2 -0
  34. package/dist/cli/board-server.d.ts.map +1 -0
  35. package/dist/cli/board-server.js +124 -0
  36. package/dist/cli/board-server.js.map +1 -0
  37. package/dist/cli/board.d.ts +3 -0
  38. package/dist/cli/board.d.ts.map +1 -0
  39. package/dist/cli/board.js +26 -0
  40. package/dist/cli/board.js.map +1 -0
  41. package/dist/cli/mcp-install.d.ts +9 -0
  42. package/dist/cli/mcp-install.d.ts.map +1 -1
  43. package/dist/cli/mcp-install.js +3 -3
  44. package/dist/cli/mcp-install.js.map +1 -1
  45. package/dist/core/board/board-column.value-object.d.ts +14 -0
  46. package/dist/core/board/board-column.value-object.d.ts.map +1 -0
  47. package/dist/core/board/board-column.value-object.js +36 -0
  48. package/dist/core/board/board-column.value-object.js.map +1 -0
  49. package/dist/core/board/board-task.entity.d.ts +20 -0
  50. package/dist/core/board/board-task.entity.d.ts.map +1 -0
  51. package/dist/core/board/board-task.entity.js +51 -0
  52. package/dist/core/board/board-task.entity.js.map +1 -0
  53. package/dist/core/board/index.d.ts +6 -0
  54. package/dist/core/board/index.d.ts.map +1 -0
  55. package/dist/core/board/index.js +6 -0
  56. package/dist/core/board/index.js.map +1 -0
  57. package/dist/core/board/pipeline.value-object.d.ts +22 -0
  58. package/dist/core/board/pipeline.value-object.d.ts.map +1 -0
  59. package/dist/core/board/pipeline.value-object.js +50 -0
  60. package/dist/core/board/pipeline.value-object.js.map +1 -0
  61. package/dist/core/board/skill-execution.entity.d.ts +18 -0
  62. package/dist/core/board/skill-execution.entity.d.ts.map +1 -0
  63. package/dist/core/board/skill-execution.entity.js +57 -0
  64. package/dist/core/board/skill-execution.entity.js.map +1 -0
  65. package/dist/core/board/task-title.value-object.d.ts +7 -0
  66. package/dist/core/board/task-title.value-object.d.ts.map +1 -0
  67. package/dist/core/board/task-title.value-object.js +20 -0
  68. package/dist/core/board/task-title.value-object.js.map +1 -0
  69. package/dist/core/ports/board-store.d.ts +15 -0
  70. package/dist/core/ports/board-store.d.ts.map +1 -0
  71. package/dist/core/ports/board-store.js +2 -0
  72. package/dist/core/ports/board-store.js.map +1 -0
  73. package/dist/core/ports/skill-runner.d.ts +6 -0
  74. package/dist/core/ports/skill-runner.d.ts.map +1 -0
  75. package/dist/core/ports/skill-runner.js +2 -0
  76. package/dist/core/ports/skill-runner.js.map +1 -0
  77. package/dist/core/ports/storage.d.ts +9 -1
  78. package/dist/core/ports/storage.d.ts.map +1 -1
  79. package/dist/core/types/board.d.ts +21 -0
  80. package/dist/core/types/board.d.ts.map +1 -0
  81. package/dist/core/types/board.js +2 -0
  82. package/dist/core/types/board.js.map +1 -0
  83. package/dist/core/types/index.d.ts +1 -1
  84. package/dist/core/types/index.d.ts.map +1 -1
  85. package/dist/core/types/index.js.map +1 -1
  86. package/dist/core/types/issue.d.ts +5 -0
  87. package/dist/core/types/issue.d.ts.map +1 -1
  88. package/dist/mcp/tools/search.d.ts.map +1 -1
  89. package/dist/mcp/tools/search.js +17 -20
  90. package/dist/mcp/tools/search.js.map +1 -1
  91. package/dist/use-cases/move-task.d.ts +18 -0
  92. package/dist/use-cases/move-task.d.ts.map +1 -0
  93. package/dist/use-cases/move-task.js +45 -0
  94. package/dist/use-cases/move-task.js.map +1 -0
  95. package/dist/use-cases/sync-board.d.ts +13 -0
  96. package/dist/use-cases/sync-board.d.ts.map +1 -0
  97. package/dist/use-cases/sync-board.js +20 -0
  98. package/dist/use-cases/sync-board.js.map +1 -0
  99. package/package.json +13 -3
Binary file
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <link rel="icon" type="image/png" href="/favicon.png" />
7
+ <title>Argustack Board</title>
8
+ <script type="module" crossorigin src="/assets/index-CEXc5QXH.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-Bnh8GW_4.css">
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -0,0 +1,2 @@
1
+ export declare function startBoardServer(wsRoot: string, port: number): Promise<void>;
2
+ //# sourceMappingURL=board-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-server.d.ts","sourceRoot":"","sources":["../../src/cli/board-server.ts"],"names":[],"mappings":"AAoBA,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FlF"}
@@ -0,0 +1,124 @@
1
+ import { createServer } from 'node:http';
2
+ import { join, resolve, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { existsSync, readFileSync } from 'node:fs';
5
+ import chalk from 'chalk';
6
+ import { SqlJsBoardStore } from '../adapters/board/store.js';
7
+ import { ClaudeSkillRunner } from '../adapters/board/skill-runner.js';
8
+ import { discoverSkills } from '../adapters/board/skill-discovery.js';
9
+ import { MoveTaskUseCase } from '../use-cases/move-task.js';
10
+ import { SyncBoardUseCase } from '../use-cases/sync-board.js';
11
+ export async function startBoardServer(wsRoot, port) {
12
+ const store = new SqlJsBoardStore(wsRoot);
13
+ await store.initialize();
14
+ const skillRunner = new ClaudeSkillRunner();
15
+ const moveTask = new MoveTaskUseCase(store, skillRunner);
16
+ const syncBoard = new SyncBoardUseCase(store);
17
+ const projectDir = resolve(wsRoot, '..');
18
+ const skills = discoverSkills(projectDir);
19
+ const skillNames = skills.map((s) => s.name);
20
+ const tasksDir = join(wsRoot, 'Docs', 'Tasks');
21
+ await syncBoard.execute(tasksDir, skillNames);
22
+ const claudeAvailable = await skillRunner.isAvailable();
23
+ const server = createServer((req, res) => {
24
+ void (async () => {
25
+ const url = new URL(req.url ?? '/', `http://localhost:${String(port)}`);
26
+ if (url.pathname === '/api/board' && req.method === 'GET') {
27
+ const boardData = await syncBoard.execute(tasksDir, skillNames);
28
+ const data = {
29
+ tasks: boardData.tasks,
30
+ pipeline: boardData.pipeline,
31
+ skills: skills.map((s) => ({ name: s.name, description: s.description, source: s.source })),
32
+ claudeAvailable,
33
+ };
34
+ res.writeHead(200, { 'Content-Type': 'application/json' });
35
+ res.end(JSON.stringify(data));
36
+ return;
37
+ }
38
+ if (url.pathname === '/api/tasks/move' && req.method === 'POST') {
39
+ const body = await readBody(req);
40
+ const { taskId, targetColumn } = JSON.parse(body);
41
+ res.writeHead(200, {
42
+ 'Content-Type': 'text/event-stream',
43
+ 'Cache-Control': 'no-cache',
44
+ Connection: 'keep-alive',
45
+ });
46
+ try {
47
+ const result = await moveTask.execute({ taskId, targetColumn }, (chunk) => {
48
+ res.write(`data: ${JSON.stringify({ type: 'output', chunk })}\n\n`);
49
+ });
50
+ res.write(`data: ${JSON.stringify({ type: 'done', task: result.task, skillTriggered: result.skillTriggered })}\n\n`);
51
+ }
52
+ catch (err) {
53
+ const message = err instanceof Error ? err.message : String(err);
54
+ res.write(`data: ${JSON.stringify({ type: 'error', message })}\n\n`);
55
+ }
56
+ res.end();
57
+ return;
58
+ }
59
+ if (url.pathname === '/api/pipeline' && req.method === 'PUT') {
60
+ const body = await readBody(req);
61
+ const config = JSON.parse(body);
62
+ await store.savePipeline(config);
63
+ res.writeHead(200, { 'Content-Type': 'application/json' });
64
+ res.end(JSON.stringify({ ok: true }));
65
+ return;
66
+ }
67
+ serveSpa(req, res, url.pathname);
68
+ })();
69
+ });
70
+ server.listen(port, () => {
71
+ console.log('');
72
+ console.log(chalk.bold(' Argustack Board'));
73
+ console.log(` ${chalk.cyan(`http://localhost:${String(port)}`)}`);
74
+ console.log('');
75
+ console.log(` Workspace: ${wsRoot}`);
76
+ console.log(` Skills: ${String(skills.length)} discovered (${skills.map((s) => s.name).join(', ')})`);
77
+ console.log(` Claude CLI: ${claudeAvailable ? chalk.green('available') : chalk.yellow('not found — skill execution disabled')}`);
78
+ console.log('');
79
+ console.log(chalk.dim(' Press Ctrl+C to stop'));
80
+ console.log('');
81
+ });
82
+ const cleanup = async () => {
83
+ console.log(chalk.dim('\n Shutting down...'));
84
+ await store.close();
85
+ server.close();
86
+ process.exit(0);
87
+ };
88
+ process.on('SIGINT', () => { void cleanup(); });
89
+ process.on('SIGTERM', () => { void cleanup(); });
90
+ }
91
+ function readBody(req) {
92
+ return new Promise((done, fail) => {
93
+ const chunks = [];
94
+ req.setEncoding('utf-8');
95
+ req.on('data', (chunk) => chunks.push(chunk));
96
+ req.on('end', () => { done(chunks.join('')); });
97
+ req.on('error', fail);
98
+ });
99
+ }
100
+ function serveSpa(_req, res, pathname) {
101
+ const currentFile = fileURLToPath(import.meta.url);
102
+ const boardDistDir = join(dirname(currentFile), '..', 'board');
103
+ let filePath = join(boardDistDir, pathname === '/' ? 'index.html' : pathname);
104
+ if (!existsSync(filePath)) {
105
+ filePath = join(boardDistDir, 'index.html');
106
+ }
107
+ if (!existsSync(filePath)) {
108
+ res.writeHead(404);
109
+ res.end('Board UI not built. Run: npm run build:board');
110
+ return;
111
+ }
112
+ const ext = filePath.split('.').pop() ?? '';
113
+ const mimeTypes = {
114
+ html: 'text/html',
115
+ js: 'application/javascript',
116
+ css: 'text/css',
117
+ svg: 'image/svg+xml',
118
+ png: 'image/png',
119
+ json: 'application/json',
120
+ };
121
+ res.writeHead(200, { 'Content-Type': mimeTypes[ext] ?? 'application/octet-stream' });
122
+ res.end(readFileSync(filePath));
123
+ }
124
+ //# sourceMappingURL=board-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-server.js","sourceRoot":"","sources":["../../src/cli/board-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerBoardCommand(program: Command): void;
3
+ //# sourceMappingURL=board.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/cli/board.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB3D"}
@@ -0,0 +1,26 @@
1
+ import { join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ import chalk from 'chalk';
4
+ export function registerBoardCommand(program) {
5
+ program
6
+ .command('board')
7
+ .description('Start local Kanban board UI')
8
+ .option('-p, --port <port>', 'Port number', '5002')
9
+ .action(async (opts) => {
10
+ const { findWorkspaceRoot } = await import('../workspace/resolver.js');
11
+ const wsRoot = findWorkspaceRoot();
12
+ if (!wsRoot) {
13
+ console.log(chalk.red('No workspace found. Run: argustack init'));
14
+ process.exit(1);
15
+ }
16
+ const tasksDir = join(wsRoot, 'Docs', 'Tasks');
17
+ if (!existsSync(tasksDir)) {
18
+ console.log(chalk.yellow(`No Docs/Tasks/ directory found in ${wsRoot}`));
19
+ console.log(chalk.dim('Board will start empty. Create task files to populate it.'));
20
+ }
21
+ const port = parseInt(opts.port, 10);
22
+ const { startBoardServer } = await import('./board-server.js');
23
+ await startBoardServer(wsRoot, port);
24
+ });
25
+ }
26
+ //# sourceMappingURL=board.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/cli/board.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,IAAsB,EAAE,EAAE;QACvC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC/D,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,4 +1,10 @@
1
1
  import type { Command } from 'commander';
2
+ interface McpServerEntry {
3
+ readonly command: string;
4
+ readonly args: string[];
5
+ readonly env: Record<string, string>;
6
+ }
7
+ export declare function getClaudeCodeConfigPath(): string;
2
8
  /**
3
9
  * Resolve absolute path to `dist/mcp/server.js`.
4
10
  *
@@ -6,5 +12,8 @@ import type { Command } from 'commander';
6
12
  * Uses import.meta.url to find our own location, then walks to package root.
7
13
  */
8
14
  export declare function resolveServerPath(): string;
15
+ export declare function installIntoConfig(configPath: string, entry: McpServerEntry): void;
16
+ export declare function buildMcpEntry(serverPath: string, workspacePath: string): McpServerEntry;
9
17
  export declare function registerMcpCommands(mcpCmd: Command): void;
18
+ export {};
10
19
  //# sourceMappingURL=mcp-install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-install.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCzC;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C;AAsGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6GzD"}
1
+ {"version":3,"file":"mcp-install.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AASD,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAYD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C;AAwDD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,GACpB,IAAI,CAWN;AAmBD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,cAAc,CAQhB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6GzD"}
@@ -4,7 +4,7 @@ import { fileURLToPath } from 'node:url';
4
4
  import { homedir } from 'node:os';
5
5
  import chalk from 'chalk';
6
6
  import { findWorkspaceRoot } from '../workspace/resolver.js';
7
- function getClaudeCodeConfigPath() {
7
+ export function getClaudeCodeConfigPath() {
8
8
  return join(homedir(), '.claude', 'settings.json');
9
9
  }
10
10
  function getClaudeDesktopConfigPath() {
@@ -70,7 +70,7 @@ function detectClaudeClients() {
70
70
  });
71
71
  return clients;
72
72
  }
73
- function installIntoConfig(configPath, entry) {
73
+ export function installIntoConfig(configPath, entry) {
74
74
  const config = readJsonFile(configPath);
75
75
  if (!config['mcpServers'] || typeof config['mcpServers'] !== 'object') {
76
76
  config['mcpServers'] = {};
@@ -92,7 +92,7 @@ function uninstallFromConfig(configPath) {
92
92
  writeJsonFile(configPath, config);
93
93
  return true;
94
94
  }
95
- function buildMcpEntry(serverPath, workspacePath) {
95
+ export function buildMcpEntry(serverPath, workspacePath) {
96
96
  return {
97
97
  command: 'node',
98
98
  args: [serverPath],
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-install.js","sourceRoot":"","sources":["../../src/cli/mcp-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-install.js","sourceRoot":"","sources":["../../src/cli/mcp-install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type ColumnType = 'system' | 'skill';
2
+ export declare class BoardColumn {
3
+ readonly name: string;
4
+ readonly type: ColumnType;
5
+ readonly displayName: string;
6
+ constructor(name: string, type: ColumnType);
7
+ private static toDisplayName;
8
+ isSystem(): boolean;
9
+ isSkill(): boolean;
10
+ skillName(): string | null;
11
+ equals(other: BoardColumn): boolean;
12
+ toString(): string;
13
+ }
14
+ //# sourceMappingURL=board-column.value-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-column.value-object.d.ts","sourceRoot":"","sources":["../../../src/core/board/board-column.value-object.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAU1C,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,QAAQ,IAAI,OAAO;IAInB,OAAO,IAAI,OAAO;IAIlB,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAInC,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,36 @@
1
+ export class BoardColumn {
2
+ name;
3
+ type;
4
+ displayName;
5
+ constructor(name, type) {
6
+ const trimmed = name.trim();
7
+ if (!trimmed) {
8
+ throw new Error('Column name cannot be empty');
9
+ }
10
+ this.name = trimmed;
11
+ this.type = type;
12
+ this.displayName = BoardColumn.toDisplayName(trimmed);
13
+ }
14
+ static toDisplayName(name) {
15
+ return name
16
+ .split('-')
17
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
18
+ .join(' ');
19
+ }
20
+ isSystem() {
21
+ return this.type === 'system';
22
+ }
23
+ isSkill() {
24
+ return this.type === 'skill';
25
+ }
26
+ skillName() {
27
+ return this.type === 'skill' ? this.name : null;
28
+ }
29
+ equals(other) {
30
+ return this.name === other.name && this.type === other.type;
31
+ }
32
+ toString() {
33
+ return this.name;
34
+ }
35
+ }
36
+ //# sourceMappingURL=board-column.value-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-column.value-object.js","sourceRoot":"","sources":["../../../src/core/board/board-column.value-object.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACb,IAAI,CAAS;IACb,IAAI,CAAa;IACjB,WAAW,CAAS;IAE7B,YAAY,IAAY,EAAE,IAAgB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAY;QACvC,OAAO,IAAI;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;IAChC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,KAAkB;QACvB,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;IAC9D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import { TaskTitle } from './task-title.value-object.js';
2
+ import { BoardColumn } from './board-column.value-object.js';
3
+ import type { Pipeline } from './pipeline.value-object.js';
4
+ import type { BoardTaskData } from '../types/board.js';
5
+ export declare class BoardTaskEntity {
6
+ readonly id: string;
7
+ readonly title: TaskTitle;
8
+ readonly mdPath: string;
9
+ readonly column: string;
10
+ readonly jiraKey: string | null;
11
+ readonly assignee: string | null;
12
+ readonly createdAt: string;
13
+ readonly updatedAt: string;
14
+ private constructor();
15
+ static create(data: BoardTaskData): BoardTaskEntity;
16
+ moveTo(targetColumn: BoardColumn, pipeline: Pipeline): BoardTaskEntity;
17
+ get currentColumn(): string;
18
+ toData(): BoardTaskData;
19
+ }
20
+ //# sourceMappingURL=board-task.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-task.entity.d.ts","sourceRoot":"","sources":["../../../src/core/board/board-task.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,qBAAa,eAAe;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO;IAWP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe;IAInD,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe;IAetE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,MAAM,IAAI,aAAa;CAYxB"}
@@ -0,0 +1,51 @@
1
+ import { TaskTitle } from './task-title.value-object.js';
2
+ import { BoardColumn } from './board-column.value-object.js';
3
+ export class BoardTaskEntity {
4
+ id;
5
+ title;
6
+ mdPath;
7
+ column;
8
+ jiraKey;
9
+ assignee;
10
+ createdAt;
11
+ updatedAt;
12
+ constructor(data) {
13
+ this.id = data.id;
14
+ this.title = new TaskTitle(data.title);
15
+ this.mdPath = data.mdPath;
16
+ this.column = data.column;
17
+ this.jiraKey = data.jiraKey ?? null;
18
+ this.assignee = data.assignee ?? null;
19
+ this.createdAt = data.createdAt;
20
+ this.updatedAt = data.updatedAt;
21
+ }
22
+ static create(data) {
23
+ return new BoardTaskEntity(data);
24
+ }
25
+ moveTo(targetColumn, pipeline) {
26
+ if (!pipeline.canMoveTo(new BoardColumn(this.column, 'skill'), targetColumn)) {
27
+ throw new Error(`Cannot move to column "${targetColumn.name}"`);
28
+ }
29
+ return new BoardTaskEntity({
30
+ ...this.toData(),
31
+ column: targetColumn.name,
32
+ updatedAt: new Date().toISOString(),
33
+ });
34
+ }
35
+ get currentColumn() {
36
+ return this.column;
37
+ }
38
+ toData() {
39
+ return {
40
+ id: this.id,
41
+ title: this.title.toString(),
42
+ mdPath: this.mdPath,
43
+ column: this.column,
44
+ jiraKey: this.jiraKey,
45
+ assignee: this.assignee,
46
+ createdAt: this.createdAt,
47
+ updatedAt: this.updatedAt,
48
+ };
49
+ }
50
+ }
51
+ //# sourceMappingURL=board-task.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-task.entity.js","sourceRoot":"","sources":["../../../src/core/board/board-task.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,MAAM,OAAO,eAAe;IACjB,EAAE,CAAS;IACX,KAAK,CAAY;IACjB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,OAAO,CAAgB;IACvB,QAAQ,CAAgB;IACxB,SAAS,CAAS;IAClB,SAAS,CAAS;IAE3B,YAAoB,IAAmB;QACrC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAmB;QAC/B,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,YAAyB,EAAE,QAAkB;QAClD,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,YAAY,CACb,EAAE,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,eAAe,CAAC;YACzB,GAAG,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,YAAY,CAAC,IAAI;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export { BoardTaskEntity } from './board-task.entity.js';
2
+ export { SkillExecutionEntity } from './skill-execution.entity.js';
3
+ export { BoardColumn, type ColumnType } from './board-column.value-object.js';
4
+ export { Pipeline, type PipelineConfig, type PipelineColumnConfig } from './pipeline.value-object.js';
5
+ export { TaskTitle } from './task-title.value-object.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/board/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { BoardTaskEntity } from './board-task.entity.js';
2
+ export { SkillExecutionEntity } from './skill-execution.entity.js';
3
+ export { BoardColumn } from './board-column.value-object.js';
4
+ export { Pipeline } from './pipeline.value-object.js';
5
+ export { TaskTitle } from './task-title.value-object.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/board/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAmB,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAkD,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { BoardColumn, type ColumnType } from './board-column.value-object.js';
2
+ export interface PipelineColumnConfig {
3
+ name: string;
4
+ displayName: string;
5
+ type: ColumnType;
6
+ }
7
+ export interface PipelineConfig {
8
+ columns: PipelineColumnConfig[];
9
+ port: number;
10
+ }
11
+ export declare class Pipeline {
12
+ private readonly columns;
13
+ private constructor();
14
+ static fromConfig(config: PipelineConfig, availableSkills: string[]): Pipeline;
15
+ canMoveTo(_from: BoardColumn, to: BoardColumn): boolean;
16
+ getNextColumn(current: BoardColumn): BoardColumn | null;
17
+ getColumns(): readonly BoardColumn[];
18
+ findColumn(name: string): BoardColumn | null;
19
+ reorder(newOrder: string[]): Pipeline;
20
+ toConfig(port: number): PipelineConfig;
21
+ }
22
+ //# sourceMappingURL=pipeline.value-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.value-object.d.ts","sourceRoot":"","sources":["../../../src/core/board/pipeline.value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IAEjD,OAAO;IAIP,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,QAAQ;IAa9E,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO;IAIvD,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI;IAQvD,UAAU,IAAI,SAAS,WAAW,EAAE;IAIpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAI5C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ;IAWrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;CAMvC"}
@@ -0,0 +1,50 @@
1
+ import { BoardColumn } from './board-column.value-object.js';
2
+ export class Pipeline {
3
+ columns;
4
+ constructor(columns) {
5
+ this.columns = Object.freeze(columns);
6
+ }
7
+ static fromConfig(config, availableSkills) {
8
+ const columns = config.columns.map((c) => new BoardColumn(c.name, c.type));
9
+ for (const skill of availableSkills) {
10
+ const exists = columns.some((c) => c.name === skill);
11
+ if (!exists) {
12
+ columns.splice(columns.length - 1, 0, new BoardColumn(skill, 'skill'));
13
+ }
14
+ }
15
+ return new Pipeline(columns);
16
+ }
17
+ canMoveTo(_from, to) {
18
+ return this.columns.some((c) => c.equals(to));
19
+ }
20
+ getNextColumn(current) {
21
+ const idx = this.columns.findIndex((c) => c.equals(current));
22
+ if (idx === -1 || idx >= this.columns.length - 1) {
23
+ return null;
24
+ }
25
+ return this.columns[idx + 1] ?? null;
26
+ }
27
+ getColumns() {
28
+ return this.columns;
29
+ }
30
+ findColumn(name) {
31
+ return this.columns.find((c) => c.name === name) ?? null;
32
+ }
33
+ reorder(newOrder) {
34
+ const reordered = [];
35
+ for (const name of newOrder) {
36
+ const col = this.columns.find((c) => c.name === name);
37
+ if (col) {
38
+ reordered.push(col);
39
+ }
40
+ }
41
+ return new Pipeline(reordered);
42
+ }
43
+ toConfig(port) {
44
+ return {
45
+ columns: this.columns.map((c) => ({ name: c.name, displayName: c.displayName, type: c.type })),
46
+ port,
47
+ };
48
+ }
49
+ }
50
+ //# sourceMappingURL=pipeline.value-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.value-object.js","sourceRoot":"","sources":["../../../src/core/board/pipeline.value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,gCAAgC,CAAC;AAa9E,MAAM,OAAO,QAAQ;IACF,OAAO,CAAyB;IAEjD,YAAoB,OAAsB;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAsB,EAAE,eAAyB;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3E,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,KAAkB,EAAE,EAAe;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,OAAoB;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,QAAkB;QACxB,MAAM,SAAS,GAAkB,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACtD,IAAI,GAAG,EAAE,CAAC;gBACR,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9F,IAAI;SACL,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import type { SkillExecutionData, SkillExecutionStatus } from '../types/board.js';
2
+ export declare class SkillExecutionEntity {
3
+ readonly id: string;
4
+ readonly taskId: string;
5
+ readonly skillName: string;
6
+ readonly status: SkillExecutionStatus;
7
+ readonly output: string;
8
+ readonly startedAt: string;
9
+ readonly finishedAt: string | null;
10
+ private constructor();
11
+ static create(data: SkillExecutionData): SkillExecutionEntity;
12
+ appendOutput(chunk: string): SkillExecutionEntity;
13
+ complete(): SkillExecutionEntity;
14
+ fail(error: string): SkillExecutionEntity;
15
+ isRunning(): boolean;
16
+ toData(): SkillExecutionData;
17
+ }
18
+ //# sourceMappingURL=skill-execution.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-execution.entity.d.ts","sourceRoot":"","sources":["../../../src/core/board/skill-execution.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAElF,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,OAAO;IAUP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB;IAI7D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB;IAOjD,QAAQ,IAAI,oBAAoB;IAQhC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB;IASzC,SAAS,IAAI,OAAO;IAIpB,MAAM,IAAI,kBAAkB;CAW7B"}
@@ -0,0 +1,57 @@
1
+ export class SkillExecutionEntity {
2
+ id;
3
+ taskId;
4
+ skillName;
5
+ status;
6
+ output;
7
+ startedAt;
8
+ finishedAt;
9
+ constructor(data) {
10
+ this.id = data.id;
11
+ this.taskId = data.taskId;
12
+ this.skillName = data.skillName;
13
+ this.status = data.status;
14
+ this.output = data.output;
15
+ this.startedAt = data.startedAt;
16
+ this.finishedAt = data.finishedAt ?? null;
17
+ }
18
+ static create(data) {
19
+ return new SkillExecutionEntity(data);
20
+ }
21
+ appendOutput(chunk) {
22
+ return new SkillExecutionEntity({
23
+ ...this.toData(),
24
+ output: this.output + chunk,
25
+ });
26
+ }
27
+ complete() {
28
+ return new SkillExecutionEntity({
29
+ ...this.toData(),
30
+ status: 'done',
31
+ finishedAt: new Date().toISOString(),
32
+ });
33
+ }
34
+ fail(error) {
35
+ return new SkillExecutionEntity({
36
+ ...this.toData(),
37
+ status: 'error',
38
+ output: this.output + '\n' + error,
39
+ finishedAt: new Date().toISOString(),
40
+ });
41
+ }
42
+ isRunning() {
43
+ return this.status === 'running';
44
+ }
45
+ toData() {
46
+ return {
47
+ id: this.id,
48
+ taskId: this.taskId,
49
+ skillName: this.skillName,
50
+ status: this.status,
51
+ output: this.output,
52
+ startedAt: this.startedAt,
53
+ finishedAt: this.finishedAt,
54
+ };
55
+ }
56
+ }
57
+ //# sourceMappingURL=skill-execution.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-execution.entity.js","sourceRoot":"","sources":["../../../src/core/board/skill-execution.entity.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,oBAAoB;IACtB,EAAE,CAAS;IACX,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,MAAM,CAAuB;IAC7B,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,UAAU,CAAgB;IAEnC,YAAoB,IAAwB;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAwB;QACpC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,OAAO,IAAI,oBAAoB,CAAC;YAC9B,GAAG,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,oBAAoB,CAAC;YAC9B,GAAG,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,OAAO,IAAI,oBAAoB,CAAC;YAC9B,GAAG,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK;YAClC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF"}