owner-clone-ai-mcp 1.52.0 → 1.53.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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  const { callApi } = require('../lib/api');
3
- const { KNOWLEDGE_MODE } = require('../lib/aiFields');
3
+ const { KNOWLEDGE_MODE, KNOWLEDGE_FOLDER_IDS } = require('../lib/aiFields');
4
4
 
5
5
  const tools = [
6
6
  {
@@ -75,7 +75,8 @@ AIパートナーに設定されたナレッジ参照モードでナレッジを
75
75
  rules_deny: { type: 'string', description: '禁止ルール。改行区切り箇条書き推奨。' },
76
76
  sales_flow: { type: 'string', description: '対話フロー定義。Step形式で記述。省略可。' },
77
77
  knowledge: { type: 'string', description: 'FAQ・仕様・会社情報などを直接テキストで埋め込む(〜3000文字推奨)。省略可。' },
78
- knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '紐づけるナレッジベースのIDリスト。省略可。' },
78
+ knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '個別のナレッジIDリスト(特定のナレッジだけ使いたい場合向き)。省略可。' },
79
+ knowledge_folder_ids: KNOWLEDGE_FOLDER_IDS,
79
80
  knowledge_mode: KNOWLEDGE_MODE,
80
81
  },
81
82
  required: ['name'],
@@ -99,7 +100,8 @@ AIパートナーに設定されたナレッジ参照モードでナレッジを
99
100
  rules_deny: { type: 'string', description: '新しい禁止ルール(省略時は変更なし)' },
100
101
  sales_flow: { type: 'string', description: '新しい対話フロー(省略時は変更なし)' },
101
102
  knowledge: { type: 'string', description: '新しい直接記述ナレッジ(省略時は変更なし)' },
102
- knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '新しいナレッジIDリスト(省略時は変更なし)' },
103
+ knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '新しい個別ナレッジIDリスト(省略時は変更なし)' },
104
+ knowledge_folder_ids: KNOWLEDGE_FOLDER_IDS,
103
105
  knowledge_mode: KNOWLEDGE_MODE,
104
106
  },
105
107
  required: ['id'],
@@ -193,6 +195,7 @@ const handlers = {
193
195
  base_prompt: args.base_prompt, rules_allow: args.rules_allow,
194
196
  rules_deny: args.rules_deny, sales_flow: args.sales_flow,
195
197
  knowledge: args.knowledge, knowledge_item_ids: args.knowledge_item_ids,
198
+ knowledge_folder_ids: args.knowledge_folder_ids,
196
199
  knowledge_mode: args.knowledge_mode,
197
200
  }),
198
201
  });
@@ -202,7 +205,7 @@ const handlers = {
202
205
  async update_agent_preset(args) {
203
206
  const body = {};
204
207
  const fields = ['name','description','base_prompt','rules_allow','rules_deny','sales_flow',
205
- 'knowledge','knowledge_item_ids','knowledge_mode'];
208
+ 'knowledge','knowledge_item_ids','knowledge_folder_ids','knowledge_mode'];
206
209
  fields.forEach(f => { if (args[f] !== undefined) body[f] = args[f]; });
207
210
  const data = await callApi(`/agent-presets/${args.id}`, {
208
211
  method: 'PATCH',
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  const { callApi } = require('../lib/api');
3
- const { KNOWLEDGE_MODE } = require('../lib/aiFields');
3
+ const { KNOWLEDGE_MODE, KNOWLEDGE_FOLDER_IDS } = require('../lib/aiFields');
4
4
 
5
5
  const tools = [
6
6
  {
@@ -48,7 +48,8 @@ widget_token は自動生成され、埋め込みコードに使用されます
48
48
  ai_provider: { type: 'string', description: 'AIエンジン: claude(デフォルト)/ openai / gemini / openrouter / groq', enum: ['claude', 'openai', 'gemini', 'openrouter', 'groq'] },
49
49
  ai_model: { type: 'string', description: 'モデル指定(省略時はデフォルト)' },
50
50
  knowledge_mode: KNOWLEDGE_MODE,
51
- knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '紐付けるナレッジのID配列(省略可)' },
51
+ knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '個別に紐付けるナレッジのID配列(特定のナレッジだけ使う場合向き。省略可)' },
52
+ knowledge_folder_ids: KNOWLEDGE_FOLDER_IDS,
52
53
  diagnostic_mode: { type: 'boolean', description: 'true=診断フロー機能を有効化。デフォルト: false' },
53
54
  diagnostic_result_mode: { type: 'string', enum: ['ai', 'count', 'score', 'branch'], description: '診断判定ロジック: ai / count / score / branch' },
54
55
  diagnostic_strict_result: { type: 'boolean', description: 'true=結果確定時に即表示。デフォルト: false' },
@@ -91,6 +92,7 @@ widget_token は自動生成され、埋め込みコードに使用されます
91
92
  ai_provider: { type: 'string', description: '新しいAIエンジン(省略時は変更なし)', enum: ['claude', 'openai', 'gemini', 'openrouter', 'groq'] },
92
93
  ai_model: { type: 'string', description: '新しいモデル(省略時は変更なし)' },
93
94
  knowledge_mode: KNOWLEDGE_MODE,
95
+ knowledge_folder_ids: KNOWLEDGE_FOLDER_IDS,
94
96
  diagnostic_mode: { type: 'boolean', description: '診断フロー有効/無効(省略時は変更なし)' },
95
97
  diagnostic_result_mode: { type: 'string', enum: ['ai', 'count', 'score', 'branch'], description: '診断判定ロジック変更(省略時は変更なし)' },
96
98
  diagnostic_strict_result: { type: 'boolean', description: '即時結果表示の変更(省略時は変更なし)' },
@@ -340,6 +342,7 @@ const handlers = {
340
342
  data.header_title ? `タイトル: ${data.header_title}` : '',
341
343
  `モード: ${data.chatbot_mode || 'standard'}`,
342
344
  `ナレッジ参照: ${mode}`,
345
+ Array.isArray(data.knowledge_folder_ids) && data.knowledge_folder_ids.length ? `フォルダ指定: ${data.knowledge_folder_ids.length}件` : '',
343
346
  data.system_prompt ? `\n--- システムプロンプト ---\n${data.system_prompt}` : '',
344
347
  data.rules_allow ? `\n--- 許可ルール ---\n${data.rules_allow}` : '',
345
348
  data.rules_deny ? `\n--- 禁止ルール ---\n${data.rules_deny}` : '',
@@ -362,6 +365,7 @@ const handlers = {
362
365
  ];
363
366
  cbAllFields.forEach(f => { if (args[f] !== undefined) cbCreate[f] = args[f]; });
364
367
  if (Array.isArray(args.knowledge_item_ids)) cbCreate.knowledge_item_ids = args.knowledge_item_ids;
368
+ if (Array.isArray(args.knowledge_folder_ids)) cbCreate.knowledge_folder_ids = args.knowledge_folder_ids;
365
369
  if (Array.isArray(args.diagnostic_questions)) cbCreate.diagnostic_questions = args.diagnostic_questions;
366
370
  if (Array.isArray(args.diagnostic_results)) cbCreate.diagnostic_results = args.diagnostic_results;
367
371
  const data = await callApi('/chatbots', { method: 'POST', body: JSON.stringify(cbCreate) });
@@ -387,6 +391,7 @@ const handlers = {
387
391
  cbFields.forEach(f => { if (args[f] !== undefined) body[f] = args[f]; });
388
392
  if (Array.isArray(args.diagnostic_questions)) body.diagnostic_questions = args.diagnostic_questions;
389
393
  if (Array.isArray(args.diagnostic_results)) body.diagnostic_results = args.diagnostic_results;
394
+ if (Array.isArray(args.knowledge_folder_ids)) body.knowledge_folder_ids = args.knowledge_folder_ids;
390
395
  const data = await callApi(`/chatbots/${args.id}`, { method: 'PATCH', body: JSON.stringify(body) });
391
396
  return `✅ ${data.message}\nID: ${data.id}`;
392
397
  },
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  const { callApi } = require('../lib/api');
3
- const { KNOWLEDGE_MODE } = require('../lib/aiFields');
3
+ const { KNOWLEDGE_MODE, KNOWLEDGE_FOLDER_IDS } = require('../lib/aiFields');
4
4
 
5
5
  // action ステップ(send_chatwork / approval / post_sns / send_email / google_sheets_write 等)の送信先・設定フィールド。
6
6
  // create/update の step スキーマ双方に展開する。これが無いとAIが送信先を付けられず実行時エラーになる。
@@ -90,7 +90,7 @@ const tools = [
90
90
  悪い例:「新しいステップ」「ステップ1」「AIタスク」(汎用名は禁止)
91
91
 
92
92
  ■ ステップの種類(type フィールド):
93
- - agent_task: 1つのAIエージェントがプロンプトを実行。{ name, type, provider, model, preset_id, prompt, system_prompt, knowledge_ids }
93
+ - agent_task: 1つのAIエージェントがプロンプトを実行。{ name, type, provider, model, preset_id, prompt, system_prompt, knowledge_ids(個別指定), knowledge_folder_ids(フォルダ指定) }
94
94
  - multi_agent_feedback: 複数AIが順番にコンテンツをレビュー。{ name, type, agents: [{name, provider, model, preset_id, role_prompt}] }
95
95
  - multi_agent_autorefine: 1番目AIが生成し、残りが順番に改善。{ name, type, agents: [{name, provider, model, preset_id, role_prompt}] }
96
96
  - external_tool: 外部MAツール(MyASP等)を自然言語で操作。{ name, type, external_tool_type: "myasp", external_tool_task: "指示文", provider, model }
@@ -121,7 +121,8 @@ const tools = [
121
121
  external_tool_task: { type: 'string', description: 'external_tool のとき必須。AIへの自然言語指示。' },
122
122
  action_type: { type: 'string', description: 'action のとき必須。approval / send_chatwork / send_email / check_email / google_sheets_write / check_chatwork / save_email_draft / post_sns のいずれか。' },
123
123
  agents: { type: 'array', description: 'multi_agent_* のときに使用するエージェント配列', items: { type: 'object', properties: { name: { type: 'string' }, provider: { type: 'string' }, model: { type: 'string' }, preset_id: { type: 'string' }, role_prompt: { type: 'string' } } } },
124
- knowledge_ids: { type: 'array', items: { type: 'string' }, description: 'このステップで参照するナレッジアイテムIDの配列' },
124
+ knowledge_ids: { type: 'array', items: { type: 'string' }, description: 'このステップで参照する個別ナレッジIDの配列(特定のナレッジだけ使う場合向き)' },
125
+ knowledge_folder_ids: KNOWLEDGE_FOLDER_IDS,
125
126
  knowledge_mode: KNOWLEDGE_MODE,
126
127
  ...ACTION_STEP_FIELDS,
127
128
  },
@@ -175,6 +176,7 @@ cron_expression を空文字 "" または null で渡すとスケジュールを
175
176
  action_type: { type: 'string' },
176
177
  agents: { type: 'array', items: { type: 'object' } },
177
178
  knowledge_ids: { type: 'array', items: { type: 'string' } },
179
+ knowledge_folder_ids: KNOWLEDGE_FOLDER_IDS,
178
180
  knowledge_mode: KNOWLEDGE_MODE,
179
181
  ...ACTION_STEP_FIELDS,
180
182
  },
package/lib/aiFields.js CHANGED
@@ -9,4 +9,12 @@ const KNOWLEDGE_MODE = {
9
9
  description: 'ナレッジ確認方法(内容に応じ最適を選ぶ): semantic=関連要素のみ抽出(推奨/低コスト) / two_step_rag=質問意図を解析して検索(精度重視/曖昧な質問) / smart_full_text=関連ナレッジの全文を渡す(見落とし防止/中量) / full_text=全ナレッジを全文参照(少量・厳密/高コスト)',
10
10
  };
11
11
 
12
- module.exports = { KNOWLEDGE_MODE };
12
+ // フォルダ単位でのナレッジ指定(個別指定 knowledge_item_ids/knowledge_ids と併用可)。
13
+ // 「今後増える/拡張する」用途はフォルダ、「特定のものだけ」は個別、が最適な使い分け。
14
+ const KNOWLEDGE_FOLDER_IDS = {
15
+ type: 'array',
16
+ items: { type: 'string' },
17
+ description: 'フォルダ単位でナレッジを指定(フォルダ内の全ナレッジを実行時に動的参照)。今後ナレッジを追加・拡張していく用途に最適(追加分も自動で対象になる)。特定のナレッジだけ使いたい場合は個別指定(knowledge_item_ids / knowledge_ids)を使う。両方の併用も可。',
18
+ };
19
+
20
+ module.exports = { KNOWLEDGE_MODE, KNOWLEDGE_FOLDER_IDS };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owner-clone-ai-mcp",
3
- "version": "1.52.0",
3
+ "version": "1.53.0",
4
4
  "description": "MCP server for Owner Clone AI — exposes knowledge and agent presets to Claude Code",
5
5
  "main": "index.js",
6
6
  "bin": {