@geminilight/mindos 1.1.8 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/prompt-builder.d.ts.map +1 -1
- package/dist/agent/prompt-builder.js +8 -12
- package/dist/agent/prompt-builder.js.map +1 -1
- package/dist/agent/prompts.d.ts +0 -4
- package/dist/agent/prompts.d.ts.map +1 -1
- package/dist/agent/prompts.js +0 -15
- package/dist/agent/prompts.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/protocols/acp/index.js +7 -7
- package/dist/protocols/acp/registry.d.ts +3 -1
- package/dist/protocols/acp/registry.d.ts.map +1 -1
- package/dist/protocols/acp/registry.js +62 -10
- package/dist/protocols/acp/registry.js.map +1 -1
- package/dist/server/handlers/agent-activity.d.ts +1 -1
- package/dist/server/handlers/agent-activity.d.ts.map +1 -1
- package/dist/server/handlers/agent-activity.js +6 -8
- package/dist/server/handlers/agent-activity.js.map +1 -1
- package/dist/server/handlers/agent-capabilities.d.ts +2 -2
- package/dist/server/handlers/agent-capabilities.d.ts.map +1 -1
- package/dist/server/handlers/agent-capabilities.js +11 -11
- package/dist/server/handlers/agent-capabilities.js.map +1 -1
- package/dist/server/handlers/ask-sessions.d.ts.map +1 -1
- package/dist/server/handlers/ask-sessions.js +26 -145
- package/dist/server/handlers/ask-sessions.js.map +1 -1
- package/dist/server/handlers/ask.d.ts +1 -1
- package/dist/server/handlers/ask.d.ts.map +1 -1
- package/dist/server/handlers/ask.js +2 -2
- package/dist/server/handlers/ask.js.map +1 -1
- package/dist/server/handlers/changes.d.ts +1 -1
- package/dist/server/handlers/changes.d.ts.map +1 -1
- package/dist/server/handlers/changes.js +15 -27
- package/dist/server/handlers/changes.js.map +1 -1
- package/dist/server/handlers/file.d.ts.map +1 -1
- package/dist/server/handlers/file.js +48 -3
- package/dist/server/handlers/file.js.map +1 -1
- package/dist/server/handlers/graph.d.ts +5 -2
- package/dist/server/handlers/graph.d.ts.map +1 -1
- package/dist/server/handlers/graph.js +115 -6
- package/dist/server/handlers/graph.js.map +1 -1
- package/dist/server/handlers/monitoring.d.ts +0 -8
- package/dist/server/handlers/monitoring.d.ts.map +1 -1
- package/dist/server/handlers/monitoring.js +2 -25
- package/dist/server/handlers/monitoring.js.map +1 -1
- package/dist/server/handlers/sync.d.ts +0 -1
- package/dist/server/handlers/sync.d.ts.map +1 -1
- package/dist/server/handlers/sync.js +4 -35
- package/dist/server/handlers/sync.js.map +1 -1
- package/dist/server/http.d.ts +0 -4
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +5 -22
- package/dist/server/http.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/runtime.d.ts +0 -4
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +1 -1
- package/dist/server/runtime.js.map +1 -1
- package/dist/session/index.d.ts +14 -4
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +16 -9
- package/dist/session/index.js.map +1 -1
- package/dist/session/pi-coding-agent-runtime.d.ts +1 -1
- package/dist/session/pi-coding-agent-runtime.d.ts.map +1 -1
- package/dist/session/pi-coding-agent-runtime.js +1 -2
- package/dist/session/pi-coding-agent-runtime.js.map +1 -1
- package/package.json +9 -9
- package/dist/server/handlers/audit-log.d.ts +0 -12
- package/dist/server/handlers/audit-log.d.ts.map +0 -1
- package/dist/server/handlers/audit-log.js +0 -265
- package/dist/server/handlers/audit-log.js.map +0 -1
- package/dist/server/handlers/change-log-store.d.ts +0 -13
- package/dist/server/handlers/change-log-store.d.ts.map +0 -1
- package/dist/server/handlers/change-log-store.js +0 -167
- package/dist/server/handlers/change-log-store.js.map +0 -1
- package/dist/server/handlers/jsonl-log.d.ts +0 -56
- package/dist/server/handlers/jsonl-log.d.ts.map +0 -1
- package/dist/server/handlers/jsonl-log.js +0 -153
- package/dist/server/handlers/jsonl-log.js.map +0 -1
- package/dist/server/link-index.d.ts +0 -29
- package/dist/server/link-index.d.ts.map +0 -1
- package/dist/server/link-index.js +0 -137
- package/dist/server/link-index.js.map +0 -1
- package/dist/server/tree-cache.d.ts +0 -35
- package/dist/server/tree-cache.d.ts.map +0 -1
- package/dist/server/tree-cache.js +0 -0
- package/dist/server/tree-cache.js.map +0 -1
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
import type { AcpRegistry, AcpRegistryEntry } from './types.js';
|
|
12
12
|
/**
|
|
13
13
|
* Fetch the ACP registry from the CDN and merge with built-in entries.
|
|
14
|
-
*
|
|
14
|
+
* Returns the best local answer immediately, then refreshes CDN data in the
|
|
15
|
+
* background. This keeps UI surfaces from waiting on the public registry when
|
|
16
|
+
* the CDN is slow or unreachable.
|
|
15
17
|
*/
|
|
16
18
|
export declare function fetchAcpRegistry(): Promise<AcpRegistry>;
|
|
17
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/protocols/acp/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/protocols/acp/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6ChE;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAS7D;AAoGD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAe/E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
|
|
@@ -13,6 +13,7 @@ import { AGENT_DESCRIPTORS, getDescriptorDisplayName, getDescriptorDescription,
|
|
|
13
13
|
const REGISTRY_URL = 'https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json';
|
|
14
14
|
const CACHE_TTL_MS = 7 * 24 * 60 * 60 * 1000; // 7 days — registry updates very rarely
|
|
15
15
|
const FETCH_TIMEOUT_MS = 3_000;
|
|
16
|
+
const FAILED_REFRESH_BACKOFF_MS = 5 * 60 * 1000;
|
|
16
17
|
/* ── Built-in Registry (from AGENT_DESCRIPTORS) ────────────────────────── */
|
|
17
18
|
/**
|
|
18
19
|
* Generate a baseline registry from the local AGENT_DESCRIPTORS.
|
|
@@ -38,42 +39,79 @@ function getBuiltinAgents() {
|
|
|
38
39
|
}
|
|
39
40
|
/* ── Cache ─────────────────────────────────────────────────────────────── */
|
|
40
41
|
let cachedRegistry = null;
|
|
42
|
+
let refreshInFlight = null;
|
|
43
|
+
let lastFailedRefreshAt = 0;
|
|
44
|
+
let cacheGeneration = 0;
|
|
41
45
|
/* ── Public API ────────────────────────────────────────────────────────── */
|
|
42
46
|
/**
|
|
43
47
|
* Fetch the ACP registry from the CDN and merge with built-in entries.
|
|
44
|
-
*
|
|
48
|
+
* Returns the best local answer immediately, then refreshes CDN data in the
|
|
49
|
+
* background. This keeps UI surfaces from waiting on the public registry when
|
|
50
|
+
* the CDN is slow or unreachable.
|
|
45
51
|
*/
|
|
46
52
|
export async function fetchAcpRegistry() {
|
|
47
53
|
// Return cached if still valid
|
|
48
|
-
if (cachedRegistry &&
|
|
54
|
+
if (cachedRegistry && isRegistryFresh(cachedRegistry)) {
|
|
49
55
|
return cachedRegistry;
|
|
50
56
|
}
|
|
51
|
-
const
|
|
57
|
+
const fallback = cachedRegistry ?? makeRegistry(getBuiltinAgents(), 'builtin');
|
|
58
|
+
refreshRegistryInBackground();
|
|
59
|
+
return fallback;
|
|
60
|
+
}
|
|
61
|
+
async function refreshRegistryFromCdn(generation) {
|
|
52
62
|
try {
|
|
53
63
|
const res = await fetch(REGISTRY_URL, {
|
|
54
64
|
headers: { 'Accept': 'application/json' },
|
|
55
65
|
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
56
66
|
});
|
|
57
67
|
if (!res.ok) {
|
|
58
|
-
|
|
68
|
+
if (generation === cacheGeneration)
|
|
69
|
+
lastFailedRefreshAt = Date.now();
|
|
70
|
+
return null;
|
|
59
71
|
}
|
|
60
72
|
const data = await res.json();
|
|
61
73
|
// The registry JSON may have varying shapes; normalize it
|
|
62
74
|
const cdnAgents = parseRegistryEntries(data);
|
|
63
75
|
// Merge: CDN entries take precedence, built-in entries fill gaps
|
|
64
|
-
const merged = mergeRegistries(
|
|
76
|
+
const merged = mergeRegistries(getBuiltinAgents(), cdnAgents);
|
|
77
|
+
if (generation !== cacheGeneration)
|
|
78
|
+
return null;
|
|
65
79
|
cachedRegistry = {
|
|
66
80
|
version: data.version ?? '1',
|
|
67
81
|
agents: merged,
|
|
68
82
|
fetchedAt: new Date().toISOString(),
|
|
69
83
|
};
|
|
84
|
+
lastFailedRefreshAt = 0;
|
|
70
85
|
return cachedRegistry;
|
|
71
86
|
}
|
|
72
87
|
catch {
|
|
73
|
-
|
|
74
|
-
|
|
88
|
+
if (generation === cacheGeneration)
|
|
89
|
+
lastFailedRefreshAt = Date.now();
|
|
90
|
+
return null;
|
|
75
91
|
}
|
|
76
92
|
}
|
|
93
|
+
function refreshRegistryInBackground() {
|
|
94
|
+
if (refreshInFlight)
|
|
95
|
+
return;
|
|
96
|
+
if (lastFailedRefreshAt && Date.now() - lastFailedRefreshAt < FAILED_REFRESH_BACKOFF_MS)
|
|
97
|
+
return;
|
|
98
|
+
const generation = cacheGeneration;
|
|
99
|
+
refreshInFlight = refreshRegistryFromCdn(generation)
|
|
100
|
+
.finally(() => {
|
|
101
|
+
if (generation === cacheGeneration)
|
|
102
|
+
refreshInFlight = null;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function isRegistryFresh(registry) {
|
|
106
|
+
return Date.now() - new Date(registry.fetchedAt).getTime() < CACHE_TTL_MS;
|
|
107
|
+
}
|
|
108
|
+
function findEntry(agents, id) {
|
|
109
|
+
const canonical = resolveAlias(id);
|
|
110
|
+
return agents.find(a => a.id === id || a.id === canonical) ?? null;
|
|
111
|
+
}
|
|
112
|
+
async function waitForActiveRefresh() {
|
|
113
|
+
return refreshInFlight ? await refreshInFlight : null;
|
|
114
|
+
}
|
|
77
115
|
/**
|
|
78
116
|
* Merge built-in and CDN registries.
|
|
79
117
|
* - Same ID: keep built-in core fields, supplement with CDN metadata (tags, homepage, version)
|
|
@@ -121,15 +159,29 @@ export async function getAcpAgents() {
|
|
|
121
159
|
* Find a specific ACP agent by ID (supports alias resolution).
|
|
122
160
|
*/
|
|
123
161
|
export async function findAcpAgent(id) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
162
|
+
if (cachedRegistry && isRegistryFresh(cachedRegistry)) {
|
|
163
|
+
const cachedMatch = findEntry(cachedRegistry.agents, id);
|
|
164
|
+
if (cachedMatch)
|
|
165
|
+
return cachedMatch;
|
|
166
|
+
}
|
|
167
|
+
const builtinMatch = findEntry(getBuiltinAgents(), id);
|
|
168
|
+
if (builtinMatch)
|
|
169
|
+
return builtinMatch;
|
|
170
|
+
const registry = await fetchAcpRegistry();
|
|
171
|
+
const cachedMatch = findEntry(registry.agents, id);
|
|
172
|
+
if (cachedMatch)
|
|
173
|
+
return cachedMatch;
|
|
174
|
+
const refreshed = await waitForActiveRefresh();
|
|
175
|
+
return refreshed ? findEntry(refreshed.agents, id) : null;
|
|
127
176
|
}
|
|
128
177
|
/**
|
|
129
178
|
* Clear the registry cache (useful for testing).
|
|
130
179
|
*/
|
|
131
180
|
export function clearRegistryCache() {
|
|
132
181
|
cachedRegistry = null;
|
|
182
|
+
refreshInFlight = null;
|
|
183
|
+
lastFailedRefreshAt = 0;
|
|
184
|
+
cacheGeneration += 1;
|
|
133
185
|
}
|
|
134
186
|
/* ── Internal ──────────────────────────────────────────────────────────── */
|
|
135
187
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/protocols/acp/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE7H,8EAA8E;AAE9E,MAAM,YAAY,GAAG,sEAAsE,CAAC;AAC5F,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,wCAAwC;AACtF,MAAM,gBAAgB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/protocols/acp/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type AgentAuditEvent } from '../../knowledge/audit/index.js';
|
|
2
2
|
import { type MindosRequestQuery } from '../context.js';
|
|
3
3
|
import { type MindosServerResponse } from '../response.js';
|
|
4
4
|
export type AgentActivityHandlerServices = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-activity.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-activity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-activity.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-activity.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAA6B,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,QAAQ,EAAE,4BAA4B,GACrC,OAAO,CAAC,oBAAoB,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAMzE"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
+
import { LocalFileSystem } from '../../knowledge/storage/local.js';
|
|
2
|
+
import { listAgentAuditEvents } from '../../knowledge/audit/index.js';
|
|
1
3
|
import { queryValue } from '../context.js';
|
|
2
4
|
import { json, privateCacheHeaders } from '../response.js';
|
|
3
|
-
import { listAgentAuditEventsFromLog } from './audit-log.js';
|
|
4
5
|
export async function handleAgentActivity(query, services) {
|
|
5
6
|
const limit = parseLimit(queryValue(query, 'limit'));
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
catch (error) {
|
|
11
|
-
return json({ error: error instanceof Error ? error.message : String(error) }, { status: 500 });
|
|
12
|
-
}
|
|
7
|
+
const result = await listAgentAuditEvents(new LocalFileSystem(), services.mindRoot, limit);
|
|
8
|
+
return result.ok
|
|
9
|
+
? json({ events: result.value }, { headers: privateCacheHeaders(30) })
|
|
10
|
+
: json({ error: result.error.message }, { status: 500 });
|
|
13
11
|
}
|
|
14
12
|
function parseLimit(value) {
|
|
15
13
|
const parsed = value ? Number.parseInt(value, 10) : 10;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-activity.js","sourceRoot":"","sources":["../../../src/server/handlers/agent-activity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-activity.js","sourceRoot":"","sources":["../../../src/server/handlers/agent-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAwB,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,UAAU,EAA2B,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAA6B,MAAM,gBAAgB,CAAC;AAUtF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAqC,EACrC,QAAsC;IAEtC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,eAAe,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,EAAE;QACd,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;QACtE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type MindosServerResponse } from '../response.js';
|
|
2
|
-
export type AgentCapabilityMode = 'chat' | '
|
|
2
|
+
export type AgentCapabilityMode = 'chat' | 'agent';
|
|
3
3
|
export type AgentCapabilityKind = 'kb-tool' | 'pi-subagent' | 'acp-agent' | 'native-runtime' | 'mcp-tool' | 'a2a-agent' | 'mindos-headless';
|
|
4
4
|
export type AgentCapabilitySource = 'mindos' | 'pi-subagents' | 'acp' | 'native' | 'mcp' | 'a2a';
|
|
5
5
|
export type AgentCapabilityStatus = 'available' | 'missing' | 'disabled' | 'cached' | 'error';
|
|
6
|
-
export type AgentCapabilityPermissionRequired = '
|
|
6
|
+
export type AgentCapabilityPermissionRequired = 'chat' | 'agent';
|
|
7
7
|
export type AgentCapabilityInput = {
|
|
8
8
|
id?: unknown;
|
|
9
9
|
kind?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGjE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { json } from '../response.js';
|
|
2
2
|
import { redactSensitiveObject, redactSensitiveText } from '../../session/redaction.js';
|
|
3
3
|
const SOURCE_ORDER = ['kb', 'subagents', 'acp', 'native', 'mcp', 'a2a'];
|
|
4
|
-
const MODE_ORDER = ['chat', '
|
|
4
|
+
const MODE_ORDER = ['chat', 'agent'];
|
|
5
5
|
const KIND_SET = new Set([
|
|
6
6
|
'kb-tool',
|
|
7
7
|
'pi-subagent',
|
|
@@ -13,7 +13,7 @@ const KIND_SET = new Set([
|
|
|
13
13
|
]);
|
|
14
14
|
const SOURCE_SET = new Set(['mindos', 'pi-subagents', 'acp', 'native', 'mcp', 'a2a']);
|
|
15
15
|
const STATUS_SET = new Set(['available', 'missing', 'disabled', 'cached', 'error']);
|
|
16
|
-
const PERMISSION_SET = new Set(['
|
|
16
|
+
const PERMISSION_SET = new Set(['chat', 'agent']);
|
|
17
17
|
export async function handleAgentCapabilitiesGet(searchParams, services = {}) {
|
|
18
18
|
const mode = normalizeMode(searchParams.get('mode'));
|
|
19
19
|
const include = normalizeInclude(searchParams.get('include'));
|
|
@@ -53,7 +53,7 @@ export async function handleAgentCapabilitiesGet(searchParams, services = {}) {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
function normalizeMode(value) {
|
|
56
|
-
return value === 'chat' || value === '
|
|
56
|
+
return value === 'chat' || value === 'agent' ? value : 'agent';
|
|
57
57
|
}
|
|
58
58
|
function normalizeInclude(value) {
|
|
59
59
|
if (!value)
|
|
@@ -76,9 +76,11 @@ function normalizeCapability(input) {
|
|
|
76
76
|
: null;
|
|
77
77
|
if (!kind || !source || !name)
|
|
78
78
|
return null;
|
|
79
|
-
const permissionRequired =
|
|
80
|
-
?
|
|
81
|
-
: '
|
|
79
|
+
const permissionRequired = input.permissionRequired === 'readonly'
|
|
80
|
+
? 'chat'
|
|
81
|
+
: typeof input.permissionRequired === 'string' && PERMISSION_SET.has(input.permissionRequired)
|
|
82
|
+
? input.permissionRequired
|
|
83
|
+
: 'agent';
|
|
82
84
|
const availableInModes = normalizeModes(input.availableInModes, permissionRequired);
|
|
83
85
|
if (availableInModes.length === 0)
|
|
84
86
|
return null;
|
|
@@ -113,11 +115,9 @@ function normalizeCapability(input) {
|
|
|
113
115
|
};
|
|
114
116
|
}
|
|
115
117
|
function normalizeModes(value, permissionRequired) {
|
|
116
|
-
const fallback = permissionRequired === '
|
|
117
|
-
? ['chat', '
|
|
118
|
-
:
|
|
119
|
-
? ['organize', 'agent']
|
|
120
|
-
: ['agent'];
|
|
118
|
+
const fallback = permissionRequired === 'chat'
|
|
119
|
+
? ['chat', 'agent']
|
|
120
|
+
: ['agent'];
|
|
121
121
|
if (!Array.isArray(value))
|
|
122
122
|
return fallback;
|
|
123
123
|
const requested = new Set(value.filter((item) => MODE_ORDER.includes(item)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../../../src/server/handlers/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA6B,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAqFxF,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAwD,CAAC;AAC/H,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../../../src/server/handlers/agent-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-sessions.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/ask-sessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ask-sessions.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/ask-sessions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAIjE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,QAAQ,GAAE,0BAA+B,GACxC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC,CAE3C;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,0BAA+B,GACxC,oBAAoB,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBxD;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,0BAA+B,GACxC,oBAAoB,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBxD"}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync,
|
|
2
|
-
import { createHash } from 'node:crypto';
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
3
2
|
import { homedir } from 'node:os';
|
|
4
|
-
import {
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
5
4
|
import { json } from '../response.js';
|
|
6
5
|
const MAX_SESSIONS = 30;
|
|
7
|
-
// One session's serialized JSON may not exceed this; oldest messages are
|
|
8
|
-
// dropped first. Keeps a runaway conversation from growing a file unboundedly.
|
|
9
|
-
const MAX_SESSION_BYTES = 4_000_000;
|
|
10
|
-
// Filesystems commonly cap filenames at 255 bytes; hash anything longer.
|
|
11
|
-
const MAX_ENCODED_ID_CHARS = 200;
|
|
12
6
|
export function handleAskSessionsGet(services = {}) {
|
|
13
7
|
return json(readSessions(resolveStorePath(services)));
|
|
14
8
|
}
|
|
@@ -18,11 +12,16 @@ export function handleAskSessionsPost(body, services = {}) {
|
|
|
18
12
|
return json({ error: 'Invalid session payload' }, { status: 400 });
|
|
19
13
|
}
|
|
20
14
|
const storePath = resolveStorePath(services);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
const sessions = readSessions(storePath);
|
|
16
|
+
const idx = sessions.findIndex((item) => item.id === session.id);
|
|
17
|
+
if (idx >= 0) {
|
|
18
|
+
sessions[idx] = session;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
sessions.push(session);
|
|
22
|
+
}
|
|
23
|
+
sessions.sort((a, b) => getUpdatedAt(b) - getUpdatedAt(a));
|
|
24
|
+
writeSessions(storePath, sessions);
|
|
26
25
|
return json({ ok: true });
|
|
27
26
|
}
|
|
28
27
|
export function handleAskSessionsDelete(body, services = {}) {
|
|
@@ -36,58 +35,22 @@ export function handleAskSessionsDelete(body, services = {}) {
|
|
|
36
35
|
return json({ error: 'id or ids is required' }, { status: 400 });
|
|
37
36
|
}
|
|
38
37
|
const storePath = resolveStorePath(services);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
unlinkSync(sessionFilePath(storePath, id));
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// Deleting a session that does not exist is a no-op, matching the
|
|
46
|
-
// previous filter-based behavior.
|
|
47
|
-
}
|
|
48
|
-
}
|
|
38
|
+
const deleteSet = new Set(ids);
|
|
39
|
+
writeSessions(storePath, readSessions(storePath).filter((session) => !deleteSet.has(session.id)));
|
|
49
40
|
return json({ ok: true });
|
|
50
41
|
}
|
|
51
42
|
function resolveStorePath(services) {
|
|
52
43
|
return services.storePath ?? join(homedir(), '.mindos', 'sessions.json');
|
|
53
44
|
}
|
|
54
|
-
/** `~/.mindos/sessions.json` (legacy single file) -> `~/.mindos/sessions/` */
|
|
55
|
-
function sessionsDirFor(storePath) {
|
|
56
|
-
const ext = extname(storePath);
|
|
57
|
-
const stem = ext ? basename(storePath, ext) : `${basename(storePath)}.d`;
|
|
58
|
-
return join(dirname(storePath), stem);
|
|
59
|
-
}
|
|
60
|
-
function encodeSessionId(id) {
|
|
61
|
-
if (id.length === 0)
|
|
62
|
-
return '_';
|
|
63
|
-
const encoded = Buffer.from(id, 'utf-8').toString('base64url');
|
|
64
|
-
if (encoded.length <= MAX_ENCODED_ID_CHARS)
|
|
65
|
-
return encoded;
|
|
66
|
-
return `h-${createHash('sha256').update(id, 'utf-8').digest('hex')}`;
|
|
67
|
-
}
|
|
68
|
-
function sessionFilePath(storePath, id) {
|
|
69
|
-
return join(sessionsDirFor(storePath), `${encodeSessionId(id)}.json`);
|
|
70
|
-
}
|
|
71
45
|
function readSessions(storePath) {
|
|
72
46
|
try {
|
|
73
|
-
|
|
74
|
-
const dir = sessionsDirFor(storePath);
|
|
75
|
-
if (!existsSync(dir))
|
|
47
|
+
if (!existsSync(storePath))
|
|
76
48
|
return [];
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const parsed = JSON.parse(readFileSync(join(dir, name), 'utf-8'));
|
|
83
|
-
if (isValidSession(parsed))
|
|
84
|
-
sessions.push(parsed);
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
// Skip an unreadable/corrupted session file; the rest stay available.
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return sessions
|
|
49
|
+
const parsed = JSON.parse(readFileSync(storePath, 'utf-8'));
|
|
50
|
+
if (!Array.isArray(parsed))
|
|
51
|
+
return [];
|
|
52
|
+
return parsed
|
|
53
|
+
.filter(isValidSession)
|
|
91
54
|
.sort((a, b) => getUpdatedAt(b) - getUpdatedAt(a))
|
|
92
55
|
.slice(0, MAX_SESSIONS);
|
|
93
56
|
}
|
|
@@ -100,94 +63,12 @@ function readSessions(storePath) {
|
|
|
100
63
|
// to async fs APIs, a write queue must be added or concurrent upserts will
|
|
101
64
|
// clobber each other. Cross-process locking (web + mcp servers sharing the
|
|
102
65
|
// store) is intentionally out of scope — see spec-chat-session-concurrency.md.
|
|
103
|
-
function
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
writeFileSync(tmpPath, JSON.stringify(session, null, 2), 'utf-8');
|
|
110
|
-
renameSync(tmpPath, file);
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
try {
|
|
114
|
-
unlinkSync(tmpPath);
|
|
115
|
-
}
|
|
116
|
-
catch { /* ignore cleanup errors */ }
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/** Drops oldest messages (by halves) until the serialized session fits the cap. */
|
|
121
|
-
function capSessionSize(session) {
|
|
122
|
-
if (Buffer.byteLength(JSON.stringify(session), 'utf-8') <= MAX_SESSION_BYTES)
|
|
123
|
-
return session;
|
|
124
|
-
let messages = session.messages;
|
|
125
|
-
while (messages.length > 1) {
|
|
126
|
-
messages = messages.slice(Math.ceil(messages.length / 2));
|
|
127
|
-
if (Buffer.byteLength(JSON.stringify({ ...session, messages }), 'utf-8') <= MAX_SESSION_BYTES)
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
return { ...session, messages };
|
|
131
|
-
}
|
|
132
|
-
/** Keeps only the MAX_SESSIONS most recently updated session files. */
|
|
133
|
-
function pruneToMaxSessions(storePath) {
|
|
134
|
-
const dir = sessionsDirFor(storePath);
|
|
135
|
-
let names;
|
|
136
|
-
try {
|
|
137
|
-
names = readdirSync(dir).filter((name) => name.endsWith('.json'));
|
|
138
|
-
}
|
|
139
|
-
catch {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
if (names.length <= MAX_SESSIONS)
|
|
143
|
-
return;
|
|
144
|
-
const entries = names.map((name) => {
|
|
145
|
-
let updatedAt = 0;
|
|
146
|
-
let valid = false;
|
|
147
|
-
try {
|
|
148
|
-
const parsed = JSON.parse(readFileSync(join(dir, name), 'utf-8'));
|
|
149
|
-
if (isValidSession(parsed)) {
|
|
150
|
-
valid = true;
|
|
151
|
-
updatedAt = getUpdatedAt(parsed);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
// Corrupted files sort oldest so they are pruned first.
|
|
156
|
-
}
|
|
157
|
-
return { name, updatedAt, valid };
|
|
158
|
-
});
|
|
159
|
-
entries.sort((a, b) => (Number(b.valid) - Number(a.valid)) || (b.updatedAt - a.updatedAt));
|
|
160
|
-
for (const entry of entries.slice(MAX_SESSIONS)) {
|
|
161
|
-
try {
|
|
162
|
-
unlinkSync(join(dir, entry.name));
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
// Best-effort prune; a leftover file is re-pruned on the next save.
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* One-time migration of the legacy single `sessions.json` (full array rewritten
|
|
171
|
-
* on every save) into per-session files. The legacy file is removed afterwards
|
|
172
|
-
* — even when corrupted — so it can never shadow the new layout.
|
|
173
|
-
*/
|
|
174
|
-
function migrateLegacyStoreIfNeeded(storePath) {
|
|
175
|
-
if (!existsSync(storePath))
|
|
176
|
-
return;
|
|
177
|
-
try {
|
|
178
|
-
const parsed = JSON.parse(readFileSync(storePath, 'utf-8'));
|
|
179
|
-
if (Array.isArray(parsed)) {
|
|
180
|
-
for (const session of parsed.filter(isValidSession).slice(0, MAX_SESSIONS)) {
|
|
181
|
-
if (!existsSync(sessionFilePath(storePath, session.id))) {
|
|
182
|
-
writeSessionFile(storePath, capSessionSize(session));
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
catch {
|
|
188
|
-
// Corrupted legacy store: previous behavior treated it as empty.
|
|
189
|
-
}
|
|
190
|
-
rmSync(storePath, { force: true });
|
|
66
|
+
function writeSessions(storePath, sessions) {
|
|
67
|
+
mkdirSync(dirname(storePath), { recursive: true });
|
|
68
|
+
// Atomic replace: a crash mid-write must never leave a truncated sessions.json.
|
|
69
|
+
const tmpPath = `${storePath}.${process.pid}.tmp`;
|
|
70
|
+
writeFileSync(tmpPath, JSON.stringify(sessions.slice(0, MAX_SESSIONS), null, 2), 'utf-8');
|
|
71
|
+
renameSync(tmpPath, storePath);
|
|
191
72
|
}
|
|
192
73
|
function isValidSession(value) {
|
|
193
74
|
return Boolean(value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-sessions.js","sourceRoot":"","sources":["../../../src/server/handlers/ask-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ask-sessions.js","sourceRoot":"","sources":["../../../src/server/handlers/ask-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAA6B,MAAM,gBAAgB,CAAC;AAEjE,MAAM,YAAY,GAAG,EAAE,CAAC;AAsBxB,MAAM,UAAU,oBAAoB,CAClC,WAAuC,EAAE;IAEzC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAa,EACb,WAAuC,EAAE;IAEzC,MAAM,OAAO,GAAI,IAA2C,EAAE,OAAO,CAAC;IACtE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;IACjE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAa,EACb,WAAuC,EAAE;IAEzC,MAAM,OAAO,GAAG,IAA4C,CAAC;IAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;QACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnF,CAAC,CAAC,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;YACxD,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACd,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAoC;IAC5D,OAAO,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB;IACrC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAY,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM;aACV,MAAM,CAAC,cAAc,CAAC;aACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;aACjD,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,SAAS,aAAa,CAAC,SAAiB,EAAE,QAA6B;IACrE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,gFAAgF;IAChF,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAClD,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1F,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,CACZ,KAAK;WACA,OAAO,KAAK,KAAK,QAAQ;WACzB,OAAQ,KAA0B,CAAC,EAAE,KAAK,QAAQ;WAClD,KAAK,CAAC,OAAO,CAAE,KAAgC,CAAC,QAAQ,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAA0B;IAC9C,OAAO,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -25,7 +25,7 @@ export type MindosAskStreamRequest = {
|
|
|
25
25
|
content: string;
|
|
26
26
|
}>;
|
|
27
27
|
maxSteps?: number;
|
|
28
|
-
mode?: 'chat' | 'agent'
|
|
28
|
+
mode?: 'chat' | 'agent';
|
|
29
29
|
selectedRuntime?: MindosSelectedRuntime | null;
|
|
30
30
|
runtimeBinding?: MindosRuntimeSessionBinding | null;
|
|
31
31
|
selectedAcpAgent?: {
|