memento-mcp-server 1.26.0 → 1.27.0-a
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.en.md +2 -2
- package/README.md +117 -26
- package/dist/cli/agent-ask.d.ts +54 -0
- package/dist/cli/agent-ask.d.ts.map +1 -0
- package/dist/cli/agent-ask.js +538 -0
- package/dist/cli/agent-ask.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +26 -2
- package/dist/cli.js.map +1 -1
- package/node_modules/@memento/core/README.md +2 -0
- package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.d.ts +39 -0
- package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.js +246 -0
- package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.d.ts +4 -0
- package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.js +31 -2
- package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.d.ts +2 -34
- package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.js +38 -274
- package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/memory/tools/recall-tool-schema.d.ts +4 -4
- package/node_modules/@memento/core/dist/domains/memory/tools/remember-tool.d.ts +4 -4
- package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.d.ts +7 -0
- package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.js +17 -0
- package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.d.ts +13 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.js +34 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.d.ts +12 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.js +40 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.d.ts +15 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.js +69 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.d.ts +13 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.js +37 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.d.ts +14 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.js +36 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.d.ts +13 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.js +84 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.d.ts +23 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.js +64 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.d.ts +12 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.js +12 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.d.ts +6 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.js +196 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.d.ts +6 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.js +19 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/index.d.ts +22 -3
- package/node_modules/@memento/core/dist/domains/personal-agent/index.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/index.js +11 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/index.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.d.ts +23 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.js +69 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/ports/context-port.d.ts +13 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/ports/context-port.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/ports/llm-port.d.ts +11 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/ports/llm-port.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/ports/persistence-port.d.ts +2 -2
- package/node_modules/@memento/core/dist/domains/personal-agent/ports/persistence-port.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.d.ts +15 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.d.ts.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.js +33 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.js.map +1 -0
- package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.d.ts +5 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.js +43 -8
- package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/personal-agent/types/agent-types.d.ts +48 -2
- package/node_modules/@memento/core/dist/domains/personal-agent/types/agent-types.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.d.ts +8 -0
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.js +13 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.d.ts +4 -0
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.js +3 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/search-engine.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/search-engine.js +17 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/search-engine.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/search-result-combiner.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/search-result-combiner.js +7 -2
- package/node_modules/@memento/core/dist/domains/search/algorithms/search-result-combiner.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/vector-search-engine.d.ts +4 -0
- package/node_modules/@memento/core/dist/domains/search/algorithms/vector-search-engine.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/algorithms/vector-search-engine.js.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/repositories/vector-search.repository.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/domains/search/repositories/vector-search.repository.js +38 -8
- package/node_modules/@memento/core/dist/domains/search/repositories/vector-search.repository.js.map +1 -1
- package/node_modules/@memento/core/dist/index.d.ts +2 -0
- package/node_modules/@memento/core/dist/index.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/index.js +2 -0
- package/node_modules/@memento/core/dist/index.js.map +1 -1
- package/node_modules/@memento/core/dist/shared/types/index.d.ts +4 -0
- package/node_modules/@memento/core/dist/shared/types/index.d.ts.map +1 -1
- package/node_modules/@memento/core/dist/shared/types/index.js +10 -0
- package/node_modules/@memento/core/dist/shared/types/index.js.map +1 -1
- package/node_modules/@memento/core/dist/shared/types/vector-search.types.d.ts +6 -0
- package/node_modules/@memento/core/dist/shared/types/vector-search.types.d.ts.map +1 -1
- package/node_modules/@memento/core/graphify-out/GRAPH_REPORT.md +2040 -1181
- package/node_modules/@memento/core/graphify-out/graph.json +39780 -30016
- package/package.json +1 -1
- package/scripts/audit-markdown-links.mjs +10 -1
package/README.en.md
CHANGED
|
@@ -298,10 +298,10 @@ npm run test -- --coverage
|
|
|
298
298
|
## 📚 Developer Guidelines
|
|
299
299
|
|
|
300
300
|
### Repository Guidelines (`AGENTS.md`)
|
|
301
|
-
- **Project Structure**:
|
|
301
|
+
- **Project Structure**: npm workspaces — code lives under `packages/memento-core`, `packages/memento-server`, `packages/memento-client`, plus `apps/` and root-level `tests/`. See [AGENTS.md](AGENTS.md).
|
|
302
302
|
- **Build/Test Commands**: `npm run dev`, `npm run build`, `npm run test`, etc.
|
|
303
303
|
- **Coding Style**: Node.js ≥ 24, TypeScript ES modules, 2-space indentation
|
|
304
|
-
- **Testing Guidelines**: Vitest
|
|
304
|
+
- **Testing Guidelines**: Vitest; colocate `*.spec.ts` under each package `src/`, workspace-level specs under root `tests/`, and scenario drivers under `packages/*/src/test/` where applicable.
|
|
305
305
|
- **Commit/PR Guidelines**: Conventional Commits, Korean context included
|
|
306
306
|
- **Environment/Database**: `.env` configuration, `data/` folder management
|
|
307
307
|
|
package/README.md
CHANGED
|
@@ -262,69 +262,160 @@ await client.callTool({
|
|
|
262
262
|
|
|
263
263
|
## 🛠️ 사용법
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
> **접근 방식 세 가지**:
|
|
266
|
+
> - **mcp.json 설정**: Claude Desktop, Cursor, Claude Code 등 MCP 호스트에 Memento를 등록하는 방식 (코드 불필요)
|
|
267
|
+
> - **MCP 프로토콜** (`@modelcontextprotocol/sdk`): 커스텀 에이전트 코드에서 MCP 프로토콜로 직접 연결하는 방식
|
|
268
|
+
> - **HTTP API 클라이언트** (`@memento/client`): TypeScript/JavaScript 코드에서 Memento 서버의 REST API를 프로그래밍 방식으로 사용하는 방식
|
|
269
|
+
|
|
270
|
+
### 0. mcp.json 설정 (Claude Desktop · Cursor · Claude Code)
|
|
271
|
+
|
|
272
|
+
MCP 호스트 앱에서 Memento를 사용하려면 설정 파일에 서버 정보를 등록합니다.
|
|
273
|
+
|
|
274
|
+
#### stdio 모드 (단일 에이전트 / 소스 실행)
|
|
275
|
+
|
|
276
|
+
`npm run build` 후 아래처럼 등록합니다.
|
|
277
|
+
|
|
278
|
+
```json
|
|
279
|
+
{
|
|
280
|
+
"mcpServers": {
|
|
281
|
+
"memento": {
|
|
282
|
+
"command": "node",
|
|
283
|
+
"args": ["/path/to/memento/packages/memento-server/dist/server/index.js"],
|
|
284
|
+
"env": {
|
|
285
|
+
"DB_PATH": "/absolute/path/to/data/memory.db"
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
> **파일 위치**:
|
|
293
|
+
> - Claude Desktop: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) / `%APPDATA%\Claude\claude_desktop_config.json` (Windows)
|
|
294
|
+
> - Cursor: `.cursor/mcp.json` (프로젝트) 또는 `~/.cursor/mcp.json` (전역)
|
|
295
|
+
> - Claude Code: `.claude/mcp.json` (프로젝트) 또는 `~/.claude/mcp.json` (전역)
|
|
296
|
+
|
|
297
|
+
#### HTTP MCP 모드 (다중 에이전트 공유 서버)
|
|
298
|
+
|
|
299
|
+
여러 에이전트가 동일한 서버에 접속할 때 사용합니다. 먼저 서버를 띄운 뒤 등록합니다.
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# 서버 먼저 실행
|
|
303
|
+
npm run build && npm run start:http # 기본 포트: 8080
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
```json
|
|
307
|
+
{
|
|
308
|
+
"mcpServers": {
|
|
309
|
+
"memento": {
|
|
310
|
+
"type": "http",
|
|
311
|
+
"url": "http://127.0.0.1:8080/mcp"
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
> **npx로 실행하는 경우** (소스 빌드 없이):
|
|
318
|
+
> ```json
|
|
319
|
+
> {
|
|
320
|
+
> "mcpServers": {
|
|
321
|
+
> "memento": {
|
|
322
|
+
> "command": "npx",
|
|
323
|
+
> "args": ["memento-mcp-server@latest"],
|
|
324
|
+
> "env": {
|
|
325
|
+
> "DB_PATH": "/absolute/path/to/data/memory.db"
|
|
326
|
+
> }
|
|
327
|
+
> }
|
|
328
|
+
> }
|
|
329
|
+
> }
|
|
330
|
+
> ```
|
|
331
|
+
|
|
332
|
+
### 1. MCP 프로토콜 연결 (`@modelcontextprotocol/sdk`)
|
|
333
|
+
|
|
334
|
+
MCP 호스트나 커스텀 에이전트에서 MCP 프로토콜로 직접 연결할 때 사용합니다.
|
|
266
335
|
|
|
267
336
|
```typescript
|
|
268
337
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
269
338
|
|
|
270
339
|
const client = new Client({
|
|
271
|
-
name: "
|
|
340
|
+
name: "my-agent",
|
|
272
341
|
version: "0.1.0"
|
|
273
342
|
}, {
|
|
274
|
-
capabilities: {
|
|
275
|
-
tools: {},
|
|
276
|
-
resources: {},
|
|
277
|
-
prompts: {}
|
|
278
|
-
}
|
|
343
|
+
capabilities: { tools: {}, resources: {}, prompts: {} }
|
|
279
344
|
});
|
|
280
345
|
|
|
281
|
-
// stdio 연결
|
|
346
|
+
// stdio 연결 (단일 프로세스)
|
|
282
347
|
await client.connect({
|
|
283
348
|
command: "node",
|
|
284
349
|
args: ["packages/memento-server/dist/server/index.js"]
|
|
285
350
|
});
|
|
286
351
|
|
|
287
|
-
//
|
|
352
|
+
// HTTP MCP 연결 (다중 에이전트 공유 서버)
|
|
288
353
|
await client.connect({
|
|
289
354
|
transport: {
|
|
290
|
-
type: "
|
|
291
|
-
url: "
|
|
355
|
+
type: "http",
|
|
356
|
+
url: "http://127.0.0.1:7777"
|
|
292
357
|
}
|
|
293
358
|
});
|
|
294
359
|
```
|
|
295
360
|
|
|
296
|
-
### 기억 저장
|
|
297
|
-
|
|
298
361
|
```typescript
|
|
299
|
-
//
|
|
362
|
+
// MCP 도구 호출
|
|
300
363
|
const result = await client.callTool({
|
|
301
364
|
name: "remember",
|
|
302
365
|
arguments: {
|
|
303
|
-
content: "React Hook에 대해 학습했습니다.
|
|
366
|
+
content: "React Hook에 대해 학습했습니다.",
|
|
304
367
|
type: "episodic",
|
|
305
|
-
tags: ["react", "hooks"
|
|
368
|
+
tags: ["react", "hooks"],
|
|
306
369
|
importance: 0.8
|
|
307
370
|
}
|
|
308
371
|
});
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### 기억 검색
|
|
312
372
|
|
|
313
|
-
```typescript
|
|
314
|
-
// 기억 검색
|
|
315
373
|
const results = await client.callTool({
|
|
316
374
|
name: "recall",
|
|
317
375
|
arguments: {
|
|
318
376
|
query: "React Hook을 처음 배울 때 알아야 할 것들은?",
|
|
319
|
-
filters: {
|
|
320
|
-
type: ["episodic", "semantic"],
|
|
321
|
-
tags: ["react"]
|
|
322
|
-
},
|
|
377
|
+
filters: { type: ["episodic", "semantic"], tags: ["react"] },
|
|
323
378
|
limit: 10
|
|
324
379
|
}
|
|
325
380
|
});
|
|
326
381
|
```
|
|
327
382
|
|
|
383
|
+
### 2. HTTP API 클라이언트 (`@memento/client`)
|
|
384
|
+
|
|
385
|
+
`@memento/client`는 MCP 프로토콜이 아닌 **HTTP REST API 래퍼**입니다. TypeScript/JavaScript 애플리케이션에서 Memento 서버의 `/tools/*` 엔드포인트를 직접 호출할 때 사용합니다.
|
|
386
|
+
|
|
387
|
+
```typescript
|
|
388
|
+
import { MementoClient } from "@memento/client";
|
|
389
|
+
|
|
390
|
+
const client = new MementoClient({
|
|
391
|
+
serverUrl: "http://localhost:8080",
|
|
392
|
+
apiKey: "your-api-key" // HTTP 서버의 Bearer 토큰
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
await client.connect(); // /health 엔드포인트로 연결 확인
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
```typescript
|
|
399
|
+
// 기억 저장
|
|
400
|
+
const result = await client.remember({
|
|
401
|
+
content: "React Hook에 대해 학습했습니다.",
|
|
402
|
+
type: "episodic",
|
|
403
|
+
tags: ["react", "hooks"],
|
|
404
|
+
importance: 0.8
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
// 기억 검색
|
|
408
|
+
const results = await client.recall(
|
|
409
|
+
"React Hook을 처음 배울 때 알아야 할 것들은?",
|
|
410
|
+
{ type: ["episodic", "semantic"], tags: ["react"] },
|
|
411
|
+
10
|
|
412
|
+
);
|
|
413
|
+
|
|
414
|
+
// 기억 고정 / 삭제
|
|
415
|
+
await client.pin(result.memory_id);
|
|
416
|
+
await client.forget(result.memory_id);
|
|
417
|
+
```
|
|
418
|
+
|
|
328
419
|
## 📚 문서
|
|
329
420
|
|
|
330
421
|
- [임베딩 서비스 가이드](docs/guides/ko/embedding-service-guide.md) - 임베딩 서비스 사용법
|
|
@@ -500,7 +591,7 @@ npm run test -- --coverage
|
|
|
500
591
|
- **프로젝트 구조**: npm workspaces 모노레포 — `packages/memento-core`, `packages/memento-server`, `packages/memento-client`, `apps/*`. 서버 코드는 `packages/memento-server`, 도메인·인프라는 `packages/memento-core`.
|
|
501
592
|
- **빌드/테스트 명령어**: `npm run build`(core→server→client), `npm run dev`·`npm start`(서버), `npm run db:init`·`npm run db:migrate`(DB), `npm test` 등. 상세는 [AGENTS.md](AGENTS.md) 참조.
|
|
502
593
|
- **코딩 스타일**: Node.js ≥ 24, TypeScript ES 모듈, 2칸 들여쓰기
|
|
503
|
-
- **테스트 가이드라인**: Vitest
|
|
594
|
+
- **테스트 가이드라인**: Vitest 기반. 단위·스펙은 주로 `packages/memento-core/src/**`, `packages/memento-server/src/**` 등 패키지 트리의 `*.spec.ts`에 두고, 루트 `tests/`에는 워크스페이스 수준 통합 스펙이 있다.
|
|
504
595
|
- **커밋/PR 가이드라인**: Conventional Commits, 한국어 컨텍스트 포함
|
|
505
596
|
- **환경/데이터베이스**: `.env` 설정, `data/` 폴더 관리
|
|
506
597
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `memento agent ask` — in-process 개인 지식 Agent 한 턴 (#236).
|
|
3
|
+
* 설계: docs/superpowers/specs/2026-05-14-issue-236-agent-ask-cli-design.md
|
|
4
|
+
* 테스트 훅: `AgentAskRuntimeHooks` (#237, Vitest에서 stdin/승인 주입).
|
|
5
|
+
*/
|
|
6
|
+
import type { KnowledgeCandidate } from '@memento/core';
|
|
7
|
+
export type PreCliOptions = {
|
|
8
|
+
dbPath?: string;
|
|
9
|
+
envFile?: string;
|
|
10
|
+
configDir?: string;
|
|
11
|
+
};
|
|
12
|
+
/** argv[2..]에서 글로벌 CLI 쌍 제거 (cli.ts와 동일 3종). */
|
|
13
|
+
export declare function stripGlobalCliArgs(argv: string[]): string[];
|
|
14
|
+
export type ParsedAgentAsk = {
|
|
15
|
+
kind: 'help';
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'usage';
|
|
18
|
+
message: string;
|
|
19
|
+
} | {
|
|
20
|
+
kind: 'run';
|
|
21
|
+
userMessage: string;
|
|
22
|
+
projectId?: string;
|
|
23
|
+
tokenBudget?: number;
|
|
24
|
+
json: boolean;
|
|
25
|
+
noSave: boolean;
|
|
26
|
+
/** `--json`만 있고 `--no-save`는 없을 때 true — stderr 안내 한 줄 출력 */
|
|
27
|
+
jsonImplicitNoSave: boolean;
|
|
28
|
+
/** `--llm mock`이면 환경 변수 provider보다 mock을 우선한다. */
|
|
29
|
+
forceLlmMock: boolean;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* `memento … agent ask …` 패턴 파싱. `ask` 직후 첫 토큰이 userMessage(플래그 아님).
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseAgentAskInvocation(argv: string[]): ParsedAgentAsk;
|
|
35
|
+
export declare function validateAgentAskFlagArgv(flagArgv: string[]): string | null;
|
|
36
|
+
export declare function validateAgentAskRawTypes(raw: Record<string, unknown>): string | null;
|
|
37
|
+
export type AgentAskApproveAnswer = 'y' | 'n' | 's' | 'q' | 'interrupt';
|
|
38
|
+
/** 기본 readline 승인 프롬프트. 테스트에서는 `AgentAskRuntimeHooks.promptApprove`로 대체 가능 (#237). */
|
|
39
|
+
export declare function promptApproveInteractive(candidate: KnowledgeCandidate, index: number, total: number, interruptRef: {
|
|
40
|
+
interrupted: boolean;
|
|
41
|
+
}): Promise<AgentAskApproveAnswer>;
|
|
42
|
+
export type AgentAskPromptApprove = (candidate: KnowledgeCandidate, index: number, total: number, interruptRef: {
|
|
43
|
+
interrupted: boolean;
|
|
44
|
+
}) => Promise<AgentAskApproveAnswer>;
|
|
45
|
+
/** in-process 테스트 전용: 제품 CLI 경로는 `cli.ts`가 훅 없이 호출한다 (#237). */
|
|
46
|
+
export interface AgentAskRuntimeHooks {
|
|
47
|
+
/** 미지정 시 `process.stdin.isTTY` */
|
|
48
|
+
stdinIsTTY?: boolean;
|
|
49
|
+
/** 미지정 시 `promptApproveInteractive` */
|
|
50
|
+
promptApprove?: AgentAskPromptApprove;
|
|
51
|
+
}
|
|
52
|
+
export declare function runAgentAskMain(preOptions: PreCliOptions, argv: string[], hooks?: AgentAskRuntimeHooks): Promise<number>;
|
|
53
|
+
export declare function agentAskHelpText(): string;
|
|
54
|
+
//# sourceMappingURL=agent-ask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ask.d.ts","sourceRoot":"","sources":["../../src/cli/agent-ask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,OAAO,KAAK,EAAY,kBAAkB,EAAsC,MAAM,eAAe,CAAC;AAQtG,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAW3D;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kDAAkD;IAClD,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEN;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAgFtE;AAaD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CA4B1E;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAkBpF;AAkDD,MAAM,MAAM,qBAAqB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,WAAW,CAAC;AAExE,sFAAsF;AACtF,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,YAAY,EAAE;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,qBAAqB,CAAC,CA+BhC;AAED,MAAM,MAAM,qBAAqB,GAAG,CAClC,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,YAAY,EAAE;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,KACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAEpC,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,aAAa,EACzB,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,CAAC,EAAE,oBAAoB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAwTjB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAezC"}
|