agkan 3.11.0 → 3.12.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.ja.md +18 -0
- package/README.md +18 -0
- package/dist/board/BulkRunService.d.ts +3 -0
- package/dist/board/BulkRunService.d.ts.map +1 -1
- package/dist/board/BulkRunService.js +37 -29
- package/dist/board/BulkRunService.js.map +1 -1
- package/dist/board/boardConfig.d.ts.map +1 -1
- package/dist/board/boardConfig.js +27 -25
- package/dist/board/boardConfig.js.map +1 -1
- package/dist/board/boardRenderer.d.ts.map +1 -1
- package/dist/board/boardRenderer.js +40 -23
- package/dist/board/boardRenderer.js.map +1 -1
- package/dist/board/boardRoutes.d.ts.map +1 -1
- package/dist/board/boardRoutes.js +89 -54
- package/dist/board/boardRoutes.js.map +1 -1
- package/dist/cli/commands/agent-guide.d.ts.map +1 -1
- package/dist/cli/commands/agent-guide.js +2 -0
- package/dist/cli/commands/agent-guide.js.map +1 -1
- package/dist/cli/commands/context.d.ts +10 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +45 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/integrations/claudeSettings.d.ts +13 -0
- package/dist/cli/integrations/claudeSettings.d.ts.map +1 -0
- package/dist/cli/integrations/claudeSettings.js +115 -0
- package/dist/cli/integrations/claudeSettings.js.map +1 -0
- package/package.json +20 -30
- package/dist/board/client/board.js +0 -2743
- package/dist/cli/utils/response-formatter.d.ts +0 -19
- package/dist/cli/utils/response-formatter.d.ts.map +0 -1
- package/dist/cli/utils/response-formatter.js +0 -43
- package/dist/cli/utils/response-formatter.js.map +0 -1
- package/dist/models/Attachment.d.ts +0 -25
- package/dist/models/Attachment.d.ts.map +0 -1
- package/dist/models/Attachment.js +0 -7
- package/dist/models/Attachment.js.map +0 -1
- package/dist/services/AttachmentService.d.ts +0 -62
- package/dist/services/AttachmentService.d.ts.map +0 -1
- package/dist/services/AttachmentService.js +0 -95
- package/dist/services/AttachmentService.js.map +0 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code .claude/settings.local.json integration.
|
|
4
|
+
*
|
|
5
|
+
* Idempotently installs a SessionStart hook that calls `agkan context --hook`.
|
|
6
|
+
* Existing keys, other hooks, and file indentation style are preserved.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.installSessionStartHook = installSessionStartHook;
|
|
13
|
+
const fs_1 = __importDefault(require("fs"));
|
|
14
|
+
const path_1 = __importDefault(require("path"));
|
|
15
|
+
const RELATIVE_SETTINGS_PATH = path_1.default.join('.claude', 'settings.local.json');
|
|
16
|
+
const HOOK_COMMAND = 'agkan context --hook';
|
|
17
|
+
const MATCHER = 'startup|resume|clear|compact';
|
|
18
|
+
function detectIndent(text) {
|
|
19
|
+
const match = text.match(/\n([ \t]+)/);
|
|
20
|
+
if (!match)
|
|
21
|
+
return 2;
|
|
22
|
+
return match[1];
|
|
23
|
+
}
|
|
24
|
+
function hasAgkanHook(config) {
|
|
25
|
+
const entries = config.hooks?.SessionStart;
|
|
26
|
+
if (!Array.isArray(entries))
|
|
27
|
+
return false;
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
if (!Array.isArray(entry?.hooks))
|
|
30
|
+
continue;
|
|
31
|
+
for (const hook of entry.hooks) {
|
|
32
|
+
if (hook?.type === 'command' && hook?.command === HOOK_COMMAND) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
function installSessionStartHook(cwd) {
|
|
40
|
+
const claudeDir = path_1.default.join(cwd, '.claude');
|
|
41
|
+
const settingsPath = path_1.default.join(cwd, RELATIVE_SETTINGS_PATH);
|
|
42
|
+
try {
|
|
43
|
+
if (!fs_1.default.existsSync(claudeDir)) {
|
|
44
|
+
fs_1.default.mkdirSync(claudeDir, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
const fileExisted = fs_1.default.existsSync(settingsPath);
|
|
47
|
+
const rawText = fileExisted ? fs_1.default.readFileSync(settingsPath, 'utf8') : '{}';
|
|
48
|
+
const indent = fileExisted ? detectIndent(rawText) : 2;
|
|
49
|
+
let config;
|
|
50
|
+
try {
|
|
51
|
+
config = JSON.parse(rawText);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
55
|
+
return {
|
|
56
|
+
status: 'error',
|
|
57
|
+
message: `Failed to parse ${RELATIVE_SETTINGS_PATH}: ${reason}`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
if (hasAgkanHook(config)) {
|
|
61
|
+
return {
|
|
62
|
+
status: 'skipped',
|
|
63
|
+
message: `Skipped: ${RELATIVE_SETTINGS_PATH} (agkan hook already present)`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (!config.hooks)
|
|
67
|
+
config.hooks = {};
|
|
68
|
+
if (!Array.isArray(config.hooks.SessionStart))
|
|
69
|
+
config.hooks.SessionStart = [];
|
|
70
|
+
config.hooks.SessionStart.push({
|
|
71
|
+
matcher: MATCHER,
|
|
72
|
+
hooks: [{ type: 'command', command: HOOK_COMMAND }],
|
|
73
|
+
});
|
|
74
|
+
let backupPath;
|
|
75
|
+
if (fileExisted) {
|
|
76
|
+
const now = new Date();
|
|
77
|
+
const ts = String(now.getFullYear()) +
|
|
78
|
+
String(now.getMonth() + 1).padStart(2, '0') +
|
|
79
|
+
String(now.getDate()).padStart(2, '0') +
|
|
80
|
+
String(now.getHours()).padStart(2, '0') +
|
|
81
|
+
String(now.getMinutes()).padStart(2, '0') +
|
|
82
|
+
String(now.getSeconds()).padStart(2, '0');
|
|
83
|
+
backupPath = `${settingsPath}.agkan-backup-${ts}`;
|
|
84
|
+
try {
|
|
85
|
+
fs_1.default.copyFileSync(settingsPath, backupPath);
|
|
86
|
+
}
|
|
87
|
+
catch (backupErr) {
|
|
88
|
+
const reason = backupErr instanceof Error ? backupErr.message : String(backupErr);
|
|
89
|
+
return {
|
|
90
|
+
status: 'error',
|
|
91
|
+
message: `Failed to backup ${RELATIVE_SETTINGS_PATH}: ${reason}`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
fs_1.default.writeFileSync(settingsPath, JSON.stringify(config, null, indent) + '\n', 'utf8');
|
|
96
|
+
const relativeBackup = backupPath ? path_1.default.relative(cwd, backupPath) : undefined;
|
|
97
|
+
return fileExisted
|
|
98
|
+
? {
|
|
99
|
+
status: 'updated',
|
|
100
|
+
message: `Updated: ${RELATIVE_SETTINGS_PATH} (added agkan SessionStart hook, backup: ${relativeBackup})`,
|
|
101
|
+
}
|
|
102
|
+
: {
|
|
103
|
+
status: 'created',
|
|
104
|
+
message: `Created: ${RELATIVE_SETTINGS_PATH} (added agkan SessionStart hook)`,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
109
|
+
return {
|
|
110
|
+
status: 'error',
|
|
111
|
+
message: `Failed to update ${RELATIVE_SETTINGS_PATH}: ${reason}`,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=claudeSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeSettings.js","sourceRoot":"","sources":["../../../src/cli/integrations/claudeSettings.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAsDH,0DAgFC;AApID,4CAAoB;AACpB,gDAAwB;AAExB,MAAM,sBAAsB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;AAC3E,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAC5C,MAAM,OAAO,GAAG,8BAA8B,CAAC;AA2B/C,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,SAAS;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,IAAI,EAAE,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,uBAAuB,CAAC,GAAW;IACjD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,YAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,mBAAmB,sBAAsB,KAAK,MAAM,EAAE;aAChE,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,YAAY,sBAAsB,+BAA+B;aAC3E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;SACpD,CAAC,CAAC;QAEH,IAAI,UAA8B,CAAC;QACnC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,GACN,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC3C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBACtC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBACzC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5C,UAAU,GAAG,GAAG,YAAY,iBAAiB,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAClF,OAAO;oBACL,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,oBAAoB,sBAAsB,KAAK,MAAM,EAAE;iBACjE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAEpF,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/E,OAAO,WAAW;YAChB,CAAC,CAAC;gBACE,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,YAAY,sBAAsB,4CAA4C,cAAc,GAAG;aACzG;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,YAAY,sBAAsB,kCAAkC;aAC9E,CAAC;IACR,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO;YACL,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,oBAAoB,sBAAsB,KAAK,MAAM,EAAE;SACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agkan",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.12.0",
|
|
4
4
|
"description": "TypeScript-based CLI task management tool with SQLite storage",
|
|
5
5
|
"main": "dist/cli/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,26 +10,6 @@
|
|
|
10
10
|
"dist",
|
|
11
11
|
"bin"
|
|
12
12
|
],
|
|
13
|
-
"scripts": {
|
|
14
|
-
"build": "tsc && node scripts/build-client.mjs && node scripts/build-hooks.mjs",
|
|
15
|
-
"build:server": "tsc",
|
|
16
|
-
"build:client": "node scripts/build-client.mjs",
|
|
17
|
-
"dev": "tsc --watch",
|
|
18
|
-
"board": "pnpm run build && node dist/cli/index.js board",
|
|
19
|
-
"start": "node dist/cli/index.js",
|
|
20
|
-
"test": "vitest run",
|
|
21
|
-
"test:all": "pnpm install && pnpm run build && pnpm run type-check && pnpm run lint && vitest run && pnpm run test:e2e",
|
|
22
|
-
"test:errors": "vitest run --reporter=./tests/reporters/error-only.ts",
|
|
23
|
-
"test:e2e": "./test-e2e.sh",
|
|
24
|
-
"lint": "eslint src tests",
|
|
25
|
-
"lint:fix": "eslint src tests --fix",
|
|
26
|
-
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
27
|
-
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
28
|
-
"type-check": "tsc --noEmit && tsc --noEmit -p src/board/client/tsconfig.json",
|
|
29
|
-
"check": "pnpm run type-check && pnpm run lint && pnpm run format:check",
|
|
30
|
-
"prepublishOnly": "pnpm run check && pnpm run build && vitest run",
|
|
31
|
-
"prepare": "husky || true && chmod +x node_modules/.bin/* node_modules/prettier/bin/*.cjs node_modules/node-pty/prebuilds/*/spawn-helper 2>/dev/null || true"
|
|
32
|
-
},
|
|
33
13
|
"repository": {
|
|
34
14
|
"type": "git",
|
|
35
15
|
"url": "git+https://github.com/gendosu/agkan.git"
|
|
@@ -47,7 +27,6 @@
|
|
|
47
27
|
],
|
|
48
28
|
"author": "gendosu <gendosu@gmail.com>",
|
|
49
29
|
"license": "ISC",
|
|
50
|
-
"packageManager": "pnpm@10.33.0",
|
|
51
30
|
"engines": {
|
|
52
31
|
"node": ">=20.0.0"
|
|
53
32
|
},
|
|
@@ -61,13 +40,6 @@
|
|
|
61
40
|
"node-pty": "1.1.0",
|
|
62
41
|
"ws": "8.18.3"
|
|
63
42
|
},
|
|
64
|
-
"pnpm": {
|
|
65
|
-
"onlyBuiltDependencies": [
|
|
66
|
-
"better-sqlite3",
|
|
67
|
-
"esbuild",
|
|
68
|
-
"node-pty"
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
43
|
"devDependencies": {
|
|
72
44
|
"@types/better-sqlite3": "^7.6.12",
|
|
73
45
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -87,5 +59,23 @@
|
|
|
87
59
|
"prettier": "^3.8.1",
|
|
88
60
|
"typescript": "^5.7.3",
|
|
89
61
|
"vitest": "^4.0.18"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "tsc && node scripts/build-client.mjs && node scripts/build-hooks.mjs",
|
|
65
|
+
"build:server": "tsc",
|
|
66
|
+
"build:client": "node scripts/build-client.mjs",
|
|
67
|
+
"dev": "tsc --watch",
|
|
68
|
+
"board": "pnpm run build && node dist/cli/index.js board",
|
|
69
|
+
"start": "node dist/cli/index.js",
|
|
70
|
+
"test": "vitest run",
|
|
71
|
+
"test:all": "pnpm install && pnpm run build && pnpm run type-check && pnpm run lint && vitest run && pnpm run test:e2e",
|
|
72
|
+
"test:errors": "vitest run --reporter=./tests/reporters/error-only.ts",
|
|
73
|
+
"test:e2e": "./test-e2e.sh",
|
|
74
|
+
"lint": "eslint src tests",
|
|
75
|
+
"lint:fix": "eslint src tests --fix",
|
|
76
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
77
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
78
|
+
"type-check": "tsc --noEmit && tsc --noEmit -p src/board/client/tsconfig.json",
|
|
79
|
+
"check": "pnpm run type-check && pnpm run lint && pnpm run format:check"
|
|
90
80
|
}
|
|
91
|
-
}
|
|
81
|
+
}
|