@perkos/perkos-a2a 0.12.12 → 0.12.13
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.
|
@@ -22,6 +22,29 @@ import type { ChatDeliverFrame, ChatMessageInboundFrame } from "./chat-types.js"
|
|
|
22
22
|
* existing co-located deploy keeps its byte-identical behavior — both the
|
|
23
23
|
* skipped body-read and the same throw-on-non-2xx path.
|
|
24
24
|
*/
|
|
25
|
+
/**
|
|
26
|
+
* Build the Hermes delivery URL, inserting the multiplex profile prefix for a
|
|
27
|
+
* CO-RESIDENT agent (Phase 1 multi-agent). Hermes serves the default profile at
|
|
28
|
+
* the root and each named profile under `/p/<profile>/`, so a co-resident's
|
|
29
|
+
* bridge posts to `.../p/<profile>/<endpoint>`. No profile → the default
|
|
30
|
+
* profile at the root (single-agent, unchanged). Pure — unit-testable.
|
|
31
|
+
*/
|
|
32
|
+
export declare function hermesDeliveryUrl(baseUrl: string, endpoint: string, profile?: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* The agent's SOUL / persona, passed by the bridge as the request-level system
|
|
35
|
+
* prompt (Phase 1 multi-agent). Hermes appends `instructions` (Responses API) /
|
|
36
|
+
* `system_message` to the base system prompt (conversation_loop appends, never
|
|
37
|
+
* replaces), so the persona is applied WITHOUT dropping tool instructions.
|
|
38
|
+
*
|
|
39
|
+
* Why the bridge carries it: the Hermes `api_server` platform is NOT
|
|
40
|
+
* multiplex-aware — it has no `/p/<profile>/` route and never enters
|
|
41
|
+
* `_profile_runtime_scope`, so a co-resident's `/v1/responses` turn loads the
|
|
42
|
+
* DEFAULT profile's home and misses the co-resident's `SOUL.md`. Carrying the
|
|
43
|
+
* SOUL in the request makes each co-resident (and the host) reply in-persona
|
|
44
|
+
* regardless of the runtime's profile home-scoping. Empty → omitted (byte-
|
|
45
|
+
* identical single-agent body). Base64 so the multi-line SOUL survives the env.
|
|
46
|
+
*/
|
|
47
|
+
export declare function personaInstructions(): string;
|
|
25
48
|
export declare function deliverToHermes(config: A2APluginConfig, message: string, wantResponse?: boolean): Promise<unknown>;
|
|
26
49
|
/** Whether the standalone bridge should auto-deliver Hermes replies back through chat. */
|
|
27
50
|
export declare function autoReplyEnabled(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-chat-reply.d.ts","sourceRoot":"","sources":["../src/bridge-chat-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEjF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,EACf,YAAY,UAAQ,GACnB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"bridge-chat-reply.d.ts","sourceRoot":"","sources":["../src/bridge-chat-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEjF;;;;;;;;;;;;;GAaG;AACH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,EACf,YAAY,UAAQ,GACnB,OAAO,CAAC,OAAO,CAAC,CAiDlB;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkCjE;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,CAAC,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;CAC1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,KAAK,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;IAClD,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,uBAAuB,KAAK,MAAM,CAAC;IAC5E,YAAY,EAAE,SAAS,CAAC;IACxB,OAAO,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,iBAAiB,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChB"}
|
|
@@ -20,13 +20,54 @@
|
|
|
20
20
|
* existing co-located deploy keeps its byte-identical behavior — both the
|
|
21
21
|
* skipped body-read and the same throw-on-non-2xx path.
|
|
22
22
|
*/
|
|
23
|
+
/**
|
|
24
|
+
* Build the Hermes delivery URL, inserting the multiplex profile prefix for a
|
|
25
|
+
* CO-RESIDENT agent (Phase 1 multi-agent). Hermes serves the default profile at
|
|
26
|
+
* the root and each named profile under `/p/<profile>/`, so a co-resident's
|
|
27
|
+
* bridge posts to `.../p/<profile>/<endpoint>`. No profile → the default
|
|
28
|
+
* profile at the root (single-agent, unchanged). Pure — unit-testable.
|
|
29
|
+
*/
|
|
30
|
+
export function hermesDeliveryUrl(baseUrl, endpoint, profile) {
|
|
31
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
32
|
+
const prefix = profile ? `/p/${encodeURIComponent(profile)}` : "";
|
|
33
|
+
const ep = endpoint.startsWith("/") ? endpoint : `/${endpoint}`;
|
|
34
|
+
return `${base}${prefix}${ep}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The agent's SOUL / persona, passed by the bridge as the request-level system
|
|
38
|
+
* prompt (Phase 1 multi-agent). Hermes appends `instructions` (Responses API) /
|
|
39
|
+
* `system_message` to the base system prompt (conversation_loop appends, never
|
|
40
|
+
* replaces), so the persona is applied WITHOUT dropping tool instructions.
|
|
41
|
+
*
|
|
42
|
+
* Why the bridge carries it: the Hermes `api_server` platform is NOT
|
|
43
|
+
* multiplex-aware — it has no `/p/<profile>/` route and never enters
|
|
44
|
+
* `_profile_runtime_scope`, so a co-resident's `/v1/responses` turn loads the
|
|
45
|
+
* DEFAULT profile's home and misses the co-resident's `SOUL.md`. Carrying the
|
|
46
|
+
* SOUL in the request makes each co-resident (and the host) reply in-persona
|
|
47
|
+
* regardless of the runtime's profile home-scoping. Empty → omitted (byte-
|
|
48
|
+
* identical single-agent body). Base64 so the multi-line SOUL survives the env.
|
|
49
|
+
*/
|
|
50
|
+
export function personaInstructions() {
|
|
51
|
+
const b64 = process.env.PERKOS_AGENT_SOUL_B64 || "";
|
|
52
|
+
if (!b64.trim())
|
|
53
|
+
return "";
|
|
54
|
+
try {
|
|
55
|
+
return Buffer.from(b64, "base64").toString("utf8").trim();
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return "";
|
|
59
|
+
}
|
|
60
|
+
}
|
|
23
61
|
export async function deliverToHermes(config, message, wantResponse = false) {
|
|
24
62
|
const runtime = config.runtime || {};
|
|
25
63
|
const baseUrl = (runtime.hermesUrl || process.env.HERMES_API_URL || process.env.HERMES_WORKSPACE_URL || "http://127.0.0.1:8642").replace(/\/+$/, "");
|
|
26
64
|
const endpoint = runtime.hermesEndpoint || process.env.HERMES_API_ENDPOINT || process.env.HERMES_WORKSPACE_ENDPOINT || "/v1/responses";
|
|
27
65
|
const sessionKey = runtime.sessionKey || process.env.HERMES_SESSION_ID || process.env.HERMES_SESSION_KEY || "a2a";
|
|
28
66
|
const token = runtime.hermesToken || process.env.API_SERVER_KEY || process.env.HERMES_API_KEY || process.env.HERMES_WORKSPACE_TOKEN || process.env.HERMES_SESSION_TOKEN;
|
|
29
|
-
|
|
67
|
+
// Co-resident routing: a named Hermes profile is reached via /p/<profile>/.
|
|
68
|
+
// Set per co-resident bridge sidecar (env PERKOS_HERMES_PROFILE or config).
|
|
69
|
+
const profile = runtime.hermesProfile || process.env.PERKOS_HERMES_PROFILE || "";
|
|
70
|
+
const url = hermesDeliveryUrl(baseUrl, endpoint, profile);
|
|
30
71
|
const headers = {
|
|
31
72
|
"content-type": "application/json",
|
|
32
73
|
"x-hermes-session-id": sessionKey,
|
|
@@ -35,12 +76,23 @@ export async function deliverToHermes(config, message, wantResponse = false) {
|
|
|
35
76
|
if (token)
|
|
36
77
|
headers.authorization = `Bearer ${token}`;
|
|
37
78
|
const normalizedEndpoint = endpoint.replace(/^\/?/, "/");
|
|
79
|
+
// Persona (SOUL) as the request-level system prompt — Hermes appends it to
|
|
80
|
+
// the base prompt, so the agent stays in-character even when the api_server
|
|
81
|
+
// platform can't resolve the co-resident's profile home. See personaInstructions().
|
|
82
|
+
const persona = personaInstructions();
|
|
38
83
|
const body = normalizedEndpoint.startsWith("/v1/chat/completions")
|
|
39
|
-
? {
|
|
84
|
+
? {
|
|
85
|
+
model: process.env.HERMES_MODEL || "hermes-agent",
|
|
86
|
+
messages: [
|
|
87
|
+
...(persona ? [{ role: "system", content: persona }] : []),
|
|
88
|
+
{ role: "user", content: message },
|
|
89
|
+
],
|
|
90
|
+
stream: false,
|
|
91
|
+
}
|
|
40
92
|
: normalizedEndpoint.startsWith("/v1/runs")
|
|
41
|
-
? { input: message, session_id: sessionKey }
|
|
93
|
+
? { input: message, session_id: sessionKey, ...(persona ? { instructions: persona } : {}) }
|
|
42
94
|
: normalizedEndpoint.startsWith("/v1/responses")
|
|
43
|
-
? { model: process.env.HERMES_MODEL || "hermes-agent", input: message, store: true }
|
|
95
|
+
? { model: process.env.HERMES_MODEL || "hermes-agent", input: message, store: true, ...(persona ? { instructions: persona } : {}) }
|
|
44
96
|
: { sessionKey, message };
|
|
45
97
|
const response = await fetch(url, { method: "POST", headers, body: JSON.stringify(body) });
|
|
46
98
|
if (!response.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-chat-reply.js","sourceRoot":"","sources":["../src/bridge-chat-reply.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,OAAe,EACf,YAAY,GAAG,KAAK;IAEpB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrJ,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,eAAe,CAAC;IACvI,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC;IAClH,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACxK,
|
|
1
|
+
{"version":3,"file":"bridge-chat-reply.js","sourceRoot":"","sources":["../src/bridge-chat-reply.ts"],"names":[],"mappings":"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"}
|