@mcoda/codali 0.1.113 → 0.1.115
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/api/CodaliApi.d.ts.map +1 -1
- package/dist/api/CodaliApi.js +12 -4
- package/dist/cli/AskCommand.d.ts.map +1 -1
- package/dist/cli/AskCommand.js +10 -4
- package/dist/cli/ToolsCommand.d.ts +1 -0
- package/dist/cli/ToolsCommand.d.ts.map +1 -1
- package/dist/cli/ToolsCommand.js +30 -7
- package/dist/docdex/DocdexClient.d.ts +13 -0
- package/dist/docdex/DocdexClient.d.ts.map +1 -1
- package/dist/docdex/DocdexClient.js +16 -0
- package/dist/gateway/GatewayStateMachine.d.ts +1 -0
- package/dist/gateway/GatewayStateMachine.d.ts.map +1 -1
- package/dist/gateway/GatewayStateMachine.js +25 -2
- package/dist/gateway/LocalGatewayProvider.d.ts +1 -0
- package/dist/gateway/LocalGatewayProvider.d.ts.map +1 -1
- package/dist/gateway/LocalGatewayProvider.js +19 -8
- package/dist/gateway/ToolSurface.d.ts +40 -0
- package/dist/gateway/ToolSurface.d.ts.map +1 -0
- package/dist/gateway/ToolSurface.js +52 -0
- package/dist/runcontext/RunContextResolver.d.ts +6 -0
- package/dist/runcontext/RunContextResolver.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodaliApi.d.ts","sourceRoot":"","sources":["../../src/api/CodaliApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"CodaliApi.d.ts","sourceRoot":"","sources":["../../src/api/CodaliApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAIjF,OAAO,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAC;AAGvF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAEjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAG1C;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,gEAAgE;IAChE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;;;;;;;;OAYG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,2EAA2E;IAC3E,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;CAAG;AAE/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAsBD,+EAA+E;AAC/E,eAAO,MAAM,eAAe,GAAI,UAAU,SAAS,aAAa,EAAE,KAAG,MAWpE,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACzC,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,YAAY,CAAC;IAC7E,cAAc,CAAC,EAAE,OAAO,2BAA2B,CAAC;IACpD,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GACpB,SAAS,aAAa,EACtB,OAAM,qBAA0B,KAC/B,OAAO,CAAC,YAAY,CAiQtB,CAAC"}
|
package/dist/api/CodaliApi.js
CHANGED
|
@@ -2,11 +2,12 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { attachHttpTools } from "../connectors/http/HttpToolSource.js";
|
|
3
3
|
import { attachMcpTools } from "../connectors/mcp/McpToolSource.js";
|
|
4
4
|
import { createImageGenerationTool, } from "../connectors/media/ImageGenerationTool.js";
|
|
5
|
-
import { DocdexClient } from "../docdex/DocdexClient.js";
|
|
5
|
+
import { DocdexClient, docdexRepoRootFor } from "../docdex/DocdexClient.js";
|
|
6
6
|
import { createCodaliGateway } from "../gateway/CodaliGateway.js";
|
|
7
7
|
import { createLocalGatewayTaskRunner } from "../gateway/LocalGatewayTaskRunner.js";
|
|
8
8
|
import { createProviderForAssignment } from "../gateway/LocalGatewayProvider.js";
|
|
9
9
|
import { gatewayToolDescriptorsFromRegistry } from "../gateway/ToolDescriptorSource.js";
|
|
10
|
+
import { defaultPerTaskTimeoutMs } from "../gateway/GatewayStateMachine.js";
|
|
10
11
|
import { GatewayTracer } from "../gateway/GatewayTracer.js";
|
|
11
12
|
import { getAgentInventory, filterLocallyDrivable } from "../agents/AgentInventory.js";
|
|
12
13
|
import { resolveConfigurableRoles } from "../agents/RoleResolution.js";
|
|
@@ -14,6 +15,7 @@ import { providerSupportsToolCalls } from "../providers/ProviderTypes.js";
|
|
|
14
15
|
import { ToolRegistry } from "../tools/ToolRegistry.js";
|
|
15
16
|
import { createDocdexTools } from "../tools/docdex/DocdexTools.js";
|
|
16
17
|
import { LocalConfigRunContextResolver } from "../runcontext/RunContextResolver.js";
|
|
18
|
+
import { resolveMswarmClientProduct } from "@mcoda/shared";
|
|
17
19
|
const DEFAULTS = {
|
|
18
20
|
maxRounds: 3,
|
|
19
21
|
maxToolCalls: 20,
|
|
@@ -121,8 +123,11 @@ export const runCodali = async (request, deps = {}) => {
|
|
|
121
123
|
// what the self-hosted setup console registers ("wodo", "heka"); the id is a
|
|
122
124
|
// usable fallback when a host only tracks ids.
|
|
123
125
|
const clientIdentity = context.tenant?.slug ?? context.tenant?.id;
|
|
126
|
+
// Sent alongside the identity, never instead of it: a node may admit this caller
|
|
127
|
+
// by its product without the tenant itself being allowlisted.
|
|
128
|
+
const clientProduct = resolveMswarmClientProduct(context.tenant?.product);
|
|
124
129
|
const baseProvider = deps.createProvider ?? createProviderForAssignment;
|
|
125
|
-
const makeProvider = (assignment, options) => baseProvider(assignment, { clientIdentity, ...options });
|
|
130
|
+
const makeProvider = (assignment, options) => baseProvider(assignment, { clientIdentity, clientProduct, ...options });
|
|
126
131
|
const primary = makeProvider((synthesizer ?? orchestrator));
|
|
127
132
|
const orchestratorProvider = orchestrator ? makeProvider(orchestrator) : undefined;
|
|
128
133
|
const workerCandidates = [roles.toolCapable, orchestrator, synthesizer].filter(Boolean);
|
|
@@ -252,7 +257,7 @@ export const runCodali = async (request, deps = {}) => {
|
|
|
252
257
|
workerOptions: {
|
|
253
258
|
maxRuntimeMs: deadlineMs,
|
|
254
259
|
maxToolCalls,
|
|
255
|
-
perTaskTimeoutMs:
|
|
260
|
+
perTaskTimeoutMs: defaultPerTaskTimeoutMs(deadlineMs),
|
|
256
261
|
maxParallelWorkers: DEFAULTS.maxParallelWorkers,
|
|
257
262
|
},
|
|
258
263
|
});
|
|
@@ -289,10 +294,13 @@ const buildDefaultRegistry = (workspaceRoot, context) => {
|
|
|
289
294
|
const registry = new ToolRegistry();
|
|
290
295
|
const client = new DocdexClient({
|
|
291
296
|
baseUrl: context.docdex?.baseUrl ?? "http://127.0.0.1:28491",
|
|
292
|
-
repoRoot: context.repo?.root
|
|
297
|
+
repoRoot: docdexRepoRootFor(context.repo?.root, context.docdex?.repoId, workspaceRoot),
|
|
293
298
|
repoId: context.docdex?.repoId,
|
|
294
299
|
apiKey: context.docdex?.apiKey,
|
|
295
300
|
allowedOperations: context.docdex?.allowedOperations,
|
|
301
|
+
// Same allowlist story as the model calls: a tenant reaching a repository
|
|
302
|
+
// it does not own is authorised by identity, not by key alone.
|
|
303
|
+
clientIdentity: context.tenant?.slug ?? context.tenant?.id,
|
|
296
304
|
});
|
|
297
305
|
for (const tool of createDocdexTools(client))
|
|
298
306
|
registry.register(tool);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AskCommand.d.ts","sourceRoot":"","sources":["../../src/cli/AskCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGvF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIpE,OAAO,EACL,2BAA2B,EAE5B,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"AskCommand.d.ts","sourceRoot":"","sources":["../../src/cli/AskCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGvF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIpE,OAAO,EACL,2BAA2B,EAE5B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EACV,iBAAiB,EAEjB,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAG9D;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAe9C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AA+BD,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,KAAG,UAuE7C,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACzC,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,KAAK,YAAY,CAAC;IAC3E,cAAc,CAAC,EAAE,CACf,UAAU,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,KAC1D,QAAQ,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AA8BD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,MAAM,GACjB,MAAM,MAAM,EAAE,EACd,OAAM,eAAoB,KACzB,OAAO,CAAC,UAAU,CAsZpB,CAAC;AAEF,eAAO,MAAM,UAAU;cACL,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAMzC,CAAC"}
|
package/dist/cli/AskCommand.js
CHANGED
|
@@ -3,17 +3,19 @@ import { filterLocallyDrivable, getAgentInventory } from "../agents/AgentInvento
|
|
|
3
3
|
import { resolveConfigurableRoles } from "../agents/RoleResolution.js";
|
|
4
4
|
import { attachHttpTools } from "../connectors/http/HttpToolSource.js";
|
|
5
5
|
import { attachMcpTools } from "../connectors/mcp/McpToolSource.js";
|
|
6
|
-
import { DocdexClient } from "../docdex/DocdexClient.js";
|
|
6
|
+
import { DocdexClient, docdexRepoRootFor } from "../docdex/DocdexClient.js";
|
|
7
7
|
import { createCodaliGateway } from "../gateway/CodaliGateway.js";
|
|
8
8
|
import { createLocalGatewayTaskRunner } from "../gateway/LocalGatewayTaskRunner.js";
|
|
9
9
|
import { createProviderForAssignment, } from "../gateway/LocalGatewayProvider.js";
|
|
10
10
|
import { gatewayToolDescriptorsFromRegistry } from "../gateway/ToolDescriptorSource.js";
|
|
11
|
+
import { defaultPerTaskTimeoutMs } from "../gateway/GatewayStateMachine.js";
|
|
11
12
|
import { GatewayTracer } from "../gateway/GatewayTracer.js";
|
|
12
13
|
import { createRelevanceJudge } from "../gateway/RelevanceJudge.js";
|
|
13
14
|
import { ToolRegistry } from "../tools/ToolRegistry.js";
|
|
14
15
|
import { createDocdexTools } from "../tools/docdex/DocdexTools.js";
|
|
15
16
|
import { LocalConfigRunContextResolver } from "../runcontext/RunContextResolver.js";
|
|
16
17
|
import { providerSupportsToolCalls } from "../providers/ProviderTypes.js";
|
|
18
|
+
import { resolveMswarmClientProduct } from "@mcoda/shared";
|
|
17
19
|
/**
|
|
18
20
|
* `codali ask` — the terminal entry point to the orchestration gateway.
|
|
19
21
|
*
|
|
@@ -165,10 +167,11 @@ const buildDefaultRegistry = (options, context, judgeProvider) => {
|
|
|
165
167
|
return registry;
|
|
166
168
|
const client = new DocdexClient({
|
|
167
169
|
baseUrl: options.docdexBaseUrl ?? context.docdex?.baseUrl ?? "http://127.0.0.1:28491",
|
|
168
|
-
repoRoot: context.repo?.root
|
|
170
|
+
repoRoot: docdexRepoRootFor(context.repo?.root, context.docdex?.repoId, options.workspaceRoot),
|
|
169
171
|
repoId: context.docdex?.repoId,
|
|
170
172
|
apiKey: context.docdex?.apiKey,
|
|
171
173
|
allowedOperations: context.docdex?.allowedOperations,
|
|
174
|
+
clientIdentity: context.tenant?.slug ?? context.tenant?.id,
|
|
172
175
|
});
|
|
173
176
|
for (const tool of createDocdexTools(client, {
|
|
174
177
|
// Judged by the orchestrator model: small, fast, and already loaded.
|
|
@@ -224,8 +227,11 @@ export const runAsk = async (argv, deps = {}) => {
|
|
|
224
227
|
return { tracer, exitCode: 1 };
|
|
225
228
|
}
|
|
226
229
|
const clientIdentity = context.tenant?.slug ?? context.tenant?.id;
|
|
230
|
+
// Sent alongside the identity, never instead of it: a node may admit this caller
|
|
231
|
+
// by its product without the tenant itself being allowlisted.
|
|
232
|
+
const clientProduct = resolveMswarmClientProduct(context.tenant?.product);
|
|
227
233
|
const baseProvider = deps.createProvider ?? createProviderForAssignment;
|
|
228
|
-
const makeProvider = (assignment, options) => baseProvider(assignment, { clientIdentity, ...options });
|
|
234
|
+
const makeProvider = (assignment, options) => baseProvider(assignment, { clientIdentity, clientProduct, ...options });
|
|
229
235
|
const orchestratorProvider = orchestrator ? makeProvider(orchestrator) : undefined;
|
|
230
236
|
const synthesizerProvider = synthesizer ? makeProvider(synthesizer) : undefined;
|
|
231
237
|
// Either role can stand in for the other if only one resolved; the trace
|
|
@@ -402,7 +408,7 @@ export const runAsk = async (argv, deps = {}) => {
|
|
|
402
408
|
// API and far too short for a CLI-backed agent — those routinely take a
|
|
403
409
|
// minute per call, and every task times out before it can call a tool.
|
|
404
410
|
// Derive it from the run deadline instead of guessing a constant.
|
|
405
|
-
perTaskTimeoutMs:
|
|
411
|
+
perTaskTimeoutMs: defaultPerTaskTimeoutMs(deadlineMs),
|
|
406
412
|
// Independent read-only tasks run concurrently. The state machine
|
|
407
413
|
// defaults to serial, which turns a four-source question into four
|
|
408
414
|
// sequential model round trips.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolsCommand.d.ts","sourceRoot":"","sources":["../../src/cli/ToolsCommand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolsCommand.d.ts","sourceRoot":"","sources":["../../src/cli/ToolsCommand.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA8BxD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,KAAG,YAqC/C,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,YAAY,CAAC;IACjF,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAkBD,eAAO,MAAM,QAAQ,GACnB,MAAM,MAAM,EAAE,EACd,OAAM,iBAAsB,KAC3B,OAAO,CAAC,MAAM,CA2JhB,CAAC;AAEF,eAAO,MAAM,YAAY;cACP,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzC,CAAC"}
|
package/dist/cli/ToolsCommand.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import { attachHttpTools } from "../connectors/http/HttpToolSource.js";
|
|
3
4
|
import { attachMcpTools } from "../connectors/mcp/McpToolSource.js";
|
|
@@ -6,6 +7,7 @@ import { LocalConfigRunContextResolver } from "../runcontext/RunContextResolver.
|
|
|
6
7
|
import { ToolRegistry } from "../tools/ToolRegistry.js";
|
|
7
8
|
import { createDocdexTools } from "../tools/docdex/DocdexTools.js";
|
|
8
9
|
import { sanitizeArgs } from "../gateway/GatewayTracer.js";
|
|
10
|
+
import { inspectToolSurface } from "../gateway/ToolSurface.js";
|
|
9
11
|
/**
|
|
10
12
|
* `codali tools` — inspect what an orchestration run can actually reach.
|
|
11
13
|
*
|
|
@@ -24,6 +26,8 @@ Commands:
|
|
|
24
26
|
Options:
|
|
25
27
|
--workspace-root <path> Repository to resolve config against (default: cwd)
|
|
26
28
|
--args-json <json> Arguments for "call"
|
|
29
|
+
--context-json <path> Run against a host-supplied RunContext instead of
|
|
30
|
+
local config, to see what one tenant's run gets
|
|
27
31
|
--json Machine-readable output
|
|
28
32
|
--help, -h Show this help
|
|
29
33
|
`;
|
|
@@ -36,6 +40,7 @@ export const parseToolsArgs = (argv) => {
|
|
|
36
40
|
let workspaceRoot = process.cwd();
|
|
37
41
|
let argsJson;
|
|
38
42
|
let json = false;
|
|
43
|
+
let contextJson;
|
|
39
44
|
let target;
|
|
40
45
|
for (let index = 0; index < rest.length; index += 1) {
|
|
41
46
|
const arg = rest[index];
|
|
@@ -44,6 +49,10 @@ export const parseToolsArgs = (argv) => {
|
|
|
44
49
|
workspaceRoot = path.resolve(next);
|
|
45
50
|
index += 1;
|
|
46
51
|
}
|
|
52
|
+
else if (arg === "--context-json" && next) {
|
|
53
|
+
contextJson = next;
|
|
54
|
+
index += 1;
|
|
55
|
+
}
|
|
47
56
|
else if (arg === "--args-json" && next) {
|
|
48
57
|
argsJson = next;
|
|
49
58
|
index += 1;
|
|
@@ -58,7 +67,7 @@ export const parseToolsArgs = (argv) => {
|
|
|
58
67
|
if ((command === "describe" || command === "call") && !target) {
|
|
59
68
|
throw new Error(`codali tools ${command} requires a tool name.\n\n${HELP}`);
|
|
60
69
|
}
|
|
61
|
-
return { command, target, workspaceRoot, argsJson, json };
|
|
70
|
+
return { command, target, workspaceRoot, argsJson, contextJson, json };
|
|
62
71
|
};
|
|
63
72
|
const buildBaseRegistryDefault = (context, workspaceRoot) => {
|
|
64
73
|
const registry = new ToolRegistry();
|
|
@@ -80,11 +89,15 @@ export const runTools = async (argv, deps = {}) => {
|
|
|
80
89
|
return 0;
|
|
81
90
|
}
|
|
82
91
|
const options = parseToolsArgs(argv);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
// A host-supplied context answers the question a product actually has: not
|
|
93
|
+
// "what can this machine do" but "what would this tenant's run get".
|
|
94
|
+
const context = options.contextJson
|
|
95
|
+
? JSON.parse(await readFile(options.contextJson, "utf8"))
|
|
96
|
+
: deps.resolveRunContext
|
|
97
|
+
? await deps.resolveRunContext(options.workspaceRoot)
|
|
98
|
+
: await new LocalConfigRunContextResolver().resolve({
|
|
99
|
+
workspaceRoot: options.workspaceRoot,
|
|
100
|
+
});
|
|
88
101
|
const registry = (deps.buildBaseRegistry ?? buildBaseRegistryDefault)(context, options.workspaceRoot);
|
|
89
102
|
const mcp = await (deps.attachMcp ?? attachMcpTools)({
|
|
90
103
|
context,
|
|
@@ -116,9 +129,19 @@ export const runTools = async (argv, deps = {}) => {
|
|
|
116
129
|
if (options.command === "list") {
|
|
117
130
|
const capabilities = registry.capabilities();
|
|
118
131
|
if (options.json) {
|
|
119
|
-
write(JSON.stringify(registry
|
|
132
|
+
write(JSON.stringify(inspectToolSurface(context, registry), null, 2));
|
|
120
133
|
return 0;
|
|
121
134
|
}
|
|
135
|
+
const surface = inspectToolSurface(context, registry);
|
|
136
|
+
if (surface.dropped.length > 0) {
|
|
137
|
+
// Silent loss is the failure this exists to catch: a tool the host
|
|
138
|
+
// supplied, present in the registry, that the compiler will not let
|
|
139
|
+
// the planner see. The run does not fail — it answers without it.
|
|
140
|
+
write(`${surface.dropped.length} tool(s) will NOT reach the planner:`);
|
|
141
|
+
for (const entry of surface.dropped)
|
|
142
|
+
write(` ${entry.tool} (${entry.reason})`);
|
|
143
|
+
write("");
|
|
144
|
+
}
|
|
122
145
|
if (capabilities.size === 0) {
|
|
123
146
|
write("No tools available.");
|
|
124
147
|
return 0;
|
|
@@ -6,6 +6,7 @@ export interface DocdexClientOptions {
|
|
|
6
6
|
authToken?: string;
|
|
7
7
|
apiKey?: string;
|
|
8
8
|
clientIdentity?: string;
|
|
9
|
+
clientProduct?: string;
|
|
9
10
|
credentialSource?: "attached_mswarm_api_key" | string;
|
|
10
11
|
required?: boolean;
|
|
11
12
|
allowedOperations?: readonly string[];
|
|
@@ -94,6 +95,18 @@ export interface DocdexWriteMetadata {
|
|
|
94
95
|
}
|
|
95
96
|
export declare const isDocdexRuntimeErrorCode: (value: unknown) => value is DocdexRuntimeErrorCode;
|
|
96
97
|
export declare const normalizeDocdexRuntimeOperation: (value: string) => DocdexRuntimeOperation | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* The repository root to disclose to docdex, if any.
|
|
100
|
+
*
|
|
101
|
+
* A remote, tenant-scoped repository is addressed by `repoId`; there is no
|
|
102
|
+
* local checkout behind it. Defaulting the root to the process working
|
|
103
|
+
* directory sent the *server's* filesystem path to docdex as
|
|
104
|
+
* `x-docdex-repo-root` on every tenant request — a path that belongs to the
|
|
105
|
+
* host, describes no repository the tenant owns, and has no business leaving
|
|
106
|
+
* the machine. A host that does mean a local checkout says so with
|
|
107
|
+
* `repo.root`.
|
|
108
|
+
*/
|
|
109
|
+
export declare const docdexRepoRootFor: (contextRepoRoot: string | undefined, repoId: string | undefined, workspaceRoot: string) => string | undefined;
|
|
97
110
|
export declare class DocdexClient {
|
|
98
111
|
private options;
|
|
99
112
|
private repoId?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocdexClient.d.ts","sourceRoot":"","sources":["../../src/docdex/DocdexClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,wBAAwB,EAEzB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"DocdexClient.d.ts","sourceRoot":"","sources":["../../src/docdex/DocdexClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
|
+
import { mswarmClientProductHeaders } from "@mcoda/shared";
|
|
4
5
|
export class DocdexRuntimeError extends Error {
|
|
5
6
|
constructor(code, message, options = {}) {
|
|
6
7
|
super(message);
|
|
@@ -126,6 +127,18 @@ const sanitizeSearchRetryQuery = (query) => {
|
|
|
126
127
|
.trim();
|
|
127
128
|
return sanitized && sanitized !== original ? sanitized : undefined;
|
|
128
129
|
};
|
|
130
|
+
/**
|
|
131
|
+
* The repository root to disclose to docdex, if any.
|
|
132
|
+
*
|
|
133
|
+
* A remote, tenant-scoped repository is addressed by `repoId`; there is no
|
|
134
|
+
* local checkout behind it. Defaulting the root to the process working
|
|
135
|
+
* directory sent the *server's* filesystem path to docdex as
|
|
136
|
+
* `x-docdex-repo-root` on every tenant request — a path that belongs to the
|
|
137
|
+
* host, describes no repository the tenant owns, and has no business leaving
|
|
138
|
+
* the machine. A host that does mean a local checkout says so with
|
|
139
|
+
* `repo.root`.
|
|
140
|
+
*/
|
|
141
|
+
export const docdexRepoRootFor = (contextRepoRoot, repoId, workspaceRoot) => contextRepoRoot ?? (repoId ? undefined : workspaceRoot);
|
|
129
142
|
export class DocdexClient {
|
|
130
143
|
constructor(options) {
|
|
131
144
|
this.options = options;
|
|
@@ -304,6 +317,9 @@ export class DocdexClient {
|
|
|
304
317
|
headers["x-mswarm-client-identity"] = clientIdentity;
|
|
305
318
|
headers["x-mswarm-client"] = clientIdentity;
|
|
306
319
|
}
|
|
320
|
+
// Independent of the identity above: a repo may be reachable because the whole
|
|
321
|
+
// product is allowlisted, even when this tenant is not named individually.
|
|
322
|
+
Object.assign(headers, mswarmClientProductHeaders(this.options.clientProduct) ?? {});
|
|
307
323
|
if (this.options.repoRoot && !this.isImmutableRuntimeContext()) {
|
|
308
324
|
headers["x-docdex-repo-root"] = path.resolve(this.options.repoRoot);
|
|
309
325
|
}
|
|
@@ -138,6 +138,7 @@ export interface CodaliGatewayVerificationLoopResult {
|
|
|
138
138
|
followUpTaskCount: number;
|
|
139
139
|
rejectedFollowUpTasks: CodaliGatewayRejectedFollowUpTask[];
|
|
140
140
|
}
|
|
141
|
+
export declare const defaultPerTaskTimeoutMs: (maxRuntimeMs: number) => number;
|
|
141
142
|
export declare const buildCodaliGatewayWorkerPrompt: (input: {
|
|
142
143
|
request: CodaliGatewayRequest;
|
|
143
144
|
task: CodaliGatewayWorkerTask;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GatewayStateMachine.d.ts","sourceRoot":"","sources":["../../src/gateway/GatewayStateMachine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GatewayStateMachine.d.ts","sourceRoot":"","sources":["../../src/gateway/GatewayStateMachine.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,28 @@ import { buildTemporalContext, renderTemporalContext } from "./TemporalContext.j
|
|
|
5
5
|
import { validateCodaliGatewayVerifierOutput } from "./CodaliGatewaySchemas.js";
|
|
6
6
|
import { CODALI_GATEWAY_SECURITY_PROMPT_HARDENING } from "./GatewaySecurityPolicy.js";
|
|
7
7
|
import { dispatchAppToolGateway, AppToolGatewayDispatchError, } from "./AppToolGatewayDispatcher.js";
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* How long one worker task may take when the caller does not say.
|
|
10
|
+
*
|
|
11
|
+
* The old default was a flat 30 seconds, which predates local models. A
|
|
12
|
+
* self-hosted llama.cpp target averages ~46s for a single model call, and a
|
|
13
|
+
* task is allowed two of them plus its tools, so the budget expired before the
|
|
14
|
+
* work could finish: measured on one such deployment, roughly 37 jobs per 4.5
|
|
15
|
+
* hours died as `GATEWAY_WORKER_TIMEOUT` while successful jobs ran to 260s.
|
|
16
|
+
*
|
|
17
|
+
* A host that sets a long `maxRuntimeMs` and leaves this unset made it sharper
|
|
18
|
+
* still — hour-long jobs in which every task was given thirty seconds.
|
|
19
|
+
* Deriving the default from the run's own budget fixes that without every
|
|
20
|
+
* caller having to know the number.
|
|
21
|
+
*
|
|
22
|
+
* The floor fits two local model calls and their tools. The ceiling stops a
|
|
23
|
+
* task that has genuinely hung from eating a long run, and still leaves better
|
|
24
|
+
* than twice the headroom over the slowest job observed.
|
|
25
|
+
*/
|
|
26
|
+
const MIN_PER_TASK_TIMEOUT_MS = 180000;
|
|
27
|
+
const MAX_PER_TASK_TIMEOUT_MS = 600000;
|
|
28
|
+
const PER_TASK_RUNTIME_SHARE = 0.5;
|
|
29
|
+
export const defaultPerTaskTimeoutMs = (maxRuntimeMs) => Math.min(MAX_PER_TASK_TIMEOUT_MS, Math.max(MIN_PER_TASK_TIMEOUT_MS, Math.floor(maxRuntimeMs * PER_TASK_RUNTIME_SHARE)));
|
|
9
30
|
const positiveInteger = (value, fallback) => Number.isFinite(value) && value !== undefined && value > 0
|
|
10
31
|
? Math.floor(value)
|
|
11
32
|
: fallback;
|
|
@@ -174,7 +195,9 @@ export class CodaliGatewayStateMachine {
|
|
|
174
195
|
}
|
|
175
196
|
const maxParallelWorkers = positiveInteger(this.options.maxParallelWorkers, policyCompilation.jobBudgets.maxParallelStages ?? 1);
|
|
176
197
|
const maxRuntimeMs = positiveInteger(this.options.maxRuntimeMs, policyCompilation.security.limits.maxRuntimeMs);
|
|
177
|
-
|
|
198
|
+
// A caller that names a budget still wins; the clamp keeps a task from
|
|
199
|
+
// outliving the run it belongs to.
|
|
200
|
+
const perTaskTimeoutMs = Math.min(positiveInteger(this.options.perTaskTimeoutMs, defaultPerTaskTimeoutMs(maxRuntimeMs)), maxRuntimeMs);
|
|
178
201
|
const maxToolCalls = nonNegativeInteger(this.options.maxToolCalls, policyCompilation.security.limits.maxToolCalls);
|
|
179
202
|
const maxModelCalls = nonNegativeInteger(this.options.maxModelCalls, policyCompilation.security.limits.maxModelCalls);
|
|
180
203
|
const maxEvidenceItems = nonNegativeInteger(undefined, policyCompilation.security.limits.maxEvidenceItems);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalGatewayProvider.d.ts","sourceRoot":"","sources":["../../src/gateway/LocalGatewayProvider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalGatewayProvider.d.ts","sourceRoot":"","sources":["../../src/gateway/LocalGatewayProvider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAG3E;;;;;;GAMG;AAEH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA2ED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAwB1C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,GAAG,SAAS,KAAG,MAapE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,QAAQ,cAAc,KACrB,QAWF,CAAC;AAYF,eAAO,MAAM,mBAAmB,QAAO,MAAM,GAAG,SA4B/C,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,MACoB,CAAC;AAU3E;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,YAAY,4BAA4B,EACxC,UAAS,oBAAyB,KACjC,QAqCF,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAIhD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAL9B,QAAQ,CAAC,IAAI,wBAAwB;gBAGlB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,WAAW,GAAE,MAAM,MAAM,GAAG,SAA2B;IAG1E,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ;IAK7C,QAAQ,CACZ,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3C,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;CAGpC"}
|
|
@@ -5,29 +5,40 @@ import { ClaudeCliProvider } from "../providers/ClaudeCliProvider.js";
|
|
|
5
5
|
import { CodexCliProvider } from "../providers/CodexCliProvider.js";
|
|
6
6
|
import { OllamaRemoteProvider } from "../providers/OllamaRemoteProvider.js";
|
|
7
7
|
import { OpenAiCompatibleProvider } from "../providers/OpenAiCompatibleProvider.js";
|
|
8
|
+
import { mswarmClientProductHeaders } from "@mcoda/shared";
|
|
8
9
|
/** mswarm accepts several spellings; send the canonical pair. */
|
|
9
10
|
const CLIENT_IDENTITY_PATTERN = /^[A-Za-z0-9._:-]{1,128}$/;
|
|
10
|
-
const clientIdentityHeaders = (clientIdentity, baseUrl) => {
|
|
11
|
+
const clientIdentityHeaders = (clientIdentity, baseUrl, clientProduct) => {
|
|
12
|
+
// Same "only for mswarm" rule as the identity: a stray header on someone's
|
|
13
|
+
// private endpoint is not ours to add.
|
|
14
|
+
const productHeaders = isMswarmEndpoint(baseUrl)
|
|
15
|
+
? mswarmClientProductHeaders(clientProduct)
|
|
16
|
+
: undefined;
|
|
11
17
|
const value = clientIdentity?.trim();
|
|
12
|
-
//
|
|
13
|
-
//
|
|
18
|
+
// The product stands on its own. A node that grants the whole product admits this
|
|
19
|
+
// caller even when the tenant is not separately allowlisted - and a tenant whose
|
|
20
|
+
// slug fails the identity pattern must not take the product down with it.
|
|
14
21
|
if (!value || !isMswarmEndpoint(baseUrl) || !CLIENT_IDENTITY_PATTERN.test(value)) {
|
|
15
|
-
return
|
|
22
|
+
return productHeaders;
|
|
16
23
|
}
|
|
17
|
-
return {
|
|
24
|
+
return {
|
|
25
|
+
"x-mswarm-client-identity": value,
|
|
26
|
+
"x-mswarm-client": value,
|
|
27
|
+
...(productHeaders ?? {}),
|
|
28
|
+
};
|
|
18
29
|
};
|
|
19
30
|
/**
|
|
20
31
|
* Attaches the scheduling priority mswarm reads from `scheduling.priority`,
|
|
21
32
|
* without disturbing any runner settings the agent already carries.
|
|
22
33
|
*/
|
|
23
|
-
const buildLocalRunner = (nested, baseUrl, priority, clientIdentity) => {
|
|
34
|
+
const buildLocalRunner = (nested, baseUrl, priority, clientIdentity, clientProduct) => {
|
|
24
35
|
const existing = isRecord(nested.localRunner)
|
|
25
36
|
? nested.localRunner
|
|
26
37
|
: undefined;
|
|
27
38
|
if (!isMswarmEndpoint(baseUrl)) {
|
|
28
39
|
return existing;
|
|
29
40
|
}
|
|
30
|
-
const identityHeaders = clientIdentityHeaders(clientIdentity, baseUrl);
|
|
41
|
+
const identityHeaders = clientIdentityHeaders(clientIdentity, baseUrl, clientProduct);
|
|
31
42
|
const existingHeaders = isRecord(existing?.headers) ? existing.headers : {};
|
|
32
43
|
const existingExtra = isRecord(existing?.extraBody) ? existing.extraBody : {};
|
|
33
44
|
const existingScheduling = isRecord(existingExtra.scheduling) ? existingExtra.scheduling : {};
|
|
@@ -199,7 +210,7 @@ export const createProviderForAssignment = (assignment, options = {}) => {
|
|
|
199
210
|
timeoutMs: options.timeoutMs ?? LOCAL_MODEL_TIMEOUT_MS,
|
|
200
211
|
runnerKind: readString(nested, ["runnerKind", "runner_kind"]),
|
|
201
212
|
authMode: readString(nested, ["authMode", "auth_mode"]),
|
|
202
|
-
localRunner: buildLocalRunner(nested, baseUrl, options.priority, options.clientIdentity),
|
|
213
|
+
localRunner: buildLocalRunner(nested, baseUrl, options.priority, options.clientIdentity, options.clientProduct),
|
|
203
214
|
supportsTools: assignment.candidate.supportsTools ?? readBoolean(raw, ["supportsTools"]),
|
|
204
215
|
supportsJsonSchema: assignment.candidate.supportsJsonSchema ?? readBoolean(raw, ["supportsJsonSchema"]),
|
|
205
216
|
supportsStreaming: assignment.candidate.supportsStreaming ?? readBoolean(raw, ["supportsStreaming"]),
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { RunContext } from "../runcontext/RunContextResolver.js";
|
|
2
|
+
import type { ToolRegistry } from "../tools/ToolRegistry.js";
|
|
3
|
+
/**
|
|
4
|
+
* What a host's declared tools actually become inside a run.
|
|
5
|
+
*
|
|
6
|
+
* A tool can be present in the registry and still never reach the planner. The
|
|
7
|
+
* capability compiler drops anything the request did not declare as an actual
|
|
8
|
+
* tool, and it does so quietly: the run succeeds, the model is simply never
|
|
9
|
+
* offered the tool, and the answer comes back thinner with no error to explain
|
|
10
|
+
* why. That has now cost this project twice — first the MCP connector tools,
|
|
11
|
+
* then `docdex_web_research`, which meant the web capability was never offered
|
|
12
|
+
* to the classifier at all.
|
|
13
|
+
*
|
|
14
|
+
* A host embedding Codali configures tools per tenant and cannot see any of
|
|
15
|
+
* this. This reports it: what was supplied, what survived, and the compiler's
|
|
16
|
+
* own reason for every tool that did not.
|
|
17
|
+
*/
|
|
18
|
+
export interface ToolSurfaceEntry {
|
|
19
|
+
tool: string;
|
|
20
|
+
reason: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ToolSurfaceReport {
|
|
23
|
+
/** Tools registered from the context — MCP servers, HTTP connectors, docdex. */
|
|
24
|
+
registered: string[];
|
|
25
|
+
/** Tools the planner will actually be offered. */
|
|
26
|
+
visible: string[];
|
|
27
|
+
/** Registered but unreachable, with the compiler's reason. */
|
|
28
|
+
dropped: ToolSurfaceEntry[];
|
|
29
|
+
/** Warnings raised while compiling the tool surface. */
|
|
30
|
+
warnings: string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Compiles the tool surface exactly as a run would, and reports the difference.
|
|
34
|
+
*
|
|
35
|
+
* Deliberately uses the real compiler rather than reimplementing its rules: a
|
|
36
|
+
* conformance check that can disagree with the thing it checks is worse than
|
|
37
|
+
* none, because it grants confidence it has not earned.
|
|
38
|
+
*/
|
|
39
|
+
export declare const inspectToolSurface: (context: RunContext, registry: ToolRegistry) => ToolSurfaceReport;
|
|
40
|
+
//# sourceMappingURL=ToolSurface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolSurface.d.ts","sourceRoot":"","sources":["../../src/gateway/ToolSurface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,UAAU,EACnB,UAAU,YAAY,KACrB,iBAgDF,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { compileCodaliGatewayPolicy } from "./GatewayPolicyCompiler.js";
|
|
2
|
+
/**
|
|
3
|
+
* Compiles the tool surface exactly as a run would, and reports the difference.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately uses the real compiler rather than reimplementing its rules: a
|
|
6
|
+
* conformance check that can disagree with the thing it checks is worse than
|
|
7
|
+
* none, because it grants confidence it has not earned.
|
|
8
|
+
*/
|
|
9
|
+
export const inspectToolSurface = (context, registry) => {
|
|
10
|
+
const registered = registry.catalog().map((tool) => tool.name).sort();
|
|
11
|
+
const compilation = compileCodaliGatewayPolicy({
|
|
12
|
+
request: {
|
|
13
|
+
query: "",
|
|
14
|
+
policy: { allowedTools: registered },
|
|
15
|
+
// `actualTools` belongs on the tool manifest, not the policy. Declaring
|
|
16
|
+
// it in the wrong place is silent — the compiler simply reports every
|
|
17
|
+
// connector tool as `not_declared` — and it is the mistake this project
|
|
18
|
+
// has now made three times, twice in production code and once while
|
|
19
|
+
// writing this very check.
|
|
20
|
+
tools: { actualTools: registered },
|
|
21
|
+
tenant: context.tenant,
|
|
22
|
+
docdex: context.docdex
|
|
23
|
+
? {
|
|
24
|
+
baseUrl: context.docdex.baseUrl,
|
|
25
|
+
repoId: context.docdex.repoId,
|
|
26
|
+
allowedOperations: context.docdex.allowedOperations,
|
|
27
|
+
}
|
|
28
|
+
: undefined,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
const visible = [...compilation.effectiveAllowedTools].sort();
|
|
32
|
+
const visibleSet = new Set(visible);
|
|
33
|
+
const reasons = new Map();
|
|
34
|
+
for (const skipped of compilation.skippedTools ?? []) {
|
|
35
|
+
if (typeof skipped === "string") {
|
|
36
|
+
reasons.set(skipped, "skipped");
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const entry = skipped;
|
|
40
|
+
if (entry.tool)
|
|
41
|
+
reasons.set(entry.tool, entry.reason ?? "skipped");
|
|
42
|
+
}
|
|
43
|
+
const dropped = registered
|
|
44
|
+
.filter((tool) => !visibleSet.has(tool))
|
|
45
|
+
.map((tool) => ({ tool, reason: reasons.get(tool) ?? "not_visible_to_planner" }));
|
|
46
|
+
return {
|
|
47
|
+
registered,
|
|
48
|
+
visible,
|
|
49
|
+
dropped,
|
|
50
|
+
warnings: (compilation.warnings ?? []).map((warning) => typeof warning === "string" ? warning : JSON.stringify(warning)),
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -32,6 +32,12 @@ export interface RunContextTenant {
|
|
|
32
32
|
id?: string;
|
|
33
33
|
slug?: string;
|
|
34
34
|
realm?: string;
|
|
35
|
+
/**
|
|
36
|
+
* The product this tenant belongs to, sent to mswarm alongside the per-tenant
|
|
37
|
+
* identity so a self-hosted node can grant every tenant of a product at once.
|
|
38
|
+
* Hosts that set `MSWARM_CLIENT_PRODUCT` in their deployment can leave this unset.
|
|
39
|
+
*/
|
|
40
|
+
product?: string;
|
|
35
41
|
}
|
|
36
42
|
export interface RunContextLimits {
|
|
37
43
|
maxRounds?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunContextResolver.d.ts","sourceRoot":"","sources":["../../src/runcontext/RunContextResolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAGxF;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"RunContextResolver.d.ts","sourceRoot":"","sources":["../../src/runcontext/RunContextResolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcoda/codali",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.115",
|
|
4
4
|
"description": "Standalone tool-runner adapter for mcoda.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
38
|
-
"@mcoda/
|
|
39
|
-
"@mcoda/
|
|
38
|
+
"@mcoda/shared": "0.1.115",
|
|
39
|
+
"@mcoda/db": "0.1.115"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "tsc -p tsconfig.json",
|