@debian777/kairos-mcp 4.0.0 → 4.0.1
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/.tsbuildinfo +1 -1
- package/dist/constants/builtin-search-meta.d.ts +4 -0
- package/dist/constants/builtin-search-meta.d.ts.map +1 -1
- package/dist/constants/builtin-search-meta.js +20 -0
- package/dist/constants/builtin-search-meta.js.map +1 -1
- package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002001.md +11 -6
- package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002002.md +1 -1
- package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002003.md +2 -2
- package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002004.md +5 -5
- package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002005.md +2 -2
- package/dist/mcp-apps/forward-widget-inline-script.js +1 -1
- package/dist/resources/embedded-mcp-resources.js +8 -8
- package/dist/resources/embedded-mcp-resources.js.map +1 -1
- package/dist/services/memory/activation-pattern-payload.d.ts.map +1 -1
- package/dist/services/memory/activation-pattern-payload.js +3 -0
- package/dist/services/memory/activation-pattern-payload.js.map +1 -1
- package/dist/services/memory/adapter-builder.d.ts.map +1 -1
- package/dist/services/memory/adapter-builder.js +16 -1
- package/dist/services/memory/adapter-builder.js.map +1 -1
- package/dist/services/memory/qdrant-point-to-memory.d.ts.map +1 -1
- package/dist/services/memory/qdrant-point-to-memory.js +3 -0
- package/dist/services/memory/qdrant-point-to-memory.js.map +1 -1
- package/dist/services/memory/store-adapter-default-handler.d.ts.map +1 -1
- package/dist/services/memory/store-adapter-default-handler.js +2 -1
- package/dist/services/memory/store-adapter-default-handler.js.map +1 -1
- package/dist/services/memory/store-adapter-header-handler.d.ts.map +1 -1
- package/dist/services/memory/store-adapter-header-handler.js +2 -1
- package/dist/services/memory/store-adapter-header-handler.js.map +1 -1
- package/dist/services/qdrant/memory-retrieval.d.ts.map +1 -1
- package/dist/services/qdrant/memory-retrieval.js +3 -0
- package/dist/services/qdrant/memory-retrieval.js.map +1 -1
- package/dist/tools/activate.d.ts.map +1 -1
- package/dist/tools/activate.js +3 -4
- package/dist/tools/activate.js.map +1 -1
- package/dist/tools/dump.d.ts.map +1 -1
- package/dist/tools/dump.js +19 -0
- package/dist/tools/dump.js.map +1 -1
- package/dist/tools/forward_schema.d.ts +40 -4
- package/dist/tools/forward_schema.d.ts.map +1 -1
- package/dist/tools/forward_schema.js +66 -4
- package/dist/tools/forward_schema.js.map +1 -1
- package/dist/tools/mcp-tool-input-teaching.d.ts.map +1 -1
- package/dist/tools/mcp-tool-input-teaching.js +11 -3
- package/dist/tools/mcp-tool-input-teaching.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +2 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/search_output.d.ts.map +1 -1
- package/dist/tools/search_output.js +13 -9
- package/dist/tools/search_output.js.map +1 -1
- package/dist/tools/tune-execute.d.ts +4 -0
- package/dist/tools/tune-execute.d.ts.map +1 -0
- package/dist/tools/tune-execute.js +260 -0
- package/dist/tools/tune-execute.js.map +1 -0
- package/dist/tools/tune.d.ts +1 -3
- package/dist/tools/tune.d.ts.map +1 -1
- package/dist/tools/tune.js +8 -125
- package/dist/tools/tune.js.map +1 -1
- package/dist/types/memory.d.ts +1 -0
- package/dist/types/memory.d.ts.map +1 -1
- package/dist/ui/assets/{AccountPage-0lWmC1Yi.js → AccountPage-Bin0OWw2.js} +1 -1
- package/dist/ui/assets/{ErrorAlert-CEK6Hts_.js → ErrorAlert-xId7zQnR.js} +1 -1
- package/dist/ui/assets/{HomePage-DHaSrH_k.js → HomePage-U88uxI09.js} +1 -1
- package/dist/ui/assets/{KairosPage-D3vTZLht.js → KairosPage-B8Bgfpqu.js} +1 -1
- package/dist/ui/assets/{NotFoundPage-DTGI5qLn.js → NotFoundPage-CSfAllV_.js} +1 -1
- package/dist/ui/assets/{ProtocolDetailPage-CbEkCdWc.js → ProtocolDetailPage-DkzLwH8_.js} +1 -1
- package/dist/ui/assets/{ProtocolEditPage-DBf4NQGA.js → ProtocolEditPage-DP9Sk1Fh.js} +1 -1
- package/dist/ui/assets/{RichTextEditor-MeDG49aR.js → RichTextEditor-CpNxz2Fi.js} +1 -1
- package/dist/ui/assets/{RunGuidedPage-QZ-FTCqP.js → RunGuidedPage-BVCMdEbN.js} +1 -1
- package/dist/ui/assets/{RunsPage-D8QLy4VF.js → RunsPage-1wzJYbQQ.js} +1 -1
- package/dist/ui/assets/{SkillBundlePage-CiQ_FPd0.js → SkillBundlePage-Bqzg9lj8.js} +1 -1
- package/dist/ui/assets/{SpaceSelect-D8dsuZ8v.js → SpaceSelect-C_bHSva4.js} +1 -1
- package/dist/ui/assets/{StepFlowGraph-DjRbEg_P.js → StepFlowGraph-BEV34aU4.js} +1 -1
- package/dist/ui/assets/{index-B0SMMGlX.js → index-BhOTXMY1.js} +3 -3
- package/dist/ui/assets/{tiptap-DcbFCWb9.js → tiptap-VSnrfrI4.js} +2 -2
- package/dist/ui/assets/{useProtocol-CN2rdtdQ.js → useProtocol-DMe_p3jp.js} +1 -1
- package/dist/ui/assets/vendor-DLefRYp3.js +33 -0
- package/dist/ui/index.html +3 -3
- package/package.json +3 -3
- package/dist/ui/assets/vendor-CwKUmZK2.js +0 -33
|
@@ -84,21 +84,83 @@ export const forwardSolutionSchema = z.object({
|
|
|
84
84
|
return false;
|
|
85
85
|
return true;
|
|
86
86
|
}, { message: 'The type-specific field must match the solution type' });
|
|
87
|
+
function isLayerUriWithExecutionId(uri) {
|
|
88
|
+
const match = uri.match(LAYER_URI_INPUT_REGEX);
|
|
89
|
+
return Boolean(match?.[2]);
|
|
90
|
+
}
|
|
91
|
+
/** First forward in a run: adapter URI or layer URI without `?execution_id=...` (new execution). */
|
|
92
|
+
function isStartingNewForwardRun(uri) {
|
|
93
|
+
if (ADAPTER_URI_INPUT_REGEX.test(uri)) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
const match = uri.match(LAYER_URI_INPUT_REGEX);
|
|
97
|
+
return Boolean(match?.[1] && !match[2]);
|
|
98
|
+
}
|
|
99
|
+
/** Zod issue message; teaching layer matches this string exactly. */
|
|
100
|
+
export const FORWARD_SOLUTION_FORBIDDEN_ON_START_MESSAGE = 'Omit `solution` when starting a run (`kairos://adapter/...` or `kairos://layer/{uuid}` without `?execution_id=...`). Read `contract` from the response, then call `forward` again with the layer URI including `?execution_id=...` and a `solution` matching `contract.type`.';
|
|
87
101
|
export const forwardInputSchema = z.object({
|
|
88
102
|
uri: forwardUriSchema.describe('Adapter or layer URI'),
|
|
89
103
|
solution: forwardSolutionSchema.optional().describe('Layer solution; omit to start a new forward execution')
|
|
104
|
+
}).superRefine((data, ctx) => {
|
|
105
|
+
if (isStartingNewForwardRun(data.uri) && data.solution !== undefined) {
|
|
106
|
+
ctx.addIssue({
|
|
107
|
+
code: z.ZodIssueCode.custom,
|
|
108
|
+
path: ['solution'],
|
|
109
|
+
message: FORWARD_SOLUTION_FORBIDDEN_ON_START_MESSAGE
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (isLayerUriWithExecutionId(data.uri) && !data.solution) {
|
|
113
|
+
ctx.addIssue({
|
|
114
|
+
code: z.ZodIssueCode.custom,
|
|
115
|
+
path: ['solution'],
|
|
116
|
+
message: '`solution` is required when continuing a run with `kairos://layer/...?execution_id=...`. Omit `solution` only on the first forward call of a run.'
|
|
117
|
+
});
|
|
118
|
+
}
|
|
90
119
|
});
|
|
120
|
+
const forwardWireSolutionSchema = z.object({
|
|
121
|
+
type: z
|
|
122
|
+
.enum(['tensor', 'shell', 'mcp', 'user_input', 'comment'])
|
|
123
|
+
.optional()
|
|
124
|
+
.describe('Must match contract.type for continuation calls.'),
|
|
125
|
+
nonce: z.string().optional(),
|
|
126
|
+
proof_hash: z.string().optional(),
|
|
127
|
+
tensor: z.object({
|
|
128
|
+
name: z.string().optional(),
|
|
129
|
+
value: z.any().optional()
|
|
130
|
+
}).optional(),
|
|
131
|
+
shell: z.object({
|
|
132
|
+
exit_code: z.number().optional(),
|
|
133
|
+
stdout: z.string().optional(),
|
|
134
|
+
stderr: z.string().optional(),
|
|
135
|
+
duration_seconds: z.number().optional()
|
|
136
|
+
}).optional(),
|
|
137
|
+
mcp: z.object({
|
|
138
|
+
tool_name: z.string().optional(),
|
|
139
|
+
arguments: z.any().optional(),
|
|
140
|
+
result: z.any().optional(),
|
|
141
|
+
success: z.boolean().optional()
|
|
142
|
+
}).optional(),
|
|
143
|
+
user_input: z.object({
|
|
144
|
+
confirmation: z.string().optional(),
|
|
145
|
+
timestamp: z.string().optional()
|
|
146
|
+
}).optional(),
|
|
147
|
+
comment: z.object({
|
|
148
|
+
text: z.string().optional()
|
|
149
|
+
}).optional(),
|
|
150
|
+
trace: z.string().optional()
|
|
151
|
+
}).passthrough()
|
|
152
|
+
.describe('For the first forward call in a run, omit `solution`. For every continuation call in the same execution chain (layer URI with `?execution_id=...`), provide `solution` with the sub-object that matches `type` (`tensor`, `shell`, `mcp`, `user_input`, or `comment`).');
|
|
91
153
|
/**
|
|
92
154
|
* Wire registration schema for the MCP `forward` tool. The SDK only emits `tools/list` JSON Schema
|
|
93
155
|
* for plain object Zod types; a `z.union` used for loose parsing yields empty `properties`.
|
|
94
156
|
* The handler still validates with {@link forwardInputSchema} and returns teaching payloads on failure.
|
|
95
|
-
* `uri`
|
|
96
|
-
* failing in the MCP SDK with a generic validation error.
|
|
157
|
+
* `uri` remains optional on the wire schema so `{}` and other malformed payloads reach the handler instead
|
|
158
|
+
* of failing in the MCP SDK with a generic validation error.
|
|
97
159
|
*/
|
|
98
160
|
export const forwardMcpWireInputSchema = z
|
|
99
161
|
.object({
|
|
100
|
-
uri: z.
|
|
101
|
-
solution:
|
|
162
|
+
uri: z.string().optional(),
|
|
163
|
+
solution: forwardWireSolutionSchema.optional()
|
|
102
164
|
})
|
|
103
165
|
.passthrough();
|
|
104
166
|
export const forwardOutputSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forward_schema.js","sourceRoot":"","sources":["../../src/tools/forward_schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"forward_schema.js","sourceRoot":"","sources":["../../src/tools/forward_schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool-input-teaching.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-tool-input-teaching.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-tool-input-teaching.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-tool-input-teaching.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGpC,eAAO,MAAM,sBAAsB,EAAG,oBAA6B,CAAC;AAEpE,MAAM,MAAM,8BAA8B,GACtC,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAuJb,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,8BAA8B,EACpC,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBzB;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,8BAA8B,EACpC,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,OAAO,GACX;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAK9D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FORWARD_SOLUTION_FORBIDDEN_ON_START_MESSAGE } from './forward_schema.js';
|
|
1
2
|
export const MCP_INVALID_TOOL_INPUT = 'INVALID_TOOL_INPUT';
|
|
2
3
|
function issuePaths(error) {
|
|
3
4
|
return error.issues.map((i) => (i.path.length ? i.path.join('.') : '(root)'));
|
|
@@ -24,25 +25,32 @@ function teachingForward(error) {
|
|
|
24
25
|
const paths = issuePaths(error);
|
|
25
26
|
const uriProblem = hasTopLevelField(error, 'uri');
|
|
26
27
|
const solutionProblem = hasTopLevelField(error, 'solution') || paths.some((p) => p.startsWith('solution'));
|
|
28
|
+
const forbiddenSolutionOnStart = error.issues.some((i) => i.message === FORWARD_SOLUTION_FORBIDDEN_ON_START_MESSAGE);
|
|
27
29
|
let detail;
|
|
28
30
|
if (uriProblem) {
|
|
29
31
|
detail =
|
|
30
|
-
'The `uri` argument is required and must be a JSON string (quoted). After activate, copy `choices[].uri` from the row you picked. First run: adapter URI
|
|
32
|
+
'The `uri` argument is required and must be a JSON string (quoted). After activate, copy `choices[].uri` from the row you picked. First forward call of a run: use adapter URI and omit `solution`. Continuation calls in that same execution chain (layer URI with `?execution_id=...`): include `solution` matching `contract.type`.';
|
|
33
|
+
}
|
|
34
|
+
else if (solutionProblem && forbiddenSolutionOnStart) {
|
|
35
|
+
detail = FORWARD_SOLUTION_FORBIDDEN_ON_START_MESSAGE;
|
|
31
36
|
}
|
|
32
37
|
else if (solutionProblem) {
|
|
33
38
|
detail =
|
|
34
|
-
'`solution` must match the current `contract.type` (tensor, shell, mcp, user_input, comment) and include the matching payload object. Omit `solution` only on the first call
|
|
39
|
+
'`solution` must match the current `contract.type` (tensor, shell, mcp, user_input, comment) and include the matching payload object (`solution.mcp`, `solution.comment`, and so on). Omit `solution` only on the first forward call of a run, not on continuation calls in the same execution chain.';
|
|
35
40
|
}
|
|
36
41
|
else {
|
|
37
42
|
detail =
|
|
38
43
|
'See the forward tool description: pass `uri` (adapter or layer) and optional `solution` shaped for the active contract.';
|
|
39
44
|
}
|
|
45
|
+
const next_action = forbiddenSolutionOnStart
|
|
46
|
+
? 'Retry forward with {"uri":"<adapter or layer uri from activate/forward>"} only — omit `solution`. After you receive `contract` and `execution_id`, submit `solution` on the next call using the layer URI with `?execution_id=...`.'
|
|
47
|
+
: 'Retry forward with valid JSON arguments, e.g. {"uri":"kairos://adapter/<uuid>"} with the exact URI string from activate or the prior forward response.';
|
|
40
48
|
return {
|
|
41
49
|
error: MCP_INVALID_TOOL_INPUT,
|
|
42
50
|
tool: 'forward',
|
|
43
51
|
must_obey: true,
|
|
44
52
|
message: `Input validation error: Invalid arguments for tool forward. ${detail}`,
|
|
45
|
-
next_action
|
|
53
|
+
next_action,
|
|
46
54
|
invalid_fields: paths
|
|
47
55
|
};
|
|
48
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool-input-teaching.js","sourceRoot":"","sources":["../../src/tools/mcp-tool-input-teaching.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-tool-input-teaching.js","sourceRoot":"","sources":["../../src/tools/mcp-tool-input-teaching.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAkBnE,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAkBnE,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA+J7F;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CAAE,GACpF,OAAO,CAAC,YAAY,CAAC,CAwDvB"}
|
package/dist/tools/search.js
CHANGED
|
@@ -5,12 +5,12 @@ import { createResults, generateUnifiedOutput } from './search_output.js';
|
|
|
5
5
|
import { searchOutputSchema } from './search_schema.js';
|
|
6
6
|
import { logSearchAnomaly } from '../services/embedding/audit.js';
|
|
7
7
|
import { structuredLogger } from '../utils/structured-logger.js';
|
|
8
|
-
import { KAIROS_CREATION_PROTOCOL_UUID, KAIROS_REFINING_PROTOCOL_UUID } from '../constants/builtin-search-meta.js';
|
|
8
|
+
import { KAIROS_CREATION_FOOTER_NEXT_ACTION, KAIROS_CREATION_PROTOCOL_UUID, KAIROS_REFINING_PROTOCOL_UUID } from '../constants/builtin-search-meta.js';
|
|
9
9
|
import { buildAdapterUri } from './kairos-uri.js';
|
|
10
10
|
const CREATION_PROTOCOL_URI = buildAdapterUri(KAIROS_CREATION_PROTOCOL_UUID);
|
|
11
11
|
const REFINING_PROTOCOL_URI = buildAdapterUri(KAIROS_REFINING_PROTOCOL_UUID);
|
|
12
12
|
const REFINING_NEXT_ACTION = `call forward with ${REFINING_PROTOCOL_URI} to execute the refine adapter`;
|
|
13
|
-
const CREATE_NEXT_ACTION =
|
|
13
|
+
const CREATE_NEXT_ACTION = KAIROS_CREATION_FOOTER_NEXT_ACTION;
|
|
14
14
|
/** Strip built-in protocol URIs and UUIDs from query so they are not used for search or cache key. */
|
|
15
15
|
function queryForSearch(query) {
|
|
16
16
|
let q = (query || '').trim();
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAuC,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,qBAAqB,GAAG,eAAe,CAAC,6BAA6B,CAAC,CAAC;AAC7E,MAAM,qBAAqB,GAAG,eAAe,CAAC,6BAA6B,CAAC,CAAC;AAC7E,MAAM,oBAAoB,GAAG,qBAAqB,qBAAqB,gCAAgC,CAAC;AACxG,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search_output.d.ts","sourceRoot":"","sources":["../../src/tools/search_output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"search_output.d.ts","sourceRoot":"","sources":["../../src/tools/search_output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAYnE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,+EAA+E;IAC/E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKnF;AAED,wBAAgB,aAAa,CAC3B,cAAc,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACxD,cAAc,EAAE,MAAM,GACrB,SAAS,EAAE,CAYb;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAMzC;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,SAAS,EAAE,EACpB,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CA4EjG"}
|
|
@@ -8,6 +8,7 @@ import { buildAdapterUri } from './kairos-uri.js';
|
|
|
8
8
|
import { spaceIdToDisplayName } from '../utils/space-display.js';
|
|
9
9
|
import { getSpaceContextFromStorage } from '../utils/tenant-context.js';
|
|
10
10
|
import { KAIROS_APP_SPACE_ID } from '../config.js';
|
|
11
|
+
import { KAIROS_CREATION_FOOTER_LABEL, KAIROS_REFINING_FOOTER_LABEL } from '../constants/builtin-search-meta.js';
|
|
11
12
|
const PUBLIC_SCORE_PIVOT = 0.5;
|
|
12
13
|
export function normalizePublicSearchScore(score) {
|
|
13
14
|
if (typeof score !== 'number' || !Number.isFinite(score) || score <= 0) {
|
|
@@ -56,13 +57,12 @@ export async function generateUnifiedOutput(results, qdrantService, opts) {
|
|
|
56
57
|
space_name: spaceIdToDisplayName(sid, spaceNamesById)
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
if (matchCount !== 1 || singleMatchNotRelevant) {
|
|
60
|
+
const includeMetaFooter = true;
|
|
61
|
+
if (includeMetaFooter) {
|
|
62
62
|
choices.push({
|
|
63
63
|
uri: refiningUri,
|
|
64
|
-
label:
|
|
65
|
-
adapter_name:
|
|
64
|
+
label: KAIROS_REFINING_FOOTER_LABEL,
|
|
65
|
+
adapter_name: KAIROS_REFINING_FOOTER_LABEL,
|
|
66
66
|
score: null,
|
|
67
67
|
role: 'refine',
|
|
68
68
|
tags: ['meta', 'refine'],
|
|
@@ -71,8 +71,8 @@ export async function generateUnifiedOutput(results, qdrantService, opts) {
|
|
|
71
71
|
space_name: null
|
|
72
72
|
}, {
|
|
73
73
|
uri: createUri,
|
|
74
|
-
label:
|
|
75
|
-
adapter_name:
|
|
74
|
+
label: KAIROS_CREATION_FOOTER_LABEL,
|
|
75
|
+
adapter_name: KAIROS_CREATION_FOOTER_LABEL,
|
|
76
76
|
score: null,
|
|
77
77
|
role: 'create',
|
|
78
78
|
tags: ['meta', 'creation'],
|
|
@@ -84,7 +84,11 @@ export async function generateUnifiedOutput(results, qdrantService, opts) {
|
|
|
84
84
|
let message;
|
|
85
85
|
let nextAction;
|
|
86
86
|
if (matchCount === 0) {
|
|
87
|
-
message = 'No existing adapter matched your query. Refine your search or create a new one.';
|
|
87
|
+
message = 'No existing adapter/protocol matched your query. Refine your search or create a new one.';
|
|
88
|
+
nextAction = "Pick one choice and follow that choice's next_action.";
|
|
89
|
+
}
|
|
90
|
+
else if (matchCount === 1 && includeMetaFooter) {
|
|
91
|
+
message = 'Found 1 match. You can run it, refine your search, or create a new adapter/protocol.';
|
|
88
92
|
nextAction = "Pick one choice and follow that choice's next_action.";
|
|
89
93
|
}
|
|
90
94
|
else if (matchCount === 1) {
|
|
@@ -94,7 +98,7 @@ export async function generateUnifiedOutput(results, qdrantService, opts) {
|
|
|
94
98
|
else {
|
|
95
99
|
const topMatch = choices[0];
|
|
96
100
|
const confidencePercent = Math.round((topMatch.score || 0) * 100);
|
|
97
|
-
message = `Found ${matchCount} matches (top confidence: ${confidencePercent}%). Choose one, refine your search, or create a new adapter.`;
|
|
101
|
+
message = `Found ${matchCount} matches (top confidence: ${confidencePercent}%). Choose one, refine your search, or create a new adapter/protocol.`;
|
|
98
102
|
nextAction = "Pick one choice and follow that choice's next_action.";
|
|
99
103
|
}
|
|
100
104
|
return { must_obey: true, message, next_action: nextAction, choices };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search_output.js","sourceRoot":"","sources":["../../src/tools/search_output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5I,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"search_output.js","sourceRoot":"","sources":["../../src/tools/search_output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { QdrantService } from '../services/qdrant/service.js';
|
|
2
|
+
import { type TuneInput, type TuneOutput } from './tune_schema.js';
|
|
3
|
+
export declare function executeTune(qdrantService: QdrantService, input: TuneInput): Promise<TuneOutput>;
|
|
4
|
+
//# sourceMappingURL=tune-execute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tune-execute.d.ts","sourceRoot":"","sources":["../../src/tools/tune-execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAQnE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8KnE,wBAAsB,WAAW,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAmIrG"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { getSpaceContextFromStorage } from '../utils/tenant-context.js';
|
|
2
|
+
import { resolveSpaceParamForContext } from '../utils/resolve-space-param.js';
|
|
3
|
+
import { CodeBlockProcessor } from '../services/code-block-processor.js';
|
|
4
|
+
import { IDGenerator } from '../services/id-generator.js';
|
|
5
|
+
import { buildHeaderMemoryAdapter } from '../services/memory/adapter-builder.js';
|
|
6
|
+
import { parseFrontmatter } from '../utils/frontmatter.js';
|
|
7
|
+
import { executeUpdate } from './update.js';
|
|
8
|
+
import { parseKairosUri, buildLayerUri } from './kairos-uri.js';
|
|
9
|
+
import { buildTuneResultMessage } from './tune-messages.js';
|
|
10
|
+
function sortByLayerIndex(layers) {
|
|
11
|
+
return [...layers].sort((left, right) => {
|
|
12
|
+
const li = typeof left.payload?.adapter?.layer_index === 'number'
|
|
13
|
+
? left.payload.adapter.layer_index
|
|
14
|
+
: Number.MAX_SAFE_INTEGER;
|
|
15
|
+
const ri = typeof right.payload?.adapter?.layer_index === 'number'
|
|
16
|
+
? right.payload.adapter.layer_index
|
|
17
|
+
: Number.MAX_SAFE_INTEGER;
|
|
18
|
+
return li - ri;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function selectAdapterLayerSet(layers, preferredSpaceId) {
|
|
22
|
+
if (layers.length <= 1) {
|
|
23
|
+
return sortByLayerIndex(layers);
|
|
24
|
+
}
|
|
25
|
+
const groupedBySpace = new Map();
|
|
26
|
+
for (const layer of layers) {
|
|
27
|
+
const sid = typeof layer.payload?.space_id === 'string' ? layer.payload.space_id.trim() : '';
|
|
28
|
+
const key = sid.length > 0 ? sid : '__unknown__';
|
|
29
|
+
groupedBySpace.set(key, [...(groupedBySpace.get(key) ?? []), layer]);
|
|
30
|
+
}
|
|
31
|
+
if (groupedBySpace.size <= 1) {
|
|
32
|
+
return sortByLayerIndex(layers);
|
|
33
|
+
}
|
|
34
|
+
const ctx = getSpaceContextFromStorage();
|
|
35
|
+
const candidateSpaceIds = [preferredSpaceId, ctx.defaultWriteSpaceId].filter((value) => typeof value === 'string' && value.trim().length > 0);
|
|
36
|
+
for (const candidate of candidateSpaceIds) {
|
|
37
|
+
const selected = groupedBySpace.get(candidate.trim());
|
|
38
|
+
if (selected && selected.length > 0) {
|
|
39
|
+
return sortByLayerIndex(selected);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const fallbackSpaceId = [...groupedBySpace.keys()].sort((a, b) => a.localeCompare(b))[0];
|
|
43
|
+
return sortByLayerIndex(groupedBySpace.get(fallbackSpaceId) ?? layers);
|
|
44
|
+
}
|
|
45
|
+
async function normalizeTuneUri(qdrantService, uri, preferredSpaceId) {
|
|
46
|
+
const parsed = parseKairosUri(uri);
|
|
47
|
+
if (parsed.kind === 'layer') {
|
|
48
|
+
return `kairos://mem/${parsed.id}`;
|
|
49
|
+
}
|
|
50
|
+
const layers = selectAdapterLayerSet(await qdrantService.getAdapterLayers(parsed.id), preferredSpaceId);
|
|
51
|
+
const head = layers[0]?.uuid ?? parsed.id;
|
|
52
|
+
return `kairos://mem/${head}`;
|
|
53
|
+
}
|
|
54
|
+
async function collectLayerMemoryUuidsForTune(qdrantService, uri, preferredSpaceId) {
|
|
55
|
+
const parsed = parseKairosUri(uri);
|
|
56
|
+
if (parsed.kind === 'layer') {
|
|
57
|
+
return [parsed.id];
|
|
58
|
+
}
|
|
59
|
+
const layers = selectAdapterLayerSet(await qdrantService.getAdapterLayers(parsed.id), preferredSpaceId);
|
|
60
|
+
return layers.map((l) => l.uuid);
|
|
61
|
+
}
|
|
62
|
+
async function reassignAdapterLayersToSpace(qdrantService, originalUri, targetSpaceId) {
|
|
63
|
+
const layerUuids = await collectLayerMemoryUuidsForTune(qdrantService, originalUri);
|
|
64
|
+
for (const uuid of layerUuids) {
|
|
65
|
+
await qdrantService.updateMemory(uuid, { space_id: targetSpaceId });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async function tuneAdapterMarkdownInPlace(qdrantService, adapterUri, markdownDoc) {
|
|
69
|
+
const parsed = parseKairosUri(adapterUri);
|
|
70
|
+
if (parsed.kind !== 'adapter') {
|
|
71
|
+
throw new Error('tuneAdapterMarkdownInPlace requires an adapter URI');
|
|
72
|
+
}
|
|
73
|
+
const existingLayers = selectAdapterLayerSet(await qdrantService.getAdapterLayers(parsed.id));
|
|
74
|
+
if (existingLayers.length === 0) {
|
|
75
|
+
throw new Error(`Adapter not found: ${adapterUri}`);
|
|
76
|
+
}
|
|
77
|
+
const currentModel = existingLayers[0]?.payload?.llm_model_id;
|
|
78
|
+
const llmModelId = typeof currentModel === 'string' && currentModel.trim().length > 0 ? currentModel.trim() : 'tune-in-place';
|
|
79
|
+
const parsedDoc = parseFrontmatter(markdownDoc);
|
|
80
|
+
const adapterMarkdown = parsedDoc.body.length > 0 ? parsedDoc.body : markdownDoc;
|
|
81
|
+
const codeBlockProcessor = new CodeBlockProcessor();
|
|
82
|
+
const nextLayers = buildHeaderMemoryAdapter(adapterMarkdown, llmModelId, new Date(), codeBlockProcessor);
|
|
83
|
+
if (nextLayers.length === 0) {
|
|
84
|
+
throw new Error('Invalid adapter markdown: expected H1 with at least one layer');
|
|
85
|
+
}
|
|
86
|
+
const nextAdapterName = nextLayers[0]?.adapter?.name?.trim() ?? '';
|
|
87
|
+
if (!nextAdapterName) {
|
|
88
|
+
throw new Error('Invalid adapter markdown: missing adapter title (H1)');
|
|
89
|
+
}
|
|
90
|
+
const expectedAdapterId = IDGenerator.generateAdapterUUIDv5(nextAdapterName);
|
|
91
|
+
if (expectedAdapterId !== parsed.id) {
|
|
92
|
+
throw new Error(`Adapter title "${nextAdapterName}" resolves to ${expectedAdapterId}, but tune target is ${parsed.id}. Keep the H1 unchanged when tuning by adapter URI.`);
|
|
93
|
+
}
|
|
94
|
+
if (nextLayers.length !== existingLayers.length) {
|
|
95
|
+
throw new Error(`Layer count mismatch: adapter has ${existingLayers.length} layers, markdown has ${nextLayers.length}. Use train(force_update=true) for structural adapter changes.`);
|
|
96
|
+
}
|
|
97
|
+
const frontmatterVersion = typeof parsedDoc.version === 'string' && parsedDoc.version.trim().length > 0 ? parsedDoc.version.trim() : undefined;
|
|
98
|
+
if (frontmatterVersion) {
|
|
99
|
+
for (const memory of nextLayers) {
|
|
100
|
+
if (memory.adapter) {
|
|
101
|
+
memory.adapter.protocol_version = frontmatterVersion;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
for (let i = 0; i < existingLayers.length; i++) {
|
|
106
|
+
const existing = existingLayers[i];
|
|
107
|
+
const next = nextLayers[i];
|
|
108
|
+
const existingAdapter = existing.payload?.adapter && typeof existing.payload.adapter === 'object'
|
|
109
|
+
? existing.payload.adapter
|
|
110
|
+
: {};
|
|
111
|
+
const nextAdapter = next.adapter;
|
|
112
|
+
const adapterUpdate = {
|
|
113
|
+
...existingAdapter,
|
|
114
|
+
id: parsed.id,
|
|
115
|
+
name: nextAdapter?.name ?? existingAdapter['name'],
|
|
116
|
+
layer_index: i + 1,
|
|
117
|
+
layer_count: nextLayers.length,
|
|
118
|
+
activation_patterns: Array.isArray(nextAdapter?.activation_patterns) ? nextAdapter.activation_patterns : [],
|
|
119
|
+
reward_signal: typeof nextAdapter?.reward_signal === 'string' ? nextAdapter.reward_signal : ''
|
|
120
|
+
};
|
|
121
|
+
if (typeof nextAdapter?.protocol_version === 'string' && nextAdapter.protocol_version.trim().length > 0) {
|
|
122
|
+
adapterUpdate['protocol_version'] = nextAdapter.protocol_version.trim();
|
|
123
|
+
}
|
|
124
|
+
await qdrantService.updateMemory(existing.uuid, {
|
|
125
|
+
label: next.label,
|
|
126
|
+
text: next.text,
|
|
127
|
+
tags: next.tags,
|
|
128
|
+
adapter: adapterUpdate,
|
|
129
|
+
inference_contract: next.inference_contract ?? null
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return buildLayerUri(existingLayers[0].uuid);
|
|
133
|
+
}
|
|
134
|
+
export async function executeTune(qdrantService, input) {
|
|
135
|
+
const ctx = getSpaceContextFromStorage();
|
|
136
|
+
const rawSpace = typeof input.space === 'string' ? input.space.trim() : '';
|
|
137
|
+
let targetSpaceId;
|
|
138
|
+
if (rawSpace.length > 0) {
|
|
139
|
+
const r = resolveSpaceParamForContext(ctx, rawSpace);
|
|
140
|
+
if (!r.ok) {
|
|
141
|
+
throw new Error(r.message);
|
|
142
|
+
}
|
|
143
|
+
targetSpaceId = r.spaceId;
|
|
144
|
+
if (!ctx.allowedSpaceIds.includes(targetSpaceId)) {
|
|
145
|
+
throw new Error('Target space is not in your allowed spaces');
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const hasMarkdown = Array.isArray(input.markdown_doc) &&
|
|
149
|
+
input.markdown_doc.some((s) => typeof s === 'string' && s.trim().length > 0);
|
|
150
|
+
const hasUpdates = input.updates && Object.keys(input.updates).length > 0;
|
|
151
|
+
const hasContent = Boolean(hasMarkdown || hasUpdates);
|
|
152
|
+
if (!hasContent && !targetSpaceId) {
|
|
153
|
+
throw new Error('Provide markdown_doc, updates, or space');
|
|
154
|
+
}
|
|
155
|
+
if (!hasContent && targetSpaceId) {
|
|
156
|
+
const results = [];
|
|
157
|
+
let total_updated = 0;
|
|
158
|
+
let total_failed = 0;
|
|
159
|
+
for (const originalUri of input.uris) {
|
|
160
|
+
try {
|
|
161
|
+
const layerUuids = await collectLayerMemoryUuidsForTune(qdrantService, originalUri);
|
|
162
|
+
for (const uuid of layerUuids) {
|
|
163
|
+
await qdrantService.updateMemory(uuid, { space_id: targetSpaceId });
|
|
164
|
+
}
|
|
165
|
+
const head = layerUuids[0];
|
|
166
|
+
results.push({
|
|
167
|
+
uri: head ? buildLayerUri(head) : originalUri,
|
|
168
|
+
status: 'updated',
|
|
169
|
+
message: 'Adapter layers reassigned to target space'
|
|
170
|
+
});
|
|
171
|
+
total_updated++;
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
175
|
+
results.push({
|
|
176
|
+
uri: originalUri,
|
|
177
|
+
status: 'error',
|
|
178
|
+
message: `Space move failed: ${errorMessage}`
|
|
179
|
+
});
|
|
180
|
+
total_failed++;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return { results, total_updated, total_failed };
|
|
184
|
+
}
|
|
185
|
+
const results = [];
|
|
186
|
+
let total_updated = 0;
|
|
187
|
+
let total_failed = 0;
|
|
188
|
+
for (let i = 0; i < input.uris.length; i++) {
|
|
189
|
+
const originalUri = input.uris[i];
|
|
190
|
+
const markdownAtIndex = Array.isArray(input.markdown_doc) ? input.markdown_doc[i] : undefined;
|
|
191
|
+
const parsedUri = parseKairosUri(originalUri);
|
|
192
|
+
try {
|
|
193
|
+
if (parsedUri.kind === 'adapter' && typeof markdownAtIndex === 'string' && markdownAtIndex.trim().length > 0) {
|
|
194
|
+
const layerUri = await tuneAdapterMarkdownInPlace(qdrantService, originalUri, markdownAtIndex);
|
|
195
|
+
results.push({
|
|
196
|
+
uri: layerUri,
|
|
197
|
+
status: 'updated',
|
|
198
|
+
message: `Adapter layer ${layerUri} updated successfully`
|
|
199
|
+
});
|
|
200
|
+
total_updated++;
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const normalizedUri = await normalizeTuneUri(qdrantService, originalUri);
|
|
204
|
+
const perUriUpdate = await executeUpdate(qdrantService, {
|
|
205
|
+
uris: [normalizedUri],
|
|
206
|
+
markdown_doc: typeof markdownAtIndex === 'string' ? [markdownAtIndex] : undefined,
|
|
207
|
+
updates: input.updates
|
|
208
|
+
});
|
|
209
|
+
const entry = perUriUpdate.results[0];
|
|
210
|
+
const layerUri = buildLayerUri((entry?.uri ?? normalizedUri).split('/').pop() ?? '');
|
|
211
|
+
const row = {
|
|
212
|
+
uri: layerUri,
|
|
213
|
+
status: entry?.status ?? 'error',
|
|
214
|
+
message: buildTuneResultMessage(entry ?? { status: 'error', message: 'Failed to update memory: Unknown update failure' }, layerUri)
|
|
215
|
+
};
|
|
216
|
+
results.push(row);
|
|
217
|
+
if (row.status === 'updated')
|
|
218
|
+
total_updated++;
|
|
219
|
+
else
|
|
220
|
+
total_failed++;
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
224
|
+
results.push({
|
|
225
|
+
uri: originalUri,
|
|
226
|
+
status: 'error',
|
|
227
|
+
message: `Failed to update adapter layer: ${errorMessage}`
|
|
228
|
+
});
|
|
229
|
+
total_failed++;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (targetSpaceId) {
|
|
233
|
+
for (let i = 0; i < input.uris.length; i++) {
|
|
234
|
+
const originalUri = input.uris[i];
|
|
235
|
+
const row = results[i];
|
|
236
|
+
if (!row || row.status !== 'updated')
|
|
237
|
+
continue;
|
|
238
|
+
try {
|
|
239
|
+
await reassignAdapterLayersToSpace(qdrantService, originalUri, targetSpaceId);
|
|
240
|
+
row.message = `${row.message} Reassigned to target space.`;
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
244
|
+
results[i] = {
|
|
245
|
+
uri: row.uri,
|
|
246
|
+
status: 'error',
|
|
247
|
+
message: `Content updated but space reassignment failed: ${errorMessage}`
|
|
248
|
+
};
|
|
249
|
+
total_failed++;
|
|
250
|
+
total_updated--;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
results,
|
|
256
|
+
total_updated,
|
|
257
|
+
total_failed
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=tune-execute.js.map
|