aidflow 1.1.1 → 1.2.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/dist/context/service.d.ts +48 -0
- package/dist/context/service.d.ts.map +1 -0
- package/dist/context/service.js +113 -0
- package/dist/context/service.js.map +1 -0
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/select_service/description.d.ts +2 -0
- package/dist/tools/select_service/description.d.ts.map +1 -0
- package/dist/tools/select_service/description.js +9 -0
- package/dist/tools/select_service/description.js.map +1 -0
- package/dist/tools/select_service/handler.d.ts +3 -0
- package/dist/tools/select_service/handler.d.ts.map +1 -0
- package/dist/tools/select_service/handler.js +120 -0
- package/dist/tools/select_service/handler.js.map +1 -0
- package/dist/tools/select_service/index.d.ts +4 -0
- package/dist/tools/select_service/index.d.ts.map +1 -0
- package/dist/tools/select_service/index.js +4 -0
- package/dist/tools/select_service/index.js.map +1 -0
- package/dist/tools/select_service/schema.d.ts +19 -0
- package/dist/tools/select_service/schema.d.ts.map +1 -0
- package/dist/tools/select_service/schema.js +20 -0
- package/dist/tools/select_service/schema.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface ServiceInfo {
|
|
2
|
+
serviceName: string;
|
|
3
|
+
aidflowPath: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 워크스페이스에서 모든 .aidflow 디렉토리 탐색
|
|
7
|
+
*/
|
|
8
|
+
export declare function discoverServices(baseDir?: string, maxDepth?: number): ServiceInfo[];
|
|
9
|
+
/**
|
|
10
|
+
* 세션에 서비스 바인딩
|
|
11
|
+
*/
|
|
12
|
+
export declare function bindService(sessionName: string, service: ServiceInfo): void;
|
|
13
|
+
/**
|
|
14
|
+
* 세션의 바인딩된 서비스 조회
|
|
15
|
+
*/
|
|
16
|
+
export declare function getBinding(sessionName: string): ServiceInfo | null;
|
|
17
|
+
/**
|
|
18
|
+
* 세션 바인딩 해제
|
|
19
|
+
*/
|
|
20
|
+
export declare function unbindService(sessionName: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* 글로벌 서비스 선택 (세션 없이 사용 시)
|
|
23
|
+
*/
|
|
24
|
+
export declare function selectGlobal(service: ServiceInfo): void;
|
|
25
|
+
/**
|
|
26
|
+
* 글로벌 선택된 서비스 조회
|
|
27
|
+
*/
|
|
28
|
+
export declare function getGlobalSelection(): ServiceInfo | null;
|
|
29
|
+
/**
|
|
30
|
+
* 서비스 조회 (세션 바인딩 우선, 글로벌 폴백)
|
|
31
|
+
*/
|
|
32
|
+
export declare function getService(sessionName?: string): ServiceInfo | null;
|
|
33
|
+
/**
|
|
34
|
+
* 서비스 선택 여부 확인
|
|
35
|
+
*/
|
|
36
|
+
export declare function isServiceSelected(sessionName?: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* 모든 바인딩 초기화
|
|
39
|
+
*/
|
|
40
|
+
export declare function clearAll(): void;
|
|
41
|
+
/**
|
|
42
|
+
* 현재 바인딩 상태 조회
|
|
43
|
+
*/
|
|
44
|
+
export declare function listBindings(): Array<{
|
|
45
|
+
sessionName: string;
|
|
46
|
+
service: ServiceInfo;
|
|
47
|
+
}>;
|
|
48
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/context/service.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,WAAW,EAAE,CAc9E;AAmCD;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAE3E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAMnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAG/B;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,CAKnF"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { getWorkspaceRoot } from "./workspace.js";
|
|
4
|
+
/**
|
|
5
|
+
* 멀티 서비스 환경에서 .aidflow 디렉토리 탐색 및 세션별 서비스 바인딩 관리
|
|
6
|
+
*/
|
|
7
|
+
// 세션별 서비스 바인딩 (세션 이름 -> 서비스 정보)
|
|
8
|
+
const bindings = new Map();
|
|
9
|
+
// 글로벌 선택 (세션 없이 사용하는 경우용)
|
|
10
|
+
let globalSelection = null;
|
|
11
|
+
/**
|
|
12
|
+
* 워크스페이스에서 모든 .aidflow 디렉토리 탐색
|
|
13
|
+
*/
|
|
14
|
+
export function discoverServices(baseDir, maxDepth = 3) {
|
|
15
|
+
const root = baseDir ?? getWorkspaceRoot();
|
|
16
|
+
const services = [];
|
|
17
|
+
// 루트에 .aidflow가 있는지 확인
|
|
18
|
+
const rootAidflow = join(root, ".aidflow");
|
|
19
|
+
if (existsSync(rootAidflow)) {
|
|
20
|
+
services.push({ serviceName: "(root)", aidflowPath: rootAidflow });
|
|
21
|
+
}
|
|
22
|
+
// 하위 디렉토리 탐색
|
|
23
|
+
scanDirectory(root, services, 0, maxDepth);
|
|
24
|
+
return services;
|
|
25
|
+
}
|
|
26
|
+
function scanDirectory(dir, services, currentDepth, maxDepth) {
|
|
27
|
+
if (currentDepth >= maxDepth)
|
|
28
|
+
return;
|
|
29
|
+
let entries;
|
|
30
|
+
try {
|
|
31
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
if (entry.name.startsWith(".") || entry.name === "node_modules") {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (entry.isDirectory()) {
|
|
41
|
+
const subDir = join(dir, entry.name);
|
|
42
|
+
const aidflowPath = join(subDir, ".aidflow");
|
|
43
|
+
if (existsSync(aidflowPath)) {
|
|
44
|
+
services.push({ serviceName: entry.name, aidflowPath });
|
|
45
|
+
}
|
|
46
|
+
scanDirectory(subDir, services, currentDepth + 1, maxDepth);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 세션에 서비스 바인딩
|
|
52
|
+
*/
|
|
53
|
+
export function bindService(sessionName, service) {
|
|
54
|
+
bindings.set(sessionName, service);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 세션의 바인딩된 서비스 조회
|
|
58
|
+
*/
|
|
59
|
+
export function getBinding(sessionName) {
|
|
60
|
+
return bindings.get(sessionName) ?? null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 세션 바인딩 해제
|
|
64
|
+
*/
|
|
65
|
+
export function unbindService(sessionName) {
|
|
66
|
+
bindings.delete(sessionName);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 글로벌 서비스 선택 (세션 없이 사용 시)
|
|
70
|
+
*/
|
|
71
|
+
export function selectGlobal(service) {
|
|
72
|
+
globalSelection = service;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 글로벌 선택된 서비스 조회
|
|
76
|
+
*/
|
|
77
|
+
export function getGlobalSelection() {
|
|
78
|
+
return globalSelection;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 서비스 조회 (세션 바인딩 우선, 글로벌 폴백)
|
|
82
|
+
*/
|
|
83
|
+
export function getService(sessionName) {
|
|
84
|
+
if (sessionName) {
|
|
85
|
+
const binding = bindings.get(sessionName);
|
|
86
|
+
if (binding)
|
|
87
|
+
return binding;
|
|
88
|
+
}
|
|
89
|
+
return globalSelection;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 서비스 선택 여부 확인
|
|
93
|
+
*/
|
|
94
|
+
export function isServiceSelected(sessionName) {
|
|
95
|
+
return getService(sessionName) !== null;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 모든 바인딩 초기화
|
|
99
|
+
*/
|
|
100
|
+
export function clearAll() {
|
|
101
|
+
bindings.clear();
|
|
102
|
+
globalSelection = null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 현재 바인딩 상태 조회
|
|
106
|
+
*/
|
|
107
|
+
export function listBindings() {
|
|
108
|
+
return Array.from(bindings.entries()).map(([sessionName, service]) => ({
|
|
109
|
+
sessionName,
|
|
110
|
+
service,
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/context/service.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { InitInputSchema, handleInit, description as initDesc } from "./tools/in
|
|
|
6
6
|
import { SessionInputSchema, handleSession, description as sessionDesc } from "./tools/session/index.js";
|
|
7
7
|
import { PlanInputSchema, handlePlan, description as planDesc } from "./tools/plan/index.js";
|
|
8
8
|
import { GuideInputSchema, handleGuide, description as guideDesc } from "./tools/guide/index.js";
|
|
9
|
+
import { SelectServiceInputSchema, handleSelectService, description as selectServiceDesc } from "./tools/select_service/index.js";
|
|
9
10
|
const INSTRUCTIONS = `# aidflow
|
|
10
11
|
|
|
11
12
|
Session-based development workflow manager.
|
|
@@ -25,6 +26,14 @@ Before doing ANYTHING, check for existing context:
|
|
|
25
26
|
|
|
26
27
|
This ensures seamless context recovery across conversation sessions.
|
|
27
28
|
|
|
29
|
+
## Multi-Service Workspace
|
|
30
|
+
If the workspace contains multiple services (each with their own .aidflow/):
|
|
31
|
+
1. Run \`select_service(action: "list")\` to discover services.
|
|
32
|
+
2. Confirm the target service with the user.
|
|
33
|
+
3. Run \`select_service(action: "select", service: "name")\` to select.
|
|
34
|
+
4. For parallel sessions, bind service to session: \`select_service(action: "select", service: "name", session: "session-name")\`.
|
|
35
|
+
Single-service projects are auto-selected.
|
|
36
|
+
|
|
28
37
|
## First-time Setup
|
|
29
38
|
1. \`init\` to create .aidflow/ directory and configuration.
|
|
30
39
|
2. \`/spec\` to define project-level engineering foundations (SPEC.md).
|
|
@@ -51,7 +60,7 @@ This ensures seamless context recovery across conversation sessions.
|
|
|
51
60
|
- aidflow manages the development workflow (session, plan, spec). Actual coding uses the AI client's native tools.
|
|
52
61
|
- Other MCP servers, skills, and plugins are encouraged for information gathering, code analysis, and specialized tasks.
|
|
53
62
|
- Use the best tool for each job: aidflow for structure, native tools for implementation, external tools for everything else.`;
|
|
54
|
-
const server = new McpServer({ name: "aidflow", version: "1.
|
|
63
|
+
const server = new McpServer({ name: "aidflow", version: "1.2.0" }, {
|
|
55
64
|
capabilities: {
|
|
56
65
|
tools: {},
|
|
57
66
|
},
|
|
@@ -90,6 +99,14 @@ server.registerTool("guide", {
|
|
|
90
99
|
const result = await handleGuide(input);
|
|
91
100
|
return { content: [{ type: "text", text: result }] };
|
|
92
101
|
});
|
|
102
|
+
server.registerTool("select_service", {
|
|
103
|
+
description: selectServiceDesc,
|
|
104
|
+
inputSchema: SelectServiceInputSchema,
|
|
105
|
+
}, async (params) => {
|
|
106
|
+
const input = SelectServiceInputSchema.parse(params);
|
|
107
|
+
const result = await handleSelectService(input);
|
|
108
|
+
return { content: [{ type: "text", text: result }] };
|
|
109
|
+
});
|
|
93
110
|
async function main() {
|
|
94
111
|
const transport = new StdioServerTransport();
|
|
95
112
|
// Workspace root from environment or cwd
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAElI,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8HAoDyG,CAAC;AAE/H,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EACrC;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;IACD,YAAY,EAAE,YAAY;CAC3B,CACF,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;IAC1B,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,eAAe;CAC7B,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;IAC7B,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,kBAAkB;CAChC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;IAC1B,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,eAAe;CAC7B,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;IAC3B,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,gBAAgB;CAC9B,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;IACpC,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,wBAAwB;CACtC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,yCAAyC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEvB,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const description = "Select target service in multi-service workspace. (list/select/status)\n\n- **list**: Discover all .aidflow directories in workspace. Auto-selects if only one found.\n- **select**: Select a specific service by name. Optionally bind to a session for parallel work.\n- **status**: Show current service selection (session-bound or global).\n\nCall this before other tools (session, plan, guide) when working in a multi-service workspace.\nSingle-service projects are auto-selected on `list`.";
|
|
2
|
+
//# sourceMappingURL=description.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description.d.ts","sourceRoot":"","sources":["../../../src/tools/select_service/description.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,6eAO+B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const description = `Select target service in multi-service workspace. (list/select/status)
|
|
2
|
+
|
|
3
|
+
- **list**: Discover all .aidflow directories in workspace. Auto-selects if only one found.
|
|
4
|
+
- **select**: Select a specific service by name. Optionally bind to a session for parallel work.
|
|
5
|
+
- **status**: Show current service selection (session-bound or global).
|
|
6
|
+
|
|
7
|
+
Call this before other tools (session, plan, guide) when working in a multi-service workspace.
|
|
8
|
+
Single-service projects are auto-selected on \`list\`.`;
|
|
9
|
+
//# sourceMappingURL=description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description.js","sourceRoot":"","sources":["../../../src/tools/select_service/description.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;uDAO4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tools/select_service/handler.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CASpF"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { discoverServices, selectGlobal, bindService, getService, listBindings, } from "../../context/service.js";
|
|
2
|
+
export async function handleSelectService(input) {
|
|
3
|
+
switch (input.action) {
|
|
4
|
+
case "list":
|
|
5
|
+
return handleList(input);
|
|
6
|
+
case "select":
|
|
7
|
+
return handleSelect(input);
|
|
8
|
+
case "status":
|
|
9
|
+
return handleStatus(input);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function handleList(input) {
|
|
13
|
+
const services = discoverServices(input.workspacePath);
|
|
14
|
+
if (services.length === 0) {
|
|
15
|
+
return [
|
|
16
|
+
"# No .aidflow directories found",
|
|
17
|
+
"",
|
|
18
|
+
"No `.aidflow/` directory found in workspace.",
|
|
19
|
+
"",
|
|
20
|
+
"Run `init` to initialize aidflow, or create `.aidflow/` in service subdirectories for multi-service setup:",
|
|
21
|
+
"```",
|
|
22
|
+
"workspace/",
|
|
23
|
+
" service-a/.aidflow/",
|
|
24
|
+
" service-b/.aidflow/",
|
|
25
|
+
"```",
|
|
26
|
+
].join("\n");
|
|
27
|
+
}
|
|
28
|
+
// 단일 서비스: 자동 선택
|
|
29
|
+
if (services.length === 1) {
|
|
30
|
+
const svc = services[0];
|
|
31
|
+
if (input.session) {
|
|
32
|
+
bindService(input.session, svc);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
selectGlobal(svc);
|
|
36
|
+
}
|
|
37
|
+
return [
|
|
38
|
+
"# Service auto-selected",
|
|
39
|
+
"",
|
|
40
|
+
`**Service**: ${svc.serviceName}`,
|
|
41
|
+
`**Path**: ${svc.aidflowPath}`,
|
|
42
|
+
input.session ? `**Bound to session**: ${input.session}` : "**Scope**: global",
|
|
43
|
+
].join("\n");
|
|
44
|
+
}
|
|
45
|
+
// 멀티 서비스: 목록 반환
|
|
46
|
+
const listText = services
|
|
47
|
+
.map((svc, idx) => `${idx + 1}. **${svc.serviceName}** - ${svc.aidflowPath}`)
|
|
48
|
+
.join("\n");
|
|
49
|
+
const currentService = getService(input.session);
|
|
50
|
+
const currentStatus = currentService
|
|
51
|
+
? `\n**Currently selected**: ${currentService.serviceName}`
|
|
52
|
+
: "";
|
|
53
|
+
return [
|
|
54
|
+
`# Services found (${services.length})`,
|
|
55
|
+
"",
|
|
56
|
+
listText,
|
|
57
|
+
currentStatus,
|
|
58
|
+
"",
|
|
59
|
+
"---",
|
|
60
|
+
"Next: Confirm target service with the user, then call `select_service(action: \"select\", service: \"name\")`.",
|
|
61
|
+
].join("\n");
|
|
62
|
+
}
|
|
63
|
+
function handleSelect(input) {
|
|
64
|
+
if (!input.service) {
|
|
65
|
+
return 'Error: `service` parameter is required for select action.';
|
|
66
|
+
}
|
|
67
|
+
const services = discoverServices(input.workspacePath);
|
|
68
|
+
const found = services.find((svc) => svc.serviceName === input.service);
|
|
69
|
+
if (!found) {
|
|
70
|
+
const available = services.map((s) => s.serviceName).join(", ");
|
|
71
|
+
return [
|
|
72
|
+
`Error: Service "${input.service}" not found.`,
|
|
73
|
+
"",
|
|
74
|
+
`Available services: ${available || "none"}`,
|
|
75
|
+
"Run `select_service(action: \"list\")` to discover services.",
|
|
76
|
+
].join("\n");
|
|
77
|
+
}
|
|
78
|
+
if (input.session) {
|
|
79
|
+
bindService(input.session, found);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
selectGlobal(found);
|
|
83
|
+
}
|
|
84
|
+
return [
|
|
85
|
+
"# Service selected",
|
|
86
|
+
"",
|
|
87
|
+
`**Service**: ${found.serviceName}`,
|
|
88
|
+
`**Path**: ${found.aidflowPath}`,
|
|
89
|
+
input.session ? `**Bound to session**: ${input.session}` : "**Scope**: global",
|
|
90
|
+
].join("\n");
|
|
91
|
+
}
|
|
92
|
+
function handleStatus(input) {
|
|
93
|
+
const service = getService(input.session);
|
|
94
|
+
if (!service) {
|
|
95
|
+
return [
|
|
96
|
+
"# No service selected",
|
|
97
|
+
"",
|
|
98
|
+
"Run `select_service(action: \"list\")` to discover and select a service.",
|
|
99
|
+
].join("\n");
|
|
100
|
+
}
|
|
101
|
+
const lines = [
|
|
102
|
+
"# Current service",
|
|
103
|
+
"",
|
|
104
|
+
`**Service**: ${service.serviceName}`,
|
|
105
|
+
`**Path**: ${service.aidflowPath}`,
|
|
106
|
+
];
|
|
107
|
+
if (input.session) {
|
|
108
|
+
lines.push(`**Session**: ${input.session}`);
|
|
109
|
+
}
|
|
110
|
+
// 다른 세션 바인딩 상태 표시
|
|
111
|
+
const allBindings = listBindings();
|
|
112
|
+
if (allBindings.length > 0) {
|
|
113
|
+
lines.push("", "**Session bindings**:");
|
|
114
|
+
for (const b of allBindings) {
|
|
115
|
+
lines.push(`- ${b.sessionName} -> ${b.service.serviceName}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return lines.join("\n");
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/tools/select_service/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/select_service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/select_service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const SelectServiceInputSchema: z.ZodObject<{
|
|
3
|
+
action: z.ZodDefault<z.ZodEnum<["list", "select", "status"]>>;
|
|
4
|
+
service: z.ZodOptional<z.ZodString>;
|
|
5
|
+
session: z.ZodOptional<z.ZodString>;
|
|
6
|
+
workspacePath: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
action: "status" | "list" | "select";
|
|
9
|
+
session?: string | undefined;
|
|
10
|
+
service?: string | undefined;
|
|
11
|
+
workspacePath?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
action?: "status" | "list" | "select" | undefined;
|
|
14
|
+
session?: string | undefined;
|
|
15
|
+
service?: string | undefined;
|
|
16
|
+
workspacePath?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export type SelectServiceInput = z.infer<typeof SelectServiceInputSchema>;
|
|
19
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/tools/select_service/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAiBnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const SelectServiceInputSchema = z.object({
|
|
3
|
+
action: z
|
|
4
|
+
.enum(["list", "select", "status"])
|
|
5
|
+
.default("list")
|
|
6
|
+
.describe("list: 서비스 목록 조회, select: 서비스 선택, status: 현재 선택 상태 확인"),
|
|
7
|
+
service: z
|
|
8
|
+
.string()
|
|
9
|
+
.optional()
|
|
10
|
+
.describe('선택할 서비스명 (action이 "select"일 때 필수)'),
|
|
11
|
+
session: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("서비스를 바인딩할 세션명. 미지정 시 글로벌 선택"),
|
|
15
|
+
workspacePath: z
|
|
16
|
+
.string()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe("서비스 탐색 기준 디렉토리. 미지정 시 워크스페이스 루트 사용"),
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/tools/select_service/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAClC,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,sDAAsD,CAAC;IACnE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mCAAmC,CAAC;IAChD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6BAA6B,CAAC;IAC1C,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;CAClD,CAAC,CAAC"}
|