negotium 0.22.4 → 0.22.6
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-helpers.js +408 -1301
- package/dist/agent-helpers.js.map +6 -6
- package/dist/background-bash.js +12 -12
- package/dist/background-bash.js.map +2 -2
- package/dist/browser-runtime.js +42 -44
- package/dist/browser-runtime.js.map +2 -2
- package/dist/canonical-mcp-bridge.js +8 -9
- package/dist/canonical-mcp-bridge.js.map +1 -1
- package/dist/{chunk-y4tyc603.js → chunk-1e0nxy7p.js} +13 -13
- package/dist/chunk-1e0nxy7p.js.map +10 -0
- package/dist/{chunk-9zn0bkc9.js → chunk-1mba9m1j.js} +77 -116
- package/dist/{chunk-9zn0bkc9.js.map → chunk-1mba9m1j.js.map} +2 -2
- package/dist/{chunk-rwj7x5pg.js → chunk-9a50csg6.js} +123 -121
- package/dist/{chunk-rwj7x5pg.js.map → chunk-9a50csg6.js.map} +7 -7
- package/dist/chunk-bnyvxss3.js +77 -0
- package/dist/{chunk-q5djsg78.js.map → chunk-bnyvxss3.js.map} +1 -1
- package/dist/{chunk-0jtan6fd.js → chunk-e59kzyvy.js} +4 -5
- package/dist/{chunk-0jtan6fd.js.map → chunk-e59kzyvy.js.map} +2 -2
- package/dist/{chunk-f7p0h1gs.js → chunk-ww8a4ej4.js} +5 -5
- package/dist/{chunk-f7p0h1gs.js.map → chunk-ww8a4ej4.js.map} +2 -2
- package/dist/hosted-agent.js +127 -124
- package/dist/hosted-agent.js.map +4 -4
- package/dist/main.js +3327 -5138
- package/dist/main.js.map +10 -10
- package/dist/mcp-catalog.js +4 -4
- package/dist/mcp-catalog.js.map +1 -1
- package/dist/mcp-factories.js +630 -1515
- package/dist/mcp-factories.js.map +6 -6
- package/dist/mcp-servers.js +5 -5
- package/dist/mcp-servers.js.map +1 -1
- package/dist/media.js +3 -3
- package/dist/media.js.map +1 -1
- package/dist/outbox.js +15 -15
- package/dist/outbox.js.map +2 -2
- package/dist/platform-runtime.js +7 -7
- package/dist/platform-runtime.js.map +1 -1
- package/dist/prompts.js +6 -6
- package/dist/prompts.js.map +2 -2
- package/dist/query-runtime.js +16 -18
- package/dist/query-runtime.js.map +2 -2
- package/dist/registry.js +19 -20
- package/dist/registry.js.map +2 -2
- package/dist/rollout.js +41 -41
- package/dist/rollout.js.map +2 -2
- package/dist/runtime/src/agents/rollout/claude.ts +6 -1
- package/dist/runtime/src/application/submit-runtime-gateway-turn.ts +6 -4
- package/dist/runtime/src/node-host.ts +1 -0
- package/dist/runtime/src/platform/mcp-config.ts +60 -28
- package/dist/runtime/src/runtime/turn-runner.ts +9 -4
- package/dist/runtime/src/topics/update.ts +20 -0
- package/dist/runtime/src/version.ts +1 -1
- package/dist/runtime-gateway.js +12 -12
- package/dist/runtime-gateway.js.map +2 -2
- package/dist/runtime-helpers.js +52 -54
- package/dist/runtime-helpers.js.map +2 -2
- package/dist/sqlite.js +3 -5
- package/dist/sqlite.js.map +2 -2
- package/dist/storage.js +4831 -4802
- package/dist/storage.js.map +2 -2
- package/dist/types/packages/core/src/agents/rollout/claude.d.ts +5 -0
- package/dist/types/packages/core/src/platform/mcp-config.d.ts +8 -0
- package/dist/types/packages/core/src/runtime/turn-runner.d.ts +6 -2
- package/dist/types/packages/core/src/version.d.ts +1 -1
- package/dist/vault.js +20 -22
- package/dist/vault.js.map +2 -2
- package/package.json +1 -1
- package/dist/chunk-2mx7fq49.js +0 -6
- package/dist/chunk-2mx7fq49.js.map +0 -9
- package/dist/chunk-q5djsg78.js +0 -200
- package/dist/chunk-y4tyc603.js.map +0 -10
package/dist/registry.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import {
|
|
3
|
-
encodeClaudeCwd,
|
|
4
|
-
writeClaudeRollout
|
|
5
|
-
} from "./chunk-y4tyc603.js";
|
|
6
2
|
import {
|
|
7
3
|
CLAUDE_EFFORT_VALUES,
|
|
8
4
|
CODEX_EFFORT_VALUES,
|
|
9
5
|
MAESTRO_EFFORT_VALUES,
|
|
10
|
-
|
|
11
|
-
MODEL_OPUS,
|
|
6
|
+
logger,
|
|
12
7
|
MODEL_SONNET,
|
|
13
|
-
|
|
8
|
+
MODEL_OPUS,
|
|
9
|
+
MODEL_FABLE,
|
|
14
10
|
assertUuidLike,
|
|
15
11
|
ensureCwdExists,
|
|
16
|
-
|
|
12
|
+
extractChatPairs2,
|
|
17
13
|
hostedCodexHomePath,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
writeCodexRollout2
|
|
15
|
+
} from "./chunk-9a50csg6.js";
|
|
16
|
+
import {
|
|
17
|
+
encodeClaudeCwd2,
|
|
18
|
+
writeClaudeRollout2
|
|
19
|
+
} from "./chunk-1e0nxy7p.js";
|
|
21
20
|
|
|
22
21
|
// ../../packages/core/src/agents/claude-registry.ts
|
|
23
22
|
import { existsSync, mkdirSync, readdirSync, renameSync, unlinkSync } from "fs";
|
|
@@ -50,7 +49,7 @@ var claudeRegistry = {
|
|
|
50
49
|
};
|
|
51
50
|
var claudeRegistryOperations = {
|
|
52
51
|
writeRollout(opts) {
|
|
53
|
-
const { sessionId, rolloutPath } =
|
|
52
|
+
const { sessionId, rolloutPath } = writeClaudeRollout2({
|
|
54
53
|
cwd: opts.cwd,
|
|
55
54
|
entries: opts.entries,
|
|
56
55
|
model: claudeRegistry.expandModelAlias(opts.model ?? claudeRegistry.defaultModel),
|
|
@@ -64,7 +63,7 @@ var claudeRegistryOperations = {
|
|
|
64
63
|
...title ? { title } : {}
|
|
65
64
|
});
|
|
66
65
|
const projectsRoot = join(homedir(), ".claude", "projects");
|
|
67
|
-
const destDir = join(projectsRoot,
|
|
66
|
+
const destDir = join(projectsRoot, encodeClaudeCwd2(cwd));
|
|
68
67
|
const destPath = join(destDir, `${result.sessionId}.jsonl`);
|
|
69
68
|
if (!existsSync(destPath)) {
|
|
70
69
|
const sourcePath = readdirSync(projectsRoot).map((d) => join(projectsRoot, d, `${result.sessionId}.jsonl`)).find((p) => existsSync(p));
|
|
@@ -80,7 +79,7 @@ var claudeRegistryOperations = {
|
|
|
80
79
|
};
|
|
81
80
|
},
|
|
82
81
|
async cleanupRollouts({ cwd, sessionIds }) {
|
|
83
|
-
const projectsDir = join(homedir(), ".claude", "projects",
|
|
82
|
+
const projectsDir = join(homedir(), ".claude", "projects", encodeClaudeCwd2(cwd));
|
|
84
83
|
const failures = [];
|
|
85
84
|
for (const sid of sessionIds) {
|
|
86
85
|
const path = join(projectsDir, `${sid}.jsonl`);
|
|
@@ -122,7 +121,7 @@ var codexRegistry = {
|
|
|
122
121
|
};
|
|
123
122
|
var codexRegistryOperations = {
|
|
124
123
|
writeRollout(opts) {
|
|
125
|
-
const { threadId, rolloutPath } =
|
|
124
|
+
const { threadId, rolloutPath } = writeCodexRollout2({
|
|
126
125
|
cwd: opts.cwd,
|
|
127
126
|
entries: opts.entries,
|
|
128
127
|
model: opts.model ?? codexRegistry.defaultModel,
|
|
@@ -132,7 +131,7 @@ var codexRegistryOperations = {
|
|
|
132
131
|
return { sessionId: threadId, rolloutPath };
|
|
133
132
|
},
|
|
134
133
|
async forkSession({ parentSessionId }) {
|
|
135
|
-
const { forkCodexSession } = await import("./chunk-
|
|
134
|
+
const { forkCodexSession } = await import("./chunk-e59kzyvy.js");
|
|
136
135
|
return await forkCodexSession(parentSessionId);
|
|
137
136
|
},
|
|
138
137
|
async cleanupRollouts({ sessionIds }) {
|
|
@@ -233,7 +232,7 @@ function writeRollout(options) {
|
|
|
233
232
|
ensureCwdExists(options.cwd);
|
|
234
233
|
const path = maestroSessionPath(sessionId);
|
|
235
234
|
mkdirSync2(maestroSessionsDir(), { recursive: true });
|
|
236
|
-
const messages =
|
|
235
|
+
const messages = extractChatPairs2(options.entries).flatMap((pair) => [
|
|
237
236
|
{ role: "user", content: nonEmptyTurnText(pair.userText) },
|
|
238
237
|
{ role: "assistant", content: nonEmptyTurnText(pair.assistantText) }
|
|
239
238
|
]);
|
|
@@ -329,8 +328,8 @@ function getRegistryOperations(agent) {
|
|
|
329
328
|
var getRegistry2 = (agent) => getRegistry(agent);
|
|
330
329
|
var getRegistryOperations2 = (agent) => getRegistryOperations(agent);
|
|
331
330
|
export {
|
|
332
|
-
|
|
333
|
-
|
|
331
|
+
getRegistry2 as getRegistry,
|
|
332
|
+
getRegistryOperations2 as getRegistryOperations
|
|
334
333
|
};
|
|
335
334
|
|
|
336
|
-
//# debugId=
|
|
335
|
+
//# debugId=25A9BDC88E6483FA64756E2164756E21
|
package/dist/registry.js.map
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"import { claudeRegistry, claudeRegistryOperations } from \"#agents/claude-registry\";\nimport { codexRegistry, codexRegistryOperations } from \"#agents/codex-registry\";\nimport type { AgentRegistry, AgentRegistryOperations } from \"#agents/contracts\";\nimport { maestroRegistry, maestroRegistryOperations } from \"#agents/maestro-registry\";\nimport type { AgentKind } from \"#types\";\n\nexport type {\n AgentRegistry,\n AgentRegistryOperations,\n CleanupRolloutsOptions,\n ForkRegistryOptions,\n ForkRegistryResult,\n WriteRolloutOptions,\n WriteRolloutResult,\n} from \"#agents/contracts\";\n\nconst REGISTRIES: Record<AgentKind, AgentRegistry> = {\n claude: claudeRegistry,\n codex: codexRegistry,\n maestro: maestroRegistry,\n};\n\nexport function getRegistry(agent: AgentKind): AgentRegistry {\n return REGISTRIES[agent];\n}\n\nconst OPERATIONS: Record<AgentKind, AgentRegistryOperations> = {\n claude: claudeRegistryOperations,\n codex: codexRegistryOperations,\n maestro: maestroRegistryOperations,\n};\n\nexport function getRegistryOperations(agent: AgentKind): AgentRegistryOperations {\n return OPERATIONS[agent];\n}\n",
|
|
9
9
|
"import {\n type AgentRegistry,\n type AgentRegistryOperations,\n type CleanupRolloutsOptions,\n type ForkRegistryOptions,\n type ForkRegistryResult,\n getRegistry as resolveCoreRegistry,\n getRegistryOperations as resolveCoreRegistryOperations,\n type WriteRolloutOptions,\n type WriteRolloutResult,\n} from \"@negotium/core/registry\";\n\nexport type {\n AgentRegistry,\n AgentRegistryOperations,\n CleanupRolloutsOptions,\n ForkRegistryOptions,\n ForkRegistryResult,\n WriteRolloutOptions,\n WriteRolloutResult,\n};\n\nexport const getRegistry: typeof resolveCoreRegistry = (agent) => resolveCoreRegistry(agent);\n\nexport const getRegistryOperations: typeof resolveCoreRegistryOperations = (agent) =>\n resolveCoreRegistryOperations(agent);\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "25A9BDC88E6483FA64756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/dist/rollout.js
CHANGED
|
@@ -1,12 +1,46 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
configureRolloutHost2,
|
|
4
|
+
extractChatPairs2,
|
|
5
|
+
extractLatestCodexPatchPreview2,
|
|
6
|
+
extractCodexPatchCallIds2,
|
|
7
|
+
readCodexPatchCallIds2,
|
|
8
|
+
readLatestCodexPatchPreview2,
|
|
9
|
+
extractLatestCodexContextUsage2,
|
|
10
|
+
readLatestCodexContextUsage2,
|
|
11
|
+
migrateCodexRolloutNativeMultiAgentMetadata2,
|
|
12
|
+
writeCodexRollout2,
|
|
13
|
+
decodeUuidV7Timestamp2
|
|
14
|
+
} from "./chunk-9a50csg6.js";
|
|
7
15
|
import {
|
|
16
|
+
encodeClaudeCwd2,
|
|
17
|
+
writeClaudeRollout2,
|
|
18
|
+
repairPoisonedRollout2
|
|
19
|
+
} from "./chunk-1e0nxy7p.js";
|
|
20
|
+
|
|
21
|
+
// src/rollout.ts
|
|
22
|
+
import { fileURLToPath } from "url";
|
|
23
|
+
configureRolloutHost2({
|
|
24
|
+
fixturesDir: fileURLToPath(new URL("./runtime/src/agents/fixtures", import.meta.url))
|
|
25
|
+
});
|
|
26
|
+
var configureRolloutHost = configureRolloutHost2;
|
|
27
|
+
var decodeUuidV7Timestamp = decodeUuidV7Timestamp2;
|
|
28
|
+
var encodeClaudeCwd = encodeClaudeCwd2;
|
|
29
|
+
var extractCodexPatchCallIds = extractCodexPatchCallIds2;
|
|
30
|
+
var extractChatPairs = extractChatPairs2;
|
|
31
|
+
var extractLatestCodexContextUsage = extractLatestCodexContextUsage2;
|
|
32
|
+
var extractLatestCodexPatchPreview = extractLatestCodexPatchPreview2;
|
|
33
|
+
var migrateCodexRolloutNativeMultiAgentMetadata = migrateCodexRolloutNativeMultiAgentMetadata2;
|
|
34
|
+
var readCodexPatchCallIds = readCodexPatchCallIds2;
|
|
35
|
+
var readLatestCodexContextUsage = readLatestCodexContextUsage2;
|
|
36
|
+
var readLatestCodexPatchPreview = readLatestCodexPatchPreview2;
|
|
37
|
+
var repairPoisonedRollout = repairPoisonedRollout2;
|
|
38
|
+
var writeClaudeRollout = writeClaudeRollout2;
|
|
39
|
+
var writeCodexRollout = writeCodexRollout2;
|
|
40
|
+
export {
|
|
8
41
|
configureRolloutHost,
|
|
9
42
|
decodeUuidV7Timestamp,
|
|
43
|
+
encodeClaudeCwd,
|
|
10
44
|
extractChatPairs,
|
|
11
45
|
extractCodexPatchCallIds,
|
|
12
46
|
extractLatestCodexContextUsage,
|
|
@@ -15,43 +49,9 @@ import {
|
|
|
15
49
|
readCodexPatchCallIds,
|
|
16
50
|
readLatestCodexContextUsage,
|
|
17
51
|
readLatestCodexPatchPreview,
|
|
52
|
+
repairPoisonedRollout,
|
|
53
|
+
writeClaudeRollout,
|
|
18
54
|
writeCodexRollout
|
|
19
|
-
} from "./chunk-rwj7x5pg.js";
|
|
20
|
-
|
|
21
|
-
// src/rollout.ts
|
|
22
|
-
import { fileURLToPath } from "url";
|
|
23
|
-
configureRolloutHost({
|
|
24
|
-
fixturesDir: fileURLToPath(new URL("./runtime/src/agents/fixtures", import.meta.url))
|
|
25
|
-
});
|
|
26
|
-
var configureRolloutHost2 = configureRolloutHost;
|
|
27
|
-
var decodeUuidV7Timestamp2 = decodeUuidV7Timestamp;
|
|
28
|
-
var encodeClaudeCwd2 = encodeClaudeCwd;
|
|
29
|
-
var extractCodexPatchCallIds2 = extractCodexPatchCallIds;
|
|
30
|
-
var extractChatPairs2 = extractChatPairs;
|
|
31
|
-
var extractLatestCodexContextUsage2 = extractLatestCodexContextUsage;
|
|
32
|
-
var extractLatestCodexPatchPreview2 = extractLatestCodexPatchPreview;
|
|
33
|
-
var migrateCodexRolloutNativeMultiAgentMetadata2 = migrateCodexRolloutNativeMultiAgentMetadata;
|
|
34
|
-
var readCodexPatchCallIds2 = readCodexPatchCallIds;
|
|
35
|
-
var readLatestCodexContextUsage2 = readLatestCodexContextUsage;
|
|
36
|
-
var readLatestCodexPatchPreview2 = readLatestCodexPatchPreview;
|
|
37
|
-
var repairPoisonedRollout2 = repairPoisonedRollout;
|
|
38
|
-
var writeClaudeRollout2 = writeClaudeRollout;
|
|
39
|
-
var writeCodexRollout2 = writeCodexRollout;
|
|
40
|
-
export {
|
|
41
|
-
writeCodexRollout2 as writeCodexRollout,
|
|
42
|
-
writeClaudeRollout2 as writeClaudeRollout,
|
|
43
|
-
repairPoisonedRollout2 as repairPoisonedRollout,
|
|
44
|
-
readLatestCodexPatchPreview2 as readLatestCodexPatchPreview,
|
|
45
|
-
readLatestCodexContextUsage2 as readLatestCodexContextUsage,
|
|
46
|
-
readCodexPatchCallIds2 as readCodexPatchCallIds,
|
|
47
|
-
migrateCodexRolloutNativeMultiAgentMetadata2 as migrateCodexRolloutNativeMultiAgentMetadata,
|
|
48
|
-
extractLatestCodexPatchPreview2 as extractLatestCodexPatchPreview,
|
|
49
|
-
extractLatestCodexContextUsage2 as extractLatestCodexContextUsage,
|
|
50
|
-
extractCodexPatchCallIds2 as extractCodexPatchCallIds,
|
|
51
|
-
extractChatPairs2 as extractChatPairs,
|
|
52
|
-
encodeClaudeCwd2 as encodeClaudeCwd,
|
|
53
|
-
decodeUuidV7Timestamp2 as decodeUuidV7Timestamp,
|
|
54
|
-
configureRolloutHost2 as configureRolloutHost
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
//# debugId=
|
|
57
|
+
//# debugId=78F80A25C662426764756E2164756E21
|
package/dist/rollout.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { fileURLToPath } from \"node:url\";\nimport * as coreRollout from \"@negotium/core/rollout\";\n\ncoreRollout.configureRolloutHost({\n fixturesDir: fileURLToPath(new URL(\"./runtime/src/agents/fixtures\", import.meta.url)),\n});\n\nexport type {\n ChatPair,\n ClaudeRolloutOptions,\n ClaudeRolloutResult,\n CodexContextUsage,\n CodexPatchChangePreview,\n CodexPatchPreview,\n CodexRolloutOptions,\n CodexRolloutResult,\n RolloutHostOptions,\n} from \"@negotium/core/rollout\";\n\nexport const configureRolloutHost = coreRollout.configureRolloutHost;\nexport const decodeUuidV7Timestamp = coreRollout.decodeUuidV7Timestamp;\nexport const encodeClaudeCwd = coreRollout.encodeClaudeCwd;\nexport const extractCodexPatchCallIds = coreRollout.extractCodexPatchCallIds;\nexport const extractChatPairs = coreRollout.extractChatPairs;\nexport const extractLatestCodexContextUsage = coreRollout.extractLatestCodexContextUsage;\nexport const extractLatestCodexPatchPreview = coreRollout.extractLatestCodexPatchPreview;\nexport const migrateCodexRolloutNativeMultiAgentMetadata =\n coreRollout.migrateCodexRolloutNativeMultiAgentMetadata;\nexport const readCodexPatchCallIds = coreRollout.readCodexPatchCallIds;\nexport const readLatestCodexContextUsage = coreRollout.readLatestCodexContextUsage;\nexport const readLatestCodexPatchPreview = coreRollout.readLatestCodexPatchPreview;\nexport const repairPoisonedRollout = coreRollout.repairPoisonedRollout;\nexport const writeClaudeRollout = coreRollout.writeClaudeRollout;\nexport const writeCodexRollout = coreRollout.writeCodexRollout;\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAGY,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAGY,sBAAqB;AAAA,EAC/B,aAAa,cAAc,IAAI,IAAI,iCAAiC,YAAY,GAAG,CAAC;AACtF,CAAC;AAcM,IAAM,uBAAmC;AACzC,IAAM,wBAAoC;AAC1C,IAAM,kBAA8B;AACpC,IAAM,2BAAuC;AAC7C,IAAM,mBAA+B;AACrC,IAAM,iCAA6C;AACnD,IAAM,iCAA6C;AACnD,IAAM,8CACC;AACP,IAAM,wBAAoC;AAC1C,IAAM,8BAA0C;AAChD,IAAM,8BAA0C;AAChD,IAAM,wBAAoC;AAC1C,IAAM,qBAAiC;AACvC,IAAM,oBAAgC;",
|
|
8
|
+
"debugId": "78F80A25C662426764756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -73,10 +73,15 @@ const CLAUDE_DEFAULT_GIT_BRANCH = "HEAD";
|
|
|
73
73
|
* synthetic rollouts landed at `…-user_6407801418/` while the SDK looked
|
|
74
74
|
* at `…-user-6407801418/` — every `set_agent` switch surfaced as "No
|
|
75
75
|
* conversation found with session ID" on the next message.
|
|
76
|
+
*
|
|
77
|
+
* Nothing is prepended: a POSIX path starts with `/`, which already becomes
|
|
78
|
+
* the leading `-`. A Windows path does not, and the SDK writes
|
|
79
|
+
* `C:\Users\x` as `C--Users-x`; forcing a `-` in front sent Windows rollouts
|
|
80
|
+
* to `-C--Users-x/`, where the SDK never looks.
|
|
76
81
|
*/
|
|
77
82
|
export function encodeClaudeCwd(cwd: string): string {
|
|
78
83
|
const realCwd = cwd.startsWith("/tmp/") ? cwd.replace(/^\/tmp\//, "/private/tmp/") : cwd;
|
|
79
|
-
return
|
|
84
|
+
return realCwd.replaceAll(/[^a-zA-Z0-9]/g, "-");
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
export interface ClaudeRolloutOptions {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
-
import { isReservedRuntimeMcpServerName } from "#platform/mcp-config";
|
|
2
|
+
import { hostMcpGrantRefusal, isReservedRuntimeMcpServerName } from "#platform/mcp-config";
|
|
3
3
|
import { stampActorTopicScope } from "#runtime/actor-topic-scope";
|
|
4
4
|
import { resolveAttachmentByFileId } from "#runtime/file-hooks";
|
|
5
5
|
import { describeQuotedAuthor } from "#runtime/thread-context";
|
|
@@ -224,9 +224,11 @@ export function submitRuntimeGatewayTurn(
|
|
|
224
224
|
params: SubmitRuntimeGatewayTurnParams,
|
|
225
225
|
): SubmitRuntimeGatewayTurnResult {
|
|
226
226
|
const hostMcpServers = parseHostMcpServers(params.hostMcpServers);
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
227
|
+
const grantRefusal =
|
|
228
|
+
hostMcpServers === undefined
|
|
229
|
+
? null
|
|
230
|
+
: hostMcpGrantRefusal(params.topic, Object.keys(hostMcpServers));
|
|
231
|
+
if (grantRefusal) throw new TypeError(grantRefusal);
|
|
230
232
|
const conflictingHostMcpName = Object.keys(hostMcpServers ?? {}).find(
|
|
231
233
|
isReservedRuntimeMcpServerName,
|
|
232
234
|
);
|
|
@@ -51,6 +51,7 @@ import type {
|
|
|
51
51
|
PeerRuntimeBridgeContext,
|
|
52
52
|
RemoteSessionGrant,
|
|
53
53
|
} from "#types";
|
|
54
|
+
import type { TopicDto } from "#types/api";
|
|
54
55
|
|
|
55
56
|
export type { RuntimeMcpScope } from "#platform/mcp-catalog-policy";
|
|
56
57
|
|
|
@@ -822,6 +823,34 @@ export function isReservedRuntimeMcpServerName(name: string): boolean {
|
|
|
822
823
|
return Object.hasOwn(MCP_CATALOG, name) || nodeMcpEntries.some((entry) => entry.key === name);
|
|
823
824
|
}
|
|
824
825
|
|
|
826
|
+
/** Host MCP servers that administer the workspace; only a manager room may receive them. */
|
|
827
|
+
const MANAGER_ONLY_HOST_MCP_NAMES = new Set(["topic-admin"]);
|
|
828
|
+
|
|
829
|
+
/**
|
|
830
|
+
* Why `topic` may not receive host MCP servers named `names`, or null when it
|
|
831
|
+
* may. A manager room takes any of them. An ordinary room takes everything but
|
|
832
|
+
* the manager administration surface, so a host can scope its own tools to a
|
|
833
|
+
* room. A subagent room takes none.
|
|
834
|
+
*/
|
|
835
|
+
export function hostMcpGrantRefusal(
|
|
836
|
+
topic: Pick<TopicDto, "kind" | "isSubagent">,
|
|
837
|
+
names: readonly string[],
|
|
838
|
+
): string | null {
|
|
839
|
+
if (topic.kind === "manager") return null;
|
|
840
|
+
if (topic.isSubagent) return "hostMcpServers is not allowed for subagent topics";
|
|
841
|
+
const managerOnly = names.find((name) => MANAGER_ONLY_HOST_MCP_NAMES.has(name));
|
|
842
|
+
return managerOnly ? `${managerOnly} is only allowed for manager topics` : null;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
function withoutManagerOnlyHostMcpServers(
|
|
846
|
+
hostMcpServers: Record<string, HostMcpServerSpec> | undefined,
|
|
847
|
+
): Record<string, HostMcpServerSpec> | undefined {
|
|
848
|
+
if (!hostMcpServers) return undefined;
|
|
849
|
+
return Object.fromEntries(
|
|
850
|
+
Object.entries(hostMcpServers).filter(([name]) => !MANAGER_ONLY_HOST_MCP_NAMES.has(name)),
|
|
851
|
+
);
|
|
852
|
+
}
|
|
853
|
+
|
|
825
854
|
function mergeHostMcpServers(
|
|
826
855
|
base: Record<string, unknown>,
|
|
827
856
|
hostMcpServers: Record<string, HostMcpServerSpec> | undefined,
|
|
@@ -1223,34 +1252,37 @@ export function getMcpServersForQuery(opts: AgentQueryOptions): Record<string, u
|
|
|
1223
1252
|
);
|
|
1224
1253
|
}
|
|
1225
1254
|
return hideProviderIntrospectionForOtium(
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1255
|
+
mergeHostMcpServers(
|
|
1256
|
+
getForumMcpServers({
|
|
1257
|
+
userId: opts.userId || "local",
|
|
1258
|
+
actorUserId: opts.actorUserId,
|
|
1259
|
+
actorTopicScope: opts.actorTopicScope,
|
|
1260
|
+
remoteSession: opts.remoteSession,
|
|
1261
|
+
vaultUserId: opts.vaultUserId,
|
|
1262
|
+
session: opts.session || "default",
|
|
1263
|
+
topicId: opts.topicId,
|
|
1264
|
+
subagentParentTopicId: opts.subagentParentTopicId,
|
|
1265
|
+
queryId: opts.queryId,
|
|
1266
|
+
wikiTopicId: opts.wikiTopicId,
|
|
1267
|
+
agent: opts.agent,
|
|
1268
|
+
cwd: opts.cwd,
|
|
1269
|
+
model: opts.model,
|
|
1270
|
+
currentUserPrompt: opts.prompt,
|
|
1271
|
+
playwrightPort: opts.playwrightPort,
|
|
1272
|
+
playwrightCapability: opts.playwrightCapability,
|
|
1273
|
+
bgBashPort: opts.bgBashPort,
|
|
1274
|
+
autoContinue: opts.autoContinue,
|
|
1275
|
+
visualTools: opts.visualTools,
|
|
1276
|
+
fileDeliveryTools: opts.fileDeliveryTools,
|
|
1277
|
+
threadRootId: opts.threadRootId,
|
|
1278
|
+
depth: opts.depth,
|
|
1279
|
+
enabled: opts.mcpEnabled,
|
|
1280
|
+
extra: opts.mcpExtra,
|
|
1281
|
+
silent: opts.silent,
|
|
1282
|
+
peerBridge: opts.peerBridge,
|
|
1283
|
+
}),
|
|
1284
|
+
withoutManagerOnlyHostMcpServers(opts.hostMcpServers),
|
|
1285
|
+
),
|
|
1254
1286
|
opts.topicId,
|
|
1255
1287
|
);
|
|
1256
1288
|
}
|
|
@@ -770,13 +770,18 @@ export function resolveTurnToolCapabilities(
|
|
|
770
770
|
};
|
|
771
771
|
}
|
|
772
772
|
|
|
773
|
-
/**
|
|
773
|
+
/**
|
|
774
|
+
* A manager room's grant reaches only manager executions and an ordinary
|
|
775
|
+
* room's only forum executions, so cron/ephemeral turns cannot inherit it.
|
|
776
|
+
* Subagent rooms never take one.
|
|
777
|
+
*/
|
|
774
778
|
export function resolveTurnHostMcpServers(
|
|
775
|
-
topic: Pick<TopicDto, "id" | "kind">,
|
|
779
|
+
topic: Pick<TopicDto, "id" | "kind" | "isSubagent">,
|
|
776
780
|
sessionType?: "dm" | "forum" | "ephemeral" | "manager" | "cron",
|
|
777
781
|
) {
|
|
778
|
-
|
|
779
|
-
|
|
782
|
+
if (topic.isSubagent) return undefined;
|
|
783
|
+
const ownScope = topic.kind === "manager" ? "manager" : "forum";
|
|
784
|
+
if ((sessionType ?? ownScope) !== ownScope) return undefined;
|
|
780
785
|
return getTopicHostMcpGrant(topic.id) ?? undefined;
|
|
781
786
|
}
|
|
782
787
|
|
|
@@ -43,8 +43,16 @@ export interface UpdateTopicSettingsOptions {
|
|
|
43
43
|
defaultModel?: string;
|
|
44
44
|
defaultEffort?: string;
|
|
45
45
|
aiMode?: AiMode;
|
|
46
|
+
/**
|
|
47
|
+
* The room's own instructions, injected into every turn's system prompt as
|
|
48
|
+
* "Topic-Specific Instructions". An empty string clears them.
|
|
49
|
+
*/
|
|
50
|
+
description?: string;
|
|
46
51
|
}
|
|
47
52
|
|
|
53
|
+
/** Room for a full work procedure (Otium tax rooms keep one per room), still small next to a turn's prompt. */
|
|
54
|
+
export const MAX_TOPIC_DESCRIPTION_CHARS = 20000;
|
|
55
|
+
|
|
48
56
|
export interface UpdateManagerTopicRuntimeConfigOptions {
|
|
49
57
|
topicId: string;
|
|
50
58
|
agent: AgentKind;
|
|
@@ -150,6 +158,17 @@ export function updateTopicSettings(opts: UpdateTopicSettingsOptions): TopicDto
|
|
|
150
158
|
}
|
|
151
159
|
}
|
|
152
160
|
|
|
161
|
+
let description = current.description;
|
|
162
|
+
if (opts.description !== undefined) {
|
|
163
|
+
const trimmed = opts.description.trim();
|
|
164
|
+
if (trimmed.length > MAX_TOPIC_DESCRIPTION_CHARS) {
|
|
165
|
+
throw new TopicValidationError(
|
|
166
|
+
`description must be at most ${MAX_TOPIC_DESCRIPTION_CHARS} characters`,
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
description = trimmed || undefined;
|
|
170
|
+
}
|
|
171
|
+
|
|
153
172
|
if (opts.agent !== undefined && opts.agent !== null && !isAgentKind(opts.agent)) {
|
|
154
173
|
throw new TopicValidationError(`Unknown agent '${opts.agent}'`);
|
|
155
174
|
}
|
|
@@ -223,6 +242,7 @@ export function updateTopicSettings(opts: UpdateTopicSettingsOptions): TopicDto
|
|
|
223
242
|
const next: TopicDto = {
|
|
224
243
|
...current,
|
|
225
244
|
title,
|
|
245
|
+
description,
|
|
226
246
|
kind,
|
|
227
247
|
aiMode,
|
|
228
248
|
agent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const NEGOTIUM_VERSION = "0.22.
|
|
1
|
+
export const NEGOTIUM_VERSION = "0.22.6";
|
package/dist/runtime-gateway.js
CHANGED
|
@@ -152,15 +152,15 @@ async function* parseRuntimeGatewaySse(body) {
|
|
|
152
152
|
const line = buffer.slice(0, newline);
|
|
153
153
|
buffer = buffer.slice(newline + 1);
|
|
154
154
|
if (line === "") {
|
|
155
|
-
const
|
|
156
|
-
if (
|
|
157
|
-
yield
|
|
155
|
+
const parsed = flush();
|
|
156
|
+
if (parsed)
|
|
157
|
+
yield parsed;
|
|
158
158
|
} else if (line.startsWith("event:")) {
|
|
159
159
|
event = line.slice(6).trim() || "message";
|
|
160
160
|
} else if (line.startsWith("id:")) {
|
|
161
|
-
const
|
|
162
|
-
if (Number.isFinite(
|
|
163
|
-
id =
|
|
161
|
+
const parsed = Number.parseInt(line.slice(3).trim(), 10);
|
|
162
|
+
if (Number.isFinite(parsed))
|
|
163
|
+
id = parsed;
|
|
164
164
|
} else if (line.startsWith("data:")) {
|
|
165
165
|
data.push(line.slice(5).trimStart());
|
|
166
166
|
}
|
|
@@ -442,12 +442,12 @@ class RuntimeGatewayClient {
|
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
444
|
export {
|
|
445
|
-
|
|
446
|
-
parseHostMcpServers,
|
|
447
|
-
RuntimeGatewayError,
|
|
448
|
-
RuntimeGatewayClient,
|
|
445
|
+
RUNTIME_GATEWAY_CONTROL_PATH,
|
|
449
446
|
RUNTIME_GATEWAY_VERSION,
|
|
450
|
-
|
|
447
|
+
RuntimeGatewayClient,
|
|
448
|
+
RuntimeGatewayError,
|
|
449
|
+
parseHostMcpServers,
|
|
450
|
+
parseRuntimeGatewaySse
|
|
451
451
|
};
|
|
452
452
|
|
|
453
|
-
//# debugId=
|
|
453
|
+
//# debugId=CE27A0854B2EC79764756E2164756E21
|