zenarc-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -0
- package/dist/core/bin/migrate.d.ts +3 -0
- package/dist/core/bin/migrate.d.ts.map +1 -0
- package/dist/core/bin/migrate.js +24 -0
- package/dist/core/bin/migrate.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/migrate.d.ts +13 -0
- package/dist/core/migrate.d.ts.map +1 -0
- package/dist/core/migrate.js +154 -0
- package/dist/core/migrate.js.map +1 -0
- package/dist/core/schema.d.ts +89 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +49 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/store/index.d.ts +68 -0
- package/dist/core/store/index.d.ts.map +1 -0
- package/dist/core/store/index.js +23 -0
- package/dist/core/store/index.js.map +1 -0
- package/dist/core/store/types.d.ts +30 -0
- package/dist/core/store/types.d.ts.map +1 -0
- package/dist/core/store/types.js +2 -0
- package/dist/core/store/types.js.map +1 -0
- package/dist/core/store/yaml-store.d.ts +26 -0
- package/dist/core/store/yaml-store.d.ts.map +1 -0
- package/dist/core/store/yaml-store.js +482 -0
- package/dist/core/store/yaml-store.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +456 -0
- package/dist/server.js.map +1 -0
- package/dist/store-init.d.ts +2 -0
- package/dist/store-init.d.ts.map +1 -0
- package/dist/store-init.js +39 -0
- package/dist/store-init.js.map +1 -0
- package/dist/sync/firestore-store.d.ts +28 -0
- package/dist/sync/firestore-store.d.ts.map +1 -0
- package/dist/sync/firestore-store.js +251 -0
- package/dist/sync/firestore-store.js.map +1 -0
- package/dist/sync/hybrid-store.d.ts +33 -0
- package/dist/sync/hybrid-store.d.ts.map +1 -0
- package/dist/sync/hybrid-store.js +86 -0
- package/dist/sync/hybrid-store.js.map +1 -0
- package/dist/sync/index.d.ts +4 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +4 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/sync-bridge.d.ts +21 -0
- package/dist/sync/sync-bridge.d.ts.map +1 -0
- package/dist/sync/sync-bridge.js +157 -0
- package/dist/sync/sync-bridge.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Task } from "../schema.js";
|
|
2
|
+
export type ProjectConfig = {
|
|
3
|
+
name: string;
|
|
4
|
+
path: string;
|
|
5
|
+
format: "yaml" | "json";
|
|
6
|
+
sync?: {
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
firebaseProject?: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export interface TaskStore {
|
|
12
|
+
getRegistry(): Promise<ProjectConfig[]>;
|
|
13
|
+
saveRegistry(projects: ProjectConfig[]): Promise<void>;
|
|
14
|
+
addProject(config: ProjectConfig): Promise<void>;
|
|
15
|
+
removeProject(name: string): Promise<void>;
|
|
16
|
+
getProjectTasksDir(projectPath: string): string;
|
|
17
|
+
listProjectTasks(projectPath: string): Promise<Task[]>;
|
|
18
|
+
readTask(projectPath: string, taskId: string): Promise<Task | null>;
|
|
19
|
+
writeTask(projectPath: string, task: Task): Promise<void>;
|
|
20
|
+
deleteTask(projectPath: string, taskId: string): Promise<boolean>;
|
|
21
|
+
searchTasks(query: string, options?: {
|
|
22
|
+
project?: string;
|
|
23
|
+
status?: string;
|
|
24
|
+
priority?: string;
|
|
25
|
+
tag?: string;
|
|
26
|
+
assigned_to?: string;
|
|
27
|
+
}): Promise<Task[]>;
|
|
28
|
+
scanForProjects(rootPaths: string[]): Promise<ProjectConfig[]>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/store/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACxC,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACpE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElE,WAAW,CACT,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/store/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Task } from "../schema.js";
|
|
2
|
+
import type { TaskStore, ProjectConfig } from "./types.js";
|
|
3
|
+
export declare function getRecentParents(): Promise<string[]>;
|
|
4
|
+
export declare function addRecentParent(dir: string): Promise<void>;
|
|
5
|
+
export declare class YamlTaskStore implements TaskStore {
|
|
6
|
+
getProjectTasksDir(projectPath: string): string;
|
|
7
|
+
private ensureZenarcStructure;
|
|
8
|
+
getRegistry(): Promise<ProjectConfig[]>;
|
|
9
|
+
saveRegistry(projects: ProjectConfig[]): Promise<void>;
|
|
10
|
+
addProject(config: ProjectConfig): Promise<void>;
|
|
11
|
+
removeProject(name: string): Promise<void>;
|
|
12
|
+
private writeProjectConfig;
|
|
13
|
+
listProjectTasks(projectPath: string): Promise<Task[]>;
|
|
14
|
+
readTask(projectPath: string, taskId: string): Promise<Task | null>;
|
|
15
|
+
writeTask(projectPath: string, task: Task): Promise<void>;
|
|
16
|
+
deleteTask(projectPath: string, taskId: string): Promise<boolean>;
|
|
17
|
+
searchTasks(query: string, options?: {
|
|
18
|
+
project?: string;
|
|
19
|
+
status?: string;
|
|
20
|
+
priority?: string;
|
|
21
|
+
tag?: string;
|
|
22
|
+
assigned_to?: string;
|
|
23
|
+
}): Promise<Task[]>;
|
|
24
|
+
scanForProjects(rootPaths: string[]): Promise<ProjectConfig[]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=yaml-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-store.d.ts","sourceRoot":"","sources":["../../../src/core/store/yaml-store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAoD3D,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAW1D;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAchE;AAqBD,qBAAa,aAAc,YAAW,SAAS;IAC7C,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;YAIjC,qBAAqB;IAgB7B,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IASvC,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YASlC,kBAAkB;IAuB1B,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAgDtD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IA+CnE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqEzD,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2DjE,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,EAAE,CAAC;IAuCZ,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CA4ErE"}
|
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
import { readFile, writeFile, readdir, mkdir, access, unlink } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { parse, stringify } from "yaml";
|
|
5
|
+
import { validateTask } from "../schema.js";
|
|
6
|
+
const ZENARC_DIR = join(homedir(), ".zenarc");
|
|
7
|
+
const REGISTRY_PATH = join(ZENARC_DIR, "projects.json");
|
|
8
|
+
const RECENT_PARENTS_PATH = join(ZENARC_DIR, "recent-parents.json");
|
|
9
|
+
const MAX_RECENT_PARENTS = 20;
|
|
10
|
+
const AGENT_MD = `# ZenArc Project Structure
|
|
11
|
+
|
|
12
|
+
This folder (\`.zenarc/\`) is managed by **ZenArc** — a task manager that stores tasks as YAML files.
|
|
13
|
+
|
|
14
|
+
## Folder Structure
|
|
15
|
+
|
|
16
|
+
\`\`\`
|
|
17
|
+
.zenarc/
|
|
18
|
+
├── AGENT.md # This file — structure documentation
|
|
19
|
+
├── overview.yml # Auto-generated project summary (task counts, last updated)
|
|
20
|
+
└── tasks/ # Individual task YAML files
|
|
21
|
+
├── {slug}.yaml
|
|
22
|
+
└── ...
|
|
23
|
+
\`\`\`
|
|
24
|
+
|
|
25
|
+
## Rules
|
|
26
|
+
|
|
27
|
+
- **All task files MUST be stored in \`.zenarc/tasks/\`** — never in the project root.
|
|
28
|
+
- **Task filenames are \`{slug}.yaml\`** where slug comes from the task title.
|
|
29
|
+
- **Never rename task files manually** — ZenArc tracks tasks by ID inside the YAML, not by filename.
|
|
30
|
+
- **\`overview.yml\` is auto-generated** — do not edit it manually. It gets refreshed on every task change.
|
|
31
|
+
- **\`config.yml\` is reserved** for user-configurable project settings. Do not create it unless asked.
|
|
32
|
+
|
|
33
|
+
## Backward Compatibility
|
|
34
|
+
|
|
35
|
+
Old ZenArc projects may have task files directly in the project root (e.g., \`zenarc-*.yaml\` or \`tm-*.yaml\`). These are still read for backward compatibility, but all new tasks are written to \`.zenarc/tasks/\`.
|
|
36
|
+
|
|
37
|
+
## Task YAML Format
|
|
38
|
+
|
|
39
|
+
Each task file contains:
|
|
40
|
+
- \`id\`: Unique task ID (e.g., \`tm-20260604-abc12345\`)
|
|
41
|
+
- \`title\`, \`status\`, \`priority\`, \`project\`, \`tags\`
|
|
42
|
+
- \`created_at\`, \`updated_at\`, \`created_by\`, \`assigned_to\`
|
|
43
|
+
- \`context\`: \`{ files, urls, notes }\`
|
|
44
|
+
- \`dependencies\`: Array of task IDs
|
|
45
|
+
`;
|
|
46
|
+
async function ensureDir(path) {
|
|
47
|
+
await mkdir(path, { recursive: true });
|
|
48
|
+
}
|
|
49
|
+
/* ------------------------------------------------------------------ */
|
|
50
|
+
/* Recent parent directories — improves project path auto-detection */
|
|
51
|
+
/* ------------------------------------------------------------------ */
|
|
52
|
+
export async function getRecentParents() {
|
|
53
|
+
try {
|
|
54
|
+
const raw = await readFile(RECENT_PARENTS_PATH, "utf-8");
|
|
55
|
+
const parsed = JSON.parse(raw);
|
|
56
|
+
if (Array.isArray(parsed) && parsed.every((p) => typeof p === "string")) {
|
|
57
|
+
return parsed;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// File doesn't exist or is invalid
|
|
62
|
+
}
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
export async function addRecentParent(dir) {
|
|
66
|
+
const recent = await getRecentParents();
|
|
67
|
+
const normalized = dir.trim();
|
|
68
|
+
if (!normalized)
|
|
69
|
+
return;
|
|
70
|
+
// Move to front if already exists, otherwise prepend
|
|
71
|
+
const filtered = recent.filter((p) => p !== normalized);
|
|
72
|
+
filtered.unshift(normalized);
|
|
73
|
+
// Limit size
|
|
74
|
+
const trimmed = filtered.slice(0, MAX_RECENT_PARENTS);
|
|
75
|
+
await ensureDir(ZENARC_DIR);
|
|
76
|
+
await writeFile(RECENT_PARENTS_PATH, JSON.stringify(trimmed, null, 2), "utf-8");
|
|
77
|
+
}
|
|
78
|
+
function isPotentialTaskFile(name) {
|
|
79
|
+
return name.endsWith(".yaml") || name.endsWith(".yml");
|
|
80
|
+
}
|
|
81
|
+
function isLegacyTaskFilename(name) {
|
|
82
|
+
return (isPotentialTaskFile(name) &&
|
|
83
|
+
(name.startsWith("zenarc-") || name.startsWith("tm-")));
|
|
84
|
+
}
|
|
85
|
+
function getZenarcDir(projectPath) {
|
|
86
|
+
return join(projectPath, ".zenarc");
|
|
87
|
+
}
|
|
88
|
+
function getProjectOverviewPath(projectPath) {
|
|
89
|
+
return join(getZenarcDir(projectPath), "overview.yml");
|
|
90
|
+
}
|
|
91
|
+
export class YamlTaskStore {
|
|
92
|
+
getProjectTasksDir(projectPath) {
|
|
93
|
+
return join(projectPath, ".zenarc", "tasks");
|
|
94
|
+
}
|
|
95
|
+
async ensureZenarcStructure(projectPath) {
|
|
96
|
+
const zenarcDir = getZenarcDir(projectPath);
|
|
97
|
+
const tasksDir = this.getProjectTasksDir(projectPath);
|
|
98
|
+
await ensureDir(tasksDir);
|
|
99
|
+
// Write AGENT.md on first creation
|
|
100
|
+
const agentPath = join(zenarcDir, "AGENT.md");
|
|
101
|
+
try {
|
|
102
|
+
await access(agentPath);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
await writeFile(agentPath, AGENT_MD, "utf-8");
|
|
106
|
+
}
|
|
107
|
+
return tasksDir;
|
|
108
|
+
}
|
|
109
|
+
async getRegistry() {
|
|
110
|
+
try {
|
|
111
|
+
const raw = await readFile(REGISTRY_PATH, "utf-8");
|
|
112
|
+
return JSON.parse(raw);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async saveRegistry(projects) {
|
|
119
|
+
await ensureDir(ZENARC_DIR);
|
|
120
|
+
await writeFile(REGISTRY_PATH, JSON.stringify(projects, null, 2), "utf-8");
|
|
121
|
+
}
|
|
122
|
+
async addProject(config) {
|
|
123
|
+
const registry = await this.getRegistry();
|
|
124
|
+
const filtered = registry.filter((p) => p.name !== config.name);
|
|
125
|
+
filtered.push(config);
|
|
126
|
+
await this.saveRegistry(filtered);
|
|
127
|
+
}
|
|
128
|
+
async removeProject(name) {
|
|
129
|
+
const registry = await this.getRegistry();
|
|
130
|
+
await this.saveRegistry(registry.filter((p) => p.name !== name));
|
|
131
|
+
}
|
|
132
|
+
/* ------------------------------------------------------------------ */
|
|
133
|
+
/* Config / summary file */
|
|
134
|
+
/* ------------------------------------------------------------------ */
|
|
135
|
+
async writeProjectConfig(projectPath, tasks) {
|
|
136
|
+
const overviewPath = getProjectOverviewPath(projectPath);
|
|
137
|
+
const counts = {};
|
|
138
|
+
for (const task of tasks) {
|
|
139
|
+
counts[task.status] = (counts[task.status] || 0) + 1;
|
|
140
|
+
}
|
|
141
|
+
const config = {
|
|
142
|
+
name: tasks[0]?.project || "",
|
|
143
|
+
summary: {
|
|
144
|
+
total: tasks.length,
|
|
145
|
+
by_status: counts,
|
|
146
|
+
},
|
|
147
|
+
last_updated: new Date().toISOString(),
|
|
148
|
+
};
|
|
149
|
+
await writeFile(overviewPath, stringify(config, { indent: 2 }), "utf-8");
|
|
150
|
+
}
|
|
151
|
+
/* ------------------------------------------------------------------ */
|
|
152
|
+
/* Task reading — prefers .zenarc/tasks/, falls back to root */
|
|
153
|
+
/* ------------------------------------------------------------------ */
|
|
154
|
+
async listProjectTasks(projectPath) {
|
|
155
|
+
const tasks = new Map();
|
|
156
|
+
// Read from .zenarc/tasks/ (new location)
|
|
157
|
+
try {
|
|
158
|
+
const tasksDir = this.getProjectTasksDir(projectPath);
|
|
159
|
+
const entries = await readdir(tasksDir);
|
|
160
|
+
for (const entry of entries) {
|
|
161
|
+
if (!isPotentialTaskFile(entry))
|
|
162
|
+
continue;
|
|
163
|
+
try {
|
|
164
|
+
const raw = await readFile(join(tasksDir, entry), "utf-8");
|
|
165
|
+
const data = parse(raw);
|
|
166
|
+
const task = validateTask(data);
|
|
167
|
+
tasks.set(task.id, task);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// Skip invalid task files
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// .zenarc/tasks/ doesn't exist yet
|
|
176
|
+
}
|
|
177
|
+
// Backward compatibility: read from project root
|
|
178
|
+
try {
|
|
179
|
+
const entries = await readdir(projectPath);
|
|
180
|
+
for (const entry of entries) {
|
|
181
|
+
if (!isPotentialTaskFile(entry))
|
|
182
|
+
continue;
|
|
183
|
+
try {
|
|
184
|
+
const raw = await readFile(join(projectPath, entry), "utf-8");
|
|
185
|
+
const data = parse(raw);
|
|
186
|
+
const task = validateTask(data);
|
|
187
|
+
if (!tasks.has(task.id)) {
|
|
188
|
+
tasks.set(task.id, task);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Skip invalid task files
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// Project path doesn't exist
|
|
198
|
+
}
|
|
199
|
+
return Array.from(tasks.values()).sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime());
|
|
200
|
+
}
|
|
201
|
+
async readTask(projectPath, taskId) {
|
|
202
|
+
// Search .zenarc/tasks/ first
|
|
203
|
+
try {
|
|
204
|
+
const tasksDir = this.getProjectTasksDir(projectPath);
|
|
205
|
+
const entries = await readdir(tasksDir);
|
|
206
|
+
for (const entry of entries) {
|
|
207
|
+
if (!isPotentialTaskFile(entry))
|
|
208
|
+
continue;
|
|
209
|
+
try {
|
|
210
|
+
const raw = await readFile(join(tasksDir, entry), "utf-8");
|
|
211
|
+
const data = parse(raw);
|
|
212
|
+
if (data.id === taskId) {
|
|
213
|
+
return validateTask(data);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Continue searching
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// .zenarc/tasks/ doesn't exist
|
|
223
|
+
}
|
|
224
|
+
// Backward compatibility: search project root
|
|
225
|
+
try {
|
|
226
|
+
const entries = await readdir(projectPath);
|
|
227
|
+
for (const entry of entries) {
|
|
228
|
+
if (!isPotentialTaskFile(entry))
|
|
229
|
+
continue;
|
|
230
|
+
try {
|
|
231
|
+
const raw = await readFile(join(projectPath, entry), "utf-8");
|
|
232
|
+
const data = parse(raw);
|
|
233
|
+
if (data.id === taskId) {
|
|
234
|
+
return validateTask(data);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// Continue searching
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
// Project path doesn't exist
|
|
244
|
+
}
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
/* ------------------------------------------------------------------ */
|
|
248
|
+
/* Task writing — always writes to .zenarc/tasks/ */
|
|
249
|
+
/* ------------------------------------------------------------------ */
|
|
250
|
+
async writeTask(projectPath, task) {
|
|
251
|
+
const tasksDir = await this.ensureZenarcStructure(projectPath);
|
|
252
|
+
const validated = validateTask(task);
|
|
253
|
+
const yaml = stringify(validated, {
|
|
254
|
+
indent: 2,
|
|
255
|
+
sortMapEntries: false,
|
|
256
|
+
});
|
|
257
|
+
// Try to find existing file by task ID and overwrite it
|
|
258
|
+
try {
|
|
259
|
+
const entries = await readdir(tasksDir);
|
|
260
|
+
for (const entry of entries) {
|
|
261
|
+
if (!isPotentialTaskFile(entry))
|
|
262
|
+
continue;
|
|
263
|
+
try {
|
|
264
|
+
const raw = await readFile(join(tasksDir, entry), "utf-8");
|
|
265
|
+
const data = parse(raw);
|
|
266
|
+
if (data.id === task.id) {
|
|
267
|
+
await writeFile(join(tasksDir, entry), yaml, "utf-8");
|
|
268
|
+
await this.writeProjectConfig(projectPath, [
|
|
269
|
+
...Array.from((await this.listProjectTasks(projectPath)).filter((t) => t.id !== task.id)),
|
|
270
|
+
validated,
|
|
271
|
+
]);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
// Continue searching
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// Directory empty or unreadable
|
|
282
|
+
}
|
|
283
|
+
// No existing file — create new slug-based filename
|
|
284
|
+
const slug = task.title
|
|
285
|
+
.toLowerCase()
|
|
286
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
287
|
+
.replace(/^-+|-+$/g, "")
|
|
288
|
+
.slice(0, 50);
|
|
289
|
+
let filename = `${slug}.yaml`;
|
|
290
|
+
let filepath = join(tasksDir, filename);
|
|
291
|
+
// Handle collision by appending counter
|
|
292
|
+
let counter = 1;
|
|
293
|
+
while (true) {
|
|
294
|
+
try {
|
|
295
|
+
await access(filepath);
|
|
296
|
+
counter++;
|
|
297
|
+
filename = `${slug}-${counter}.yaml`;
|
|
298
|
+
filepath = join(tasksDir, filename);
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
await writeFile(filepath, yaml, "utf-8");
|
|
305
|
+
// Update config summary
|
|
306
|
+
const existingTasks = await this.listProjectTasks(projectPath);
|
|
307
|
+
await this.writeProjectConfig(projectPath, [...existingTasks, validated]);
|
|
308
|
+
}
|
|
309
|
+
/* ------------------------------------------------------------------ */
|
|
310
|
+
/* Task deletion — prefers .zenarc/tasks/, falls back to root */
|
|
311
|
+
/* ------------------------------------------------------------------ */
|
|
312
|
+
async deleteTask(projectPath, taskId) {
|
|
313
|
+
let deletedTask = null;
|
|
314
|
+
// Search .zenarc/tasks/ first
|
|
315
|
+
try {
|
|
316
|
+
const tasksDir = this.getProjectTasksDir(projectPath);
|
|
317
|
+
const entries = await readdir(tasksDir);
|
|
318
|
+
for (const entry of entries) {
|
|
319
|
+
if (!isPotentialTaskFile(entry))
|
|
320
|
+
continue;
|
|
321
|
+
try {
|
|
322
|
+
const raw = await readFile(join(tasksDir, entry), "utf-8");
|
|
323
|
+
const data = parse(raw);
|
|
324
|
+
if (data.id === taskId) {
|
|
325
|
+
await unlink(join(tasksDir, entry));
|
|
326
|
+
deletedTask = validateTask(data);
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
// Continue searching
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
// .zenarc/tasks/ doesn't exist
|
|
337
|
+
}
|
|
338
|
+
// Backward compatibility: search project root
|
|
339
|
+
if (!deletedTask) {
|
|
340
|
+
try {
|
|
341
|
+
const entries = await readdir(projectPath);
|
|
342
|
+
for (const entry of entries) {
|
|
343
|
+
if (!isPotentialTaskFile(entry))
|
|
344
|
+
continue;
|
|
345
|
+
try {
|
|
346
|
+
const raw = await readFile(join(projectPath, entry), "utf-8");
|
|
347
|
+
const data = parse(raw);
|
|
348
|
+
if (data.id === taskId) {
|
|
349
|
+
await unlink(join(projectPath, entry));
|
|
350
|
+
deletedTask = validateTask(data);
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// Continue searching
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
catch {
|
|
360
|
+
// Project path doesn't exist
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
if (deletedTask) {
|
|
364
|
+
const remaining = (await this.listProjectTasks(projectPath)).filter((t) => t.id !== taskId);
|
|
365
|
+
await this.writeProjectConfig(projectPath, remaining);
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
async searchTasks(query, options) {
|
|
371
|
+
const registry = await this.getRegistry();
|
|
372
|
+
let projects = registry;
|
|
373
|
+
if (options?.project) {
|
|
374
|
+
projects = projects.filter((p) => p.name === options.project);
|
|
375
|
+
}
|
|
376
|
+
const allTasks = [];
|
|
377
|
+
for (const project of projects) {
|
|
378
|
+
const tasks = await this.listProjectTasks(project.path);
|
|
379
|
+
allTasks.push(...tasks);
|
|
380
|
+
}
|
|
381
|
+
const q = query.toLowerCase();
|
|
382
|
+
return allTasks.filter((task) => {
|
|
383
|
+
if (options?.status && task.status !== options.status)
|
|
384
|
+
return false;
|
|
385
|
+
if (options?.priority && task.priority !== options.priority)
|
|
386
|
+
return false;
|
|
387
|
+
if (options?.tag && !task.tags.includes(options.tag))
|
|
388
|
+
return false;
|
|
389
|
+
if (options?.assigned_to && task.assigned_to !== options.assigned_to)
|
|
390
|
+
return false;
|
|
391
|
+
if (!q)
|
|
392
|
+
return true;
|
|
393
|
+
const text = [
|
|
394
|
+
task.title,
|
|
395
|
+
task.context.notes,
|
|
396
|
+
...task.tags,
|
|
397
|
+
task.project,
|
|
398
|
+
task.assigned_to || "",
|
|
399
|
+
]
|
|
400
|
+
.join(" ")
|
|
401
|
+
.toLowerCase();
|
|
402
|
+
return text.includes(q);
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
async scanForProjects(rootPaths) {
|
|
406
|
+
const { readdir } = await import("node:fs/promises");
|
|
407
|
+
const found = [];
|
|
408
|
+
for (const root of rootPaths) {
|
|
409
|
+
try {
|
|
410
|
+
const entries = await readdir(root, { withFileTypes: true });
|
|
411
|
+
for (const entry of entries) {
|
|
412
|
+
if (!entry.isDirectory())
|
|
413
|
+
continue;
|
|
414
|
+
const projectPath = join(root, entry.name);
|
|
415
|
+
// Check for .zenarc/tasks/ directory (new format)
|
|
416
|
+
try {
|
|
417
|
+
const tasksDir = this.getProjectTasksDir(projectPath);
|
|
418
|
+
await access(tasksDir);
|
|
419
|
+
const files = await readdir(tasksDir);
|
|
420
|
+
if (files.some(isPotentialTaskFile)) {
|
|
421
|
+
found.push({
|
|
422
|
+
name: entry.name,
|
|
423
|
+
path: projectPath,
|
|
424
|
+
format: "yaml",
|
|
425
|
+
});
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
catch {
|
|
430
|
+
// No .zenarc/tasks/ directory
|
|
431
|
+
}
|
|
432
|
+
// Check for .zenarc/overview.yml
|
|
433
|
+
try {
|
|
434
|
+
await access(getProjectOverviewPath(projectPath));
|
|
435
|
+
found.push({
|
|
436
|
+
name: entry.name,
|
|
437
|
+
path: projectPath,
|
|
438
|
+
format: "yaml",
|
|
439
|
+
});
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
// No .zenarc/overview.yml
|
|
444
|
+
}
|
|
445
|
+
// Check for .zenarc.yml config file (legacy)
|
|
446
|
+
try {
|
|
447
|
+
await access(join(projectPath, ".zenarc.yml"));
|
|
448
|
+
found.push({
|
|
449
|
+
name: entry.name,
|
|
450
|
+
path: projectPath,
|
|
451
|
+
format: "yaml",
|
|
452
|
+
});
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
455
|
+
catch {
|
|
456
|
+
// No .zenarc.yml
|
|
457
|
+
}
|
|
458
|
+
// Backward compatibility: check for legacy task files in root
|
|
459
|
+
try {
|
|
460
|
+
const files = await readdir(projectPath);
|
|
461
|
+
const hasTaskFiles = files.some((f) => isLegacyTaskFilename(f));
|
|
462
|
+
if (hasTaskFiles) {
|
|
463
|
+
found.push({
|
|
464
|
+
name: entry.name,
|
|
465
|
+
path: projectPath,
|
|
466
|
+
format: "yaml",
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
catch {
|
|
471
|
+
// Can't read directory
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
catch {
|
|
476
|
+
// Root path doesn't exist or isn't readable
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
return found;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
//# sourceMappingURL=yaml-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-store.js","sourceRoot":"","sources":["../../../src/core/store/yaml-store.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":""}
|