agkan 3.16.0 → 3.17.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.ja.md +14 -0
- package/README.md +14 -0
- package/dist/board/boardRoutes.d.ts.map +1 -1
- package/dist/board/boardRoutes.js +8 -22
- package/dist/board/boardRoutes.js.map +1 -1
- package/dist/board/client/main.js +5 -5
- package/dist/cli/commands/board.d.ts.map +1 -1
- package/dist/cli/commands/board.js +25 -10
- package/dist/cli/commands/board.js.map +1 -1
- package/dist/cli/commands/context.js +1 -1
- package/dist/cli/commands/task/add-helpers.d.ts +5 -4
- package/dist/cli/commands/task/add-helpers.d.ts.map +1 -1
- package/dist/cli/commands/task/add-helpers.js +29 -2
- package/dist/cli/commands/task/add-helpers.js.map +1 -1
- package/dist/cli/commands/task/add.d.ts.map +1 -1
- package/dist/cli/commands/task/add.js +19 -4
- package/dist/cli/commands/task/add.js.map +1 -1
- package/dist/cli/commands/task/find.d.ts.map +1 -1
- package/dist/cli/commands/task/find.js +3 -2
- package/dist/cli/commands/task/find.js.map +1 -1
- package/dist/cli/commands/task/list.d.ts.map +1 -1
- package/dist/cli/commands/task/list.js +69 -7
- package/dist/cli/commands/task/list.js.map +1 -1
- package/dist/cli/commands/task/update-helpers.d.ts +1 -0
- package/dist/cli/commands/task/update-helpers.d.ts.map +1 -1
- package/dist/cli/commands/task/update-helpers.js +8 -6
- package/dist/cli/commands/task/update-helpers.js.map +1 -1
- package/dist/cli/commands/task/update.d.ts.map +1 -1
- package/dist/cli/commands/task/update.js +2 -2
- package/dist/cli/commands/task/update.js.map +1 -1
- package/dist/cli/utils/board-daemon.d.ts +8 -1
- package/dist/cli/utils/board-daemon.d.ts.map +1 -1
- package/dist/cli/utils/board-daemon.js +39 -4
- package/dist/cli/utils/board-daemon.js.map +1 -1
- package/dist/hooks/hook-attention.mjs +2 -1
- package/dist/hooks/hook-session-start.mjs +3 -1
- package/dist/hooks/hook-stop.mjs +10 -4
- package/dist/hooks/session-marker.mjs +6 -0
- package/dist/services/TaskService.d.ts +3 -1
- package/dist/services/TaskService.d.ts.map +1 -1
- package/dist/services/TaskService.js +5 -3
- package/dist/services/TaskService.js.map +1 -1
- package/dist/utils/date.d.ts +12 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +18 -0
- package/dist/utils/date.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,9 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getPidFilePath = getPidFilePath;
|
|
7
7
|
exports.readBoardPid = readBoardPid;
|
|
8
|
+
exports.readBoardPort = readBoardPort;
|
|
8
9
|
exports.isBoardRunning = isBoardRunning;
|
|
9
10
|
exports.removePidFile = removePidFile;
|
|
10
11
|
exports.spawnBoardDaemon = spawnBoardDaemon;
|
|
12
|
+
exports.waitForBoardReady = waitForBoardReady;
|
|
11
13
|
exports.killBoardProcess = killBoardProcess;
|
|
12
14
|
const fs_1 = __importDefault(require("fs"));
|
|
13
15
|
const path_1 = __importDefault(require("path"));
|
|
@@ -24,6 +26,16 @@ function readBoardPid() {
|
|
|
24
26
|
const pid = parseInt(content, 10);
|
|
25
27
|
return isNaN(pid) ? null : pid;
|
|
26
28
|
}
|
|
29
|
+
function readBoardPort() {
|
|
30
|
+
const pidFile = getPidFilePath();
|
|
31
|
+
if (!fs_1.default.existsSync(pidFile))
|
|
32
|
+
return null;
|
|
33
|
+
const lines = fs_1.default.readFileSync(pidFile, 'utf8').trim().split('\n');
|
|
34
|
+
if (lines.length < 2)
|
|
35
|
+
return null;
|
|
36
|
+
const port = parseInt(lines[1], 10);
|
|
37
|
+
return isNaN(port) ? null : port;
|
|
38
|
+
}
|
|
27
39
|
function isBoardRunning() {
|
|
28
40
|
const pid = readBoardPid();
|
|
29
41
|
if (pid === null)
|
|
@@ -36,13 +48,13 @@ function isBoardRunning() {
|
|
|
36
48
|
return false;
|
|
37
49
|
}
|
|
38
50
|
}
|
|
39
|
-
function writePidFile(pid) {
|
|
51
|
+
function writePidFile(pid, port) {
|
|
40
52
|
const pidFile = getPidFilePath();
|
|
41
53
|
const dir = path_1.default.dirname(pidFile);
|
|
42
54
|
if (!fs_1.default.existsSync(dir)) {
|
|
43
55
|
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
44
56
|
}
|
|
45
|
-
fs_1.default.writeFileSync(pidFile,
|
|
57
|
+
fs_1.default.writeFileSync(pidFile, `${pid}\n${port}`, { encoding: 'utf8', mode: 0o600 });
|
|
46
58
|
}
|
|
47
59
|
function removePidFile() {
|
|
48
60
|
const pidFile = getPidFilePath();
|
|
@@ -50,7 +62,7 @@ function removePidFile() {
|
|
|
50
62
|
fs_1.default.unlinkSync(pidFile);
|
|
51
63
|
}
|
|
52
64
|
}
|
|
53
|
-
function spawnBoardDaemon(boardArgs) {
|
|
65
|
+
function spawnBoardDaemon(boardArgs, port) {
|
|
54
66
|
const child = (0, child_process_1.spawn)(process.argv[0], [process.argv[1], 'board', ...boardArgs], {
|
|
55
67
|
detached: true,
|
|
56
68
|
stdio: 'ignore',
|
|
@@ -60,9 +72,32 @@ function spawnBoardDaemon(boardArgs) {
|
|
|
60
72
|
throw new Error('Failed to spawn board daemon: child process has no PID');
|
|
61
73
|
}
|
|
62
74
|
const pid = child.pid;
|
|
63
|
-
writePidFile(pid);
|
|
75
|
+
writePidFile(pid, port);
|
|
64
76
|
return pid;
|
|
65
77
|
}
|
|
78
|
+
async function waitForBoardReady(port, options = {}) {
|
|
79
|
+
const timeoutMs = options.timeoutMs ?? 5000;
|
|
80
|
+
const intervalMs = options.intervalMs ?? 100;
|
|
81
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
82
|
+
const deadline = Date.now() + timeoutMs;
|
|
83
|
+
do {
|
|
84
|
+
const controller = new AbortController();
|
|
85
|
+
const attemptTimeout = setTimeout(() => controller.abort(), Math.max(deadline - Date.now(), 50));
|
|
86
|
+
try {
|
|
87
|
+
const response = await fetchImpl(`http://localhost:${port}/api/version`, { signal: controller.signal });
|
|
88
|
+
if (response.ok)
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Server not accepting connections yet, or the request stalled/was aborted; retry until the deadline.
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
clearTimeout(attemptTimeout);
|
|
96
|
+
}
|
|
97
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
98
|
+
} while (Date.now() < deadline);
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
66
101
|
function killBoardProcess() {
|
|
67
102
|
const pid = readBoardPid();
|
|
68
103
|
if (pid === null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-daemon.js","sourceRoot":"","sources":["../../../src/cli/utils/board-daemon.ts"],"names":[],"mappings":";;;;;AAKA,wCAEC;AAED,oCAMC;AAED,wCASC;AAWD,sCAKC;AAED,4CAYC;AAED,4CAcC;
|
|
1
|
+
{"version":3,"file":"board-daemon.js","sourceRoot":"","sources":["../../../src/cli/utils/board-daemon.ts"],"names":[],"mappings":";;;;;AAKA,wCAEC;AAED,oCAMC;AAED,sCAOC;AAED,wCASC;AAWD,sCAKC;AAED,4CAYC;AAQD,8CAqBC;AAED,4CAcC;AA9GD,4CAAoB;AACpB,gDAAwB;AACxB,iDAAsC;AACtC,4CAAoD;AAEpD,SAAgB,cAAc;IAC5B,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAA,0BAAiB,GAAE,EAAE,WAAW,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,YAAY;IAC1B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,SAAgB,cAAc;IAC5B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,IAAY;IAC7C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAmB,EAAE,IAAY;IAChE,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE;QAC7E,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAQM,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,UAAoC,EAAE;IAC1F,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,GAAG,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,oBAAoB,IAAI,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACxG,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,sGAAsG;QACxG,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;IAEhC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,aAAa,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpD,aAAa,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { readFileSync } from 'fs';
|
|
3
|
+
import { getSessionMarkerPath } from './session-marker.mjs';
|
|
3
4
|
|
|
4
5
|
const argSubcmd = process.argv[2];
|
|
5
6
|
const taskIdRaw = process.env.BOARD_TASK_ID;
|
|
@@ -18,7 +19,7 @@ if (!Number.isFinite(taskId)) {
|
|
|
18
19
|
|
|
19
20
|
// Ignore events from subagents — only the main session should trigger attention.
|
|
20
21
|
try {
|
|
21
|
-
const mainSessionId = readFileSync(
|
|
22
|
+
const mainSessionId = readFileSync(getSessionMarkerPath(taskIdRaw), 'utf-8').trim();
|
|
22
23
|
if (mainSessionId) {
|
|
23
24
|
const chunks = [];
|
|
24
25
|
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// Records the main session_id so hook-attention.mjs can ignore subagent events.
|
|
4
|
+
import { getSessionMarkerPath } from './session-marker.mjs';
|
|
5
|
+
|
|
4
6
|
const taskIdRaw = process.env.BOARD_TASK_ID;
|
|
5
7
|
|
|
6
8
|
if (!taskIdRaw) {
|
|
@@ -14,7 +16,7 @@ try {
|
|
|
14
16
|
const sessionId = payload?.session_id;
|
|
15
17
|
if (sessionId) {
|
|
16
18
|
const { writeFileSync } = await import('fs');
|
|
17
|
-
writeFileSync(
|
|
19
|
+
writeFileSync(getSessionMarkerPath(taskIdRaw), sessionId, 'utf-8');
|
|
18
20
|
}
|
|
19
21
|
} catch {
|
|
20
22
|
// best-effort; don't block startup
|
package/dist/hooks/hook-stop.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { promises as fs } from 'fs';
|
|
3
|
+
import { getSessionMarkerPath } from './session-marker.mjs';
|
|
3
4
|
|
|
4
5
|
async function readStdin() {
|
|
5
6
|
const chunks = [];
|
|
@@ -98,8 +99,10 @@ function isBackgroundJobComplete(entries, toolUseId) {
|
|
|
98
99
|
|
|
99
100
|
// Fetches the current task status from the board and checks whether it has reached the
|
|
100
101
|
// run's target status. Reached = current status matches target, or has advanced to a
|
|
101
|
-
// terminal status (done/closed)
|
|
102
|
-
//
|
|
102
|
+
// terminal status (review/done/closed) — review means a PR was created and the agent's
|
|
103
|
+
// work has been handed off, which is a valid completion signal even for run/direct
|
|
104
|
+
// sessions whose target is 'done'. On fetch failure or non-200, returns false so the
|
|
105
|
+
// caller falls through to the normal guard checks instead of overriding them.
|
|
103
106
|
async function isTargetStatusReached(apiUrl, token, taskId, targetStatus) {
|
|
104
107
|
try {
|
|
105
108
|
const res = await fetch(`${apiUrl}/api/internal/tasks/${taskId}/status`, {
|
|
@@ -109,7 +112,7 @@ async function isTargetStatusReached(apiUrl, token, taskId, targetStatus) {
|
|
|
109
112
|
if (!res.ok) return false;
|
|
110
113
|
const data = await res.json();
|
|
111
114
|
const status = data && data.status;
|
|
112
|
-
return status === targetStatus || status === 'done' || status === 'closed';
|
|
115
|
+
return status === targetStatus || status === 'review' || status === 'done' || status === 'closed';
|
|
113
116
|
} catch (err) {
|
|
114
117
|
process.stderr.write(`hook-stop: status check failed: ${(err && err.message) || err}\n`);
|
|
115
118
|
return false;
|
|
@@ -176,10 +179,13 @@ async function main() {
|
|
|
176
179
|
// interactive guard below causes an early return, we would lose the marker needed to
|
|
177
180
|
// tell the main session apart from a sub-agent. It is only unlinked inside
|
|
178
181
|
// notifyComplete, right before the completion POST is actually sent.
|
|
179
|
-
const sessionFile =
|
|
182
|
+
const sessionFile = getSessionMarkerPath(taskIdRaw);
|
|
180
183
|
try {
|
|
181
184
|
const mainSessionId = (await fs.readFile(sessionFile, 'utf-8')).trim();
|
|
182
185
|
if (mainSessionId && mainSessionId !== payload?.session_id) {
|
|
186
|
+
process.stderr.write(
|
|
187
|
+
`hook-stop: main session mismatch (main=${mainSessionId}, current=${payload?.session_id}); treating as sub-agent Stop\n`
|
|
188
|
+
);
|
|
183
189
|
return; // Sub-agent's Stop
|
|
184
190
|
}
|
|
185
191
|
} catch {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Resolves the main-session marker file path shared by hook-session-start.mjs,
|
|
2
|
+
// hook-stop.mjs, and hook-attention.mjs. BOARD_SESSION_MARKER_FILE lets callers
|
|
3
|
+
// (tests) redirect this to an isolated path instead of the real /tmp location.
|
|
4
|
+
export function getSessionMarkerPath(taskId) {
|
|
5
|
+
return process.env.BOARD_SESSION_MARKER_FILE || `/tmp/board-main-session-${taskId}`;
|
|
6
|
+
}
|
|
@@ -89,9 +89,11 @@ export declare class TaskService {
|
|
|
89
89
|
* @param keyword - Search keyword (LIKE search on title and body)
|
|
90
90
|
* @param includeAll - If true, include done/closed tasks in search (default: false)
|
|
91
91
|
* @param statuses - Optional array of statuses to filter by (overrides includeAll)
|
|
92
|
+
* @param includeArchived - If true, include archived tasks in search; also skips the default
|
|
93
|
+
* done/closed status narrowing, since archived tasks are typically done/closed (default: false)
|
|
92
94
|
* @returns Array of matched tasks
|
|
93
95
|
*/
|
|
94
|
-
searchTasks(keyword: string, includeAll?: boolean, statuses?: TaskStatus[]): Task[];
|
|
96
|
+
searchTasks(keyword: string, includeAll?: boolean, statuses?: TaskStatus[], includeArchived?: boolean): Task[];
|
|
95
97
|
/**
|
|
96
98
|
* Get child tasks (direct children only)
|
|
97
99
|
* @param parentId - Parent task ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,4EAA6E,CAAC;AAC9G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAElC,OAAO,CAAC,EAAE,cAAc,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAK3E;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA8CxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIhC;;;;;;OAMG;IACH,SAAS,CACP,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,EACD,IAAI,CAAC,EAAE,SAAS,EAChB,KAAK,CAAC,EAAE,SAAS,GAChB,IAAI,EAAE;IAuBT;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IA8B3D;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAU/B;;;OAGG;IACH,oBAAoB,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;IAIlD;;;;;;OAMG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAU,EAAuB,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI,EAAE;IAclH;;;;;;;OAOG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAU,EAAuB,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI,EAAE;IAcpH;;;;OAIG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUtC
|
|
1
|
+
{"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,4EAA6E,CAAC;AAC9G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAElC,OAAO,CAAC,EAAE,cAAc,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAK3E;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA8CxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIhC;;;;;;OAMG;IACH,SAAS,CACP,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,EACD,IAAI,CAAC,EAAE,SAAS,EAChB,KAAK,CAAC,EAAE,SAAS,GAChB,IAAI,EAAE;IAuBT;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IA8B3D;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAU/B;;;OAGG;IACH,oBAAoB,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;IAIlD;;;;;;OAMG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAU,EAAuB,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI,EAAE;IAclH;;;;;;;OAOG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAU,EAAuB,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI,EAAE;IAcpH;;;;OAIG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUtC;;;;;;;;OAQG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAe,EAC3B,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,eAAe,GAAE,OAAe,GAC/B,IAAI,EAAE;IAmBT;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAIvC;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ1C;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAwB5C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAuBzC"}
|
|
@@ -205,20 +205,22 @@ class TaskService {
|
|
|
205
205
|
* @param keyword - Search keyword (LIKE search on title and body)
|
|
206
206
|
* @param includeAll - If true, include done/closed tasks in search (default: false)
|
|
207
207
|
* @param statuses - Optional array of statuses to filter by (overrides includeAll)
|
|
208
|
+
* @param includeArchived - If true, include archived tasks in search; also skips the default
|
|
209
|
+
* done/closed status narrowing, since archived tasks are typically done/closed (default: false)
|
|
208
210
|
* @returns Array of matched tasks
|
|
209
211
|
*/
|
|
210
|
-
searchTasks(keyword, includeAll = false, statuses) {
|
|
212
|
+
searchTasks(keyword, includeAll = false, statuses, includeArchived = false) {
|
|
211
213
|
let statusFilter;
|
|
212
214
|
if (statuses && statuses.length > 0) {
|
|
213
215
|
statusFilter = statuses;
|
|
214
216
|
}
|
|
215
|
-
else if (!includeAll) {
|
|
217
|
+
else if (!includeAll && !includeArchived) {
|
|
216
218
|
// Exclude done/closed/icebox by filtering to all other statuses
|
|
217
219
|
const allStatuses = ['backlog', 'ready', 'in_progress', 'review'];
|
|
218
220
|
statusFilter = allStatuses;
|
|
219
221
|
}
|
|
220
222
|
const searchId = /^\d+$/.test(keyword) ? parseInt(keyword, 10) : undefined;
|
|
221
|
-
return this.backend.tasks.findAll({ search: keyword, status: statusFilter, searchId }, { field: 'created_at', order: 'desc' });
|
|
223
|
+
return this.backend.tasks.findAll({ search: keyword, status: statusFilter, searchId, includeArchived }, { field: 'created_at', order: 'desc' });
|
|
222
224
|
}
|
|
223
225
|
/**
|
|
224
226
|
* Get child tasks (direct children only)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskService.js","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TaskService.js","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/date.d.ts
CHANGED
|
@@ -7,4 +7,16 @@
|
|
|
7
7
|
* @returns ISO 8601 formatted date string
|
|
8
8
|
*/
|
|
9
9
|
export declare function daysAgoIso(days: number): string;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve a beforeDate request parameter to an ISO 8601 string.
|
|
12
|
+
* Falls back to `daysAgoIso(fallbackDays)` when beforeDate is omitted.
|
|
13
|
+
* @param beforeDate - Optional ISO 8601 date string from the request
|
|
14
|
+
* @param fallbackDays - Number of days ago to use when beforeDate is omitted (default: 3)
|
|
15
|
+
* @returns `{ date }` on success, or `{ error }` if beforeDate is not a valid date
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveBeforeDate(beforeDate: string | undefined, fallbackDays?: number): {
|
|
18
|
+
date: string;
|
|
19
|
+
} | {
|
|
20
|
+
error: string;
|
|
21
|
+
};
|
|
10
22
|
//# sourceMappingURL=date.d.ts.map
|
package/dist/utils/date.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C"}
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,YAAY,SAAI,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAStC"}
|
package/dist/utils/date.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.daysAgoIso = daysAgoIso;
|
|
7
|
+
exports.resolveBeforeDate = resolveBeforeDate;
|
|
7
8
|
/**
|
|
8
9
|
* Calculate a date N days ago and return it as an ISO 8601 string
|
|
9
10
|
* @param days Number of days to subtract from today
|
|
@@ -14,4 +15,21 @@ function daysAgoIso(days) {
|
|
|
14
15
|
d.setDate(d.getDate() - days);
|
|
15
16
|
return d.toISOString();
|
|
16
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a beforeDate request parameter to an ISO 8601 string.
|
|
20
|
+
* Falls back to `daysAgoIso(fallbackDays)` when beforeDate is omitted.
|
|
21
|
+
* @param beforeDate - Optional ISO 8601 date string from the request
|
|
22
|
+
* @param fallbackDays - Number of days ago to use when beforeDate is omitted (default: 3)
|
|
23
|
+
* @returns `{ date }` on success, or `{ error }` if beforeDate is not a valid date
|
|
24
|
+
*/
|
|
25
|
+
function resolveBeforeDate(beforeDate, fallbackDays = 3) {
|
|
26
|
+
if (beforeDate === undefined) {
|
|
27
|
+
return { date: daysAgoIso(fallbackDays) };
|
|
28
|
+
}
|
|
29
|
+
const parsed = new Date(beforeDate);
|
|
30
|
+
if (isNaN(parsed.getTime())) {
|
|
31
|
+
return { error: 'Invalid beforeDate. Use ISO 8601 format.' };
|
|
32
|
+
}
|
|
33
|
+
return { date: parsed.toISOString() };
|
|
34
|
+
}
|
|
17
35
|
//# sourceMappingURL=date.js.map
|
package/dist/utils/date.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,gCAIC;
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,gCAIC;AASD,8CAYC;AA9BD;;;;GAIG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC/B,UAA8B,EAC9B,YAAY,GAAG,CAAC;IAEhB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;AACxC,CAAC"}
|