paput-mcp 3.4.0 → 4.0.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.
Files changed (95) hide show
  1. package/README.md +86 -67
  2. package/dist/cli/index.js +5 -29
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/cli/login.js +1 -1
  5. package/dist/cli/login.js.map +1 -1
  6. package/dist/cli/logout.js +3 -3
  7. package/dist/cli/logout.js.map +1 -1
  8. package/dist/cli/rules/paput-knowledge-capture.md +1 -1
  9. package/dist/cli/skills/paput-analyze-discard-policy/SKILL.md +3 -3
  10. package/dist/cli/skills/paput-capture/SKILL.md +1 -1
  11. package/dist/cli/skills/paput-init/SKILL.md +58 -9
  12. package/dist/handlers/add-knowledge-candidates/handler.js +49 -21
  13. package/dist/handlers/add-knowledge-candidates/handler.js.map +1 -1
  14. package/dist/handlers/add-knowledge-candidates/tool.js +1 -1
  15. package/dist/handlers/add-knowledge-candidates/tool.js.map +1 -1
  16. package/dist/handlers/discard-pending-candidate/handler.js +6 -21
  17. package/dist/handlers/discard-pending-candidate/handler.js.map +1 -1
  18. package/dist/handlers/get-capture-policy/handler.js +3 -3
  19. package/dist/handlers/get-capture-policy/handler.js.map +1 -1
  20. package/dist/handlers/get-capture-policy/tool.js +1 -1
  21. package/dist/handlers/get-capture-policy/tool.js.map +1 -1
  22. package/dist/handlers/get-discard-policy-context/handler.js +3 -11
  23. package/dist/handlers/get-discard-policy-context/handler.js.map +1 -1
  24. package/dist/handlers/get-discard-policy-context/tool.js +1 -1
  25. package/dist/handlers/get-discard-policy-context/tool.js.map +1 -1
  26. package/dist/handlers/get-project-context/handler.js +6 -6
  27. package/dist/handlers/get-project-context/handler.js.map +1 -1
  28. package/dist/handlers/get-project-context/tool.js +2 -2
  29. package/dist/handlers/get-project-context/tool.js.map +1 -1
  30. package/dist/handlers/index.js +2 -3
  31. package/dist/handlers/index.js.map +1 -1
  32. package/dist/handlers/list-pending-candidates/handler.js +6 -9
  33. package/dist/handlers/list-pending-candidates/handler.js.map +1 -1
  34. package/dist/handlers/list-processed-sessions/handler.js +18 -0
  35. package/dist/handlers/list-processed-sessions/handler.js.map +1 -0
  36. package/dist/handlers/list-processed-sessions/index.js +3 -0
  37. package/dist/handlers/list-processed-sessions/index.js.map +1 -0
  38. package/dist/handlers/list-processed-sessions/tool.js +19 -0
  39. package/dist/handlers/list-processed-sessions/tool.js.map +1 -0
  40. package/dist/handlers/mark-processed-session/handler.js +37 -0
  41. package/dist/handlers/mark-processed-session/handler.js.map +1 -0
  42. package/dist/handlers/mark-processed-session/index.js +3 -0
  43. package/dist/handlers/mark-processed-session/index.js.map +1 -0
  44. package/dist/handlers/mark-processed-session/tool.js +28 -0
  45. package/dist/handlers/mark-processed-session/tool.js.map +1 -0
  46. package/dist/handlers/memo-projects.js +19 -5
  47. package/dist/handlers/memo-projects.js.map +1 -1
  48. package/dist/handlers/save-pending-candidate/handler.js +84 -31
  49. package/dist/handlers/save-pending-candidate/handler.js.map +1 -1
  50. package/dist/handlers/save-pending-candidate/tool.js +4 -0
  51. package/dist/handlers/save-pending-candidate/tool.js.map +1 -1
  52. package/dist/handlers/scan-sessions/handler.js +4 -2
  53. package/dist/handlers/scan-sessions/handler.js.map +1 -1
  54. package/dist/handlers/update-capture-policy/handler.js +3 -3
  55. package/dist/handlers/update-capture-policy/handler.js.map +1 -1
  56. package/dist/handlers/update-capture-policy/tool.js +2 -2
  57. package/dist/handlers/update-capture-policy/tool.js.map +1 -1
  58. package/dist/handlers/update-memo/handler.js +1 -1
  59. package/dist/handlers/update-memo/handler.js.map +1 -1
  60. package/dist/handlers/update-pending-candidate/handler.js +5 -38
  61. package/dist/handlers/update-pending-candidate/handler.js.map +1 -1
  62. package/dist/handlers/update-pending-candidate/tool.js +1 -1
  63. package/dist/handlers/update-pending-candidate/tool.js.map +1 -1
  64. package/dist/handlers/upsert-skill-sheet-project/handler.js +3 -0
  65. package/dist/handlers/upsert-skill-sheet-project/handler.js.map +1 -1
  66. package/dist/handlers/upsert-skill-sheet-project/tool.js +4 -0
  67. package/dist/handlers/upsert-skill-sheet-project/tool.js.map +1 -1
  68. package/dist/http.js +67 -21
  69. package/dist/http.js.map +1 -1
  70. package/dist/index.js +2 -9
  71. package/dist/index.js.map +1 -1
  72. package/dist/schemas/tool-input.js +30 -21
  73. package/dist/schemas/tool-input.js.map +1 -1
  74. package/dist/server.js +3 -17
  75. package/dist/server.js.map +1 -1
  76. package/dist/services/api/client.js +2 -3
  77. package/dist/services/api/client.js.map +1 -1
  78. package/dist/services/api/index.js +1 -0
  79. package/dist/services/api/index.js.map +1 -1
  80. package/dist/services/api/knowledge-candidate.js +44 -0
  81. package/dist/services/api/knowledge-candidate.js.map +1 -0
  82. package/dist/services/api/project-context.js +6 -1
  83. package/dist/services/api/project-context.js.map +1 -1
  84. package/dist/services/api/skill-sheet.js +5 -0
  85. package/dist/services/api/skill-sheet.js.map +1 -1
  86. package/dist/services/session/index.js +2 -3
  87. package/dist/services/session/index.js.map +1 -1
  88. package/dist/tool.js +12 -30
  89. package/dist/tool.js.map +1 -1
  90. package/docs/directory-submission.md +5 -5
  91. package/docs/privacy-policy.md +22 -12
  92. package/docs/reviewer-guide.md +13 -4
  93. package/docs/tools.md +31 -27
  94. package/docs/usage-examples.md +13 -12
  95. package/package.json +7 -3
@@ -1,11 +1,9 @@
1
+ import { addRemoteKnowledgeCandidates } from '../../services/api/knowledge-candidate.js';
1
2
  import { findSimilarMemos } from '../../services/api/memo.js';
2
- import { addKnowledgeCandidates } from '../../services/local-cache/index.js';
3
- import { resolveProjectsForCwd } from '../../services/project-match/index.js';
4
- import { scanSessions } from '../../services/session/index.js';
5
3
  // 重複とみなす類似スコア閾値(この値以上は自動除外)
6
4
  const NEAR_DUPLICATE_SCORE = 0.9;
7
5
  const SIMILAR_MEMO_LIMIT = 5;
8
- export async function handleAddKnowledgeCandidates(args, apiClient) {
6
+ export async function handleAddKnowledgeCandidates(args, apiClient, context) {
9
7
  if (!args || typeof args.session_id !== 'string') {
10
8
  return {
11
9
  content: [{ type: 'text', text: 'session_id is required' }],
@@ -45,6 +43,12 @@ export async function handleAddKnowledgeCandidates(args, apiClient) {
45
43
  const memoTypeKeys = Array.isArray(rawCandidate.memo_type_keys)
46
44
  ? rawCandidate.memo_type_keys.filter((key) => typeof key === 'string')
47
45
  : [];
46
+ const projects = Array.isArray(rawCandidate.projects)
47
+ ? rawCandidate.projects.filter((project) => typeof project === 'object' &&
48
+ project !== null &&
49
+ 'id' in project &&
50
+ typeof project.id === 'number')
51
+ : undefined;
48
52
  return [
49
53
  {
50
54
  title: candidate.title,
@@ -57,13 +61,17 @@ export async function handleAddKnowledgeCandidates(args, apiClient) {
57
61
  is_public: typeof rawCandidate.is_public === 'boolean'
58
62
  ? rawCandidate.is_public
59
63
  : false,
64
+ projects,
60
65
  },
61
66
  ];
62
67
  });
63
68
  const source = args.source;
64
- const sourceSession = scanSessions([source], true).find((session) => session.session_id === args.session_id);
65
- const sourceSessionUpdatedAt = sourceSession?.updated_at;
66
- const projects = await resolveProjects(apiClient, sourceSession?.cwd);
69
+ return await addRemoteCandidates(args, apiClient, context, source, candidates);
70
+ }
71
+ async function addRemoteCandidates(args, apiClient, context = {}, source, candidates) {
72
+ const contextProjects = context.projectId
73
+ ? [{ id: context.projectId, title: context.projectTitle }]
74
+ : [];
67
75
  const semanticDuplicates = [];
68
76
  const candidatesToAdd = [];
69
77
  for (const candidate of candidates) {
@@ -79,16 +87,45 @@ export async function handleAddKnowledgeCandidates(args, apiClient) {
79
87
  }
80
88
  candidatesToAdd.push({
81
89
  ...candidate,
82
- projects,
90
+ projects: candidate.projects && candidate.projects.length > 0
91
+ ? candidate.projects
92
+ : contextProjects,
83
93
  similar_memos: similarMemos,
84
94
  });
85
95
  }
86
- const result = addKnowledgeCandidates(source, args.session_id, candidatesToAdd, sourceSessionUpdatedAt);
87
- const duplicateDetails = [...semanticDuplicates, ...result.duplicates];
96
+ if (candidatesToAdd.length === 0) {
97
+ const response = {
98
+ added: 0,
99
+ duplicates: semanticDuplicates.length,
100
+ candidates: [],
101
+ duplicate_details: semanticDuplicates,
102
+ };
103
+ return {
104
+ structuredContent: response,
105
+ content: [
106
+ {
107
+ type: 'text',
108
+ text: JSON.stringify(response, null, 2),
109
+ },
110
+ ],
111
+ };
112
+ }
113
+ const result = await addRemoteKnowledgeCandidates(apiClient, {
114
+ source,
115
+ session_id: args.session_id,
116
+ source_session_updated_at: typeof args.source_session_updated_at === 'string'
117
+ ? args.source_session_updated_at
118
+ : undefined,
119
+ candidates: candidatesToAdd,
120
+ });
121
+ const duplicateDetails = [
122
+ ...semanticDuplicates,
123
+ ...(result.duplicate_details ?? []),
124
+ ];
88
125
  const response = {
89
- added: result.added.length,
126
+ added: result.candidates.length,
90
127
  duplicates: duplicateDetails.length,
91
- candidates: result.added,
128
+ candidates: result.candidates,
92
129
  duplicate_details: duplicateDetails,
93
130
  };
94
131
  return {
@@ -101,15 +138,6 @@ export async function handleAddKnowledgeCandidates(args, apiClient) {
101
138
  ],
102
139
  };
103
140
  }
104
- async function resolveProjects(apiClient, cwd) {
105
- try {
106
- return await resolveProjectsForCwd(apiClient, cwd);
107
- }
108
- catch (error) {
109
- console.error('Failed to resolve projects for pending candidate:', error);
110
- return [];
111
- }
112
- }
113
141
  async function findSimilarMemosForCandidate(apiClient, title, body) {
114
142
  const query = `${title}\n${body.slice(0, 200)}`;
115
143
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/handler.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { handleAddKnowledgeCandidates } from './handler.js';
2
2
  export const addKnowledgeCandidatesTool = {
3
3
  definition: {
4
4
  name: 'paput_add_knowledge_candidates',
5
- description: 'Add reusable knowledge candidates extracted from a Claude or Codex session to the local pending queue. Use this before saving knowledge to PaPut when candidates still need review or deduplication.',
5
+ description: 'Add reusable knowledge candidates extracted from a Claude or Codex session to the pending queue. Use this before saving knowledge to PaPut when candidates still need review or deduplication.',
6
6
  inputSchema: {
7
7
  type: 'object',
8
8
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,CAAC,MAAM,0BAA0B,GAAgB;IACrD,UAAU,EAAE;QACV,IAAI,EAAE,gCAAgC;QACtC,WAAW,EACT,sMAAsM;QACxM,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBAChE,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACzB,WAAW,EAAE,yBAAyB;iBACvC;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,6BAA6B;oBAC1C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;4BACxD,cAAc,EAAE;gCACd,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;iCAC1D;gCACD,WAAW,EACT,4IAA4I;6BAC/I;4BACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;yBAC/C;wBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;qBAC5B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC;SACjD;KACF;IACD,OAAO,EAAE,4BAA4B;CACtC,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,CAAC,MAAM,0BAA0B,GAAgB;IACrD,UAAU,EAAE;QACV,IAAI,EAAE,gCAAgC;QACtC,WAAW,EACT,gMAAgM;QAClM,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBAChE,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACzB,WAAW,EAAE,yBAAyB;iBACvC;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,6BAA6B;oBAC1C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;4BACxD,cAAc,EAAE;gCACd,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;iCAC1D;gCACD,WAAW,EACT,4IAA4I;6BAC/I;4BACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;yBAC/C;wBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;qBAC5B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC;SACjD;KACF;IACD,OAAO,EAAE,4BAA4B;CACtC,CAAC"}
@@ -1,30 +1,15 @@
1
- import { updatePendingCandidate } from '../../services/local-cache/index.js';
2
- export async function handleDiscardPendingCandidate(args, _apiClient) {
1
+ import { discardRemoteKnowledgeCandidate } from '../../services/api/knowledge-candidate.js';
2
+ export async function handleDiscardPendingCandidate(args, apiClient) {
3
3
  if (!args || typeof args.candidate_id !== 'string') {
4
4
  return {
5
5
  content: [{ type: 'text', text: 'candidate_id is required' }],
6
6
  isError: true,
7
7
  };
8
8
  }
9
- const updated = updatePendingCandidate(args.candidate_id, (candidate) => ({
10
- ...candidate,
11
- status: 'discarded',
12
- discarded_reason: typeof args.reason === 'string' ? args.reason : undefined,
13
- updated_at: new Date().toISOString(),
14
- }));
15
- if (!updated) {
16
- return {
17
- content: [
18
- { type: 'text', text: 'Pending candidate to discard was not found' },
19
- ],
20
- isError: true,
21
- };
22
- }
23
- const result = {
24
- discarded: true,
25
- candidate_id: updated.id,
26
- title: updated.title,
27
- };
9
+ const result = await discardRemoteKnowledgeCandidate(apiClient, {
10
+ candidate_id: args.candidate_id,
11
+ reason: typeof args.reason === 'string' ? args.reason : undefined,
12
+ });
28
13
  return {
29
14
  structuredContent: result,
30
15
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/discard-pending-candidate/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAyC,EACzC,UAAqB;IAErB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxE,GAAG,SAAS;QACZ,MAAM,EAAE,WAAW;QACnB,gBAAgB,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC3E,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4CAA4C,EAAE;aACrE;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,OAAO,CAAC,EAAE;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;IAEF,OAAO;QACL,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/discard-pending-candidate/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAE5F,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAyC,EACzC,SAAoB;IAEpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,SAAS,EAAE;QAC9D,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB,EAAE,MAA4C;QAC/D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
- import { readCapturePolicy } from '../../services/local-cache/index.js';
2
- export async function handleGetCapturePolicy(_args, _apiClient) {
3
- const policy = readCapturePolicy();
1
+ import { getRemoteCapturePolicy } from '../../services/api/knowledge-candidate.js';
2
+ export async function handleGetCapturePolicy(_args, apiClient) {
3
+ const policy = await getRemoteCapturePolicy(apiClient);
4
4
  return {
5
5
  structuredContent: policy,
6
6
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-capture-policy/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA0C,EAC1C,UAAqB;IAErB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAEnC,OAAO;QACL,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-capture-policy/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEnF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA0C,EAC1C,SAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAEvD,OAAO;QACL,iBAAiB,EAAE,MAA4C;QAC/D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -2,7 +2,7 @@ import { handleGetCapturePolicy } from './handler.js';
2
2
  export const getCapturePolicyTool = {
3
3
  definition: {
4
4
  name: 'paput_get_capture_policy',
5
- description: 'Get the local PaPut capture policy document generated from discarded knowledge candidates.',
5
+ description: 'Get the PaPut capture policy document generated from discarded knowledge candidates.',
6
6
  inputSchema: {
7
7
  type: 'object',
8
8
  properties: {},
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-capture-policy/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,UAAU,EAAE;QACV,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,4FAA4F;QAC9F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,sBAAsB;CAChC,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-capture-policy/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,UAAU,EAAE;QACV,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,sFAAsF;QACxF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,sBAAsB;CAChC,CAAC"}
@@ -1,17 +1,9 @@
1
- import { getDiscardedCandidates, readCache, readCapturePolicy, } from '../../services/local-cache/index.js';
2
- export async function handleGetDiscardPolicyContext(args, _apiClient) {
1
+ import { getRemoteDiscardPolicyContext } from '../../services/api/knowledge-candidate.js';
2
+ export async function handleGetDiscardPolicyContext(args, apiClient) {
3
3
  const limit = args && typeof args.limit === 'number' && args.limit > 0
4
4
  ? Math.min(Math.floor(args.limit), 200)
5
5
  : 50;
6
- const policy = readCapturePolicy();
7
- const cache = readCache();
8
- const discarded_candidates = getDiscardedCandidates(limit);
9
- const result = {
10
- policy,
11
- total_discarded_count: cache.pending.filter((candidate) => candidate.status === 'discarded').length,
12
- returned_discarded_count: discarded_candidates.length,
13
- discarded_candidates,
14
- };
6
+ const result = await getRemoteDiscardPolicyContext(apiClient, limit);
15
7
  return {
16
8
  structuredContent: result,
17
9
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-discard-policy-context/handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,SAAS,EACT,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAyC,EACzC,UAAqB;IAErB,MAAM,KAAK,GACT,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;QACvC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG;QACb,MAAM;QACN,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CACzC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,CAChD,CAAC,MAAM;QACR,wBAAwB,EAAE,oBAAoB,CAAC,MAAM;QACrD,oBAAoB;KACrB,CAAC;IAEF,OAAO;QACL,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-discard-policy-context/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAE1F,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAyC,EACzC,SAAoB;IAEpB,MAAM,KAAK,GACT,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;QACvC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAErE,OAAO;QACL,iBAAiB,EAAE,MAA4C;QAC/D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -2,7 +2,7 @@ import { handleGetDiscardPolicyContext } from './handler.js';
2
2
  export const getDiscardPolicyContextTool = {
3
3
  definition: {
4
4
  name: 'paput_get_discard_policy_context',
5
- description: 'Get discarded local knowledge candidates and the current capture policy so the client AI can analyze rejection patterns.',
5
+ description: 'Get discarded knowledge candidates and the current capture policy so the client AI can analyze rejection patterns.',
6
6
  inputSchema: {
7
7
  type: 'object',
8
8
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-discard-policy-context/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,CAAC,MAAM,2BAA2B,GAAgB;IACtD,UAAU,EAAE;QACV,IAAI,EAAE,kCAAkC;QACxC,WAAW,EACT,0HAA0H;QAC5H,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;SACF;KACF;IACD,OAAO,EAAE,6BAA6B;CACvC,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-discard-policy-context/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,CAAC,MAAM,2BAA2B,GAAgB;IACtD,UAAU,EAAE;QACV,IAAI,EAAE,kCAAkC;QACxC,WAAW,EACT,oHAAoH;QACtH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;SACF;KACF;IACD,OAAO,EAAE,6BAA6B;CACvC,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { getProjectContext, } from '../../services/api/project-context.js';
2
2
  export async function handleGetProjectContext(args, apiClient, context) {
3
- const project = getProjectMatch(args, context);
3
+ const project = getProjectSelector(args, context);
4
4
  if (!project) {
5
5
  return {
6
6
  content: [
7
7
  {
8
8
  type: 'text',
9
- text: 'project is required when PAPUT_PROJECT_MATCH is not configured.',
9
+ text: 'project is required when no MCP project_alias is configured.',
10
10
  },
11
11
  ],
12
12
  isError: true,
@@ -37,10 +37,10 @@ export async function handleGetProjectContext(args, apiClient, context) {
37
37
  };
38
38
  }
39
39
  }
40
- function getProjectMatch(args, context) {
41
- const configured = context?.projectMatch?.trim() || process.env.PAPUT_PROJECT_MATCH?.trim();
42
- if (configured)
43
- return configured;
40
+ function getProjectSelector(args, context) {
41
+ if (context?.projectId) {
42
+ return { project_id: context.projectId };
43
+ }
44
44
  const explicit = args && typeof args.project === 'string' ? args.project.trim() : '';
45
45
  return explicit || undefined;
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-project-context/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-project-context/handler.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,13 @@ import { handleGetProjectContext } from './handler.js';
2
2
  export const getProjectContextTool = {
3
3
  definition: {
4
4
  name: 'paput_get_project_context',
5
- description: 'Get the private project context (always-applied instructions and an index of accumulated project documents) for a PaPut skill sheet project, resolved by fuzzy project name match. Call this at session start when working on a known project. Document bodies are not included; fetch them on demand with paput_get_project_document.',
5
+ description: 'Get the private project context (always-applied instructions and an index of accumulated project documents) for a PaPut skill sheet project, resolved from the MCP URL project_alias or a fuzzy project name. Call this at session start when working on a known project. Document bodies are not included; fetch them on demand with paput_get_project_document.',
6
6
  inputSchema: {
7
7
  type: 'object',
8
8
  properties: {
9
9
  project: {
10
10
  type: 'string',
11
- description: 'Project name to resolve (partial match allowed). Required here; in local CLI mode the project is configured by PAPUT_PROJECT_MATCH and this argument is not exposed.',
11
+ description: 'Project name to resolve (partial match allowed). Required only when no MCP project_alias is configured.',
12
12
  },
13
13
  },
14
14
  },
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-project-context/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IAChD,UAAU,EAAE;QACV,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,wUAAwU;QAC1U,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sKAAsK;iBACzK;aACF;SACF;KACF;IACD,OAAO,EAAE,uBAAuB;CACjC,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-project-context/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IAChD,UAAU,EAAE;QACV,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,mWAAmW;QACrW,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,yGAAyG;iBAC5G;aACF;SACF;KACF;IACD,OAAO,EAAE,uBAAuB;CACjC,CAAC"}
@@ -33,10 +33,9 @@ export * from './update-project-document/index.js';
33
33
  export * from './update-project-instructions/index.js';
34
34
  export * from './discard-project-proposal/index.js';
35
35
  export * from './promote-project-documents/index.js';
36
- export * from './cache-status/index.js';
37
- export * from './scan-sessions/index.js';
38
- export * from './get-session-transcript/index.js';
39
36
  export * from './add-knowledge-candidates/index.js';
37
+ export * from './list-processed-sessions/index.js';
38
+ export * from './mark-processed-session/index.js';
40
39
  export * from './list-pending-candidates/index.js';
41
40
  export * from './update-pending-candidate/index.js';
42
41
  export * from './save-pending-candidate/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oDAAoD,CAAC;AACnE,cAAc,kDAAkD,CAAC;AACjE,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oDAAoD,CAAC;AACnE,cAAc,kDAAkD,CAAC;AACjE,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC"}
@@ -1,13 +1,10 @@
1
- import { readCache } from '../../services/local-cache/index.js';
2
- export async function handleListPendingCandidates(args, _apiClient) {
1
+ import { listRemoteKnowledgeCandidates } from '../../services/api/knowledge-candidate.js';
2
+ export async function handleListPendingCandidates(args, apiClient) {
3
3
  const limit = typeof args?.limit === 'number' ? Math.max(1, args.limit) : 20;
4
- const candidates = readCache()
5
- .pending.filter((candidate) => candidate.status === 'pending')
6
- .slice(0, limit);
7
- const result = {
8
- count: candidates.length,
9
- candidates,
10
- };
4
+ const result = await listRemoteKnowledgeCandidates(apiClient, {
5
+ status: 'pending',
6
+ limit,
7
+ });
11
8
  return {
12
9
  structuredContent: result,
13
10
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/list-pending-candidates/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAyC,EACzC,UAAqB;IAErB,MAAM,KAAK,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,UAAU,GAAG,SAAS,EAAE;SAC3B,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC;SAC7D,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,UAAU,CAAC,MAAM;QACxB,UAAU;KACX,CAAC;IAEF,OAAO;QACL,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/list-pending-candidates/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAE1F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAyC,EACzC,SAAoB;IAEpB,MAAM,KAAK,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,SAAS,EAAE;QAC5D,MAAM,EAAE,SAAS;QACjB,KAAK;KACN,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { listRemoteProcessedSessions } from '../../services/api/knowledge-candidate.js';
2
+ export async function handleListProcessedSessions(args, apiClient) {
3
+ const source = parseSource(args?.source);
4
+ const result = await listRemoteProcessedSessions(apiClient, source);
5
+ return {
6
+ structuredContent: result,
7
+ content: [
8
+ {
9
+ type: 'text',
10
+ text: JSON.stringify(result, null, 2),
11
+ },
12
+ ],
13
+ };
14
+ }
15
+ function parseSource(value) {
16
+ return value === 'claude' || value === 'codex' ? value : undefined;
17
+ }
18
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/list-processed-sessions/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAGxF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAyC,EACzC,SAAoB;IAEpB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEpE,OAAO;QACL,iBAAiB,EAAE,MAA4C;QAC/D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './handler.js';
2
+ export * from './tool.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/list-processed-sessions/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { handleListProcessedSessions } from './handler.js';
2
+ export const listProcessedSessionsTool = {
3
+ definition: {
4
+ name: 'paput_list_processed_sessions',
5
+ description: 'List AI sessions that have already been processed for knowledge capture. Use this before client-side local session import to skip sessions already reviewed.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ source: {
10
+ type: 'string',
11
+ enum: ['claude', 'codex'],
12
+ description: 'Optional session source to filter by',
13
+ },
14
+ },
15
+ },
16
+ },
17
+ handler: handleListProcessedSessions,
18
+ };
19
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/list-processed-sessions/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,yBAAyB,GAAgB;IACpD,UAAU,EAAE;QACV,IAAI,EAAE,+BAA+B;QACrC,WAAW,EACT,8JAA8J;QAChK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACzB,WAAW,EAAE,sCAAsC;iBACpD;aACF;SACF;KACF;IACD,OAAO,EAAE,2BAA2B;CACrC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { markRemoteProcessedSession } from '../../services/api/knowledge-candidate.js';
2
+ export async function handleMarkProcessedSession(args, apiClient) {
3
+ if (!args || typeof args.session_id !== 'string') {
4
+ return {
5
+ content: [{ type: 'text', text: 'session_id is required' }],
6
+ isError: true,
7
+ };
8
+ }
9
+ if (args.source !== 'claude' && args.source !== 'codex') {
10
+ return {
11
+ content: [
12
+ {
13
+ type: 'text',
14
+ text: 'source must be claude or codex',
15
+ },
16
+ ],
17
+ isError: true,
18
+ };
19
+ }
20
+ const result = await markRemoteProcessedSession(apiClient, {
21
+ source: args.source,
22
+ session_id: args.session_id,
23
+ source_session_updated_at: typeof args.source_session_updated_at === 'string'
24
+ ? args.source_session_updated_at
25
+ : undefined,
26
+ });
27
+ return {
28
+ structuredContent: result,
29
+ content: [
30
+ {
31
+ type: 'text',
32
+ text: JSON.stringify(result, null, 2),
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/mark-processed-session/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAGvF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAyC,EACzC,SAAoB;IAEpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;YAC3D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACxD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gCAAgC;iBACvC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,SAAS,EAAE;QACzD,MAAM,EAAE,IAAI,CAAC,MAAuB;QACpC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,yBAAyB,EACvB,OAAO,IAAI,CAAC,yBAAyB,KAAK,QAAQ;YAChD,CAAC,CAAC,IAAI,CAAC,yBAAyB;YAChC,CAAC,CAAC,SAAS;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB,EAAE,MAA4C;QAC/D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './handler.js';
2
+ export * from './tool.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/mark-processed-session/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { handleMarkProcessedSession } from './handler.js';
2
+ export const markProcessedSessionTool = {
3
+ definition: {
4
+ name: 'paput_mark_processed_session',
5
+ description: 'Mark a Claude or Codex session as processed for knowledge capture. Use this after reviewing a local session even when no pending candidates are added.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ source: {
10
+ type: 'string',
11
+ enum: ['claude', 'codex'],
12
+ description: 'Session source',
13
+ },
14
+ session_id: {
15
+ type: 'string',
16
+ description: 'Session ID that was reviewed',
17
+ },
18
+ source_session_updated_at: {
19
+ type: 'string',
20
+ description: 'Source session updated timestamp in ISO 8601 format',
21
+ },
22
+ },
23
+ required: ['source', 'session_id'],
24
+ },
25
+ },
26
+ handler: handleMarkProcessedSession,
27
+ };
28
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/mark-processed-session/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,CAAC,MAAM,wBAAwB,GAAgB;IACnD,UAAU,EAAE;QACV,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,wJAAwJ;QAC1J,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACzB,WAAW,EAAE,gBAAgB;iBAC9B;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,yBAAyB,EAAE;oBACzB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qDAAqD;iBACnE;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;SACnC;KACF;IACD,OAAO,EAAE,0BAA0B;CACpC,CAAC"}
@@ -6,24 +6,38 @@ export async function resolveMemoProjects(args, apiClient, context) {
6
6
  'id' in item &&
7
7
  typeof item.id === 'number');
8
8
  }
9
+ if (context?.projectId) {
10
+ return [
11
+ {
12
+ id: context.projectId,
13
+ title: context.projectTitle,
14
+ },
15
+ ];
16
+ }
9
17
  const projectMatch = getProjectMatch(args, context);
10
18
  if (!projectMatch)
11
19
  return undefined;
12
20
  try {
13
21
  const projects = await searchSkillSheetProjects(apiClient, projectMatch);
14
- return projects.length > 0 ? [projects[0]] : undefined;
22
+ if (projects.length === 0)
23
+ return undefined;
24
+ if (projects.length > 1) {
25
+ const candidates = projects
26
+ .map((project) => `${project.title} (ID: ${project.id})`)
27
+ .join(', ');
28
+ throw new Error(`project_match matched multiple projects. Specify projects explicitly or configure MCP project_alias. Candidates: ${candidates}`);
29
+ }
30
+ return [projects[0]];
15
31
  }
16
32
  catch (error) {
17
33
  console.error('Failed to search projects:', error);
18
- return undefined;
34
+ throw error;
19
35
  }
20
36
  }
21
37
  function getProjectMatch(args, context) {
22
38
  const explicit = typeof args.project_match === 'string' ? args.project_match.trim() : '';
23
39
  if (explicit)
24
40
  return explicit;
25
- if (context?.projectMatch)
26
- return context.projectMatch;
27
- return process.env.PAPUT_PROJECT_MATCH;
41
+ return undefined;
28
42
  }
29
43
  //# sourceMappingURL=memo-projects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memo-projects.js","sourceRoot":"","sources":["../../src/handlers/memo-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAK1E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA6B,EAC7B,SAAoB,EACpB,OAAqB;IAErB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CACzB,CAAC,IAAI,EAA4B,EAAE,CACjC,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,KAAK,IAAI;YACb,IAAI,IAAI,IAAI;YACZ,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAC9B,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAA6B,EAC7B,OAAqB;IAErB,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,IAAI,OAAO,EAAE,YAAY;QAAE,OAAO,OAAO,CAAC,YAAY,CAAC;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"memo-projects.js","sourceRoot":"","sources":["../../src/handlers/memo-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAK1E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA6B,EAC7B,SAAoB,EACpB,OAAqB;IAErB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CACzB,CAAC,IAAI,EAA4B,EAAE,CACjC,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,KAAK,IAAI;YACb,IAAI,IAAI,IAAI;YACZ,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAC9B,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,OAAO;YACL;gBACE,EAAE,EAAE,OAAO,CAAC,SAAS;gBACrB,KAAK,EAAE,OAAO,CAAC,YAAY;aAC5B;SACF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,QAAQ;iBACxB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,SAAS,OAAO,CAAC,EAAE,GAAG,CAAC;iBACxD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,KAAK,CACb,oHAAoH,UAAU,EAAE,CACjI,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAA6B,EAC7B,OAAqB;IAErB,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,SAAS,CAAC;AACnB,CAAC"}