@tethral/acr-mcp 2.0.0 → 2.0.1
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/src/acr-state-file.d.ts +1 -0
- package/dist/src/acr-state-file.js +16 -0
- package/dist/src/acr-state-file.js.map +1 -0
- package/dist/src/session-state.js +2 -0
- package/dist/src/session-state.js.map +1 -1
- package/dist/src/strip-sub-components.d.ts +7 -0
- package/dist/src/strip-sub-components.js +15 -0
- package/dist/src/strip-sub-components.js.map +1 -0
- package/dist/src/tools/register-agent.js +16 -23
- package/dist/src/tools/register-agent.js.map +1 -1
- package/dist/src/tools/update-composition.js +6 -17
- package/dist/src/tools/update-composition.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function writeAcrStateFile(agentId: string, apiUrl: string): void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Writes ~/.claude/.acr-state.json so host plugins (claude-code-plugin)
|
|
3
|
+
* can discover the agent_id and API URL. Fire-and-forget — never throws.
|
|
4
|
+
*/
|
|
5
|
+
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { homedir } from 'node:os';
|
|
8
|
+
export function writeAcrStateFile(agentId, apiUrl) {
|
|
9
|
+
try {
|
|
10
|
+
const stateDir = join(homedir(), '.claude');
|
|
11
|
+
mkdirSync(stateDir, { recursive: true });
|
|
12
|
+
writeFileSync(join(stateDir, '.acr-state.json'), JSON.stringify({ agent_id: agentId, api_url: apiUrl }));
|
|
13
|
+
}
|
|
14
|
+
catch { /* fire-and-forget */ }
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=acr-state-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acr-state-file.js","sourceRoot":"","sources":["../../src/acr-state-file.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,MAAc;IAC/D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QAC5C,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,aAAa,CACX,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CACvD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { randomBytes } from 'node:crypto';
|
|
6
6
|
import { detectEnvironment } from './env-detect.js';
|
|
7
|
+
import { writeAcrStateFile } from './acr-state-file.js';
|
|
7
8
|
export class SessionState {
|
|
8
9
|
_agentId = null;
|
|
9
10
|
_agentName = null;
|
|
@@ -76,6 +77,7 @@ export class SessionState {
|
|
|
76
77
|
const data = await res.json();
|
|
77
78
|
this._agentId = data.agent_id;
|
|
78
79
|
this._agentName = data.name;
|
|
80
|
+
writeAcrStateFile(this._agentId, apiUrl);
|
|
79
81
|
return this._agentId;
|
|
80
82
|
}
|
|
81
83
|
// Registration failed — use pseudo ID locally
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/session-state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/session-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strips sub_components from component arrays when deep composition
|
|
3
|
+
* capture is disabled (operator privacy control).
|
|
4
|
+
*/
|
|
5
|
+
export declare function stripSubComponents<T extends {
|
|
6
|
+
sub_components?: unknown;
|
|
7
|
+
}>(arr: T[] | undefined, deep: boolean): T[] | undefined;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strips sub_components from component arrays when deep composition
|
|
3
|
+
* capture is disabled (operator privacy control).
|
|
4
|
+
*/
|
|
5
|
+
export function stripSubComponents(arr, deep) {
|
|
6
|
+
if (!arr)
|
|
7
|
+
return arr;
|
|
8
|
+
if (deep)
|
|
9
|
+
return arr;
|
|
10
|
+
return arr.map((c) => {
|
|
11
|
+
const { sub_components: _, ...rest } = c;
|
|
12
|
+
return rest;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=strip-sub-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip-sub-components.js","sourceRoot":"","sources":["../../src/strip-sub-components.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAoB,EACpB,IAAa;IAEb,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IACrB,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC;IACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,OAAO,IAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { setAgentId, setAgentName } from '../state.js';
|
|
3
3
|
import { defaultSession } from '../session-state.js';
|
|
4
|
+
import { writeAcrStateFile } from '../acr-state-file.js';
|
|
5
|
+
import { stripSubComponents } from '../strip-sub-components.js';
|
|
4
6
|
const DATA_NOTICE = ' ACR collects interaction metadata (target names, timing, status) to build your interaction profile — queryable through behavioral lenses (friction and more) — and to propagate anomaly signal notifications. No request/response content is collected. We do not track the agent owner. Terms: https://acr.nfkey.ai/terms';
|
|
5
7
|
// Minimal shape for a composable component — matches shared/schemas/agent.ts
|
|
6
8
|
// CompositionSchema. Kept local to the MCP so we don't need to import Zod
|
|
@@ -38,26 +40,14 @@ export function registerAgentTool(server, apiUrl) {
|
|
|
38
40
|
_meta: { priorityHint: 0.6 },
|
|
39
41
|
}, async ({ public_key, provider_class, name, skills, skill_hashes, operational_domain, skill_components, mcp_components, api_components, tool_components, }) => {
|
|
40
42
|
try {
|
|
41
|
-
|
|
42
|
-
// When deep_composition is off, strip sub_components from any
|
|
43
|
-
// rich component arrays before sending to the server.
|
|
44
|
-
const stripSubComponents = (arr) => {
|
|
45
|
-
if (!arr)
|
|
46
|
-
return arr;
|
|
47
|
-
if (defaultSession.deepComposition)
|
|
48
|
-
return arr;
|
|
49
|
-
return arr.map((c) => {
|
|
50
|
-
const { sub_components: _, ...rest } = c;
|
|
51
|
-
return rest;
|
|
52
|
-
});
|
|
53
|
-
};
|
|
43
|
+
const deep = defaultSession.deepComposition;
|
|
54
44
|
const composition = {
|
|
55
45
|
skills,
|
|
56
46
|
skill_hashes,
|
|
57
|
-
skill_components: stripSubComponents(skill_components),
|
|
58
|
-
mcp_components: stripSubComponents(mcp_components),
|
|
59
|
-
api_components: stripSubComponents(api_components),
|
|
60
|
-
tool_components: stripSubComponents(tool_components),
|
|
47
|
+
skill_components: stripSubComponents(skill_components, deep),
|
|
48
|
+
mcp_components: stripSubComponents(mcp_components, deep),
|
|
49
|
+
api_components: stripSubComponents(api_components, deep),
|
|
50
|
+
tool_components: stripSubComponents(tool_components, deep),
|
|
61
51
|
};
|
|
62
52
|
const hasComposition = !!(skills || skill_hashes
|
|
63
53
|
|| skill_components || mcp_components
|
|
@@ -86,15 +76,18 @@ export function registerAgentTool(server, apiUrl) {
|
|
|
86
76
|
setAgentId(data.agent_id);
|
|
87
77
|
if (data.name)
|
|
88
78
|
setAgentName(data.name);
|
|
79
|
+
writeAcrStateFile(data.agent_id, apiUrl);
|
|
89
80
|
const briefing = data.environment_briefing;
|
|
90
81
|
let text = `Registered successfully.\n\nName: ${data.name}\nAgent ID: ${data.agent_id}\nComposition Hash: ${data.composition_hash}\n`;
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
const systems = briefing?.connected_systems ?? [];
|
|
83
|
+
if (systems.length > 0) {
|
|
84
|
+
text += `\nConnected Systems: ${systems.length}`;
|
|
93
85
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
86
|
+
const signals = briefing?.skill_signals ?? [];
|
|
87
|
+
if (signals.length > 0) {
|
|
88
|
+
text += `\n\nSkills with anomaly signals: ${signals.length}`;
|
|
89
|
+
for (const s of signals) {
|
|
90
|
+
text += `\n- ${s.skill_name || s.skill_hash?.substring(0, 16) + '...'} — ${s.anomaly_signal_count ?? 0} signals, ${s.agent_count ?? 0} reporters`;
|
|
98
91
|
}
|
|
99
92
|
}
|
|
100
93
|
return { content: [{ type: 'text', text }] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-agent.js","sourceRoot":"","sources":["../../../src/tools/register-agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-agent.js","sourceRoot":"","sources":["../../../src/tools/register-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { stripSubComponents } from '../strip-sub-components.js';
|
|
2
3
|
// Component schema — matches shared/schemas/agent.ts CompositionSchema.
|
|
3
4
|
// Kept local so we don't need to cross package boundaries for the Zod type.
|
|
4
5
|
const ComponentSchema = z.object({
|
|
@@ -35,26 +36,14 @@ export function updateCompositionTool(server, apiUrl, getSession) {
|
|
|
35
36
|
}, async ({ agent_id, composition }) => {
|
|
36
37
|
try {
|
|
37
38
|
const resolvedAgentId = agent_id ?? getSession().agentId ?? await getSession().ensureRegistered(apiUrl);
|
|
38
|
-
// Respect operator opt-out for deep composition. When disabled,
|
|
39
|
-
// strip sub_components from any rich component arrays before
|
|
40
|
-
// sending to the server.
|
|
41
39
|
const session = getSession();
|
|
42
|
-
const
|
|
43
|
-
if (!arr)
|
|
44
|
-
return arr;
|
|
45
|
-
if (session.deepComposition)
|
|
46
|
-
return arr;
|
|
47
|
-
return arr.map((c) => {
|
|
48
|
-
const { sub_components: _, ...rest } = c;
|
|
49
|
-
return rest;
|
|
50
|
-
});
|
|
51
|
-
};
|
|
40
|
+
const deep = session.deepComposition;
|
|
52
41
|
const effectiveComposition = {
|
|
53
42
|
...composition,
|
|
54
|
-
skill_components: stripSubComponents(composition.skill_components),
|
|
55
|
-
mcp_components: stripSubComponents(composition.mcp_components),
|
|
56
|
-
api_components: stripSubComponents(composition.api_components),
|
|
57
|
-
tool_components: stripSubComponents(composition.tool_components),
|
|
43
|
+
skill_components: stripSubComponents(composition.skill_components, deep),
|
|
44
|
+
mcp_components: stripSubComponents(composition.mcp_components, deep),
|
|
45
|
+
api_components: stripSubComponents(composition.api_components, deep),
|
|
46
|
+
tool_components: stripSubComponents(composition.tool_components, deep),
|
|
58
47
|
};
|
|
59
48
|
const res = await fetch(`${apiUrl}/api/v1/composition/update`, {
|
|
60
49
|
method: 'POST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-composition.js","sourceRoot":"","sources":["../../../src/tools/update-composition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"update-composition.js","sourceRoot":"","sources":["../../../src/tools/update-composition.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tethral/acr-mcp",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "MCP server for ACR (Agent Composition Records). An interaction profile registry for AI agents — log interactions, build a profile, and query it through behavioral lenses (friction, coverage, stable corridors, failure registry, trend). 21 tools. Raw data, no synthetic labels.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|