agenthub-multiagent-mcp 1.57.0 → 1.59.0
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/activity.d.ts +2 -0
- package/dist/activity.d.ts.map +1 -1
- package/dist/activity.js +4 -0
- package/dist/activity.js.map +1 -1
- package/dist/activityHookCli.js +11 -1
- package/dist/activityHookCli.js.map +1 -1
- package/dist/activityMarker.d.ts +8 -1
- package/dist/activityMarker.d.ts.map +1 -1
- package/dist/activityMarker.js +8 -1
- package/dist/activityMarker.js.map +1 -1
- package/dist/agentIdentity.d.ts +53 -0
- package/dist/agentIdentity.d.ts.map +1 -0
- package/dist/agentIdentity.js +92 -0
- package/dist/agentIdentity.js.map +1 -0
- package/dist/agentIdentity.test.d.ts +2 -0
- package/dist/agentIdentity.test.d.ts.map +1 -0
- package/dist/agentIdentity.test.js +119 -0
- package/dist/agentIdentity.test.js.map +1 -0
- package/dist/client.d.ts +8 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/heartbeat.d.ts +1 -0
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +10 -1
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +18 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/transcriptUsage.d.ts +62 -0
- package/dist/transcriptUsage.d.ts.map +1 -0
- package/dist/transcriptUsage.js +134 -0
- package/dist/transcriptUsage.js.map +1 -0
- package/dist/transcriptUsage.test.d.ts +2 -0
- package/dist/transcriptUsage.test.d.ts.map +1 -0
- package/dist/transcriptUsage.test.js +117 -0
- package/dist/transcriptUsage.test.js.map +1 -0
- package/dist/usageProducer.test.d.ts +2 -0
- package/dist/usageProducer.test.d.ts.map +1 -0
- package/dist/usageProducer.test.js +131 -0
- package/dist/usageProducer.test.js.map +1 -0
- package/native/agenthub-memvid/index.d.ts +58 -58
- package/native/agenthub-memvid/index.js +319 -319
- package/package.json +1 -1
package/dist/activity.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export declare class ActivityTracker {
|
|
|
20
20
|
private workingDir;
|
|
21
21
|
/** Set the working dir so getSnapshot can merge the local activity marker. */
|
|
22
22
|
setWorkingDir(dir: string | null): void;
|
|
23
|
+
/** Working dir, exposed so the heartbeat's usage producer reads the same marker. */
|
|
24
|
+
getWorkingDir(): string | null;
|
|
23
25
|
/**
|
|
24
26
|
* Record a tool call. Call this for every MCP tool invocation.
|
|
25
27
|
*/
|
package/dist/activity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAQD,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAgB;IAGlC,OAAO,CAAC,UAAU,CAAuB;IAEzC,8EAA8E;IAC9E,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIvC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAkBtE;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC;;OAEG;IACH,WAAW,IAAI,gBAAgB;IA6C/B;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,iBAAiB,CAAC,QAAQ,GAAE,MAAgB,GAAG,OAAO;IAKtD,OAAO,CAAC,QAAQ;IAKhB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,eAAe;CAsBxB"}
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAQD,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAgB;IAGlC,OAAO,CAAC,UAAU,CAAuB;IAEzC,8EAA8E;IAC9E,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIvC,oFAAoF;IACpF,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAkBtE;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC;;OAEG;IACH,WAAW,IAAI,gBAAgB;IA6C/B;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,iBAAiB,CAAC,QAAQ,GAAE,MAAgB,GAAG,OAAO;IAKtD,OAAO,CAAC,QAAQ;IAKhB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,eAAe;CAsBxB"}
|
package/dist/activity.js
CHANGED
|
@@ -17,6 +17,10 @@ export class ActivityTracker {
|
|
|
17
17
|
setWorkingDir(dir) {
|
|
18
18
|
this.workingDir = dir;
|
|
19
19
|
}
|
|
20
|
+
/** Working dir, exposed so the heartbeat's usage producer reads the same marker. */
|
|
21
|
+
getWorkingDir() {
|
|
22
|
+
return this.workingDir;
|
|
23
|
+
}
|
|
20
24
|
/**
|
|
21
25
|
* Record a tool call. Call this for every MCP tool invocation.
|
|
22
26
|
*/
|
package/dist/activity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"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"}
|
package/dist/activityHookCli.js
CHANGED
|
@@ -24,18 +24,28 @@ function main() {
|
|
|
24
24
|
}
|
|
25
25
|
let toolName = "";
|
|
26
26
|
let cwd = process.cwd();
|
|
27
|
+
let sessionId = "";
|
|
28
|
+
let transcriptPath = "";
|
|
27
29
|
try {
|
|
28
30
|
const payload = JSON.parse(input);
|
|
29
31
|
toolName = payload.tool_name ?? "";
|
|
30
32
|
if (typeof payload.cwd === "string" && payload.cwd)
|
|
31
33
|
cwd = payload.cwd;
|
|
34
|
+
if (typeof payload.session_id === "string")
|
|
35
|
+
sessionId = payload.session_id;
|
|
36
|
+
if (typeof payload.transcript_path === "string")
|
|
37
|
+
transcriptPath = payload.transcript_path;
|
|
32
38
|
}
|
|
33
39
|
catch {
|
|
34
40
|
// not JSON — nothing to record
|
|
35
41
|
}
|
|
36
42
|
if (!toolName)
|
|
37
43
|
return;
|
|
38
|
-
|
|
44
|
+
// Session identity rides along for the usage producer
|
|
45
|
+
// (add-interactive-usage-producer §3). Local marker only — never sent.
|
|
46
|
+
writeActivityMarker(cwd, categoryForTool(toolName), sessionId && transcriptPath
|
|
47
|
+
? { session_id: sessionId, transcript_path: transcriptPath }
|
|
48
|
+
: undefined);
|
|
39
49
|
}
|
|
40
50
|
try {
|
|
41
51
|
main();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityHookCli.js","sourceRoot":"","sources":["../src/activityHookCli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,SAAS,IAAI;IACX,IAAI,CAAC,mBAAmB,EAAE;QAAE,OAAO;IAEnC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;YAAE,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"activityHookCli.js","sourceRoot":"","sources":["../src/activityHookCli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,SAAS,IAAI;IACX,IAAI,CAAC,mBAAmB,EAAE;QAAE,OAAO;IAEnC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;YAAE,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAK/B,CAAC;QACF,QAAQ,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QACnC,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG;YAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACtE,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;QAC3E,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ;YAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IAED,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,sDAAsD;IACtD,uEAAuE;IACvE,mBAAmB,CACjB,GAAG,EACH,eAAe,CAAC,QAAQ,CAAC,EACzB,SAAS,IAAI,cAAc;QACzB,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE;QAC5D,CAAC,CAAC,SAAS,CACd,CAAC;AACJ,CAAC;AAED,IAAI,CAAC;IACH,IAAI,EAAE,CAAC;AACT,CAAC;AAAC,MAAM,CAAC;IACP,YAAY;AACd,CAAC;AACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/activityMarker.d.ts
CHANGED
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
export interface ActivityMarker {
|
|
11
11
|
active_at: string;
|
|
12
12
|
category: string;
|
|
13
|
+
session_id?: string;
|
|
14
|
+
transcript_path?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Session identity as delivered in the PostToolUse hook payload. */
|
|
17
|
+
export interface SessionIdentity {
|
|
18
|
+
session_id: string;
|
|
19
|
+
transcript_path: string;
|
|
13
20
|
}
|
|
14
21
|
/** Auto-activity is on by default; AGENTHUB_AUTO_ACTIVITY=false disables it. */
|
|
15
22
|
export declare function autoActivityEnabled(): boolean;
|
|
@@ -19,7 +26,7 @@ export declare function categoryForTool(toolName: string): string;
|
|
|
19
26
|
* Record local activity. Debounced (skips a write < 1s after the last) and
|
|
20
27
|
* fail-open — any error is swallowed so the hook never blocks a tool.
|
|
21
28
|
*/
|
|
22
|
-
export declare function writeActivityMarker(workingDir: string, category: string): void;
|
|
29
|
+
export declare function writeActivityMarker(workingDir: string, category: string, session?: SessionIdentity): void;
|
|
23
30
|
/** Read the activity marker, or null if absent/unreadable. Fail-open. */
|
|
24
31
|
export declare function readActivityMarker(workingDir: string): ActivityMarker | null;
|
|
25
32
|
//# sourceMappingURL=activityMarker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityMarker.d.ts","sourceRoot":"","sources":["../src/activityMarker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"activityMarker.d.ts","sourceRoot":"","sources":["../src/activityMarker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IAOjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAcD,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,eAAe,GACxB,IAAI,CAwBN;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAS5E"}
|
package/dist/activityMarker.js
CHANGED
|
@@ -38,11 +38,14 @@ function markerPath(workingDir) {
|
|
|
38
38
|
* Record local activity. Debounced (skips a write < 1s after the last) and
|
|
39
39
|
* fail-open — any error is swallowed so the hook never blocks a tool.
|
|
40
40
|
*/
|
|
41
|
-
export function writeActivityMarker(workingDir, category) {
|
|
41
|
+
export function writeActivityMarker(workingDir, category, session) {
|
|
42
42
|
try {
|
|
43
43
|
const existing = readActivityMarker(workingDir);
|
|
44
|
+
// The debounce must not swallow a session handover: a marker pointing at
|
|
45
|
+
// the wrong session would bill one session's tokens to another's run id.
|
|
44
46
|
if (existing &&
|
|
45
47
|
existing.category === category &&
|
|
48
|
+
existing.session_id === session?.session_id &&
|
|
46
49
|
Date.now() - Date.parse(existing.active_at) < DEBOUNCE_MS) {
|
|
47
50
|
return;
|
|
48
51
|
}
|
|
@@ -50,6 +53,10 @@ export function writeActivityMarker(workingDir, category) {
|
|
|
50
53
|
if (!fs.existsSync(dir))
|
|
51
54
|
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
52
55
|
const marker = { active_at: new Date().toISOString(), category };
|
|
56
|
+
if (session?.session_id && session.transcript_path) {
|
|
57
|
+
marker.session_id = session.session_id;
|
|
58
|
+
marker.transcript_path = session.transcript_path;
|
|
59
|
+
}
|
|
53
60
|
fs.writeFileSync(markerPath(workingDir), JSON.stringify(marker), { mode: 0o600 });
|
|
54
61
|
}
|
|
55
62
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityMarker.js","sourceRoot":"","sources":["../src/activityMarker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,WAAW,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"activityMarker.js","sourceRoot":"","sources":["../src/activityMarker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which agent a registration is for, and what to say when it cannot proceed.
|
|
3
|
+
*
|
|
4
|
+
* Both of the rules here came from an agent that lost a day to their absence
|
|
5
|
+
* (krishi-dev, 2026-08-12), and both are the same shape of mistake: a default
|
|
6
|
+
* that quietly does something drastic, and an error that names another tool
|
|
7
|
+
* instead of the actual precondition.
|
|
8
|
+
*
|
|
9
|
+
* 1. **A missing `id` is not a request for a new agent.** `agent_register`
|
|
10
|
+
* with no id used to mint `agent-<timestamp>` — a fresh, org-visible
|
|
11
|
+
* identity — even while `AGENTHUB_AGENT_ID` named a real one. Creating an
|
|
12
|
+
* identity is a poor default for an omitted optional parameter, so the env
|
|
13
|
+
* var is consulted first and a generated id is a last resort that says so.
|
|
14
|
+
*
|
|
15
|
+
* 2. **`register` and `reconnect` used to point at each other.** Register
|
|
16
|
+
* answered "use reconnect with token"; reconnect answered "use
|
|
17
|
+
* agent_register first". Neither mentioned that reconnect needs a local
|
|
18
|
+
* `.agenthub/state` file that only a prior successful register writes — so
|
|
19
|
+
* with that file missing there was no client-side exit at all. The way out
|
|
20
|
+
* is server-side, and the messages now name it.
|
|
21
|
+
*/
|
|
22
|
+
export type IdentitySource = "explicit" | "env" | "name" | "generated";
|
|
23
|
+
export interface ResolvedIdentity {
|
|
24
|
+
agentId: string;
|
|
25
|
+
name: string;
|
|
26
|
+
source: IdentitySource;
|
|
27
|
+
/** Something the caller should warn about — a generated identity. */
|
|
28
|
+
warning?: string;
|
|
29
|
+
/** Worth one line of output, but not a problem. */
|
|
30
|
+
note?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function resolveAgentIdentity(input: {
|
|
33
|
+
requestedId?: string;
|
|
34
|
+
name?: string;
|
|
35
|
+
envAgentId?: string;
|
|
36
|
+
now?: number;
|
|
37
|
+
}): ResolvedIdentity;
|
|
38
|
+
/**
|
|
39
|
+
* `agent_reconnect` with no local state.
|
|
40
|
+
*
|
|
41
|
+
* The old text — "No existing registration found. Use agent_register first." —
|
|
42
|
+
* sends you to a tool that answers "use reconnect with token". This says what
|
|
43
|
+
* the missing thing actually is.
|
|
44
|
+
*/
|
|
45
|
+
export declare function missingStateGuidance(workingDir: string, agentId?: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* The server says the id exists, and this machine holds no token for it.
|
|
48
|
+
*
|
|
49
|
+
* The exits are deliberately server-side. Advising `agent_register` here is
|
|
50
|
+
* what closed the loop in the first place.
|
|
51
|
+
*/
|
|
52
|
+
export declare function alreadyRegisteredGuidance(agentId: string, workingDir: string): string;
|
|
53
|
+
//# sourceMappingURL=agentIdentity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentIdentity.d.ts","sourceRoot":"","sources":["../src/agentIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,gBAAgB,CAoCnB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAUjF;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAUrF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which agent a registration is for, and what to say when it cannot proceed.
|
|
3
|
+
*
|
|
4
|
+
* Both of the rules here came from an agent that lost a day to their absence
|
|
5
|
+
* (krishi-dev, 2026-08-12), and both are the same shape of mistake: a default
|
|
6
|
+
* that quietly does something drastic, and an error that names another tool
|
|
7
|
+
* instead of the actual precondition.
|
|
8
|
+
*
|
|
9
|
+
* 1. **A missing `id` is not a request for a new agent.** `agent_register`
|
|
10
|
+
* with no id used to mint `agent-<timestamp>` — a fresh, org-visible
|
|
11
|
+
* identity — even while `AGENTHUB_AGENT_ID` named a real one. Creating an
|
|
12
|
+
* identity is a poor default for an omitted optional parameter, so the env
|
|
13
|
+
* var is consulted first and a generated id is a last resort that says so.
|
|
14
|
+
*
|
|
15
|
+
* 2. **`register` and `reconnect` used to point at each other.** Register
|
|
16
|
+
* answered "use reconnect with token"; reconnect answered "use
|
|
17
|
+
* agent_register first". Neither mentioned that reconnect needs a local
|
|
18
|
+
* `.agenthub/state` file that only a prior successful register writes — so
|
|
19
|
+
* with that file missing there was no client-side exit at all. The way out
|
|
20
|
+
* is server-side, and the messages now name it.
|
|
21
|
+
*/
|
|
22
|
+
function clean(value) {
|
|
23
|
+
const trimmed = (value ?? "").trim();
|
|
24
|
+
return trimmed === "" ? undefined : trimmed;
|
|
25
|
+
}
|
|
26
|
+
/** Derive an id from a display name. Only used when nothing better exists. */
|
|
27
|
+
function slug(name) {
|
|
28
|
+
return name.toLowerCase().replace(/[^a-z0-9-]/g, "-");
|
|
29
|
+
}
|
|
30
|
+
export function resolveAgentIdentity(input) {
|
|
31
|
+
const requestedId = clean(input.requestedId);
|
|
32
|
+
const name = clean(input.name);
|
|
33
|
+
const envAgentId = clean(input.envAgentId);
|
|
34
|
+
if (requestedId) {
|
|
35
|
+
return {
|
|
36
|
+
agentId: requestedId,
|
|
37
|
+
name: name ?? requestedId,
|
|
38
|
+
source: "explicit",
|
|
39
|
+
// Explicit beats ambient — but registering as something other than the
|
|
40
|
+
// pinned id is worth saying out loud.
|
|
41
|
+
note: envAgentId && envAgentId !== requestedId
|
|
42
|
+
? `Registering as "${requestedId}" although AGENTHUB_AGENT_ID is "${envAgentId}".`
|
|
43
|
+
: undefined,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (envAgentId) {
|
|
47
|
+
return { agentId: envAgentId, name: name ?? envAgentId, source: "env" };
|
|
48
|
+
}
|
|
49
|
+
if (name) {
|
|
50
|
+
return { agentId: slug(name), name, source: "name" };
|
|
51
|
+
}
|
|
52
|
+
const generated = `agent-${input.now ?? Date.now()}`;
|
|
53
|
+
return {
|
|
54
|
+
agentId: generated,
|
|
55
|
+
name: generated,
|
|
56
|
+
source: "generated",
|
|
57
|
+
warning: `No id, name or AGENTHUB_AGENT_ID was available, so a NEW agent "${generated}" ` +
|
|
58
|
+
`is being created. If you meant an existing agent, pass id or set AGENTHUB_AGENT_ID.`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `agent_reconnect` with no local state.
|
|
63
|
+
*
|
|
64
|
+
* The old text — "No existing registration found. Use agent_register first." —
|
|
65
|
+
* sends you to a tool that answers "use reconnect with token". This says what
|
|
66
|
+
* the missing thing actually is.
|
|
67
|
+
*/
|
|
68
|
+
export function missingStateGuidance(workingDir, agentId) {
|
|
69
|
+
const who = agentId ? ` for "${agentId}"` : "";
|
|
70
|
+
return (`No local connect token${who} in ${workingDir}. Reconnect reads it from ` +
|
|
71
|
+
`.agenthub/state, which only a successful agent_register writes — so if that file ` +
|
|
72
|
+
`is missing there is nothing on this machine to reconnect with. ` +
|
|
73
|
+
`Run agent_register to obtain one. If the server already holds this agent id, ` +
|
|
74
|
+
`register will refuse (it will not rotate a token that may be in use) and tell you ` +
|
|
75
|
+
`the server-side action needed.`);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The server says the id exists, and this machine holds no token for it.
|
|
79
|
+
*
|
|
80
|
+
* The exits are deliberately server-side. Advising `agent_register` here is
|
|
81
|
+
* what closed the loop in the first place.
|
|
82
|
+
*/
|
|
83
|
+
export function alreadyRegisteredGuidance(agentId, workingDir) {
|
|
84
|
+
return (`Agent "${agentId}" already exists on the server, but no connect token for it was ` +
|
|
85
|
+
`found in ${workingDir}. Registering again would rotate its token and knock the ` +
|
|
86
|
+
`current holder offline, so this stops here. Someone with access must either ` +
|
|
87
|
+
`re-issue the token (POST /api/agents/${agentId}/replace_token with an X-Agent-Owner ` +
|
|
88
|
+
`header, then place it in .agenthub/state) or delete the registration so a fresh ` +
|
|
89
|
+
`agent_register can mint one. If this is meant to be a different agent, set a ` +
|
|
90
|
+
`unique AGENTHUB_AGENT_ID.`);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=agentIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentIdentity.js","sourceRoot":"","sources":["../src/agentIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAcH,SAAS,KAAK,CAAC,KAAc;IAC3B,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC;AAED,8EAA8E;AAC9E,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAKpC;IACC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,IAAI,IAAI,WAAW;YACzB,MAAM,EAAE,UAAU;YAClB,uEAAuE;YACvE,sCAAsC;YACtC,IAAI,EACF,UAAU,IAAI,UAAU,KAAK,WAAW;gBACtC,CAAC,CAAC,mBAAmB,WAAW,oCAAoC,UAAU,IAAI;gBAClF,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC1E,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACrD,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,WAAW;QACnB,OAAO,EACL,mEAAmE,SAAS,IAAI;YAChF,qFAAqF;KACxF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,OAAgB;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,OAAO,CACL,yBAAyB,GAAG,OAAO,UAAU,4BAA4B;QACzE,mFAAmF;QACnF,iEAAiE;QACjE,+EAA+E;QAC/E,oFAAoF;QACpF,gCAAgC,CACjC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,UAAkB;IAC3E,OAAO,CACL,UAAU,OAAO,kEAAkE;QACnF,YAAY,UAAU,2DAA2D;QACjF,8EAA8E;QAC9E,wCAAwC,OAAO,uCAAuC;QACtF,kFAAkF;QAClF,+EAA+E;QAC/E,2BAA2B,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentIdentity.test.d.ts","sourceRoot":"","sources":["../src/agentIdentity.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Which agent a registration is FOR, and what to say when it cannot proceed.
|
|
2
|
+
//
|
|
3
|
+
// Both of these were reported by an agent that lost a day to them
|
|
4
|
+
// (krishi-dev, 2026-08-12):
|
|
5
|
+
//
|
|
6
|
+
// 1. `agent_register` with no `id` minted `agent-1786533921204` while
|
|
7
|
+
// AGENTHUB_AGENT_ID was set to `krishi-dev` — a new org-visible identity
|
|
8
|
+
// as the default for a missing optional parameter.
|
|
9
|
+
// 2. register said "use reconnect", reconnect said "use register", and
|
|
10
|
+
// neither named the precondition that makes the loop escapable. There was
|
|
11
|
+
// no client-side exit at all.
|
|
12
|
+
import { describe, it, expect } from "vitest";
|
|
13
|
+
import { resolveAgentIdentity, missingStateGuidance, alreadyRegisteredGuidance, } from "./agentIdentity.js";
|
|
14
|
+
const NOW = 1786533921204;
|
|
15
|
+
describe("resolveAgentIdentity", () => {
|
|
16
|
+
it("uses an explicit id when given", () => {
|
|
17
|
+
const r = resolveAgentIdentity({ requestedId: "krishi-dev", envAgentId: "other", now: NOW });
|
|
18
|
+
expect(r.agentId).toBe("krishi-dev");
|
|
19
|
+
expect(r.source).toBe("explicit");
|
|
20
|
+
});
|
|
21
|
+
it("falls back to AGENTHUB_AGENT_ID rather than minting a new identity", () => {
|
|
22
|
+
// The actual bug. This call previously produced `agent-1786533921204`.
|
|
23
|
+
const r = resolveAgentIdentity({ envAgentId: "krishi-dev", now: NOW });
|
|
24
|
+
expect(r.agentId).toBe("krishi-dev");
|
|
25
|
+
expect(r.source).toBe("env");
|
|
26
|
+
expect(r.agentId).not.toMatch(/^agent-\d+$/);
|
|
27
|
+
});
|
|
28
|
+
it("prefers the env id over one derived from the name", () => {
|
|
29
|
+
// A display name is not an identity. Deriving an id from it while the env
|
|
30
|
+
// names a real agent is the same mistake in a smaller form.
|
|
31
|
+
const r = resolveAgentIdentity({ name: "Krishi Backend", envAgentId: "krishi-dev", now: NOW });
|
|
32
|
+
expect(r.agentId).toBe("krishi-dev");
|
|
33
|
+
expect(r.name).toBe("Krishi Backend");
|
|
34
|
+
});
|
|
35
|
+
it("derives from the name when nothing else is available", () => {
|
|
36
|
+
const r = resolveAgentIdentity({ name: "Krishi Backend", now: NOW });
|
|
37
|
+
expect(r.agentId).toBe("krishi-backend");
|
|
38
|
+
expect(r.source).toBe("name");
|
|
39
|
+
});
|
|
40
|
+
it("generates only as a last resort, and says so", () => {
|
|
41
|
+
const r = resolveAgentIdentity({ now: NOW });
|
|
42
|
+
expect(r.agentId).toBe("agent-1786533921204");
|
|
43
|
+
expect(r.source).toBe("generated");
|
|
44
|
+
// The caller must be able to warn: a generated id is a NEW org-visible
|
|
45
|
+
// agent, which is rarely what someone meant by omitting a parameter.
|
|
46
|
+
expect(r.warning).toBeTruthy();
|
|
47
|
+
expect(r.warning).toMatch(/AGENTHUB_AGENT_ID/);
|
|
48
|
+
});
|
|
49
|
+
it("does not warn when the identity was chosen deliberately", () => {
|
|
50
|
+
expect(resolveAgentIdentity({ requestedId: "a", now: NOW }).warning).toBeUndefined();
|
|
51
|
+
expect(resolveAgentIdentity({ envAgentId: "a", now: NOW }).warning).toBeUndefined();
|
|
52
|
+
});
|
|
53
|
+
it("notes when an explicit id overrides a different env id", () => {
|
|
54
|
+
// Explicit beats ambient — but silently registering as something other
|
|
55
|
+
// than the pinned id is worth one line of output.
|
|
56
|
+
const r = resolveAgentIdentity({ requestedId: "one-off", envAgentId: "krishi-dev", now: NOW });
|
|
57
|
+
expect(r.agentId).toBe("one-off");
|
|
58
|
+
expect(r.note).toMatch(/krishi-dev/);
|
|
59
|
+
});
|
|
60
|
+
it("ignores blank and whitespace values instead of treating them as ids", () => {
|
|
61
|
+
const r = resolveAgentIdentity({ requestedId: " ", envAgentId: "krishi-dev", now: NOW });
|
|
62
|
+
expect(r.agentId).toBe("krishi-dev");
|
|
63
|
+
});
|
|
64
|
+
it("sanitises a derived id but never a supplied one", () => {
|
|
65
|
+
// One dash per replaced character, matching the existing behaviour this
|
|
66
|
+
// extraction preserved — not a new normalisation invented here.
|
|
67
|
+
expect(resolveAgentIdentity({ name: "Foo Bar!! v2", now: NOW }).agentId).toBe("foo-bar---v2");
|
|
68
|
+
// A supplied id is passed through: the server owns that validation, and
|
|
69
|
+
// silently rewriting what someone typed is its own class of surprise.
|
|
70
|
+
expect(resolveAgentIdentity({ requestedId: "Weird_ID", now: NOW }).agentId).toBe("Weird_ID");
|
|
71
|
+
});
|
|
72
|
+
it("names the agent after its id when no name is given", () => {
|
|
73
|
+
expect(resolveAgentIdentity({ envAgentId: "krishi-dev", now: NOW }).name).toBe("krishi-dev");
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe("guidance out of the register/reconnect loop", () => {
|
|
77
|
+
it("reconnect explains the precondition, not just the other tool", () => {
|
|
78
|
+
const m = missingStateGuidance("D:\\Krishi_AI\\Krishi-Dev", "krishi-dev");
|
|
79
|
+
// The old text was "No existing registration found. Use agent_register
|
|
80
|
+
// first." — which sends you to a tool that answers "use reconnect".
|
|
81
|
+
expect(m).toContain(".agenthub/state");
|
|
82
|
+
expect(m).toMatch(/agent_register/);
|
|
83
|
+
// It must say what the missing file IS, since its absence is the whole
|
|
84
|
+
// problem — not merely that it is missing.
|
|
85
|
+
expect(m).toMatch(/only a successful agent_register writes/i);
|
|
86
|
+
expect(m).toMatch(/nothing on this machine to reconnect with/i);
|
|
87
|
+
});
|
|
88
|
+
it("reconnect guidance names the working directory it looked in", () => {
|
|
89
|
+
expect(missingStateGuidance("D:\\X\\Y", "a")).toContain("D:\\X\\Y");
|
|
90
|
+
});
|
|
91
|
+
it("the already-registered error names a real way out", () => {
|
|
92
|
+
const m = alreadyRegisteredGuidance("krishi-dev", "D:\\Krishi_AI\\Krishi-Dev");
|
|
93
|
+
// Naming the agent and the directory is the minimum.
|
|
94
|
+
expect(m).toContain("krishi-dev");
|
|
95
|
+
expect(m).toContain("D:\\Krishi_AI\\Krishi-Dev");
|
|
96
|
+
// The exits are SERVER-side. Saying "run agent_register" here is what made
|
|
97
|
+
// this a loop, so that must not be the advice.
|
|
98
|
+
expect(m).toMatch(/replace_token|re-?issue/i);
|
|
99
|
+
expect(m).toMatch(/delete|remove/i);
|
|
100
|
+
expect(m).not.toMatch(/use agent_register first/i);
|
|
101
|
+
});
|
|
102
|
+
it("the already-registered error explains why it will not just re-register", () => {
|
|
103
|
+
// Registering over a live agent rotates its token and knocks the real
|
|
104
|
+
// holder offline. The refusal is deliberate and should read that way.
|
|
105
|
+
const m = alreadyRegisteredGuidance("krishi-dev", "D:\\X");
|
|
106
|
+
expect(m).toMatch(/token/i);
|
|
107
|
+
expect(m).toMatch(/offline|in use|holder|rotate/i);
|
|
108
|
+
});
|
|
109
|
+
it("both messages are single-paragraph-ish, not essays", () => {
|
|
110
|
+
for (const m of [
|
|
111
|
+
missingStateGuidance("D:\\X", "a"),
|
|
112
|
+
alreadyRegisteredGuidance("a", "D:\\X"),
|
|
113
|
+
]) {
|
|
114
|
+
expect(m.length).toBeLessThan(700);
|
|
115
|
+
expect(m.trim()).not.toBe("");
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=agentIdentity.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentIdentity.test.js","sourceRoot":"","sources":["../src/agentIdentity.test.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -348,6 +348,14 @@ export declare class ApiClient {
|
|
|
348
348
|
output_tokens: number;
|
|
349
349
|
cache_read_tokens: number;
|
|
350
350
|
turns: number;
|
|
351
|
+
/**
|
|
352
|
+
* Scopes the cumulative counters to one session/process run
|
|
353
|
+
* (add-interactive-usage-producer §3). One agent can run several
|
|
354
|
+
* sessions at once; without run scoping, their interleaved counters
|
|
355
|
+
* each read as the other's restart and the total inflates. Omitted by
|
|
356
|
+
* legacy producers — the server folds those into a default run.
|
|
357
|
+
*/
|
|
358
|
+
run_id?: string;
|
|
351
359
|
}): Promise<{
|
|
352
360
|
acknowledged: boolean;
|
|
353
361
|
timestamp: string;
|