team-anya-cli 0.1.2 → 0.1.3
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/apps/server/dist/cli.js
CHANGED
|
@@ -201,7 +201,7 @@ program
|
|
|
201
201
|
});
|
|
202
202
|
console.log('\n Anya Setup - 交互式配置向导\n');
|
|
203
203
|
// ── 1. ANYA_HOME ──
|
|
204
|
-
const anyaHome = resolveHome(await ask('数据目录 ANYA_HOME', opts.home ?? '~/.anya'));
|
|
204
|
+
const anyaHome = resolveHome(await ask('数据目录 ANYA_HOME', opts.home ?? process.env.ANYA_HOME ?? '~/.anya'));
|
|
205
205
|
// 创建目录结构
|
|
206
206
|
const dirs = ['data', 'data/logs', 'office', 'repos', 'media/feishu'];
|
|
207
207
|
for (const dir of dirs)
|
|
@@ -15,6 +15,7 @@ function createMcpServer(deps) {
|
|
|
15
15
|
onMessageSent: deps.onMessageSent,
|
|
16
16
|
yorOrchestrator: deps.yorOrchestrator,
|
|
17
17
|
getProjectConfig: deps.getProjectConfig,
|
|
18
|
+
onProjectChanged: deps.onProjectChanged,
|
|
18
19
|
};
|
|
19
20
|
const router = createToolRouter('loid', routerDeps);
|
|
20
21
|
const server = new Server({ name: 'loid-mcp', version: '3.0.0' }, { capabilities: { tools: {} } });
|
package/apps/server/dist/main.js
CHANGED
|
@@ -173,6 +173,7 @@ export async function buildServer() {
|
|
|
173
173
|
logger: app.log,
|
|
174
174
|
yorOrchestrator,
|
|
175
175
|
getProjectConfig: (projectId) => worktreeManager.getProjectConfig(projectId),
|
|
176
|
+
onProjectChanged: () => worktreeManager.invalidateCache(),
|
|
176
177
|
},
|
|
177
178
|
});
|
|
178
179
|
await loidBrain.init();
|
package/package.json
CHANGED
|
@@ -47,6 +47,25 @@ export async function taskDispatch(deps, input) {
|
|
|
47
47
|
const project = deps.getProjectConfig
|
|
48
48
|
? await deps.getProjectConfig(input.project_id)
|
|
49
49
|
: undefined;
|
|
50
|
+
// 传了 project_id 但未在注册表中找到 → 直接 BLOCKED,不静默降级为 adhoc
|
|
51
|
+
if (input.project_id && project?.mode === 'adhoc') {
|
|
52
|
+
logger?.info(`[anya:pipeline] [Loid] 创建任务 ${taskId} "${input.title}" | project=${input.project_id} 未注册,BLOCKED`);
|
|
53
|
+
assertTransition(TaskStatus.NEW, TaskStatus.BLOCKED);
|
|
54
|
+
updateTask(db, taskId, { status: TaskStatus.BLOCKED });
|
|
55
|
+
insertAuditEvent(db, {
|
|
56
|
+
event_type: 'task_status_changed',
|
|
57
|
+
actor: 'loid',
|
|
58
|
+
task_id: taskId,
|
|
59
|
+
summary: `NEW → BLOCKED: 项目 "${input.project_id}" 未在注册表中找到,请先通过 project.upsert 注册`,
|
|
60
|
+
detail: JSON.stringify({ from: 'NEW', to: 'BLOCKED', reason: 'project_not_found', project_id: input.project_id }),
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
task_id: taskId,
|
|
64
|
+
status: 'blocked',
|
|
65
|
+
brief_path: briefPath,
|
|
66
|
+
error: `项目 "${input.project_id}" 未在注册表中找到。请先调用 project.upsert 注册项目及其仓库配置,然后重新派工。`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
50
69
|
logger?.info(`[anya:pipeline] [Loid] 创建任务 ${taskId} "${input.title}"${input.project_id ? ` | project=${input.project_id} mode=${project?.mode}` : ''}`);
|
|
51
70
|
// 5. 自动准备工作区
|
|
52
71
|
const workspaceResult = await prepareWorkspace(taskId, taskDir, project, logger);
|
|
@@ -644,11 +644,15 @@ export function createToolRouter(role, deps) {
|
|
|
644
644
|
// Layer 2: Loid 专属 - 项目管理
|
|
645
645
|
case 'project.upsert': {
|
|
646
646
|
const { projectUpsert } = await import('./layer2/loid/project-upsert.js');
|
|
647
|
-
|
|
647
|
+
const result = await projectUpsert(deps.db, deps.workspacePath, args);
|
|
648
|
+
deps.onProjectChanged?.();
|
|
649
|
+
return result;
|
|
648
650
|
}
|
|
649
651
|
case 'project.remove': {
|
|
650
652
|
const { projectRemove } = await import('./layer2/loid/project-remove.js');
|
|
651
|
-
|
|
653
|
+
const result = await projectRemove(deps.db, deps.workspacePath, args);
|
|
654
|
+
deps.onProjectChanged?.();
|
|
655
|
+
return result;
|
|
652
656
|
}
|
|
653
657
|
// Layer 2: Loid 专属 - yor/delivery
|
|
654
658
|
case 'yor.spawn': {
|