@link-assistant/agent 0.16.5 → 0.16.7
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/package.json +1 -1
- package/src/provider/provider.ts +1 -1
- package/src/session/processor.ts +26 -0
- package/src/session/prompt.ts +18 -4
package/package.json
CHANGED
package/src/provider/provider.ts
CHANGED
|
@@ -687,7 +687,7 @@ export namespace Provider {
|
|
|
687
687
|
},
|
|
688
688
|
};
|
|
689
689
|
|
|
690
|
-
const state = Instance.state(async () => {
|
|
690
|
+
export const state = Instance.state(async () => {
|
|
691
691
|
using _ = log.time('state');
|
|
692
692
|
const config = await Config.get();
|
|
693
693
|
const database = await ModelsDev.get();
|
package/src/session/processor.ts
CHANGED
|
@@ -298,6 +298,32 @@ export namespace SessionProcessor {
|
|
|
298
298
|
input.assistantMessage.cost += usage.cost;
|
|
299
299
|
input.assistantMessage.tokens = usage.tokens;
|
|
300
300
|
|
|
301
|
+
// Log warning when provider returns zero tokens (#198)
|
|
302
|
+
if (
|
|
303
|
+
usage.tokens.input === 0 &&
|
|
304
|
+
usage.tokens.output === 0 &&
|
|
305
|
+
usage.tokens.reasoning === 0 &&
|
|
306
|
+
finishReason === 'unknown'
|
|
307
|
+
) {
|
|
308
|
+
log.warn(() => ({
|
|
309
|
+
message:
|
|
310
|
+
'provider returned zero tokens with unknown finish reason at step level',
|
|
311
|
+
providerID: input.providerID,
|
|
312
|
+
requestedModelID: input.model.id,
|
|
313
|
+
respondedModelID:
|
|
314
|
+
(value as any).response?.modelId ?? 'none',
|
|
315
|
+
rawFinishReason: String(
|
|
316
|
+
value.finishReason ?? 'undefined'
|
|
317
|
+
),
|
|
318
|
+
rawUsage: JSON.stringify(value.usage ?? null),
|
|
319
|
+
providerMetadata: JSON.stringify(
|
|
320
|
+
value.providerMetadata ?? null
|
|
321
|
+
),
|
|
322
|
+
issue:
|
|
323
|
+
'https://github.com/link-assistant/agent/issues/198',
|
|
324
|
+
}));
|
|
325
|
+
}
|
|
326
|
+
|
|
301
327
|
// Build model info if --output-response-model flag is enabled
|
|
302
328
|
// @see https://github.com/link-assistant/agent/issues/179
|
|
303
329
|
const modelInfo: MessageV2.ModelInfo | undefined =
|
package/src/session/prompt.ts
CHANGED
|
@@ -297,17 +297,29 @@ export namespace SessionPrompt {
|
|
|
297
297
|
tokens.output === 0 &&
|
|
298
298
|
tokens.reasoning === 0
|
|
299
299
|
) {
|
|
300
|
+
const errorMessage =
|
|
301
|
+
`Provider returned zero tokens with unknown finish reason. ` +
|
|
302
|
+
`Requested model: ${lastAssistant.model?.requestedModelID ?? 'unknown'} ` +
|
|
303
|
+
`(provider: ${lastAssistant.model?.providerID ?? 'unknown'}). ` +
|
|
304
|
+
`Responded model: ${lastAssistant.model?.respondedModelID ?? 'unknown'}. ` +
|
|
305
|
+
`This usually indicates the provider failed to process the request. ` +
|
|
306
|
+
`Check provider status, model availability, and API keys.`;
|
|
300
307
|
log.error(() => ({
|
|
301
|
-
message:
|
|
302
|
-
'provider returned zero tokens with unknown finish reason - possible API failure',
|
|
308
|
+
message: errorMessage,
|
|
303
309
|
sessionID,
|
|
304
310
|
finishReason: lastAssistant.finish,
|
|
305
311
|
tokens,
|
|
306
312
|
cost: lastAssistant.cost,
|
|
307
313
|
model: lastAssistant.model,
|
|
308
|
-
|
|
309
|
-
issue: 'https://github.com/link-assistant/agent/issues/196',
|
|
314
|
+
issue: 'https://github.com/link-assistant/agent/issues/198',
|
|
310
315
|
}));
|
|
316
|
+
// Publish error event so JSON standard output includes it (#198)
|
|
317
|
+
Bus.publish(Session.Event.Error, {
|
|
318
|
+
sessionID,
|
|
319
|
+
error: new NamedError.Unknown({
|
|
320
|
+
message: errorMessage,
|
|
321
|
+
}).toObject(),
|
|
322
|
+
});
|
|
311
323
|
break;
|
|
312
324
|
}
|
|
313
325
|
|
|
@@ -637,6 +649,8 @@ export namespace SessionPrompt {
|
|
|
637
649
|
log.info(() => ({
|
|
638
650
|
message: 'Model',
|
|
639
651
|
model: `${model.providerID}/${model.modelID}`,
|
|
652
|
+
apiModelID: model.info?.id ?? model.modelID,
|
|
653
|
+
npm: model.npm,
|
|
640
654
|
}));
|
|
641
655
|
log.info(() => ({ message: 'Session ID', sessionID }));
|
|
642
656
|
log.info(() => ({ message: 'Agent', agent: agent.name }));
|