@tethral/acr-mcp 2.1.1 → 2.1.3

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.
Files changed (98) hide show
  1. package/dist/http.mjs +0 -1
  2. package/dist/index.mjs +0 -1
  3. package/package.json +11 -11
  4. package/dist/http.mjs.map +0 -7
  5. package/dist/index.mjs.map +0 -7
  6. package/dist/src/acr-state-file.d.ts +0 -6
  7. package/dist/src/acr-state-file.js +0 -32
  8. package/dist/src/acr-state-file.js.map +0 -1
  9. package/dist/src/env-detect.d.ts +0 -25
  10. package/dist/src/env-detect.js +0 -52
  11. package/dist/src/env-detect.js.map +0 -1
  12. package/dist/src/http.d.ts +0 -2
  13. package/dist/src/http.js +0 -112
  14. package/dist/src/http.js.map +0 -1
  15. package/dist/src/index.d.ts +0 -2
  16. package/dist/src/index.js +0 -17
  17. package/dist/src/index.js.map +0 -1
  18. package/dist/src/middleware/correlation-window.d.ts +0 -68
  19. package/dist/src/middleware/correlation-window.js +0 -113
  20. package/dist/src/middleware/correlation-window.js.map +0 -1
  21. package/dist/src/middleware/self-log.d.ts +0 -22
  22. package/dist/src/middleware/self-log.js +0 -72
  23. package/dist/src/middleware/self-log.js.map +0 -1
  24. package/dist/src/server.d.ts +0 -17
  25. package/dist/src/server.js +0 -96
  26. package/dist/src/server.js.map +0 -1
  27. package/dist/src/session-state.d.ts +0 -29
  28. package/dist/src/session-state.js +0 -102
  29. package/dist/src/session-state.js.map +0 -1
  30. package/dist/src/state.d.ts +0 -10
  31. package/dist/src/state.js +0 -39
  32. package/dist/src/state.js.map +0 -1
  33. package/dist/src/strip-sub-components.d.ts +0 -7
  34. package/dist/src/strip-sub-components.js +0 -15
  35. package/dist/src/strip-sub-components.js.map +0 -1
  36. package/dist/src/tools/acknowledge-threat.d.ts +0 -3
  37. package/dist/src/tools/acknowledge-threat.js +0 -38
  38. package/dist/src/tools/acknowledge-threat.js.map +0 -1
  39. package/dist/src/tools/check-entity.d.ts +0 -2
  40. package/dist/src/tools/check-entity.js +0 -144
  41. package/dist/src/tools/check-entity.js.map +0 -1
  42. package/dist/src/tools/check-environment.d.ts +0 -2
  43. package/dist/src/tools/check-environment.js +0 -32
  44. package/dist/src/tools/check-environment.js.map +0 -1
  45. package/dist/src/tools/disable-deep-composition.d.ts +0 -20
  46. package/dist/src/tools/disable-deep-composition.js +0 -45
  47. package/dist/src/tools/disable-deep-composition.js.map +0 -1
  48. package/dist/src/tools/get-coverage.d.ts +0 -2
  49. package/dist/src/tools/get-coverage.js +0 -67
  50. package/dist/src/tools/get-coverage.js.map +0 -1
  51. package/dist/src/tools/get-failure-registry.d.ts +0 -2
  52. package/dist/src/tools/get-failure-registry.js +0 -75
  53. package/dist/src/tools/get-failure-registry.js.map +0 -1
  54. package/dist/src/tools/get-friction-report.d.ts +0 -2
  55. package/dist/src/tools/get-friction-report.js +0 -208
  56. package/dist/src/tools/get-friction-report.js.map +0 -1
  57. package/dist/src/tools/get-interaction-log.d.ts +0 -2
  58. package/dist/src/tools/get-interaction-log.js +0 -199
  59. package/dist/src/tools/get-interaction-log.js.map +0 -1
  60. package/dist/src/tools/get-my-agent.d.ts +0 -2
  61. package/dist/src/tools/get-my-agent.js +0 -36
  62. package/dist/src/tools/get-my-agent.js.map +0 -1
  63. package/dist/src/tools/get-network-status.d.ts +0 -2
  64. package/dist/src/tools/get-network-status.js +0 -85
  65. package/dist/src/tools/get-network-status.js.map +0 -1
  66. package/dist/src/tools/get-notifications.d.ts +0 -3
  67. package/dist/src/tools/get-notifications.js +0 -34
  68. package/dist/src/tools/get-notifications.js.map +0 -1
  69. package/dist/src/tools/get-profile.d.ts +0 -2
  70. package/dist/src/tools/get-profile.js +0 -89
  71. package/dist/src/tools/get-profile.js.map +0 -1
  72. package/dist/src/tools/get-skill-tracker.d.ts +0 -2
  73. package/dist/src/tools/get-skill-tracker.js +0 -93
  74. package/dist/src/tools/get-skill-tracker.js.map +0 -1
  75. package/dist/src/tools/get-skill-versions.d.ts +0 -2
  76. package/dist/src/tools/get-skill-versions.js +0 -74
  77. package/dist/src/tools/get-skill-versions.js.map +0 -1
  78. package/dist/src/tools/get-stable-corridors.d.ts +0 -2
  79. package/dist/src/tools/get-stable-corridors.js +0 -65
  80. package/dist/src/tools/get-stable-corridors.js.map +0 -1
  81. package/dist/src/tools/get-trend.d.ts +0 -2
  82. package/dist/src/tools/get-trend.js +0 -75
  83. package/dist/src/tools/get-trend.js.map +0 -1
  84. package/dist/src/tools/log-interaction.d.ts +0 -3
  85. package/dist/src/tools/log-interaction.js +0 -177
  86. package/dist/src/tools/log-interaction.js.map +0 -1
  87. package/dist/src/tools/register-agent.d.ts +0 -2
  88. package/dist/src/tools/register-agent.js +0 -102
  89. package/dist/src/tools/register-agent.js.map +0 -1
  90. package/dist/src/tools/search-skills.d.ts +0 -2
  91. package/dist/src/tools/search-skills.js +0 -78
  92. package/dist/src/tools/search-skills.js.map +0 -1
  93. package/dist/src/tools/summarize-my-agent.d.ts +0 -2
  94. package/dist/src/tools/summarize-my-agent.js +0 -100
  95. package/dist/src/tools/summarize-my-agent.js.map +0 -1
  96. package/dist/src/tools/update-composition.d.ts +0 -3
  97. package/dist/src/tools/update-composition.js +0 -89
  98. package/dist/src/tools/update-composition.js.map +0 -1
@@ -1,45 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * Operator privacy control for deep composition capture.
4
- *
5
- * By default, when the agent reports composition (via register_agent or
6
- * update_composition), rich component records include sub_components —
7
- * ACR gets the internals of each attached skill or MCP so it can
8
- * distinguish internal friction from external friction correctly.
9
- *
10
- * Operators who don't want ACR to see the internals can disable deep
11
- * composition capture. When off, the MCP still sends top-level component
12
- * data (skill name, MCP name, hash) but strips sub_components before
13
- * sending. ACR's internal-vs-external classification becomes coarser as
14
- * a result — that's the tradeoff.
15
- *
16
- * Also settable via the ACR_DEEP_COMPOSITION=false environment variable
17
- * at MCP startup.
18
- */
19
- export function disableDeepCompositionTool(server, getSession) {
20
- server.registerTool('configure_deep_composition', {
21
- description: 'Operator privacy control. Enable or disable deep composition capture for this session. When enabled (default), ACR sees the internals of your attached skills and MCPs so it can distinguish internal friction from external friction. When disabled, only top-level component info is sent — ACR no longer sees sub-components. Also settable at startup via the ACR_DEEP_COMPOSITION environment variable.',
22
- inputSchema: {
23
- enabled: z.boolean().describe('Set to true to enable deep capture, false to disable.'),
24
- },
25
- annotations: { readOnlyHint: false, destructiveHint: false },
26
- _meta: { priorityHint: 0.3 },
27
- }, async ({ enabled }) => {
28
- const session = getSession();
29
- const previous = session.deepComposition;
30
- session.setDeepComposition(enabled);
31
- const statusText = enabled
32
- ? 'Deep composition capture is now ENABLED. ACR will include sub-components of skills and MCPs in future composition reports. This lets the network distinguish internal interactions (your agent engaging its own parts) from external interactions (those parts reaching outside).'
33
- : 'Deep composition capture is now DISABLED. Future composition reports will include only top-level components (skill names, MCP names, hashes) without sub_components. ACR will not see the internals of your attached parts. Internal-vs-external classification becomes coarser as a result.';
34
- const changeText = previous === enabled
35
- ? ' (no change — was already this way)'
36
- : '';
37
- return {
38
- content: [{
39
- type: 'text',
40
- text: `${statusText}${changeText}`,
41
- }],
42
- };
43
- });
44
- }
45
- //# sourceMappingURL=disable-deep-composition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disable-deep-composition.js","sourceRoot":"","sources":["../../../src/tools/disable-deep-composition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAiB,EACjB,UAA8B;IAE9B,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,WAAW,EACT,8YAA8Y;QAChZ,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SACvF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;QAC5D,KAAK,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;KAC7B,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;QACzC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,UAAU,GAAG,OAAO;YACxB,CAAC,CAAC,mRAAmR;YACrR,CAAC,CAAC,8RAA8R,CAAC;QAEnS,MAAM,UAAU,GAAG,QAAQ,KAAK,OAAO;YACrC,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,GAAG,UAAU,GAAG,UAAU,EAAE;iBACnC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function getCoverageTool(server: McpServer, apiUrl: string): void;
@@ -1,67 +0,0 @@
1
- import { z } from 'zod';
2
- import { ensureRegistered, getAgentId, getAgentName, getApiUrl, getAuthHeaders } from '../state.js';
3
- async function resolveId(nameOrId) {
4
- if (nameOrId.startsWith('acr_') || nameOrId.startsWith('pseudo_'))
5
- return nameOrId;
6
- const res = await fetch(`${getApiUrl()}/api/v1/agent/${encodeURIComponent(nameOrId)}`);
7
- if (!res.ok)
8
- throw new Error(`Agent "${nameOrId}" not found`);
9
- return (await res.json()).agent_id;
10
- }
11
- export function getCoverageTool(server, apiUrl) {
12
- server.registerTool('get_coverage', {
13
- description: 'Signal coverage: which fields you populate on your receipts and which you don\'t. Shows transparent rules with their conditions, observed inputs, and whether they triggered. Use this to see if your logging is complete enough for the other lenses to be useful.',
14
- inputSchema: {
15
- agent_id: z.string().optional().describe('Your ACR agent ID (auto-assigned if omitted)'),
16
- agent_name: z.string().optional().describe('Your agent name (alternative to agent_id)'),
17
- },
18
- annotations: { readOnlyHint: true, destructiveHint: false },
19
- _meta: { priorityHint: 0.5 },
20
- }, async ({ agent_id, agent_name }) => {
21
- let id;
22
- try {
23
- id = agent_name ? await resolveId(agent_name) : (agent_id || getAgentId() || await ensureRegistered());
24
- }
25
- catch (err) {
26
- return { content: [{ type: 'text', text: `Error: ${err instanceof Error ? err.message : 'Unknown'}` }] };
27
- }
28
- try {
29
- const res = await fetch(`${apiUrl}/api/v1/agent/${id}/coverage`, { headers: getAuthHeaders() });
30
- if (!res.ok) {
31
- const errText = await res.text().catch(() => `HTTP ${res.status}`);
32
- return { content: [{ type: 'text', text: `Coverage error: ${errText}` }] };
33
- }
34
- const data = await res.json();
35
- const displayName = agent_name || getAgentName() || id;
36
- const signals = data.signals;
37
- const rules = data.rules;
38
- let text = `Coverage Report for ${displayName}\n${'='.repeat(30)}\n`;
39
- text += `\n-- Signal Counts --\n`;
40
- for (const [key, value] of Object.entries(signals)) {
41
- text += ` ${key}: ${value}\n`;
42
- }
43
- if (rules && rules.length > 0) {
44
- const triggered = rules.filter((r) => r.triggered);
45
- const ok = rules.filter((r) => !r.triggered);
46
- if (triggered.length > 0) {
47
- text += `\n-- Coverage Gaps (${triggered.length}) --\n`;
48
- for (const r of triggered) {
49
- text += ` ${r.signal}: ${r.rule}\n`;
50
- text += ` observed: ${JSON.stringify(r.observed)}\n`;
51
- }
52
- }
53
- if (ok.length > 0) {
54
- text += `\n-- Covered (${ok.length}) --\n`;
55
- for (const r of ok) {
56
- text += ` ${r.signal}: ${r.rule} — OK\n`;
57
- }
58
- }
59
- }
60
- return { content: [{ type: 'text', text }] };
61
- }
62
- catch (err) {
63
- return { content: [{ type: 'text', text: `Coverage error: ${err instanceof Error ? err.message : 'Unknown'}` }] };
64
- }
65
- });
66
- }
67
- //# sourceMappingURL=get-coverage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-coverage.js","sourceRoot":"","sources":["../../../src/tools/get-coverage.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function getFailureRegistryTool(server: McpServer, apiUrl: string): void;
@@ -1,75 +0,0 @@
1
- import { z } from 'zod';
2
- import { ensureRegistered, getAgentId, getAgentName, getApiUrl, getAuthHeaders } from '../state.js';
3
- async function resolveId(nameOrId) {
4
- if (nameOrId.startsWith('acr_') || nameOrId.startsWith('pseudo_'))
5
- return nameOrId;
6
- const res = await fetch(`${getApiUrl()}/api/v1/agent/${encodeURIComponent(nameOrId)}`);
7
- if (!res.ok)
8
- throw new Error(`Agent "${nameOrId}" not found`);
9
- return (await res.json()).agent_id;
10
- }
11
- export function getFailureRegistryTool(server, apiUrl) {
12
- server.registerTool('get_failure_registry', {
13
- description: 'Failure registry: per-target breakdown of failures — status codes, error codes, categories, and median duration when failed. Shows where your interactions are failing and how.',
14
- inputSchema: {
15
- agent_id: z.string().optional().describe('Your ACR agent ID (auto-assigned if omitted)'),
16
- agent_name: z.string().optional().describe('Your agent name (alternative to agent_id)'),
17
- scope: z.enum(['day', 'week', 'month']).optional().default('week').describe('Time window'),
18
- },
19
- annotations: { readOnlyHint: true, destructiveHint: false },
20
- _meta: { priorityHint: 0.6 },
21
- }, async ({ agent_id, agent_name, scope }) => {
22
- let id;
23
- try {
24
- id = agent_name ? await resolveId(agent_name) : (agent_id || getAgentId() || await ensureRegistered());
25
- }
26
- catch (err) {
27
- return { content: [{ type: 'text', text: `Error: ${err instanceof Error ? err.message : 'Unknown'}` }] };
28
- }
29
- try {
30
- const res = await fetch(`${apiUrl}/api/v1/agent/${id}/failure-registry?scope=${scope}`, { headers: getAuthHeaders() });
31
- if (!res.ok) {
32
- const errText = await res.text().catch(() => `HTTP ${res.status}`);
33
- return { content: [{ type: 'text', text: `Failure registry error: ${errText}` }] };
34
- }
35
- const data = await res.json();
36
- const displayName = data.name || agent_name || getAgentName() || id;
37
- const failures = data.failures ?? [];
38
- let text = `Failure Registry for ${displayName} (${scope})\n${'='.repeat(30)}\n`;
39
- text += `Period: ${data.period_start} to ${data.period_end}\n`;
40
- text += `Total interactions: ${data.total_interactions}\n`;
41
- text += `Total failures: ${data.total_failures}\n`;
42
- text += `Failure rate: ${(data.failure_rate * 100).toFixed(1)}%\n`;
43
- text += `Distinct failing targets: ${data.distinct_failing_targets}\n`;
44
- if (failures.length === 0) {
45
- text += `\nNo failures recorded in this period.\n`;
46
- }
47
- else {
48
- for (const f of failures) {
49
- text += `\n ${f.target_system_id} (${f.target_system_type})\n`;
50
- text += ` total failures: ${f.total_count}\n`;
51
- const statuses = f.statuses;
52
- if (statuses && Object.keys(statuses).length > 0) {
53
- text += ` statuses: ${Object.entries(statuses).map(([k, v]) => `${k}=${v}`).join(', ')}\n`;
54
- }
55
- const errors = f.error_codes;
56
- if (errors && Object.keys(errors).length > 0) {
57
- text += ` error codes: ${Object.entries(errors).map(([k, v]) => `${k}=${v}`).join(', ')}\n`;
58
- }
59
- const cats = f.categories;
60
- if (cats && Object.keys(cats).length > 0) {
61
- text += ` categories: ${Object.entries(cats).map(([k, v]) => `${k}=${v}`).join(', ')}\n`;
62
- }
63
- if (f.median_duration_when_failed_ms != null) {
64
- text += ` median duration when failed: ${f.median_duration_when_failed_ms}ms\n`;
65
- }
66
- }
67
- }
68
- return { content: [{ type: 'text', text }] };
69
- }
70
- catch (err) {
71
- return { content: [{ type: 'text', text: `Failure registry error: ${err instanceof Error ? err.message : 'Unknown'}` }] };
72
- }
73
- });
74
- }
75
- //# sourceMappingURL=get-failure-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-failure-registry.js","sourceRoot":"","sources":["../../../src/tools/get-failure-registry.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function getFrictionReportTool(server: McpServer, apiUrl: string): void;
@@ -1,208 +0,0 @@
1
- import { z } from 'zod';
2
- import { ensureRegistered, getAgentId, getAgentName, getApiUrl, getAuthHeaders } from '../state.js';
3
- /**
4
- * Resolve an agent name to an agent_id via the lookup endpoint.
5
- */
6
- async function resolveAgentId(nameOrId) {
7
- if (nameOrId.startsWith('acr_') || nameOrId.startsWith('pseudo_')) {
8
- return nameOrId;
9
- }
10
- const apiUrl = getApiUrl();
11
- const res = await fetch(`${apiUrl}/api/v1/agent/${encodeURIComponent(nameOrId)}`);
12
- if (!res.ok) {
13
- throw new Error(`Agent "${nameOrId}" not found`);
14
- }
15
- const data = await res.json();
16
- return data.agent_id;
17
- }
18
- export function getFrictionReportTool(server, apiUrl) {
19
- server.registerTool('get_friction_report', {
20
- description: "Query the friction lens of your interaction profile — one of several lenses available (more on the roadmap). The friction lens surfaces where time and tokens are being lost: bottleneck targets, chain overhead, retry waste, directional friction between targets, and how you compare to the population baseline. Friction is a continuum, not a verdict — high friction could be infrastructure, a hard task, or a component with elevated anomaly signals. Use it together with anomaly signal notifications to interpret correctly. Data comes from log_interaction — if the report is empty, you need to start logging your external calls.",
21
- inputSchema: {
22
- agent_id: z.string().optional().describe('Your ACR agent ID (auto-assigned if omitted)'),
23
- agent_name: z.string().optional().describe('Your agent name (alternative to agent_id). Use this if you know your name but not your ID.'),
24
- scope: z.enum(['session', 'day', 'week']).optional().default('day').describe('Time window for the report'),
25
- },
26
- annotations: { readOnlyHint: true, destructiveHint: false },
27
- _meta: { priorityHint: 0.7 },
28
- }, async ({ agent_id, agent_name, scope }) => {
29
- let id;
30
- try {
31
- if (agent_name) {
32
- id = await resolveAgentId(agent_name);
33
- }
34
- else {
35
- id = agent_id || getAgentId() || await ensureRegistered();
36
- }
37
- }
38
- catch (err) {
39
- const msg = err instanceof Error ? err.message : 'Unknown error';
40
- return { content: [{ type: 'text', text: `Error: ${msg}` }] };
41
- }
42
- try {
43
- const res = await fetch(`${apiUrl}/api/v1/agent/${id}/friction?scope=${scope}`, { headers: getAuthHeaders() });
44
- if (!res.ok) {
45
- const errText = await res.text().catch(() => `HTTP ${res.status}`);
46
- return { content: [{ type: 'text', text: `Friction report error: ${errText}` }] };
47
- }
48
- const data = await res.json();
49
- if (data.error) {
50
- return { content: [{ type: 'text', text: `Error: ${data.error.message}` }] };
51
- }
52
- const s = data.summary;
53
- const displayName = data.name || agent_name || getAgentName() || id;
54
- if (s.total_interactions === 0) {
55
- return {
56
- content: [{
57
- type: 'text',
58
- text: `No interactions recorded for ${displayName} (scope "${scope}"). Call log_interaction after each external tool call or API request to populate your friction data.`,
59
- }],
60
- };
61
- }
62
- let text = `Friction Report for ${displayName} (${scope})\n`;
63
- text += `Agent ID: ${data.agent_id}\n`;
64
- text += `Period: ${data.period_start} to ${data.period_end}\n`;
65
- text += `Tier: ${data.tier || 'free'}\n\n`;
66
- // Summary metrics
67
- text += `── Summary ──\n`;
68
- text += ` Interactions: ${s.total_interactions}\n`;
69
- text += ` Total wait: ${(s.total_wait_time_ms / 1000).toFixed(1)}s\n`;
70
- text += ` Friction: ${s.friction_percentage.toFixed(2)}% of active time\n`;
71
- text += ` Failures: ${s.total_failures} (${(s.failure_rate * 100).toFixed(1)}% rate)\n`;
72
- // Category breakdown
73
- if (data.by_category && data.by_category.length > 0) {
74
- text += `\n── By Category ──\n`;
75
- for (const cat of data.by_category) {
76
- const avgMs = cat.interaction_count > 0 ? Math.round(cat.total_duration_ms / cat.interaction_count) : 0;
77
- text += ` ${cat.category}: ${cat.interaction_count} calls, ${(cat.total_duration_ms / 1000).toFixed(1)}s total, avg ${avgMs}ms`;
78
- if (cat.failure_count > 0)
79
- text += `, ${cat.failure_count} failures`;
80
- text += `\n`;
81
- }
82
- }
83
- // Top targets with full metrics
84
- if (data.top_targets && data.top_targets.length > 0) {
85
- text += `\n── Top Targets ──\n`;
86
- for (const t of data.top_targets) {
87
- const pct = (t.proportion_of_total * 100).toFixed(1);
88
- text += `\n ${t.target_system_id} (${t.target_system_type})\n`;
89
- text += ` ${t.interaction_count} calls | ${pct}% of wait time\n`;
90
- text += ` median ${t.median_duration_ms}ms`;
91
- if (t.p95_duration_ms != null)
92
- text += ` | p95 ${t.p95_duration_ms}ms`;
93
- text += `\n`;
94
- // Status breakdown
95
- if (t.status_breakdown) {
96
- const statuses = Object.entries(t.status_breakdown)
97
- .map(([s, c]) => `${s}: ${c}`)
98
- .join(', ');
99
- text += ` statuses: ${statuses}\n`;
100
- }
101
- // Baseline comparison (paid tier) — raw numbers only.
102
- if (t.vs_baseline != null) {
103
- text += ` ratio to population baseline: ${t.vs_baseline.toFixed(2)}`;
104
- if (t.baseline_median_ms != null)
105
- text += ` (baseline median ${t.baseline_median_ms}ms, p95 ${t.baseline_p95_ms}ms)`;
106
- if (t.volatility != null)
107
- text += `, volatility ${t.volatility}`;
108
- text += `\n`;
109
- }
110
- // Recent anomalies
111
- if (t.recent_anomalies && t.recent_anomalies.length > 0) {
112
- text += ` recent anomalies:\n`;
113
- for (const a of t.recent_anomalies) {
114
- text += ` [${a.timestamp}] ${a.category || 'unknown'}`;
115
- if (a.detail)
116
- text += ` — ${a.detail}`;
117
- text += `\n`;
118
- }
119
- }
120
- if (t.failure_count > 0 && !t.recent_anomalies?.length) {
121
- text += ` ${t.failure_count} failures\n`;
122
- }
123
- // Network context — raw rates across the population. No
124
- // synthetic health_status label (the inherited column is
125
- // ignored here; see inherited-drift note in
126
- // proposals/open-items-plan.md).
127
- if (t.network_failure_rate != null ||
128
- t.network_anomaly_rate != null ||
129
- t.network_agent_count != null) {
130
- text += ` population: ${t.network_agent_count ?? 0} agents`;
131
- text += `, failure rate ${((t.network_failure_rate ?? 0) * 100).toFixed(1)}%`;
132
- text += `, anomaly rate ${((t.network_anomaly_rate ?? 0) * 100).toFixed(1)}%\n`;
133
- }
134
- }
135
- }
136
- // Transport breakdown
137
- if (data.by_transport && data.by_transport.length > 0) {
138
- text += `\n── By Transport ──\n`;
139
- for (const t of data.by_transport) {
140
- text += ` ${t.transport}: ${t.interaction_count} calls, ${(t.total_duration_ms / 1000).toFixed(1)}s total\n`;
141
- }
142
- }
143
- // Source breakdown (server self-logs vs agent-initiated)
144
- if (data.by_source && data.by_source.length > 0) {
145
- text += `\n── By Source ──\n`;
146
- for (const s of data.by_source) {
147
- text += ` ${s.source}: ${s.interaction_count} interactions\n`;
148
- }
149
- }
150
- // Chain Analysis
151
- if (data.chain_analysis) {
152
- const ca = data.chain_analysis;
153
- text += '\n── Chain Analysis ──\n';
154
- text += ` Distinct chains: ${ca.chain_count}\n`;
155
- text += ` Avg chain length: ${ca.avg_chain_length} calls\n`;
156
- text += ` Total chain overhead: ${(ca.total_chain_overhead_ms / 1000).toFixed(1)}s\n`;
157
- if (ca.top_patterns && ca.top_patterns.length > 0) {
158
- text += ' Top patterns:\n';
159
- for (const p of ca.top_patterns) {
160
- text += ` ${p.pattern.join(' -> ')} (${p.frequency}x, ${p.avg_overhead_ms}ms avg overhead)\n`;
161
- }
162
- }
163
- }
164
- // Directional Analysis (pro) — raw amplification factor, no
165
- // SLOWS/SPEEDS/~ label. Client reads the factor.
166
- if (data.directional_pairs && data.directional_pairs.length > 0) {
167
- text += '\n── Directional Analysis ──\n';
168
- for (const dp of data.directional_pairs) {
169
- text += ` ${dp.source_target} -> ${dp.destination_target}: amplification ${dp.amplification_factor.toFixed(2)}x`;
170
- text += ` (${dp.avg_duration_when_preceded}ms after vs ${dp.avg_duration_standalone}ms standalone)`;
171
- text += ` [${dp.sample_count} samples]\n`;
172
- }
173
- }
174
- // Retry Overhead (pro)
175
- if (data.retry_overhead) {
176
- const ro = data.retry_overhead;
177
- text += '\n── Retry Overhead ──\n';
178
- text += ` Total retries: ${ro.total_retries}\n`;
179
- text += ` Wasted time: ${(ro.total_wasted_ms / 1000).toFixed(1)}s\n`;
180
- for (const t of ro.top_retry_targets) {
181
- text += ` ${t.target_system_id}: ${t.retry_count} retries, ${t.wasted_ms}ms wasted\n`;
182
- }
183
- }
184
- // Population Drift (pro) — raw drift percentage, no
185
- // DEGRADING/IMPROVING/stable label.
186
- if (data.population_drift && data.population_drift.targets.length > 0) {
187
- text += '\n── Population Drift ──\n';
188
- for (const t of data.population_drift.targets) {
189
- const sign = t.drift_percentage > 0 ? '+' : '';
190
- text += ` ${t.target_system_id}: ${sign}${t.drift_percentage}% vs baseline`;
191
- text += ` (current ${t.current_median_ms}ms, baseline ${t.baseline_median_ms}ms)\n`;
192
- }
193
- }
194
- // Population comparison (paid tier)
195
- if (data.population_comparison) {
196
- text += `\n── Population ──\n`;
197
- text += ` ${data.population_comparison.total_agents_in_period} agents active in period\n`;
198
- text += ` ${data.population_comparison.baselines_available} baselines available\n`;
199
- }
200
- return { content: [{ type: 'text', text }] };
201
- }
202
- catch (err) {
203
- const msg = err instanceof Error ? err.message : 'Unknown error';
204
- return { content: [{ type: 'text', text: `Friction report error: ${msg}` }] };
205
- }
206
- });
207
- }
208
- //# sourceMappingURL=get-friction-report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-friction-report.js","sourceRoot":"","sources":["../../../src/tools/get-friction-report.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function getInteractionLogTool(server: McpServer, apiUrl: string): void;