@geminilight/mindos 1.1.59 → 1.1.61

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 (155) hide show
  1. package/README.md +62 -64
  2. package/README_zh.md +60 -62
  3. package/dist/agent/index.d.ts +2 -0
  4. package/dist/agent/index.d.ts.map +1 -1
  5. package/dist/agent/index.js +2 -0
  6. package/dist/agent/index.js.map +1 -1
  7. package/dist/agent/ledger/run-ledger-types.d.ts +26 -2
  8. package/dist/agent/ledger/run-ledger-types.d.ts.map +1 -1
  9. package/dist/agent/ledger/run-ledger.d.ts.map +1 -1
  10. package/dist/agent/ledger/run-ledger.js +30 -1
  11. package/dist/agent/ledger/run-ledger.js.map +1 -1
  12. package/dist/agent/ledger/run-timeline-events.d.ts.map +1 -1
  13. package/dist/agent/ledger/run-timeline-events.js +16 -8
  14. package/dist/agent/ledger/run-timeline-events.js.map +1 -1
  15. package/dist/agent/mode-run-events.d.ts +15 -0
  16. package/dist/agent/mode-run-events.d.ts.map +1 -0
  17. package/dist/agent/mode-run-events.js +56 -0
  18. package/dist/agent/mode-run-events.js.map +1 -0
  19. package/dist/agent/mode.d.ts +77 -0
  20. package/dist/agent/mode.d.ts.map +1 -0
  21. package/dist/agent/mode.js +271 -0
  22. package/dist/agent/mode.js.map +1 -0
  23. package/dist/agent/runtime/adapters/index.d.ts +1 -0
  24. package/dist/agent/runtime/adapters/index.d.ts.map +1 -1
  25. package/dist/agent/runtime/adapters/index.js +1 -0
  26. package/dist/agent/runtime/adapters/index.js.map +1 -1
  27. package/dist/agent/runtime/adapters/session-transcripts/adapters/claude.d.ts +4 -0
  28. package/dist/agent/runtime/adapters/session-transcripts/adapters/claude.d.ts.map +1 -0
  29. package/dist/agent/runtime/adapters/session-transcripts/adapters/claude.js +83 -0
  30. package/dist/agent/runtime/adapters/session-transcripts/adapters/claude.js.map +1 -0
  31. package/dist/agent/runtime/adapters/session-transcripts/adapters/codebuddy-code.d.ts +4 -0
  32. package/dist/agent/runtime/adapters/session-transcripts/adapters/codebuddy-code.d.ts.map +1 -0
  33. package/dist/agent/runtime/adapters/session-transcripts/adapters/codebuddy-code.js +74 -0
  34. package/dist/agent/runtime/adapters/session-transcripts/adapters/codebuddy-code.js.map +1 -0
  35. package/dist/agent/runtime/adapters/session-transcripts/adapters/gemini.d.ts +4 -0
  36. package/dist/agent/runtime/adapters/session-transcripts/adapters/gemini.d.ts.map +1 -0
  37. package/dist/agent/runtime/adapters/session-transcripts/adapters/gemini.js +73 -0
  38. package/dist/agent/runtime/adapters/session-transcripts/adapters/gemini.js.map +1 -0
  39. package/dist/agent/runtime/adapters/session-transcripts/adapters/kimi.d.ts +4 -0
  40. package/dist/agent/runtime/adapters/session-transcripts/adapters/kimi.d.ts.map +1 -0
  41. package/dist/agent/runtime/adapters/session-transcripts/adapters/kimi.js +61 -0
  42. package/dist/agent/runtime/adapters/session-transcripts/adapters/kimi.js.map +1 -0
  43. package/dist/agent/runtime/adapters/session-transcripts/adapters/openclaw.d.ts +4 -0
  44. package/dist/agent/runtime/adapters/session-transcripts/adapters/openclaw.d.ts.map +1 -0
  45. package/dist/agent/runtime/adapters/session-transcripts/adapters/openclaw.js +156 -0
  46. package/dist/agent/runtime/adapters/session-transcripts/adapters/openclaw.js.map +1 -0
  47. package/dist/agent/runtime/adapters/session-transcripts/adapters/opencode.d.ts +4 -0
  48. package/dist/agent/runtime/adapters/session-transcripts/adapters/opencode.d.ts.map +1 -0
  49. package/dist/agent/runtime/adapters/session-transcripts/adapters/opencode.js +79 -0
  50. package/dist/agent/runtime/adapters/session-transcripts/adapters/opencode.js.map +1 -0
  51. package/dist/agent/runtime/adapters/session-transcripts/adapters/qwen-code.d.ts +4 -0
  52. package/dist/agent/runtime/adapters/session-transcripts/adapters/qwen-code.d.ts.map +1 -0
  53. package/dist/agent/runtime/adapters/session-transcripts/adapters/qwen-code.js +86 -0
  54. package/dist/agent/runtime/adapters/session-transcripts/adapters/qwen-code.js.map +1 -0
  55. package/dist/agent/runtime/adapters/session-transcripts/adapters/unverified.d.ts +4 -0
  56. package/dist/agent/runtime/adapters/session-transcripts/adapters/unverified.d.ts.map +1 -0
  57. package/dist/agent/runtime/adapters/session-transcripts/adapters/unverified.js +22 -0
  58. package/dist/agent/runtime/adapters/session-transcripts/adapters/unverified.js.map +1 -0
  59. package/dist/agent/runtime/adapters/session-transcripts/file-system.d.ts +24 -0
  60. package/dist/agent/runtime/adapters/session-transcripts/file-system.d.ts.map +1 -0
  61. package/dist/agent/runtime/adapters/session-transcripts/file-system.js +127 -0
  62. package/dist/agent/runtime/adapters/session-transcripts/file-system.js.map +1 -0
  63. package/dist/agent/runtime/adapters/session-transcripts/index.d.ts +4 -0
  64. package/dist/agent/runtime/adapters/session-transcripts/index.d.ts.map +1 -0
  65. package/dist/agent/runtime/adapters/session-transcripts/index.js +3 -0
  66. package/dist/agent/runtime/adapters/session-transcripts/index.js.map +1 -0
  67. package/dist/agent/runtime/adapters/session-transcripts/normalizer.d.ts +45 -0
  68. package/dist/agent/runtime/adapters/session-transcripts/normalizer.d.ts.map +1 -0
  69. package/dist/agent/runtime/adapters/session-transcripts/normalizer.js +331 -0
  70. package/dist/agent/runtime/adapters/session-transcripts/normalizer.js.map +1 -0
  71. package/dist/agent/runtime/adapters/session-transcripts/registry.d.ts +8 -0
  72. package/dist/agent/runtime/adapters/session-transcripts/registry.d.ts.map +1 -0
  73. package/dist/agent/runtime/adapters/session-transcripts/registry.js +73 -0
  74. package/dist/agent/runtime/adapters/session-transcripts/registry.js.map +1 -0
  75. package/dist/agent/runtime/adapters/session-transcripts/types.d.ts +51 -0
  76. package/dist/agent/runtime/adapters/session-transcripts/types.d.ts.map +1 -0
  77. package/dist/agent/runtime/adapters/session-transcripts/types.js +2 -0
  78. package/dist/agent/runtime/adapters/session-transcripts/types.js.map +1 -0
  79. package/dist/agent/runtime/capabilities.d.ts.map +1 -1
  80. package/dist/agent/runtime/capabilities.js +12 -0
  81. package/dist/agent/runtime/capabilities.js.map +1 -1
  82. package/dist/agent/runtime/codex-app-server.d.ts +24 -0
  83. package/dist/agent/runtime/codex-app-server.d.ts.map +1 -1
  84. package/dist/agent/runtime/codex-app-server.js +57 -0
  85. package/dist/agent/runtime/codex-app-server.js.map +1 -1
  86. package/dist/agent/runtime/registry.d.ts +6 -0
  87. package/dist/agent/runtime/registry.d.ts.map +1 -1
  88. package/dist/agent/runtime/registry.js.map +1 -1
  89. package/dist/agent/runtime/run.d.ts +3 -1
  90. package/dist/agent/runtime/run.d.ts.map +1 -1
  91. package/dist/agent/runtime/run.js +11 -3
  92. package/dist/agent/runtime/run.js.map +1 -1
  93. package/dist/agent/tool/kb-tools.d.ts.map +1 -1
  94. package/dist/agent/tool/kb-tools.js +66 -2
  95. package/dist/agent/tool/kb-tools.js.map +1 -1
  96. package/dist/capabilities.d.ts +1 -1
  97. package/dist/capabilities.d.ts.map +1 -1
  98. package/dist/capabilities.js +8 -0
  99. package/dist/capabilities.js.map +1 -1
  100. package/dist/client.d.ts +1 -1
  101. package/dist/client.d.ts.map +1 -1
  102. package/dist/intelligence/cognition/human-modeling.d.ts +84 -0
  103. package/dist/intelligence/cognition/human-modeling.d.ts.map +1 -0
  104. package/dist/intelligence/cognition/human-modeling.js +314 -0
  105. package/dist/intelligence/cognition/human-modeling.js.map +1 -0
  106. package/dist/intelligence/cognition/index.d.ts +2 -0
  107. package/dist/intelligence/cognition/index.d.ts.map +1 -0
  108. package/dist/intelligence/cognition/index.js +2 -0
  109. package/dist/intelligence/cognition/index.js.map +1 -0
  110. package/dist/intelligence/index.d.ts +2 -0
  111. package/dist/intelligence/index.d.ts.map +1 -0
  112. package/dist/intelligence/index.js +2 -0
  113. package/dist/intelligence/index.js.map +1 -0
  114. package/dist/intelligence.d.ts +14 -0
  115. package/dist/intelligence.d.ts.map +1 -0
  116. package/dist/intelligence.js +11 -0
  117. package/dist/intelligence.js.map +1 -0
  118. package/dist/knowledge/content-integrity.d.ts +15 -0
  119. package/dist/knowledge/content-integrity.d.ts.map +1 -0
  120. package/dist/knowledge/content-integrity.js +55 -0
  121. package/dist/knowledge/content-integrity.js.map +1 -0
  122. package/dist/protocols/mcp-server/index.cjs +32 -32
  123. package/dist/protocols/mcp-server/index.js +34 -17
  124. package/dist/protocols/mcp-server/index.js.map +1 -1
  125. package/dist/server/contract.d.ts.map +1 -1
  126. package/dist/server/contract.js +1 -0
  127. package/dist/server/contract.js.map +1 -1
  128. package/dist/server/handlers/agent-runtimes-codex.d.ts +5 -1
  129. package/dist/server/handlers/agent-runtimes-codex.d.ts.map +1 -1
  130. package/dist/server/handlers/agent-runtimes-codex.js +13 -0
  131. package/dist/server/handlers/agent-runtimes-codex.js.map +1 -1
  132. package/dist/server/handlers/agent-turn.d.ts +1 -1
  133. package/dist/server/handlers/agent-turn.d.ts.map +1 -1
  134. package/dist/server/handlers/agent-turn.js +1 -1
  135. package/dist/server/handlers/agent-turn.js.map +1 -1
  136. package/dist/server/handlers/file.d.ts.map +1 -1
  137. package/dist/server/handlers/file.js +70 -17
  138. package/dist/server/handlers/file.js.map +1 -1
  139. package/dist/server/handlers/mcp-install-skill.d.ts +25 -0
  140. package/dist/server/handlers/mcp-install-skill.d.ts.map +1 -1
  141. package/dist/server/handlers/mcp-install-skill.js +231 -9
  142. package/dist/server/handlers/mcp-install-skill.js.map +1 -1
  143. package/dist/server/http.d.ts.map +1 -1
  144. package/dist/server/http.js +9 -1
  145. package/dist/server/http.js.map +1 -1
  146. package/dist/server/index.d.ts +1 -1
  147. package/dist/server/index.d.ts.map +1 -1
  148. package/dist/server/index.js +1 -1
  149. package/dist/server/index.js.map +1 -1
  150. package/dist/server/provider-settings.js +4 -4
  151. package/dist/server/provider-settings.js.map +1 -1
  152. package/dist/server/route-ownership.d.ts.map +1 -1
  153. package/dist/server/route-ownership.js +3 -0
  154. package/dist/server/route-ownership.js.map +1 -1
  155. package/package.json +17 -9
@@ -0,0 +1,271 @@
1
+ const DIRECTIVE_RE = /^\/(plan|goal)(?:\s+|$)/i;
2
+ const MAX_SUMMARY_CHARS = 280;
3
+ const MAX_STEP_CHARS = 180;
4
+ const MAX_RISK_CHARS = 180;
5
+ export function normalizeMindosAgentMode(value) {
6
+ return value === 'default' || value === 'plan' || value === 'goal'
7
+ ? value
8
+ : undefined;
9
+ }
10
+ export function parseMindosAgentModeDirective(input) {
11
+ const match = DIRECTIVE_RE.exec(input.trimStart());
12
+ if (!match)
13
+ return undefined;
14
+ const command = `/${match[1].toLowerCase()}`;
15
+ const prompt = input.trimStart().slice(match[0].length).trimStart()
16
+ || (command === '/goal'
17
+ ? 'Complete the current user goal and report whether it is complete, blocked, or needs user input.'
18
+ : 'Inspect the current context and produce a reviewable plan.');
19
+ return {
20
+ command,
21
+ mode: command === '/goal' ? 'goal' : 'plan',
22
+ prompt,
23
+ };
24
+ }
25
+ export function resolveMindosAgentModeRequest(input) {
26
+ const directive = parseMindosAgentModeDirective(input.prompt);
27
+ if (directive) {
28
+ return {
29
+ mode: directive.mode,
30
+ prompt: directive.prompt,
31
+ directive,
32
+ };
33
+ }
34
+ return {
35
+ mode: input.requestedMode ?? 'default',
36
+ prompt: input.prompt,
37
+ };
38
+ }
39
+ export function resolveMindosAgentModePermissionMode(mode, requestedPermissionMode) {
40
+ return mode === 'plan' ? 'read' : requestedPermissionMode;
41
+ }
42
+ export function createMindosAgentModeContract(input) {
43
+ const objective = summarizeObjective(input.prompt);
44
+ return {
45
+ schemaVersion: 1,
46
+ mode: input.mode,
47
+ ...(objective && input.mode !== 'default' ? { objective } : {}),
48
+ ...(input.directive ? { directive: input.directive.command } : {}),
49
+ ...(input.requestedPermissionMode ? { requestedPermissionMode: input.requestedPermissionMode } : {}),
50
+ ...(input.effectivePermissionMode ? { effectivePermissionMode: input.effectivePermissionMode } : {}),
51
+ behavior: input.mode === 'plan'
52
+ ? 'read_only_plan'
53
+ : input.mode === 'goal'
54
+ ? 'goal_until_done_blocked_or_needs_user'
55
+ : 'normal',
56
+ };
57
+ }
58
+ export function renderMindosAgentModePrompt(contract) {
59
+ if (contract.mode === 'default')
60
+ return '';
61
+ if (contract.mode === 'plan') {
62
+ return [
63
+ '## Agent Mode: Plan',
64
+ '',
65
+ 'You are in Plan mode for this turn.',
66
+ '- Work read-only: inspect, search, and reason, but do not write files, mutate the knowledge base, run destructive shell commands, or perform side-effect actions.',
67
+ '- Produce a reviewable plan artifact before implementation. Use concise sections: Goal, Assumptions, Steps, Risks, and Ready to Execute.',
68
+ '- If implementation or external side effects are needed, stop after the plan and ask for explicit approval to switch back to Build mode.',
69
+ contract.objective ? `- Objective: ${contract.objective}` : '',
70
+ ].filter(Boolean).join('\n');
71
+ }
72
+ return [
73
+ '## Agent Mode: Goal',
74
+ '',
75
+ 'You are in Goal mode for this turn.',
76
+ '- Treat the objective as a stop-condition contract: continue until it is completed, blocked, or needs user input within the current permissions and step budget.',
77
+ '- Do not bypass permission policy, safety checks, context limits, or user approval requirements.',
78
+ '- Before the final answer, state a short goal result using exactly one of: `Goal status: complete`, `Goal status: blocked`, or `Goal status: needs_user`, then cite the evidence.',
79
+ contract.objective ? `- Objective: ${contract.objective}` : '',
80
+ ].filter(Boolean).join('\n');
81
+ }
82
+ export function prependMindosAgentModePrompt(prompt, contract) {
83
+ const modePrompt = renderMindosAgentModePrompt(contract);
84
+ if (!modePrompt)
85
+ return prompt;
86
+ return [modePrompt, prompt.trimStart()].filter(Boolean).join('\n\n---\n\n');
87
+ }
88
+ export function createMindosPlanArtifact(input) {
89
+ const output = normalizeMultiline(input.output);
90
+ const steps = extractPlanSteps(output);
91
+ const summary = firstMeaningfulLine(output)
92
+ ?? input.objective
93
+ ?? 'Reviewable plan produced by the agent.';
94
+ return {
95
+ schemaVersion: 1,
96
+ mode: 'plan',
97
+ ...(input.objective ? { objective: input.objective } : {}),
98
+ summary: clampText(summary, MAX_SUMMARY_CHARS),
99
+ steps: steps.length > 0
100
+ ? steps
101
+ : [{ title: clampText(input.objective ?? summary, MAX_STEP_CHARS), status: 'pending' }],
102
+ risks: extractPlanRisks(output),
103
+ source: steps.length > 0 ? 'assistant' : 'fallback',
104
+ generatedAt: input.generatedAt ?? Date.now(),
105
+ };
106
+ }
107
+ export function evaluateMindosGoalCompletion(input) {
108
+ const output = normalizeMultiline(input.output);
109
+ const objective = input.objective?.trim() || 'Complete the requested goal.';
110
+ const explicit = parseExplicitGoalStatus(output);
111
+ const status = input.runStatus === 'failed' || input.runStatus === 'timed_out' || input.runStatus === 'canceled'
112
+ ? 'blocked'
113
+ : explicit ?? inferGoalStatus(output);
114
+ const confidence = explicit
115
+ ? 'high'
116
+ : status === 'completed' && output.trim()
117
+ ? 'medium'
118
+ : 'low';
119
+ const summary = firstMeaningfulLine(output)
120
+ ?? (status === 'completed' ? 'The agent reported a completed goal.' : 'The agent could not finish the goal.');
121
+ const nextAction = status === 'completed'
122
+ ? undefined
123
+ : status === 'needs_user'
124
+ ? 'User input is required before the goal can continue.'
125
+ : 'Resolve the blocker, then rerun Goal mode.';
126
+ return {
127
+ schemaVersion: 1,
128
+ mode: 'goal',
129
+ objective,
130
+ status,
131
+ confidence,
132
+ summary: clampText(summary, MAX_SUMMARY_CHARS),
133
+ evidence: extractGoalEvidence(output),
134
+ ...(nextAction ? { nextAction } : {}),
135
+ evaluatedAt: input.evaluatedAt ?? Date.now(),
136
+ };
137
+ }
138
+ function summarizeObjective(prompt) {
139
+ return firstMeaningfulLine(prompt)?.replace(/^#+\s*/, '').slice(0, MAX_SUMMARY_CHARS);
140
+ }
141
+ function normalizeMultiline(value) {
142
+ return value.replace(/\r\n?/g, '\n').trim();
143
+ }
144
+ function firstMeaningfulLine(value) {
145
+ for (const raw of value.split('\n')) {
146
+ const line = raw.trim();
147
+ if (!line)
148
+ continue;
149
+ const stripped = stripListMarker(line);
150
+ if (stripped)
151
+ return stripped;
152
+ }
153
+ return undefined;
154
+ }
155
+ function stripListMarker(line) {
156
+ return line
157
+ .replace(/^#{1,6}\s+/, '')
158
+ .replace(/^[-*]\s+\[[ xX~-]\]\s+/, '')
159
+ .replace(/^[-*]\s+/, '')
160
+ .replace(/^\d+[.)]\s+/, '')
161
+ .trim();
162
+ }
163
+ function clampText(value, max) {
164
+ const compact = value.replace(/\s+/g, ' ').trim();
165
+ return compact.length > max ? `${compact.slice(0, max - 3)}...` : compact;
166
+ }
167
+ function extractPlanSteps(output) {
168
+ const steps = [];
169
+ let inRiskSection = false;
170
+ for (const raw of output.split('\n')) {
171
+ const line = raw.trim();
172
+ if (isPlanRiskHeading(line)) {
173
+ inRiskSection = true;
174
+ continue;
175
+ }
176
+ if (/^#{1,6}\s+/.test(line) && inRiskSection) {
177
+ inRiskSection = false;
178
+ }
179
+ if (inRiskSection)
180
+ continue;
181
+ const match = /^(?:[-*]\s+\[([ xX~-])\]\s+|(?:[-*]|\d+[.)])\s+)(.+)$/.exec(line);
182
+ if (!match)
183
+ continue;
184
+ const body = stripListMarker(line);
185
+ if (!body || /^risk/i.test(body))
186
+ continue;
187
+ const marker = match[1];
188
+ const status = marker && /x/i.test(marker)
189
+ ? 'completed'
190
+ : marker === '~' || marker === '-'
191
+ ? 'in_progress'
192
+ : 'pending';
193
+ steps.push({ title: clampText(body, MAX_STEP_CHARS), status });
194
+ if (steps.length >= 12)
195
+ break;
196
+ }
197
+ return steps;
198
+ }
199
+ function extractPlanRisks(output) {
200
+ const risks = [];
201
+ let inRiskSection = false;
202
+ for (const raw of output.split('\n')) {
203
+ const line = raw.trim();
204
+ if (!line)
205
+ continue;
206
+ if (isPlanRiskHeading(line)) {
207
+ inRiskSection = true;
208
+ continue;
209
+ }
210
+ if (/^#{1,6}\s+/.test(line) && inRiskSection)
211
+ break;
212
+ if (!inRiskSection && !/\brisk\b/i.test(line) && !/风险|阻塞|不确定/.test(line))
213
+ continue;
214
+ if (/^[-*]\s+/.test(line) || inRiskSection) {
215
+ const risk = stripListMarker(line);
216
+ if (risk)
217
+ risks.push(clampText(risk, MAX_RISK_CHARS));
218
+ }
219
+ if (risks.length >= 6)
220
+ break;
221
+ }
222
+ return [...new Set(risks)];
223
+ }
224
+ function isPlanRiskHeading(line) {
225
+ return /^(#{1,6}\s*)?(risks?|risk|known risks?|边界|风险)[:\s]*$/i.test(line);
226
+ }
227
+ function parseExplicitGoalStatus(output) {
228
+ const match = /goal\s*status\s*[::]\s*(complete|completed|done|blocked|needs[_\s-]*user|need[_\s-]*user)/i.exec(output);
229
+ if (match) {
230
+ const value = match[1].toLowerCase().replace(/[\s_-]+/g, '_');
231
+ if (value === 'blocked')
232
+ return 'blocked';
233
+ if (value === 'needs_user' || value === 'need_user')
234
+ return 'needs_user';
235
+ return 'completed';
236
+ }
237
+ if (/目标状态\s*[::]\s*(完成|已完成)/.test(output))
238
+ return 'completed';
239
+ if (/目标状态\s*[::]\s*(阻塞|被阻塞)/.test(output))
240
+ return 'blocked';
241
+ if (/目标状态\s*[::]\s*(需要用户|需要输入|等待用户)/.test(output))
242
+ return 'needs_user';
243
+ return undefined;
244
+ }
245
+ function inferGoalStatus(output) {
246
+ const lower = output.toLowerCase();
247
+ if (/(blocked|cannot continue|unable to continue|failed because|阻塞|无法继续)/.test(lower))
248
+ return 'blocked';
249
+ if (/(need your|please provide|can you provide|could you clarify|needs user|需要你|请提供|需要确认|等待你)/.test(lower))
250
+ return 'needs_user';
251
+ return output.trim() ? 'completed' : 'blocked';
252
+ }
253
+ function extractGoalEvidence(output) {
254
+ const evidence = [];
255
+ for (const raw of output.split('\n')) {
256
+ const line = stripListMarker(raw.trim());
257
+ if (!line)
258
+ continue;
259
+ if (/goal\s*status|completed|done|verified|created|updated|changed|fixed|tested|passed|blocked|needs/i.test(line)
260
+ || /完成|验证|创建|更新|修改|修复|测试|通过|阻塞|需要/.test(line)) {
261
+ evidence.push(clampText(line, MAX_SUMMARY_CHARS));
262
+ }
263
+ if (evidence.length >= 6)
264
+ break;
265
+ }
266
+ if (evidence.length > 0)
267
+ return [...new Set(evidence)];
268
+ const fallback = firstMeaningfulLine(output);
269
+ return fallback ? [clampText(fallback, MAX_SUMMARY_CHARS)] : [];
270
+ }
271
+ //# sourceMappingURL=mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/agent/mode.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './mindos.js';
2
+ export * from './session-transcripts/index.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agent/runtime/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agent/runtime/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from './mindos.js';
2
+ export * from './session-transcripts/index.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agent/runtime/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agent/runtime/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ExternalRuntimeSessionListOptions, ExternalRuntimeSessionRecord, RuntimeSessionTranscriptAdapter } from '../types.js';
2
+ export declare function listClaudeSessions(options: ExternalRuntimeSessionListOptions): Promise<ExternalRuntimeSessionRecord[]>;
3
+ export declare const CLAUDE_SESSION_TRANSCRIPT_ADAPTER: RuntimeSessionTranscriptAdapter;
4
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../../../../src/agent/runtime/adapters/session-transcripts/adapters/claude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,aAAa,CAAC;AAWrB,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CA8DzC;AAED,eAAO,MAAM,iCAAiC,EAAE,+BAQ/C,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readdir, stat } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { join, resolve } from 'node:path';
5
+ import { claudeProjectDirNameFromCwd, jsonlFileNameFromSessionId, readJsonl } from '../file-system.js';
6
+ import { firstStringField, newestTimestampField, parseClaudeMessagesFromRecords, sortAndLimit, timestampField, toExternalRecord, } from '../normalizer.js';
7
+ export async function listClaudeSessions(options) {
8
+ const home = options.homeDir ?? homedir();
9
+ const root = join(home, '.claude', 'projects');
10
+ if (!existsSync(root))
11
+ return [];
12
+ const requestedFileName = jsonlFileNameFromSessionId(options.sessionId);
13
+ if (options.sessionId && !requestedFileName)
14
+ return [];
15
+ const projectDirs = await readdir(root, { withFileTypes: true }).catch(() => []);
16
+ const expectedProjectDir = options.cwd?.trim() ? claudeProjectDirNameFromCwd(options.cwd) : null;
17
+ const orderedProjectDirs = projectDirs
18
+ .filter((entry) => entry.isDirectory())
19
+ .sort((a, b) => {
20
+ if (!expectedProjectDir)
21
+ return a.name.localeCompare(b.name);
22
+ if (a.name === expectedProjectDir)
23
+ return -1;
24
+ if (b.name === expectedProjectDir)
25
+ return 1;
26
+ return a.name.localeCompare(b.name);
27
+ });
28
+ const records = [];
29
+ for (const projectDir of orderedProjectDirs) {
30
+ if (!options.sessionId && expectedProjectDir && projectDir.name !== expectedProjectDir)
31
+ continue;
32
+ const projectPath = join(root, projectDir.name);
33
+ const files = requestedFileName
34
+ ? existsSync(join(projectPath, requestedFileName))
35
+ ? [{ name: requestedFileName, isFile: () => true }]
36
+ : []
37
+ : await readdir(projectPath, { withFileTypes: true }).catch(() => []);
38
+ for (const file of files) {
39
+ if (!file.isFile() || !file.name.endsWith('.jsonl'))
40
+ continue;
41
+ const filePath = join(projectPath, file.name);
42
+ const recordsFromFile = await readJsonl(filePath);
43
+ const fileSessionId = file.name.replace(/\.jsonl$/, '');
44
+ const sessionId = firstStringField(recordsFromFile, 'sessionId')
45
+ ?? firstStringField(recordsFromFile, 'session_id')
46
+ ?? fileSessionId;
47
+ if (options.sessionId && sessionId !== options.sessionId && fileSessionId !== options.sessionId)
48
+ continue;
49
+ const cwd = firstStringField(recordsFromFile, 'cwd') ?? options.cwd;
50
+ if (!options.sessionId && options.cwd?.trim() && cwd && resolve(cwd) !== resolve(options.cwd.trim()))
51
+ continue;
52
+ const fileStat = await stat(filePath).catch(() => null);
53
+ const messages = parseClaudeMessagesFromRecords(recordsFromFile);
54
+ if (messages.length === 0 && recordsFromFile.length === 0)
55
+ continue;
56
+ const firstUserMessage = messages.find((message) => message.role === 'user');
57
+ const userMessages = messages.filter((message) => message.role === 'user');
58
+ const lastUserMessage = userMessages[userMessages.length - 1];
59
+ const firstTimestamp = timestampField(recordsFromFile.find((record) => timestampField(record.timestamp))?.timestamp);
60
+ records.push(toExternalRecord({
61
+ id: sessionId,
62
+ title: firstUserMessage?.content ? firstUserMessage.content.slice(0, 80) : sessionId,
63
+ preview: lastUserMessage && lastUserMessage !== firstUserMessage ? lastUserMessage.content.slice(0, 120) : undefined,
64
+ cwd,
65
+ createdAt: firstTimestamp ?? fileStat?.birthtimeMs,
66
+ updatedAt: newestTimestampField(recordsFromFile, 'timestamp') ?? fileStat?.mtimeMs,
67
+ messages,
68
+ transcriptSource: 'claude-code',
69
+ }));
70
+ }
71
+ }
72
+ return sortAndLimit(records, options.limit);
73
+ }
74
+ export const CLAUDE_SESSION_TRANSCRIPT_ADAPTER = {
75
+ id: 'claude-code',
76
+ aliases: ['claude', 'claude-code'],
77
+ transcriptSource: 'claude-code',
78
+ status: 'supported',
79
+ durable: true,
80
+ summary: 'Reads Claude Code project transcripts under ~/.claude/projects.',
81
+ listSessions: listClaudeSessions,
82
+ };
83
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../../../src/agent/runtime/adapters/session-transcripts/adapters/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ExternalRuntimeSessionListOptions, ExternalRuntimeSessionRecord, RuntimeSessionTranscriptAdapter } from '../types.js';
2
+ export declare function listCodeBuddySessions(options: ExternalRuntimeSessionListOptions): Promise<ExternalRuntimeSessionRecord[]>;
3
+ export declare const CODEBUDDY_SESSION_TRANSCRIPT_ADAPTER: RuntimeSessionTranscriptAdapter;
4
+ //# sourceMappingURL=codebuddy-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebuddy-code.d.ts","sourceRoot":"","sources":["../../../../../../src/agent/runtime/adapters/session-transcripts/adapters/codebuddy-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,aAAa,CAAC;AAgBrB,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CA2DzC;AAED,eAAO,MAAM,oCAAoC,EAAE,+BAQlD,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { stat } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { basename, join } from 'node:path';
5
+ import { discoverJsonlFiles, readJsonl, shouldSkipForRequestedCwd } from '../file-system.js';
6
+ import { firstStringFromRecords, firstTimestampFromRecords, firstUserMessage, lastUserMessage, newestTimestampField, parseVisibleMessagesFromRecords, sessionIdFromRecords, sortAndLimit, toExternalRecord, } from '../normalizer.js';
7
+ const CODEBUDDY_SKIPPED_DIRS = new Set(['blobs', 'subagents', 'tool-results']);
8
+ export async function listCodeBuddySessions(options) {
9
+ const home = options.homeDir ?? homedir();
10
+ const root = join(home, '.codebuddy', 'projects');
11
+ if (!existsSync(root))
12
+ return [];
13
+ const files = await discoverJsonlFiles({
14
+ root,
15
+ sessionId: options.sessionId,
16
+ maxDepth: 4,
17
+ skipDir: (name) => CODEBUDDY_SKIPPED_DIRS.has(name),
18
+ });
19
+ const records = [];
20
+ for (const filePath of files) {
21
+ const recordsFromFile = await readJsonl(filePath);
22
+ const fallbackSessionId = basename(filePath).replace(/\.jsonl$/, '');
23
+ const sessionId = sessionIdFromRecords(recordsFromFile, fallbackSessionId);
24
+ if (options.sessionId && sessionId !== options.sessionId && fallbackSessionId !== options.sessionId)
25
+ continue;
26
+ const cwd = firstStringFromRecords(recordsFromFile, [
27
+ 'cwd',
28
+ 'projectRoot',
29
+ 'project_root',
30
+ 'workingDirectory',
31
+ 'working_directory',
32
+ ]) ?? options.cwd;
33
+ if (shouldSkipForRequestedCwd({
34
+ requestedCwd: options.cwd,
35
+ transcriptCwd: cwd,
36
+ sessionId: options.sessionId,
37
+ })) {
38
+ continue;
39
+ }
40
+ const fileStat = await stat(filePath).catch(() => null);
41
+ const messages = parseVisibleMessagesFromRecords(recordsFromFile);
42
+ if (messages.length === 0 && recordsFromFile.length === 0)
43
+ continue;
44
+ const firstUser = firstUserMessage(messages);
45
+ const lastUser = lastUserMessage(messages);
46
+ const title = firstStringFromRecords(recordsFromFile, ['customTitle', 'title', 'prompt'])
47
+ ?? (firstUser?.content ? firstUser.content.slice(0, 80) : sessionId);
48
+ records.push(toExternalRecord({
49
+ id: sessionId,
50
+ title,
51
+ preview: lastUser && lastUser !== firstUser ? lastUser.content.slice(0, 120) : undefined,
52
+ cwd,
53
+ createdAt: firstTimestampFromRecords(recordsFromFile, ['startTime', 'createdAt', 'created_at', 'timestamp'])
54
+ ?? fileStat?.birthtimeMs,
55
+ updatedAt: newestTimestampField(recordsFromFile, 'updatedAt')
56
+ ?? newestTimestampField(recordsFromFile, 'updated_at')
57
+ ?? newestTimestampField(recordsFromFile, 'timestamp')
58
+ ?? fileStat?.mtimeMs,
59
+ messages,
60
+ transcriptSource: 'codebuddy-code',
61
+ }));
62
+ }
63
+ return sortAndLimit(records, options.limit);
64
+ }
65
+ export const CODEBUDDY_SESSION_TRANSCRIPT_ADAPTER = {
66
+ id: 'codebuddy-code',
67
+ aliases: ['codebuddy', 'codebuddy-code'],
68
+ transcriptSource: 'codebuddy-code',
69
+ status: 'supported',
70
+ durable: true,
71
+ summary: 'Reads CodeBuddy Code JSONL transcripts under ~/.codebuddy/projects.',
72
+ listSessions: listCodeBuddySessions,
73
+ };
74
+ //# sourceMappingURL=codebuddy-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebuddy-code.js","sourceRoot":"","sources":["../../../../../../src/agent/runtime/adapters/session-transcripts/adapters/codebuddy-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAM3C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,+BAA+B,EAC/B,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA0C;IAE1C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC;QACrC,IAAI;QACJ,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;KACpD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAmC,EAAE,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,oBAAoB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,SAAS,IAAI,iBAAiB,KAAK,OAAO,CAAC,SAAS;YAAE,SAAS;QAE9G,MAAM,GAAG,GAAG,sBAAsB,CAAC,eAAe,EAAE;YAClD,KAAK;YACL,aAAa;YACb,cAAc;YACd,kBAAkB;YAClB,mBAAmB;SACpB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC;QAClB,IAAI,yBAAyB,CAAC;YAC5B,YAAY,EAAE,OAAO,CAAC,GAAG;YACzB,aAAa,EAAE,GAAG;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,EAAE,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,eAAe,CAAC,CAAC;QAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACpE,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,sBAAsB,CAAC,eAAe,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;eACpF,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEvE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC5B,EAAE,EAAE,SAAS;YACb,KAAK;YACL,OAAO,EAAE,QAAQ,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACxF,GAAG;YACH,SAAS,EAAE,yBAAyB,CAAC,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;mBACvG,QAAQ,EAAE,WAAW;YAC1B,SAAS,EAAE,oBAAoB,CAAC,eAAe,EAAE,WAAW,CAAC;mBACxD,oBAAoB,CAAC,eAAe,EAAE,YAAY,CAAC;mBACnD,oBAAoB,CAAC,eAAe,EAAE,WAAW,CAAC;mBAClD,QAAQ,EAAE,OAAO;YACtB,QAAQ;YACR,gBAAgB,EAAE,gBAAgB;SACnC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,oCAAoC,GAAoC;IACnF,EAAE,EAAE,gBAAgB;IACpB,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACxC,gBAAgB,EAAE,gBAAgB;IAClC,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,qEAAqE;IAC9E,YAAY,EAAE,qBAAqB;CACpC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ExternalRuntimeSessionListOptions, ExternalRuntimeSessionRecord, RuntimeSessionTranscriptAdapter } from '../types.js';
2
+ export declare function listGeminiSessions(options: ExternalRuntimeSessionListOptions): Promise<ExternalRuntimeSessionRecord[]>;
3
+ export declare const GEMINI_SESSION_TRANSCRIPT_ADAPTER: RuntimeSessionTranscriptAdapter;
4
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../../../src/agent/runtime/adapters/session-transcripts/adapters/gemini.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,aAAa,CAAC;AA0BrB,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CA6BzC;AAED,eAAO,MAAM,iCAAiC,EAAE,+BAQ/C,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readdir, readFile, stat } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { join, resolve } from 'node:path';
5
+ import { projectBaseFromCwd, readJsonl } from '../file-system.js';
6
+ import { parseGeminiMessagesFromRecords, sortAndLimit, timestampField, toExternalRecord } from '../normalizer.js';
7
+ async function geminiProjectDirs(homeDir, cwd) {
8
+ const roots = [
9
+ join(homeDir, '.gemini', 'tmp'),
10
+ join(homeDir, '.gemini', 'history'),
11
+ ];
12
+ const base = projectBaseFromCwd(cwd);
13
+ const result = [];
14
+ for (const root of roots) {
15
+ if (!existsSync(root))
16
+ continue;
17
+ const entries = await readdir(root, { withFileTypes: true }).catch(() => []);
18
+ for (const entry of entries) {
19
+ if (!entry.isDirectory())
20
+ continue;
21
+ if (base && entry.name !== base)
22
+ continue;
23
+ const projectPath = join(root, entry.name);
24
+ const projectRoot = await readFile(join(projectPath, '.project_root'), 'utf8').catch(() => '');
25
+ if (cwd?.trim() && projectRoot.trim() && resolve(projectRoot.trim()) !== resolve(cwd.trim()))
26
+ continue;
27
+ result.push(projectPath);
28
+ }
29
+ }
30
+ return [...new Set(result)];
31
+ }
32
+ export async function listGeminiSessions(options) {
33
+ const home = options.homeDir ?? homedir();
34
+ const records = [];
35
+ for (const projectPath of await geminiProjectDirs(home, options.cwd)) {
36
+ const chatsDir = join(projectPath, 'chats');
37
+ const chatFiles = await readdir(chatsDir, { withFileTypes: true }).catch(() => []);
38
+ for (const file of chatFiles) {
39
+ if (!file.isFile() || !file.name.endsWith('.jsonl'))
40
+ continue;
41
+ const filePath = join(chatsDir, file.name);
42
+ const recordsFromFile = await readJsonl(filePath);
43
+ const metadata = recordsFromFile.find((record) => typeof record.sessionId === 'string');
44
+ const sessionId = typeof metadata?.sessionId === 'string'
45
+ ? metadata.sessionId
46
+ : file.name.replace(/\.jsonl$/, '');
47
+ if (options.sessionId && sessionId !== options.sessionId)
48
+ continue;
49
+ const fileStat = await stat(filePath).catch(() => null);
50
+ const messages = parseGeminiMessagesFromRecords(recordsFromFile);
51
+ records.push(toExternalRecord({
52
+ id: sessionId,
53
+ title: messages[0]?.content ? messages[0].content.slice(0, 80) : sessionId,
54
+ cwd: options.cwd,
55
+ createdAt: timestampField(metadata?.startTime) ?? fileStat?.birthtimeMs,
56
+ updatedAt: timestampField(metadata?.lastUpdated) ?? fileStat?.mtimeMs,
57
+ messages,
58
+ transcriptSource: 'gemini-cli',
59
+ }));
60
+ }
61
+ }
62
+ return sortAndLimit(records, options.limit);
63
+ }
64
+ export const GEMINI_SESSION_TRANSCRIPT_ADAPTER = {
65
+ id: 'gemini-cli',
66
+ aliases: ['gemini', 'gemini-cli'],
67
+ transcriptSource: 'gemini-cli',
68
+ status: 'supported',
69
+ durable: true,
70
+ summary: 'Reads Gemini CLI chat snapshots under ~/.gemini/tmp and ~/.gemini/history.',
71
+ listSessions: listGeminiSessions,
72
+ };
73
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../../../src/agent/runtime/adapters/session-transcripts/adapters/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ExternalRuntimeSessionListOptions, ExternalRuntimeSessionRecord, RuntimeSessionTranscriptAdapter } from '../types.js';
2
+ export declare function listKimiSessions(options: ExternalRuntimeSessionListOptions): Promise<ExternalRuntimeSessionRecord[]>;
3
+ export declare const KIMI_SESSION_TRANSCRIPT_ADAPTER: RuntimeSessionTranscriptAdapter;
4
+ //# sourceMappingURL=kimi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../../../../../src/agent/runtime/adapters/session-transcripts/adapters/kimi.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,aAAa,CAAC;AAcrB,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CA8BzC;AAED,eAAO,MAAM,+BAA+B,EAAE,+BAQ7C,CAAC"}