@mcoda/codali 0.1.123 → 0.1.125
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/connectors/http/HttpToolDefinition.d.ts.map +1 -1
- package/dist/connectors/http/HttpToolDefinition.js +15 -0
- package/dist/connectors/http/HttpToolSource.d.ts.map +1 -1
- package/dist/connectors/http/HttpToolSource.js +7 -0
- package/dist/gateway/CodaliGateway.d.ts.map +1 -1
- package/dist/gateway/CodaliGateway.js +9 -1
- package/dist/gateway/LocalGatewayTaskRunner.d.ts.map +1 -1
- package/dist/gateway/LocalGatewayTaskRunner.js +53 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpToolDefinition.d.ts","sourceRoot":"","sources":["../../../src/connectors/http/HttpToolDefinition.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,CAAC;IAChE,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,eAAO,MAAM,qBAAqB,QAAO,IAAgC,CAAC;AAwC1E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAcD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,MAqBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,EAAE,WAAW,MAAM,KAAG,OAoB3E,CAAC;AAsBF,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,uBAAuB,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,EAAE,MAAM,MAAM,KAAG,MAClC,CAAC;AAE9B,eAAO,MAAM,oBAAoB,GAC/B,aAAa,mBAAmB,EAChC,SAAS,sBAAsB,KAC9B,
|
|
1
|
+
{"version":3,"file":"HttpToolDefinition.d.ts","sourceRoot":"","sources":["../../../src/connectors/http/HttpToolDefinition.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,CAAC;IAChE,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,eAAO,MAAM,qBAAqB,QAAO,IAAgC,CAAC;AAwC1E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAcD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,MAqBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,EAAE,WAAW,MAAM,KAAG,OAoB3E,CAAC;AAsBF,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,uBAAuB,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,EAAE,MAAM,MAAM,KAAG,MAClC,CAAC;AAE9B,eAAO,MAAM,oBAAoB,GAC/B,aAAa,mBAAmB,EAChC,SAAS,sBAAsB,KAC9B,cA6GF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,SAAS,sBAAsB,KAC9B,cAAc,EAIkC,CAAC"}
|
|
@@ -122,11 +122,26 @@ export const httpToolToDefinition = (declaration, options) => {
|
|
|
122
122
|
return {
|
|
123
123
|
name: qualified,
|
|
124
124
|
description: declaration.description,
|
|
125
|
+
// A tool declared without a schema used to arrive as `properties: {}`,
|
|
126
|
+
// which a model reads as "this takes no arguments" — and then declines to
|
|
127
|
+
// call it rather than calling with none. Observed verbatim: "the tool does
|
|
128
|
+
// not accept parameters for specifying a time range", against a connector
|
|
129
|
+
// that would have accepted any query string. An under-declared tool does
|
|
130
|
+
// not fail loudly; it produces a worker that talks itself out of the call.
|
|
131
|
+
// Saying so in the description costs nothing and removes the false
|
|
132
|
+
// conclusion.
|
|
125
133
|
inputSchema: declaration.inputSchema ?? {
|
|
126
134
|
type: "object",
|
|
127
135
|
properties: {},
|
|
128
136
|
additionalProperties: true,
|
|
129
137
|
},
|
|
138
|
+
...(declaration.inputSchema
|
|
139
|
+
? {}
|
|
140
|
+
: {
|
|
141
|
+
description: `${declaration.description} ` +
|
|
142
|
+
"Takes no declared parameters; any query parameters you pass are forwarded as-is, " +
|
|
143
|
+
"and calling it with no arguments is valid.",
|
|
144
|
+
}),
|
|
130
145
|
// GET/HEAD only, enforced above.
|
|
131
146
|
readOnly: true,
|
|
132
147
|
capability: connector.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpToolSource.d.ts","sourceRoot":"","sources":["../../../src/connectors/http/HttpToolSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,iBAAiB,KAAG,
|
|
1
|
+
{"version":3,"file":"HttpToolSource.d.ts","sourceRoot":"","sources":["../../../src/connectors/http/HttpToolSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,iBAAiB,KAAG,gBA2C5D,CAAC"}
|
|
@@ -19,6 +19,13 @@ export const attachHttpTools = (options) => {
|
|
|
19
19
|
try {
|
|
20
20
|
options.toolRegistry.register(definition);
|
|
21
21
|
registered.push(definition.name);
|
|
22
|
+
// The host can only fix this if it hears about it. A tool with no
|
|
23
|
+
// declared arguments still works, but a worker asked for something the
|
|
24
|
+
// schema does not mention will conclude the tool cannot do the job.
|
|
25
|
+
const declaredProperties = Object.keys(definition.inputSchema?.properties ?? {}).length;
|
|
26
|
+
if (declaredProperties === 0) {
|
|
27
|
+
warnings.push(`http_tool_has_no_declared_arguments:${definition.name}`);
|
|
28
|
+
}
|
|
22
29
|
}
|
|
23
30
|
catch (error) {
|
|
24
31
|
warnings.push(`http_tool_registration_failed:${definition.name}:${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodaliGateway.d.ts","sourceRoot":"","sources":["../../src/gateway/CodaliGateway.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CodaliGateway.d.ts","sourceRoot":"","sources":["../../src/gateway/CodaliGateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -575,7 +575,15 @@ export class CodaliGateway {
|
|
|
575
575
|
}
|
|
576
576
|
: planning;
|
|
577
577
|
const workers = await this.executePlannedWorkerTasks(request, effectivePlanning);
|
|
578
|
-
|
|
578
|
+
// A worker that invented tool results has its own output discarded, and
|
|
579
|
+
// that is the whole remedy — the run still holds whatever other workers
|
|
580
|
+
// genuinely retrieved. Treating it as a required-worker failure threw that
|
|
581
|
+
// away too: a run with a real connector hit and three real sources was
|
|
582
|
+
// failed wholesale because a second worker narrated. Discarding a liar is
|
|
583
|
+
// not a reason to discard the witnesses.
|
|
584
|
+
const failedRequiredWorker = workers.workers.taskResults.find((task) => task.required &&
|
|
585
|
+
task.status === "failed" &&
|
|
586
|
+
task.errorCode !== "GATEWAY_WORKER_FABRICATED_TOOL_RESULT");
|
|
579
587
|
const result = failedRequiredWorker
|
|
580
588
|
? await this.buildFinalPolicyBlockedResult({
|
|
581
589
|
runId: planning.runId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalGatewayTaskRunner.d.ts","sourceRoot":"","sources":["../../src/gateway/LocalGatewayTaskRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAEV,+BAA+B,EAC/B,gCAAgC,EAChC,6BAA6B,EAE9B,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAe1C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClE;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalGatewayTaskRunner.d.ts","sourceRoot":"","sources":["../../src/gateway/LocalGatewayTaskRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAEV,+BAA+B,EAC/B,gCAAgC,EAChC,6BAA6B,EAE9B,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAe1C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClE;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAuGN,qBAAa,sBAAuB,YAAW,6BAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,6BAA6B;IAE7D,GAAG,CACP,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,gCAAgC,CAAC;CA2U7C;AAED,eAAO,MAAM,4BAA4B,GACvC,SAAS,6BAA6B,KACrC,sBAA6D,CAAC;AAEjE,eAAO,MAAM,aAAa,UA3bD,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CA2b7B,CAAC"}
|
|
@@ -65,6 +65,34 @@ const toolDefinitionsFor = (registry, allowedTools) => registry.catalog(allowedT
|
|
|
65
65
|
description: descriptor.description,
|
|
66
66
|
inputSchema: descriptor.inputSchema,
|
|
67
67
|
}));
|
|
68
|
+
/**
|
|
69
|
+
* Markers of a model describing tool activity that never happened.
|
|
70
|
+
*
|
|
71
|
+
* A worker offered tools and asked for evidence will sometimes write what a
|
|
72
|
+
* successful transcript looks like instead of calling anything — tool names,
|
|
73
|
+
* call ids, `"status": "success"`, and rows of data underneath. Observed in a
|
|
74
|
+
* timesheet product: employee ids and hours that exist nowhere, carrying a
|
|
75
|
+
* `tool_call_id` and labelled successful, against a connector that received no
|
|
76
|
+
* request at all.
|
|
77
|
+
*
|
|
78
|
+
* Prose is not the problem. A worker may legitimately answer "the results do
|
|
79
|
+
* not cover this" without calling anything. What must never pass is a claim of
|
|
80
|
+
* execution, because the evidence normalizer reads structures like
|
|
81
|
+
* `evidence_items` and would take invented rows for retrieved ones.
|
|
82
|
+
*/
|
|
83
|
+
const FABRICATED_TOOL_RESULT_MARKERS = [
|
|
84
|
+
/"?tool_call_id"?\s*[:=]/i,
|
|
85
|
+
/"?evidence_items"?\s*[:=]/i,
|
|
86
|
+
/"?raw_data_excerpt"?\s*[:=]/i,
|
|
87
|
+
/"?tool_name"?\s*[:=]/i,
|
|
88
|
+
/"?status"?\s*[:=]\s*"?success"?/i,
|
|
89
|
+
];
|
|
90
|
+
const claimsToolExecution = (output) => {
|
|
91
|
+
if (!output)
|
|
92
|
+
return false;
|
|
93
|
+
// Two independent markers, so a passing mention of a tool name is not enough.
|
|
94
|
+
return FABRICATED_TOOL_RESULT_MARKERS.filter((marker) => marker.test(output)).length >= 2;
|
|
95
|
+
};
|
|
68
96
|
const buildTaskMessages = (input, hasTools) => {
|
|
69
97
|
const system = [
|
|
70
98
|
"You are a Codali gateway worker.",
|
|
@@ -79,6 +107,10 @@ const buildTaskMessages = (input, hasTools) => {
|
|
|
79
107
|
// seven more calls unspent.
|
|
80
108
|
"One search is rarely enough. In the same batch, add the tools that cover what a search cannot: listing a directory's files, reading a named file, or looking up a symbol's definition.",
|
|
81
109
|
"Prefer several complementary calls over one broad one — unused calls cost nothing, a missing one costs the answer.",
|
|
110
|
+
// A worker asked for evidence has been observed writing what a
|
|
111
|
+
// successful transcript looks like — call ids, statuses and rows of
|
|
112
|
+
// invented data — instead of calling anything.
|
|
113
|
+
"Never describe a tool result you did not receive. If you call nothing, say what you could not determine; do not write out call ids, statuses, or example rows as though a tool had returned them.",
|
|
82
114
|
].join("\n")
|
|
83
115
|
: "No tools are available. Answer from the task description alone or state what is missing.",
|
|
84
116
|
"Report only what the tool results actually support. Never invent file paths, identifiers, figures, or quotations.",
|
|
@@ -179,6 +211,24 @@ export class LocalGatewayTaskRunner {
|
|
|
179
211
|
// and we return rather than looping to look for more work.
|
|
180
212
|
if (requested.length === 0) {
|
|
181
213
|
const output = selection.message.content.trim();
|
|
214
|
+
// A worker that was given tools, called none, and then described tool
|
|
215
|
+
// results has invented them. Passing that on as a successful task makes
|
|
216
|
+
// fabricated rows indistinguishable from retrieved ones by the time the
|
|
217
|
+
// normalizer sees them, so it fails here instead.
|
|
218
|
+
if (toolDefinitions.length > 0 && claimsToolExecution(output)) {
|
|
219
|
+
return finish({
|
|
220
|
+
status: "failed",
|
|
221
|
+
errorCode: "GATEWAY_WORKER_FABRICATED_TOOL_RESULT",
|
|
222
|
+
errorMessage: "The worker reported tool results without calling any tool. Its output has been " +
|
|
223
|
+
"discarded rather than treated as evidence.",
|
|
224
|
+
metadata: {
|
|
225
|
+
pass: "direct",
|
|
226
|
+
modelCallCount: modelCalls.length,
|
|
227
|
+
toolCallCount: 0,
|
|
228
|
+
fabricatedToolResult: true,
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
}
|
|
182
232
|
return finish({
|
|
183
233
|
status: "succeeded",
|
|
184
234
|
output,
|
|
@@ -186,6 +236,9 @@ export class LocalGatewayTaskRunner {
|
|
|
186
236
|
pass: "direct",
|
|
187
237
|
modelCallCount: modelCalls.length,
|
|
188
238
|
toolCallCount: 0,
|
|
239
|
+
// Nothing was retrieved, so nothing downstream may treat this as
|
|
240
|
+
// having been.
|
|
241
|
+
...(toolDefinitions.length > 0 ? { noToolsExecuted: true } : {}),
|
|
189
242
|
...(droppedForBudget > 0 ? { droppedToolCalls: droppedForBudget } : {}),
|
|
190
243
|
},
|
|
191
244
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcoda/codali",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.125",
|
|
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/db": "0.1.
|
|
39
|
-
"@mcoda/shared": "0.1.
|
|
38
|
+
"@mcoda/db": "0.1.125",
|
|
39
|
+
"@mcoda/shared": "0.1.125"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "tsc -p tsconfig.json",
|