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.
Files changed (127) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +117 -26
  3. package/dist/cli/agent-ask.d.ts +54 -0
  4. package/dist/cli/agent-ask.d.ts.map +1 -0
  5. package/dist/cli/agent-ask.js +538 -0
  6. package/dist/cli/agent-ask.js.map +1 -0
  7. package/dist/cli.d.ts +1 -1
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +26 -2
  10. package/dist/cli.js.map +1 -1
  11. package/node_modules/@memento/core/README.md +2 -0
  12. package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.d.ts +39 -0
  13. package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.d.ts.map +1 -0
  14. package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.js +246 -0
  15. package/node_modules/@memento/core/dist/domains/memory/services/knowledge-context-bundle-builder.js.map +1 -0
  16. package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.d.ts +4 -0
  17. package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.d.ts.map +1 -1
  18. package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.js +31 -2
  19. package/node_modules/@memento/core/dist/domains/memory/services/memory-embedding-service.js.map +1 -1
  20. package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.d.ts +2 -34
  21. package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.d.ts.map +1 -1
  22. package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.js +38 -274
  23. package/node_modules/@memento/core/dist/domains/memory/tools/memory-injection-prompt.js.map +1 -1
  24. package/node_modules/@memento/core/dist/domains/memory/tools/recall-tool-schema.d.ts +4 -4
  25. package/node_modules/@memento/core/dist/domains/memory/tools/remember-tool.d.ts +4 -4
  26. package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.d.ts +7 -0
  27. package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.d.ts.map +1 -0
  28. package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.js +17 -0
  29. package/node_modules/@memento/core/dist/domains/memory/utils/normalize-memory-types-for-item-search.js.map +1 -0
  30. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.d.ts +13 -0
  31. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.d.ts.map +1 -0
  32. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.js +34 -0
  33. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/deterministic-mock-llm-adapter.js.map +1 -0
  34. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.d.ts +12 -0
  35. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.d.ts.map +1 -0
  36. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.js +40 -0
  37. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/gemini-chat-llm-adapter.js.map +1 -0
  38. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.d.ts +15 -0
  39. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.d.ts.map +1 -0
  40. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.js +69 -0
  41. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/ollama-chat-llm-adapter.js.map +1 -0
  42. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.d.ts +13 -0
  43. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.d.ts.map +1 -0
  44. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.js +37 -0
  45. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/openai-chat-llm-adapter.js.map +1 -0
  46. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.d.ts +14 -0
  47. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.d.ts.map +1 -0
  48. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.js +36 -0
  49. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-knowledge-context-adapter.js.map +1 -0
  50. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.d.ts +13 -0
  51. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.d.ts.map +1 -0
  52. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.js +84 -0
  53. package/node_modules/@memento/core/dist/domains/personal-agent/adapters/tool-context-remember-persistence-adapter.js.map +1 -0
  54. package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.d.ts +23 -0
  55. package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.d.ts.map +1 -0
  56. package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.js +64 -0
  57. package/node_modules/@memento/core/dist/domains/personal-agent/config/personal-agent-llm-env.js.map +1 -0
  58. package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.d.ts +12 -0
  59. package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.d.ts.map +1 -0
  60. package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.js +12 -0
  61. package/node_modules/@memento/core/dist/domains/personal-agent/errors/personal-agent-llm-error.js.map +1 -0
  62. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.d.ts +6 -0
  63. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.d.ts.map +1 -0
  64. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.js +196 -0
  65. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-extractor.js.map +1 -0
  66. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.d.ts +6 -0
  67. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.d.ts.map +1 -0
  68. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.js +19 -0
  69. package/node_modules/@memento/core/dist/domains/personal-agent/extractors/knowledge-candidate-text-ambiguity.js.map +1 -0
  70. package/node_modules/@memento/core/dist/domains/personal-agent/index.d.ts +22 -3
  71. package/node_modules/@memento/core/dist/domains/personal-agent/index.d.ts.map +1 -1
  72. package/node_modules/@memento/core/dist/domains/personal-agent/index.js +11 -0
  73. package/node_modules/@memento/core/dist/domains/personal-agent/index.js.map +1 -1
  74. package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.d.ts +23 -0
  75. package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.d.ts.map +1 -0
  76. package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.js +69 -0
  77. package/node_modules/@memento/core/dist/domains/personal-agent/mappers/knowledge-candidate-to-remember-params.js.map +1 -0
  78. package/node_modules/@memento/core/dist/domains/personal-agent/ports/context-port.d.ts +13 -1
  79. package/node_modules/@memento/core/dist/domains/personal-agent/ports/context-port.d.ts.map +1 -1
  80. package/node_modules/@memento/core/dist/domains/personal-agent/ports/llm-port.d.ts +11 -1
  81. package/node_modules/@memento/core/dist/domains/personal-agent/ports/llm-port.d.ts.map +1 -1
  82. package/node_modules/@memento/core/dist/domains/personal-agent/ports/persistence-port.d.ts +2 -2
  83. package/node_modules/@memento/core/dist/domains/personal-agent/ports/persistence-port.d.ts.map +1 -1
  84. package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.d.ts +15 -0
  85. package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.d.ts.map +1 -0
  86. package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.js +33 -0
  87. package/node_modules/@memento/core/dist/domains/personal-agent/services/create-personal-agent-llm-port.js.map +1 -0
  88. package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.d.ts +5 -1
  89. package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.d.ts.map +1 -1
  90. package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.js +43 -8
  91. package/node_modules/@memento/core/dist/domains/personal-agent/services/personal-knowledge-agent-service.js.map +1 -1
  92. package/node_modules/@memento/core/dist/domains/personal-agent/types/agent-types.d.ts +48 -2
  93. package/node_modules/@memento/core/dist/domains/personal-agent/types/agent-types.d.ts.map +1 -1
  94. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.d.ts +8 -0
  95. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.d.ts.map +1 -1
  96. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.js +13 -1
  97. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-engine.js.map +1 -1
  98. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.d.ts +4 -0
  99. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.d.ts.map +1 -1
  100. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.js +3 -1
  101. package/node_modules/@memento/core/dist/domains/search/algorithms/hybrid-search-provider-parallel.js.map +1 -1
  102. package/node_modules/@memento/core/dist/domains/search/algorithms/search-engine.d.ts.map +1 -1
  103. package/node_modules/@memento/core/dist/domains/search/algorithms/search-engine.js +17 -1
  104. package/node_modules/@memento/core/dist/domains/search/algorithms/search-engine.js.map +1 -1
  105. package/node_modules/@memento/core/dist/domains/search/algorithms/search-result-combiner.d.ts.map +1 -1
  106. package/node_modules/@memento/core/dist/domains/search/algorithms/search-result-combiner.js +7 -2
  107. package/node_modules/@memento/core/dist/domains/search/algorithms/search-result-combiner.js.map +1 -1
  108. package/node_modules/@memento/core/dist/domains/search/algorithms/vector-search-engine.d.ts +4 -0
  109. package/node_modules/@memento/core/dist/domains/search/algorithms/vector-search-engine.d.ts.map +1 -1
  110. package/node_modules/@memento/core/dist/domains/search/algorithms/vector-search-engine.js.map +1 -1
  111. package/node_modules/@memento/core/dist/domains/search/repositories/vector-search.repository.d.ts.map +1 -1
  112. package/node_modules/@memento/core/dist/domains/search/repositories/vector-search.repository.js +38 -8
  113. package/node_modules/@memento/core/dist/domains/search/repositories/vector-search.repository.js.map +1 -1
  114. package/node_modules/@memento/core/dist/index.d.ts +2 -0
  115. package/node_modules/@memento/core/dist/index.d.ts.map +1 -1
  116. package/node_modules/@memento/core/dist/index.js +2 -0
  117. package/node_modules/@memento/core/dist/index.js.map +1 -1
  118. package/node_modules/@memento/core/dist/shared/types/index.d.ts +4 -0
  119. package/node_modules/@memento/core/dist/shared/types/index.d.ts.map +1 -1
  120. package/node_modules/@memento/core/dist/shared/types/index.js +10 -0
  121. package/node_modules/@memento/core/dist/shared/types/index.js.map +1 -1
  122. package/node_modules/@memento/core/dist/shared/types/vector-search.types.d.ts +6 -0
  123. package/node_modules/@memento/core/dist/shared/types/vector-search.types.d.ts.map +1 -1
  124. package/node_modules/@memento/core/graphify-out/GRAPH_REPORT.md +2040 -1181
  125. package/node_modules/@memento/core/graphify-out/graph.json +39780 -30016
  126. package/package.json +1 -1
  127. 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**: Module organization under `src/`
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 based, `src/test/` or `*.spec.ts` files
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
- ### MCP 클라이언트 연결
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: "memento-client",
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
- // WebSocket 연결
352
+ // HTTP MCP 연결 (다중 에이전트 공유 서버)
288
353
  await client.connect({
289
354
  transport: {
290
- type: "websocket",
291
- url: "ws://localhost:9001/mcp"
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에 대해 학습했습니다. useState는 상태를 관리하고, useEffect는 사이드 이펙트를 처리합니다.",
366
+ content: "React Hook에 대해 학습했습니다.",
304
367
  type: "episodic",
305
- tags: ["react", "hooks", "javascript"],
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 기반, 패키지 `src/` `*.spec.ts` 또는 루트 `src/test/`
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"}