clementine-agent 1.0.59 → 1.0.60

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.
@@ -15,7 +15,7 @@
15
15
  const ARG_ERROR_RE = /\b(invalid|unknown field|required|missing parameter|schema|unrecognized|unexpected property)\b/i;
16
16
  const AUTH_ERROR_RE = /\b(unauthori[sz]ed|401|not authenticated|token expired|token has expired|invalid[_ ]?token|access denied)\b/i;
17
17
  /** Regex matching reply phrasings that claim a connector-wide failure. */
18
- export const CONTRADICTION_RE = /(dead\s*end|doesn'?t exist|not in (the |my )?schema|schema[- ]level|not available|isn'?t loaded|tools array is empty|MCP server still connecting|connector is (a )?dead|no such tool available|tool doesn't exist)/i;
18
+ export const CONTRADICTION_RE = /(dead\s*end|doesn'?t exist|not in (the |my )?schema|schema[- ]level|aren'?t loading into|(not|isn'?t|aren'?t) (loaded|wired|available|coming through|responding)|connector[^.]{0,40}(dropped|is (a )?dead)|tools? array is empty|MCP server (still connecting|dropped|not responding)|no such tool available|tool doesn'?t exist|both directions are blocked)/i;
19
19
  export function classifyResult(content, isError) {
20
20
  if (!isError)
21
21
  return 'success';
@@ -101,7 +101,13 @@ export function detectContradiction(reply, calls) {
101
101
  const match = reply.match(CONTRADICTION_RE);
102
102
  if (!match)
103
103
  return null;
104
- const connectorCalls = calls.filter(c => c.name.startsWith('mcp__claude_ai_'));
104
+ // Cover every connector claude_ai_* (remote), imessage/figma/hostinger/etc.
105
+ // (Desktop Extensions + stdio servers), everything except Clementine's own
106
+ // tools server and plugins. Earlier versions only filtered claude_ai_*,
107
+ // which let "isn't loaded" replies slip through for iMessage etc.
108
+ const connectorCalls = calls.filter(c => c.name.startsWith('mcp__') &&
109
+ !c.name.startsWith('mcp__clementine-tools__') &&
110
+ !c.name.startsWith('mcp__plugin_'));
105
111
  const recoverable = connectorCalls.find(c => c.resultClass === 'success' || c.resultClass === 'arg_error');
106
112
  if (!recoverable)
107
113
  return null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clementine-agent",
3
- "version": "1.0.59",
3
+ "version": "1.0.60",
4
4
  "description": "Clementine — Personal AI Assistant (TypeScript)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",