@scotthuang/agent-knock-knock 0.13.2 → 0.13.4
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/CHANGELOG.md +36 -0
- package/README.md +27 -6
- package/dist/src/callback-outbox-policy.js +27 -6
- package/dist/src/callback-outbox-policy.js.map +1 -1
- package/dist/src/callback-outbox-service.d.ts +4 -30
- package/dist/src/callback-outbox-service.js +21 -154
- package/dist/src/callback-outbox-service.js.map +1 -1
- package/dist/src/callback-outbox-settlement.js +13 -8
- package/dist/src/callback-outbox-settlement.js.map +1 -1
- package/dist/src/callback-route-service.d.ts +46 -0
- package/dist/src/callback-route-service.js +155 -0
- package/dist/src/callback-route-service.js.map +1 -0
- package/dist/src/claude-terminal-agent-adapter.js +4 -0
- package/dist/src/claude-terminal-agent-adapter.js.map +1 -1
- package/dist/src/cli-core.js +9 -1
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/codex-process-incarnation.d.ts +8 -0
- package/dist/src/codex-process-incarnation.js +36 -0
- package/dist/src/codex-process-incarnation.js.map +1 -0
- package/dist/src/codex-terminal-agent-adapter.js +4 -0
- package/dist/src/codex-terminal-agent-adapter.js.map +1 -1
- package/dist/src/deferred-foreground-conflict-policy.d.ts +22 -0
- package/dist/src/deferred-foreground-conflict-policy.js +52 -0
- package/dist/src/deferred-foreground-conflict-policy.js.map +1 -0
- package/dist/src/durable-notification-kernel.d.ts +94 -0
- package/dist/src/durable-notification-kernel.js +68 -0
- package/dist/src/durable-notification-kernel.js.map +1 -0
- package/dist/src/herdr-socket-transport.d.ts +43 -0
- package/dist/src/herdr-socket-transport.js +170 -0
- package/dist/src/herdr-socket-transport.js.map +1 -0
- package/dist/src/herdr-terminal-control-provider.d.ts +2 -45
- package/dist/src/herdr-terminal-control-provider.js +8 -173
- package/dist/src/herdr-terminal-control-provider.js.map +1 -1
- package/dist/src/host-adapter-capabilities.d.ts +35 -0
- package/dist/src/host-adapter-capabilities.js +146 -0
- package/dist/src/host-adapter-capabilities.js.map +1 -0
- package/dist/src/host-adapter.d.ts +9 -3
- package/dist/src/host-adapter.js +33 -9
- package/dist/src/host-adapter.js.map +1 -1
- package/dist/src/host-bridge-tools.d.ts +3 -4
- package/dist/src/host-bridge-tools.js +49 -92
- package/dist/src/host-bridge-tools.js.map +1 -1
- package/dist/src/host-bridge.js +5 -5
- package/dist/src/host-bridge.js.map +1 -1
- package/dist/src/host-monitor-reconciliation.d.ts +6 -0
- package/dist/src/host-monitor-reconciliation.js +96 -0
- package/dist/src/host-monitor-reconciliation.js.map +1 -0
- package/dist/src/managed-session.js +2 -18
- package/dist/src/managed-session.js.map +1 -1
- package/dist/src/native-thread-lifecycle-cli-adapter.d.ts +13 -0
- package/dist/src/native-thread-lifecycle-cli-adapter.js +635 -3
- package/dist/src/native-thread-lifecycle-cli-adapter.js.map +1 -1
- package/dist/src/openclaw-list-projection.d.ts +2 -0
- package/dist/src/openclaw-list-projection.js +3 -0
- package/dist/src/openclaw-list-projection.js.map +1 -0
- package/dist/src/openclaw-model-facing-field-policy.d.ts +2 -0
- package/dist/src/openclaw-model-facing-field-policy.js +3 -0
- package/dist/src/openclaw-model-facing-field-policy.js.map +1 -0
- package/dist/src/openclaw-plugin-command-adapter.d.ts +6 -29
- package/dist/src/openclaw-plugin-command-adapter.js +7 -2370
- package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
- package/dist/src/openclaw-plugin-helpers.d.ts +2 -121
- package/dist/src/openclaw-plugin-helpers.js +2 -1164
- package/dist/src/openclaw-plugin-helpers.js.map +1 -1
- package/dist/src/openclaw-plugin-schemas.d.ts +2 -510
- package/dist/src/openclaw-plugin-schemas.js +2 -519
- package/dist/src/openclaw-plugin-schemas.js.map +1 -1
- package/dist/src/openclaw-plugin-supervisor.d.ts +4 -5
- package/dist/src/openclaw-plugin-supervisor.js +5 -94
- package/dist/src/openclaw-plugin-supervisor.js.map +1 -1
- package/dist/src/openclaw-plugin-value-helpers.d.ts +2 -0
- package/dist/src/openclaw-plugin-value-helpers.js +3 -0
- package/dist/src/openclaw-plugin-value-helpers.js.map +1 -0
- package/dist/src/openclaw-private-authority-offers.d.ts +4 -39
- package/dist/src/openclaw-private-authority-offers.js +3 -258
- package/dist/src/openclaw-private-authority-offers.js.map +1 -1
- package/dist/src/semantic-private-authority-offers.d.ts +41 -0
- package/dist/src/semantic-private-authority-offers.js +261 -0
- package/dist/src/semantic-private-authority-offers.js.map +1 -0
- package/dist/src/semantic-tool-arguments.d.ts +9 -0
- package/dist/src/semantic-tool-arguments.js +64 -0
- package/dist/src/semantic-tool-arguments.js.map +1 -0
- package/dist/src/semantic-tool-catalog.d.ts +48 -0
- package/dist/src/semantic-tool-catalog.js +105 -0
- package/dist/src/semantic-tool-catalog.js.map +1 -0
- package/dist/src/semantic-tool-command-helpers.d.ts +145 -0
- package/dist/src/semantic-tool-command-helpers.js +1272 -0
- package/dist/src/semantic-tool-command-helpers.js.map +1 -0
- package/dist/src/semantic-tool-list-projection.d.ts +10 -0
- package/dist/src/semantic-tool-list-projection.js +497 -0
- package/dist/src/semantic-tool-list-projection.js.map +1 -0
- package/dist/src/semantic-tool-model-facing-field-policy.d.ts +3 -0
- package/dist/src/semantic-tool-model-facing-field-policy.js +66 -0
- package/dist/src/semantic-tool-model-facing-field-policy.js.map +1 -0
- package/dist/src/semantic-tool-presentation.d.ts +37 -0
- package/dist/src/semantic-tool-presentation.js +680 -0
- package/dist/src/semantic-tool-presentation.js.map +1 -0
- package/dist/src/semantic-tool-private-authority.d.ts +39 -0
- package/dist/src/semantic-tool-private-authority.js +602 -0
- package/dist/src/semantic-tool-private-authority.js.map +1 -0
- package/dist/src/semantic-tool-relay.d.ts +16 -0
- package/dist/src/semantic-tool-relay.js +175 -0
- package/dist/src/semantic-tool-relay.js.map +1 -0
- package/dist/src/semantic-tool-runtime.d.ts +10 -0
- package/dist/src/semantic-tool-runtime.js +1157 -0
- package/dist/src/semantic-tool-runtime.js.map +1 -0
- package/dist/src/semantic-tool-schemas.d.ts +563 -0
- package/dist/src/semantic-tool-schemas.js +573 -0
- package/dist/src/semantic-tool-schemas.js.map +1 -0
- package/dist/src/semantic-tool-value-helpers.d.ts +5 -0
- package/dist/src/semantic-tool-value-helpers.js +27 -0
- package/dist/src/semantic-tool-value-helpers.js.map +1 -0
- package/dist/src/store-event-presentation.d.ts +17 -0
- package/dist/src/store-event-presentation.js +33 -0
- package/dist/src/store-event-presentation.js.map +1 -0
- package/dist/src/store.d.ts +3 -16
- package/dist/src/store.js +2 -30
- package/dist/src/store.js.map +1 -1
- package/dist/src/terminal-action-projection.d.ts +3 -17
- package/dist/src/terminal-action-projection.js +13 -41
- package/dist/src/terminal-action-projection.js.map +1 -1
- package/dist/src/terminal-agent-adapter.d.ts +7 -0
- package/dist/src/terminal-agent-adapter.js +8 -0
- package/dist/src/terminal-agent-adapter.js.map +1 -1
- package/dist/src/terminal-agent-bridge.d.ts +35 -332
- package/dist/src/terminal-agent-bridge.js +293 -2798
- package/dist/src/terminal-agent-bridge.js.map +1 -1
- package/dist/src/terminal-approval-cli-adapter.d.ts +17 -0
- package/dist/src/terminal-approval-cli-adapter.js +921 -0
- package/dist/src/terminal-approval-cli-adapter.js.map +1 -0
- package/dist/src/terminal-command-cli-adapter.d.ts +2 -429
- package/dist/src/terminal-command-cli-adapter.js +344 -6061
- package/dist/src/terminal-command-cli-adapter.js.map +1 -1
- package/dist/src/terminal-command-cli-ports.d.ts +443 -0
- package/dist/src/terminal-command-cli-ports.js +2 -0
- package/dist/src/terminal-command-cli-ports.js.map +1 -0
- package/dist/src/terminal-command-dispatch-preparation.d.ts +81 -0
- package/dist/src/terminal-command-dispatch-preparation.js +209 -0
- package/dist/src/terminal-command-dispatch-preparation.js.map +1 -0
- package/dist/src/terminal-command-dispatch-transport.d.ts +35 -0
- package/dist/src/terminal-command-dispatch-transport.js +859 -0
- package/dist/src/terminal-command-dispatch-transport.js.map +1 -0
- package/dist/src/terminal-command-foreground-proof.d.ts +32 -0
- package/dist/src/terminal-command-foreground-proof.js +72 -0
- package/dist/src/terminal-command-foreground-proof.js.map +1 -0
- package/dist/src/terminal-command-send-preflight.d.ts +41 -0
- package/dist/src/terminal-command-send-preflight.js +86 -0
- package/dist/src/terminal-command-send-preflight.js.map +1 -0
- package/dist/src/terminal-composer-classifier.d.ts +55 -0
- package/dist/src/terminal-composer-classifier.js +638 -0
- package/dist/src/terminal-composer-classifier.js.map +1 -0
- package/dist/src/terminal-control-ref.d.ts +23 -0
- package/dist/src/terminal-control-ref.js +32 -0
- package/dist/src/terminal-control-ref.js.map +1 -1
- package/dist/src/terminal-dispatch-recovery-authority.d.ts +56 -0
- package/dist/src/terminal-dispatch-recovery-authority.js +251 -0
- package/dist/src/terminal-dispatch-recovery-authority.js.map +1 -0
- package/dist/src/terminal-dispatch-recovery-cli-adapter.d.ts +1 -9
- package/dist/src/terminal-dispatch-recovery-cli-adapter.js +5 -240
- package/dist/src/terminal-dispatch-recovery-cli-adapter.js.map +1 -1
- package/dist/src/terminal-handoff-cli-adapter.d.ts +1 -11
- package/dist/src/terminal-handoff-cli-adapter.js +2 -39
- package/dist/src/terminal-handoff-cli-adapter.js.map +1 -1
- package/dist/src/terminal-human-explicit-send-cli-adapter.d.ts +25 -0
- package/dist/src/terminal-human-explicit-send-cli-adapter.js +903 -0
- package/dist/src/terminal-human-explicit-send-cli-adapter.js.map +1 -0
- package/dist/src/terminal-identity-authority-cli-adapter.d.ts +1 -6
- package/dist/src/terminal-identity-authority-cli-adapter.js +3 -33
- package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -1
- package/dist/src/terminal-interaction-cli-adapter.js +209 -210
- package/dist/src/terminal-interaction-cli-adapter.js.map +1 -1
- package/dist/src/terminal-interaction-core.d.ts +0 -2
- package/dist/src/terminal-interaction-core.js +4 -3
- package/dist/src/terminal-interaction-core.js.map +1 -1
- package/dist/src/terminal-interaction-protocol.d.ts +21 -0
- package/dist/src/terminal-interaction-protocol.js +74 -0
- package/dist/src/terminal-interaction-protocol.js.map +1 -1
- package/dist/src/terminal-interaction-response-bridge.d.ts +126 -0
- package/dist/src/terminal-interaction-response-bridge.js +579 -0
- package/dist/src/terminal-interaction-response-bridge.js.map +1 -0
- package/dist/src/terminal-interaction-response-transaction.d.ts +44 -0
- package/dist/src/terminal-interaction-response-transaction.js +56 -0
- package/dist/src/terminal-interaction-response-transaction.js.map +1 -0
- package/dist/src/terminal-list-action-policy.d.ts +43 -0
- package/dist/src/terminal-list-action-policy.js +164 -0
- package/dist/src/terminal-list-action-policy.js.map +1 -0
- package/dist/src/terminal-list-cli-adapter.d.ts +6 -36
- package/dist/src/terminal-list-cli-adapter.js +314 -1711
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-facts.d.ts +129 -0
- package/dist/src/terminal-list-facts.js +179 -0
- package/dist/src/terminal-list-facts.js.map +1 -0
- package/dist/src/terminal-list-inventory.d.ts +59 -0
- package/dist/src/terminal-list-inventory.js +194 -0
- package/dist/src/terminal-list-inventory.js.map +1 -0
- package/dist/src/terminal-list-ownership-service.d.ts +118 -0
- package/dist/src/terminal-list-ownership-service.js +1003 -0
- package/dist/src/terminal-list-ownership-service.js.map +1 -0
- package/dist/src/terminal-list-projection-service.d.ts +49 -0
- package/dist/src/terminal-list-projection-service.js +407 -0
- package/dist/src/terminal-list-projection-service.js.map +1 -0
- package/dist/src/terminal-list-renderer.d.ts +12 -11
- package/dist/src/terminal-list-renderer.js +237 -104
- package/dist/src/terminal-list-renderer.js.map +1 -1
- package/dist/src/terminal-managed-send-cli-adapter.d.ts +33 -0
- package/dist/src/terminal-managed-send-cli-adapter.js +994 -0
- package/dist/src/terminal-managed-send-cli-adapter.js.map +1 -0
- package/dist/src/terminal-managed-turn-list-action-policy.d.ts +47 -0
- package/dist/src/terminal-managed-turn-list-action-policy.js +64 -0
- package/dist/src/terminal-managed-turn-list-action-policy.js.map +1 -0
- package/dist/src/terminal-model-control-action-policy.d.ts +60 -0
- package/dist/src/terminal-model-control-action-policy.js +96 -0
- package/dist/src/terminal-model-control-action-policy.js.map +1 -0
- package/dist/src/terminal-model-control-availability.d.ts +68 -0
- package/dist/src/terminal-model-control-availability.js +157 -0
- package/dist/src/terminal-model-control-availability.js.map +1 -0
- package/dist/src/terminal-model-control-bridge.d.ts +48 -0
- package/dist/src/terminal-model-control-bridge.js +259 -0
- package/dist/src/terminal-model-control-bridge.js.map +1 -0
- package/dist/src/terminal-model-control-profile.d.ts +55 -0
- package/dist/src/terminal-model-control-profile.js +137 -0
- package/dist/src/terminal-model-control-profile.js.map +1 -0
- package/dist/src/terminal-model-control-subject.d.ts +34 -0
- package/dist/src/terminal-model-control-subject.js +58 -0
- package/dist/src/terminal-model-control-subject.js.map +1 -0
- package/dist/src/terminal-model-control-transaction.d.ts +19 -0
- package/dist/src/terminal-model-control-transaction.js +39 -0
- package/dist/src/terminal-model-control-transaction.js.map +1 -0
- package/dist/src/terminal-model-control.d.ts +331 -0
- package/dist/src/terminal-model-control.js +1686 -0
- package/dist/src/terminal-model-control.js.map +1 -0
- package/dist/src/terminal-monitor-application-service.js +50 -17
- package/dist/src/terminal-monitor-application-service.js.map +1 -1
- package/dist/src/terminal-native-inspection-bridge.d.ts +211 -0
- package/dist/src/terminal-native-inspection-bridge.js +1127 -0
- package/dist/src/terminal-native-inspection-bridge.js.map +1 -0
- package/dist/src/terminal-runtime-cli-adapter.d.ts +2 -0
- package/dist/src/terminal-runtime-cli-adapter.js +59 -17
- package/dist/src/terminal-runtime-cli-adapter.js.map +1 -1
- package/dist/src/terminal-submission-retry-application.d.ts +24 -0
- package/dist/src/terminal-submission-retry-application.js +402 -0
- package/dist/src/terminal-submission-retry-application.js.map +1 -0
- package/dist/src/terminal-submission-retry-ports.d.ts +30 -0
- package/dist/src/terminal-submission-retry-ports.js +2 -0
- package/dist/src/terminal-submission-retry-ports.js.map +1 -0
- package/dist/src/terminal-submission-retry-reconciliation.d.ts +236 -0
- package/dist/src/terminal-submission-retry-reconciliation.js +1130 -0
- package/dist/src/terminal-submission-retry-reconciliation.js.map +1 -0
- package/dist/src/terminal-submission-retry-transport.d.ts +58 -0
- package/dist/src/terminal-submission-retry-transport.js +675 -0
- package/dist/src/terminal-submission-retry-transport.js.map +1 -0
- package/dist/src/terminal-text-submission-bridge.d.ts +200 -0
- package/dist/src/terminal-text-submission-bridge.js +632 -0
- package/dist/src/terminal-text-submission-bridge.js.map +1 -0
- package/dist/src/terminal-user-explicit-send-policy.d.ts +29 -0
- package/dist/src/terminal-user-explicit-send-policy.js +46 -0
- package/dist/src/terminal-user-explicit-send-policy.js.map +1 -0
- package/dist/src/terminal-watch-cli-adapter.js +91 -143
- package/dist/src/terminal-watch-cli-adapter.js.map +1 -1
- package/dist/src/terminal-watch-codec.d.ts +9 -0
- package/dist/src/terminal-watch-codec.js +1051 -0
- package/dist/src/terminal-watch-codec.js.map +1 -0
- package/dist/src/terminal-watch-interaction-response-store.d.ts +19 -0
- package/dist/src/terminal-watch-interaction-response-store.js +87 -0
- package/dist/src/terminal-watch-interaction-response-store.js.map +1 -0
- package/dist/src/terminal-watch-record.d.ts +319 -0
- package/dist/src/terminal-watch-record.js +742 -0
- package/dist/src/terminal-watch-record.js.map +1 -0
- package/dist/src/terminal-watch-service.js +48 -27
- package/dist/src/terminal-watch-service.js.map +1 -1
- package/dist/src/terminal-watch-store.d.ts +3 -279
- package/dist/src/terminal-watch-store.js +5 -1779
- package/dist/src/terminal-watch-store.js.map +1 -1
- package/docs/quickstart-herdr.md +1 -1
- package/docs/quickstart-tmux.md +27 -2
- package/openclaw.plugin.json +13 -1
- package/package.json +7 -2
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +54 -11
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { canonicalJson } from "./canonical-json.js";
|
|
3
|
+
export const HOST_ADAPTER_CAPABILITY_CONTRACT = "agent-knock-knock/host-adapter-capabilities";
|
|
4
|
+
export const HOST_ADAPTER_CAPABILITY_VERSION = 1;
|
|
5
|
+
export const HOST_ADAPTER_SKILL_NAME = "agent-knock-knock";
|
|
6
|
+
const HANDSHAKE_KEYS = Object.freeze([
|
|
7
|
+
"catalogDigest",
|
|
8
|
+
"contract",
|
|
9
|
+
"skillDigest",
|
|
10
|
+
"skillName",
|
|
11
|
+
"toolCount",
|
|
12
|
+
"toolNames",
|
|
13
|
+
"version"
|
|
14
|
+
]);
|
|
15
|
+
const SHA256_DIGEST = /^sha256:[a-f0-9]{64}$/u;
|
|
16
|
+
/** Derive the v1 handshake from the authoritative ordered catalog and Skill. */
|
|
17
|
+
export function createHostAdapterCapabilityHandshake(source, skillDocument) {
|
|
18
|
+
const toolNames = Object.freeze(source.tools.map((tool) => tool.name));
|
|
19
|
+
validateCatalogMetadata(source.command, source.tools);
|
|
20
|
+
requiredSkillDocument(skillDocument);
|
|
21
|
+
return Object.freeze({
|
|
22
|
+
contract: HOST_ADAPTER_CAPABILITY_CONTRACT,
|
|
23
|
+
version: HOST_ADAPTER_CAPABILITY_VERSION,
|
|
24
|
+
catalogDigest: catalogDigest(source.command, source.tools),
|
|
25
|
+
toolCount: toolNames.length,
|
|
26
|
+
toolNames,
|
|
27
|
+
skillName: HOST_ADAPTER_SKILL_NAME,
|
|
28
|
+
skillDigest: sha256(skillDocument)
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Fail closed unless one adapter, bundled Skill, and completed registration
|
|
33
|
+
* agree with the exact supported handshake version.
|
|
34
|
+
*/
|
|
35
|
+
export function verifyHostAdapterCapabilityHandshake(source, skillDocument, registeredToolNames) {
|
|
36
|
+
const candidate = source.capabilityHandshake;
|
|
37
|
+
if (!isRecord(candidate)) {
|
|
38
|
+
throw new Error("Host adapter capability handshake is missing");
|
|
39
|
+
}
|
|
40
|
+
if (candidate.version !== HOST_ADAPTER_CAPABILITY_VERSION) {
|
|
41
|
+
throw new Error(`unsupported Host adapter capability handshake version ${String(candidate.version)}`);
|
|
42
|
+
}
|
|
43
|
+
assertExactKeys(candidate, HANDSHAKE_KEYS);
|
|
44
|
+
if (candidate.contract !== HOST_ADAPTER_CAPABILITY_CONTRACT) {
|
|
45
|
+
throw new Error("Host adapter capability handshake contract does not match");
|
|
46
|
+
}
|
|
47
|
+
if (candidate.skillName !== HOST_ADAPTER_SKILL_NAME) {
|
|
48
|
+
throw new Error("Host adapter capability handshake Skill name does not match");
|
|
49
|
+
}
|
|
50
|
+
if (!SHA256_DIGEST.test(stringValue(candidate.catalogDigest))) {
|
|
51
|
+
throw new Error("Host adapter capability handshake catalog digest is invalid");
|
|
52
|
+
}
|
|
53
|
+
if (!SHA256_DIGEST.test(stringValue(candidate.skillDigest))) {
|
|
54
|
+
throw new Error("Host adapter capability handshake Skill digest is invalid");
|
|
55
|
+
}
|
|
56
|
+
if (typeof candidate.toolCount !== "number" ||
|
|
57
|
+
!Number.isSafeInteger(candidate.toolCount) ||
|
|
58
|
+
candidate.toolCount < 0) {
|
|
59
|
+
throw new Error("Host adapter capability handshake tool count is invalid");
|
|
60
|
+
}
|
|
61
|
+
if (!Array.isArray(candidate.toolNames) ||
|
|
62
|
+
candidate.toolNames.some((name) => typeof name !== "string")) {
|
|
63
|
+
throw new Error("Host adapter capability handshake tool names are invalid");
|
|
64
|
+
}
|
|
65
|
+
const expected = createHostAdapterCapabilityHandshake(source, skillDocument);
|
|
66
|
+
assertHandshakeMatches(candidate, expected);
|
|
67
|
+
if (registeredToolNames !== undefined) {
|
|
68
|
+
assertExactToolNames(registeredToolNames, expected.toolNames, "Host connector registered tool names");
|
|
69
|
+
}
|
|
70
|
+
return candidate;
|
|
71
|
+
}
|
|
72
|
+
function validateCatalogMetadata(command, tools) {
|
|
73
|
+
requiredString(command.name, "Host adapter command name");
|
|
74
|
+
requiredString(command.description, "Host adapter command description");
|
|
75
|
+
if (typeof command.acceptsArgs !== "boolean") {
|
|
76
|
+
throw new Error("Host adapter command acceptsArgs is invalid");
|
|
77
|
+
}
|
|
78
|
+
const names = new Set();
|
|
79
|
+
for (const tool of tools) {
|
|
80
|
+
const name = requiredString(tool.name, "Host adapter tool name");
|
|
81
|
+
requiredString(tool.description, `Host adapter tool ${name} description`);
|
|
82
|
+
if (!isRecord(tool.inputSchema)) {
|
|
83
|
+
throw new Error(`Host adapter tool ${name} input schema is invalid`);
|
|
84
|
+
}
|
|
85
|
+
if (names.has(name)) {
|
|
86
|
+
throw new Error(`duplicate Host adapter tool ${name}`);
|
|
87
|
+
}
|
|
88
|
+
names.add(name);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function assertHandshakeMatches(actual, expected) {
|
|
92
|
+
if (actual.catalogDigest !== expected.catalogDigest) {
|
|
93
|
+
throw new Error("Host adapter capability handshake catalog digest drifted");
|
|
94
|
+
}
|
|
95
|
+
if (actual.skillDigest !== expected.skillDigest) {
|
|
96
|
+
throw new Error("Host adapter capability handshake Skill digest drifted");
|
|
97
|
+
}
|
|
98
|
+
if (actual.toolCount !== expected.toolCount) {
|
|
99
|
+
throw new Error("Host adapter capability handshake tool count drifted");
|
|
100
|
+
}
|
|
101
|
+
assertExactToolNames(actual.toolNames, expected.toolNames, "Host adapter capability handshake tool names");
|
|
102
|
+
}
|
|
103
|
+
function assertExactToolNames(actual, expected, label) {
|
|
104
|
+
if (actual.length !== expected.length ||
|
|
105
|
+
actual.some((name, index) => name !== expected[index])) {
|
|
106
|
+
throw new Error(`${label} do not match the authoritative catalog`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function catalogDigest(command, tools) {
|
|
110
|
+
return sha256(canonicalJson({
|
|
111
|
+
command: [command.name, command.description, command.acceptsArgs],
|
|
112
|
+
tools: tools.map((tool) => [
|
|
113
|
+
tool.name,
|
|
114
|
+
tool.description,
|
|
115
|
+
tool.inputSchema
|
|
116
|
+
])
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
function sha256(value) {
|
|
120
|
+
return `sha256:${createHash("sha256").update(value, "utf8").digest("hex")}`;
|
|
121
|
+
}
|
|
122
|
+
function requiredSkillDocument(value) {
|
|
123
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
124
|
+
throw new Error("Host adapter canonical Skill document is required");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function requiredString(value, label) {
|
|
128
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
129
|
+
throw new Error(`${label} is required`);
|
|
130
|
+
}
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
function stringValue(value) {
|
|
134
|
+
return typeof value === "string" ? value : "";
|
|
135
|
+
}
|
|
136
|
+
function assertExactKeys(value, expected) {
|
|
137
|
+
const actual = Object.keys(value).sort();
|
|
138
|
+
if (actual.length !== expected.length ||
|
|
139
|
+
actual.some((key, index) => key !== expected[index])) {
|
|
140
|
+
throw new Error("Host adapter capability handshake shape is invalid");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function isRecord(value) {
|
|
144
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=host-adapter-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-adapter-capabilities.js","sourceRoot":"","sources":["../../src/host-adapter-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { type HostBridgeCommandResult, type HostBridgeToolContext, type HostBridgeToolLogger, type HostBridgeToolResult } from "./host-bridge-tools.js";
|
|
2
|
+
import { type HostAdapterCapabilityHandshakeV1 } from "./host-adapter-capabilities.js";
|
|
3
|
+
export { HOST_ADAPTER_CAPABILITY_CONTRACT, HOST_ADAPTER_CAPABILITY_VERSION, HOST_ADAPTER_SKILL_NAME, createHostAdapterCapabilityHandshake, verifyHostAdapterCapabilityHandshake } from "./host-adapter-capabilities.js";
|
|
4
|
+
export type { HostAdapterCapabilityHandshakeV1, HostAdapterCapabilitySource } from "./host-adapter-capabilities.js";
|
|
2
5
|
export type { HostBridgeCommandResult, HostBridgeToolContext, HostBridgeToolLogger, HostBridgeToolResult } from "./host-bridge-tools.js";
|
|
3
6
|
export { createTrustedHostProfileRuntime, hostProfileRelayEnvironment } from "./host-profile-runtime.js";
|
|
4
7
|
export type { CreateTrustedHostProfileRuntimeOptions, TrustedHostProfileRuntimeV1 } from "./host-profile-runtime.js";
|
|
@@ -36,17 +39,20 @@ export interface CreateHostAdapterOptions {
|
|
|
36
39
|
export interface HostAdapter {
|
|
37
40
|
readonly command: HostAdapterCommandMetadata;
|
|
38
41
|
readonly tools: readonly HostAdapterToolMetadata[];
|
|
42
|
+
readonly capabilityHandshake: HostAdapterCapabilityHandshakeV1;
|
|
39
43
|
readonly lifecycle: HostAdapterLifecycle;
|
|
44
|
+
verifyCapabilityHandshake(skillDocument: string, registeredToolNames?: readonly string[]): HostAdapterCapabilityHandshakeV1;
|
|
40
45
|
executeCommand(context: HostAdapterControllerContext, args: string, signal?: AbortSignal): Promise<HostBridgeCommandResult>;
|
|
41
46
|
executeTool(context: HostAdapterControllerContext, name: string, toolCallId: string, args: Readonly<Record<string, unknown>>, signal?: AbortSignal): Promise<HostBridgeToolResult>;
|
|
42
47
|
/** Drop private action/snapshot authority when the Host disposes an owner. */
|
|
43
48
|
disposeContext(authority: object): void;
|
|
44
49
|
}
|
|
45
50
|
/**
|
|
46
|
-
* Adapt AKK's established slash command and
|
|
51
|
+
* Adapt AKK's established slash command and ordered semantic tools to a Host.
|
|
47
52
|
*
|
|
48
|
-
* Public metadata is
|
|
49
|
-
* lazily per exact Host authority object so private
|
|
53
|
+
* Public metadata is read from the shared catalog exactly once. Executable
|
|
54
|
+
* registries are created lazily per exact Host authority object so private
|
|
55
|
+
* approvals, action offers,
|
|
50
56
|
* resume snapshots, and idempotency identities cannot leak across controllers.
|
|
51
57
|
*/
|
|
52
58
|
export declare function createHostAdapter(options: CreateHostAdapterOptions): HostAdapter;
|
package/dist/src/host-adapter.js
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { packageRootDir } from "./cli-command-runtime.js";
|
|
1
4
|
import { createHostBridgeToolRegistry } from "./host-bridge-tools.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
5
|
+
import { createHostAdapterCapabilityHandshake, verifyHostAdapterCapabilityHandshake } from "./host-adapter-capabilities.js";
|
|
6
|
+
import { bindSemanticToolRelayEnvironment, bindSemanticToolRelayPath, defaultSemanticToolRelayPath, withHostBridgeInvocationSignal } from "./semantic-tool-relay.js";
|
|
7
|
+
import { createHostMonitorReconciliationService, HOST_MONITOR_RECONCILIATION_INTERVAL_MS } from "./host-monitor-reconciliation.js";
|
|
8
|
+
export { HOST_ADAPTER_CAPABILITY_CONTRACT, HOST_ADAPTER_CAPABILITY_VERSION, HOST_ADAPTER_SKILL_NAME, createHostAdapterCapabilityHandshake, verifyHostAdapterCapabilityHandshake } from "./host-adapter-capabilities.js";
|
|
4
9
|
export { createTrustedHostProfileRuntime, hostProfileRelayEnvironment } from "./host-profile-runtime.js";
|
|
5
10
|
/** Stable relay entrypoint for native Host connector packages. */
|
|
6
|
-
export const defaultHostAdapterRelayPath =
|
|
11
|
+
export const defaultHostAdapterRelayPath = defaultSemanticToolRelayPath;
|
|
7
12
|
const METADATA_CONTEXT = Object.freeze({
|
|
8
13
|
sessionKey: "host-adapter:metadata",
|
|
9
14
|
sessionId: "host-adapter:metadata"
|
|
10
15
|
});
|
|
11
16
|
/**
|
|
12
|
-
* Adapt AKK's established slash command and
|
|
17
|
+
* Adapt AKK's established slash command and ordered semantic tools to a Host.
|
|
13
18
|
*
|
|
14
|
-
* Public metadata is
|
|
15
|
-
* lazily per exact Host authority object so private
|
|
19
|
+
* Public metadata is read from the shared catalog exactly once. Executable
|
|
20
|
+
* registries are created lazily per exact Host authority object so private
|
|
21
|
+
* approvals, action offers,
|
|
16
22
|
* resume snapshots, and idempotency identities cannot leak across controllers.
|
|
17
23
|
*/
|
|
18
24
|
export function createHostAdapter(options) {
|
|
@@ -35,14 +41,19 @@ export function createHostAdapter(options) {
|
|
|
35
41
|
description: tool.description,
|
|
36
42
|
inputSchema: tool.inputSchema
|
|
37
43
|
})));
|
|
44
|
+
const skillDocument = fs.readFileSync(path.join(packageRootDir(), "templates", "openclaw-skills", "agent-knock-knock", "SKILL.md"), "utf8");
|
|
45
|
+
const capabilityHandshake = createHostAdapterCapabilityHandshake({
|
|
46
|
+
command: commandMetadata,
|
|
47
|
+
tools: toolMetadata
|
|
48
|
+
}, skillDocument);
|
|
38
49
|
const registries = new WeakMap();
|
|
39
50
|
const lifecycleApi = {
|
|
40
51
|
pluginConfig,
|
|
41
52
|
logger: options.logger
|
|
42
53
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const lifecycle =
|
|
54
|
+
bindSemanticToolRelayPath(lifecycleApi, relayPath);
|
|
55
|
+
bindSemanticToolRelayEnvironment(lifecycleApi, options.lifecycleEnvironment ?? process.env);
|
|
56
|
+
const lifecycle = createHostMonitorReconciliationService(lifecycleApi, options.lifecycleIntervalMs ?? HOST_MONITOR_RECONCILIATION_INTERVAL_MS);
|
|
46
57
|
const registryFor = (context) => {
|
|
47
58
|
const trusted = trustedControllerContext(context);
|
|
48
59
|
const cached = registries.get(context.authority);
|
|
@@ -64,13 +75,26 @@ export function createHostAdapter(options) {
|
|
|
64
75
|
logger: options.logger,
|
|
65
76
|
context: trusted
|
|
66
77
|
});
|
|
78
|
+
verifyHostAdapterCapabilityHandshake({
|
|
79
|
+
command: registry.command(),
|
|
80
|
+
tools: registry.list(),
|
|
81
|
+
capabilityHandshake
|
|
82
|
+
}, skillDocument);
|
|
67
83
|
registries.set(context.authority, { context: trusted, registry });
|
|
68
84
|
return registry;
|
|
69
85
|
};
|
|
70
86
|
return Object.freeze({
|
|
71
87
|
command: commandMetadata,
|
|
72
88
|
tools: toolMetadata,
|
|
89
|
+
capabilityHandshake,
|
|
73
90
|
lifecycle,
|
|
91
|
+
verifyCapabilityHandshake(connectorSkillDocument, registeredToolNames) {
|
|
92
|
+
return verifyHostAdapterCapabilityHandshake({
|
|
93
|
+
command: commandMetadata,
|
|
94
|
+
tools: toolMetadata,
|
|
95
|
+
capabilityHandshake
|
|
96
|
+
}, connectorSkillDocument, registeredToolNames);
|
|
97
|
+
},
|
|
74
98
|
executeCommand(context, args, signal) {
|
|
75
99
|
return withHostBridgeInvocationSignal(signal, () => registryFor(context).command().execute(args));
|
|
76
100
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-adapter.js","sourceRoot":"","sources":["../../src/host-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAK7B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"host-adapter.js","sourceRoot":"","sources":["../../src/host-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,11 +51,10 @@ export interface CreateHostBridgeToolsOptions {
|
|
|
51
51
|
readonly context: HostBridgeToolContext;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* Adapt the established host-neutral AKK catalog to a Host Bridge registry.
|
|
55
55
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* the private-authority state owned by the OpenClaw-compatible implementation.
|
|
56
|
+
* One private runtime owner is retained for the registry lifetime so approval,
|
|
57
|
+
* action-offer, resume-snapshot, and idempotency state cannot cross owners.
|
|
59
58
|
*/
|
|
60
59
|
export declare function createHostBridgeToolRegistry(options: CreateHostBridgeToolsOptions): HostBridgeCommandToolRegistry;
|
|
61
60
|
export declare function createHostBridgeTools(options: CreateHostBridgeToolsOptions): readonly HostBridgeToolDescriptor[];
|
|
@@ -1,109 +1,66 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { bindHostBridgeToolPresentation, createAkkSemanticToolCatalog } from "./semantic-tool-runtime.js";
|
|
2
|
+
import { bindSemanticToolAsyncRelay, bindSemanticToolRelayEnvironment, bindSemanticToolRelayPath } from "./semantic-tool-relay.js";
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
+
* Adapt the established host-neutral AKK catalog to a Host Bridge registry.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* the private-authority state owned by the OpenClaw-compatible implementation.
|
|
6
|
+
* One private runtime owner is retained for the registry lifetime so approval,
|
|
7
|
+
* action-offer, resume-snapshot, and idempotency state cannot cross owners.
|
|
8
8
|
*/
|
|
9
9
|
export function createHostBridgeToolRegistry(options) {
|
|
10
|
-
const descriptors = [];
|
|
11
|
-
const descriptorsByName = new Map();
|
|
12
|
-
let commandDescriptor;
|
|
13
10
|
const trustedContext = Object.freeze({
|
|
14
11
|
sessionKey: requiredString(options.context.sessionKey, "context.sessionKey"),
|
|
15
12
|
sessionId: requiredString(options.context.sessionId, "context.sessionId")
|
|
16
13
|
});
|
|
17
|
-
const
|
|
14
|
+
const runtime = {
|
|
18
15
|
pluginConfig: options.pluginConfig,
|
|
19
|
-
logger: options.logger
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
acceptsArgs: command.acceptsArgs === true,
|
|
39
|
-
async execute(args) {
|
|
40
|
-
const result = await handler({
|
|
41
|
-
...trustedContext,
|
|
42
|
-
args: typeof args === "string" ? args : ""
|
|
43
|
-
});
|
|
44
|
-
if (!isRecord(result) || typeof result.text !== "string") {
|
|
45
|
-
throw new Error(`host bridge command ${name} returned an invalid result`);
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
text: result.text,
|
|
49
|
-
...(result.isError === true ? { isError: true } : {})
|
|
50
|
-
};
|
|
51
|
-
}
|
|
16
|
+
logger: options.logger
|
|
17
|
+
};
|
|
18
|
+
bindSemanticToolRelayPath(runtime, requiredString(options.relayPath, "relayPath"));
|
|
19
|
+
bindSemanticToolRelayEnvironment(runtime, options.relayEnvironment);
|
|
20
|
+
bindHostBridgeToolPresentation(runtime);
|
|
21
|
+
bindSemanticToolAsyncRelay(runtime);
|
|
22
|
+
const catalog = createAkkSemanticToolCatalog(runtime, new Map());
|
|
23
|
+
const commandName = requiredString(catalog.command.name, "command name");
|
|
24
|
+
if (commandName !== "akk") {
|
|
25
|
+
throw new Error(`host bridge expected command akk, received ${commandName}`);
|
|
26
|
+
}
|
|
27
|
+
const commandDescriptor = Object.freeze({
|
|
28
|
+
name: commandName,
|
|
29
|
+
description: catalog.command.description,
|
|
30
|
+
acceptsArgs: catalog.command.acceptsArgs,
|
|
31
|
+
async execute(args) {
|
|
32
|
+
const result = await catalog.command.execute({
|
|
33
|
+
...trustedContext,
|
|
34
|
+
args: typeof args === "string" ? args : ""
|
|
52
35
|
});
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const definition = typeof tool === "function"
|
|
56
|
-
? tool(trustedContext)
|
|
57
|
-
: tool;
|
|
58
|
-
const name = requiredString(definition.name, "tool name");
|
|
59
|
-
const registeredName = requiredString(registration?.name, `registration name for ${name}`);
|
|
60
|
-
if (registeredName !== name) {
|
|
61
|
-
throw new Error(`host bridge tool registration name ${registeredName} does not match ${name}`);
|
|
62
|
-
}
|
|
63
|
-
if (descriptorsByName.has(name)) {
|
|
64
|
-
throw new Error(`duplicate host bridge tool ${name}`);
|
|
65
|
-
}
|
|
66
|
-
if (typeof definition.description !== "string") {
|
|
67
|
-
throw new Error(`host bridge tool ${name} has no description`);
|
|
68
|
-
}
|
|
69
|
-
if (!isRecord(definition.parameters)) {
|
|
70
|
-
throw new Error(`host bridge tool ${name} has no input schema`);
|
|
36
|
+
if (!isRecord(result) || typeof result.text !== "string") {
|
|
37
|
+
throw new Error(`host bridge command ${commandName} returned an invalid result`);
|
|
71
38
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const descriptor = Object.freeze({
|
|
77
|
-
name,
|
|
78
|
-
description: definition.description,
|
|
79
|
-
inputSchema: definition.parameters,
|
|
80
|
-
async execute(toolCallId, args) {
|
|
81
|
-
const result = await execute(toolCallId, args);
|
|
82
|
-
if (!isRecord(result)) {
|
|
83
|
-
throw new Error(`host bridge tool ${name} returned an invalid result`);
|
|
84
|
-
}
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
descriptors.push(descriptor);
|
|
89
|
-
descriptorsByName.set(name, descriptor);
|
|
39
|
+
return {
|
|
40
|
+
text: result.text,
|
|
41
|
+
...(result.isError === true ? { isError: true } : {})
|
|
42
|
+
};
|
|
90
43
|
}
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
44
|
+
});
|
|
45
|
+
const descriptors = catalog.tools.map((tool) => {
|
|
46
|
+
const descriptor = Object.freeze({
|
|
47
|
+
name: tool.name,
|
|
48
|
+
description: tool.description,
|
|
49
|
+
inputSchema: tool.inputSchema,
|
|
50
|
+
async execute(toolCallId, args) {
|
|
51
|
+
const result = await tool.execute(trustedContext, toolCallId, args);
|
|
52
|
+
if (!isRecord(result)) {
|
|
53
|
+
throw new Error(`host bridge tool ${tool.name} returned an invalid result`);
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return descriptor;
|
|
59
|
+
});
|
|
60
|
+
const descriptorsByName = new Map(descriptors.map((descriptor) => [descriptor.name, descriptor]));
|
|
103
61
|
const listed = Object.freeze([...descriptors]);
|
|
104
|
-
const capturedCommand = commandDescriptor;
|
|
105
62
|
return Object.freeze({
|
|
106
|
-
command: () =>
|
|
63
|
+
command: () => commandDescriptor,
|
|
107
64
|
list: () => listed,
|
|
108
65
|
get: (name) => descriptorsByName.get(name),
|
|
109
66
|
execute: async (name, toolCallId, args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-bridge-tools.js","sourceRoot":"","sources":["../../src/host-bridge-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"host-bridge-tools.js","sourceRoot":"","sources":["../../src/host-bridge-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/src/host-bridge.js
CHANGED
|
@@ -4,8 +4,8 @@ import { fileURLToPath } from "node:url";
|
|
|
4
4
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
5
|
import { createHostBridgeMcpServer, drainHostBridgeMcpCalls } from "./host-bridge-mcp.js";
|
|
6
6
|
import { createHostBridgeToolRegistry } from "./host-bridge-tools.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { bindSemanticToolRelayEnvironment, bindSemanticToolRelayPath } from "./semantic-tool-relay.js";
|
|
8
|
+
import { createHostMonitorReconciliationService } from "./host-monitor-reconciliation.js";
|
|
9
9
|
import { assertHostProfileCallbackExecutableReady } from "./host-profile.js";
|
|
10
10
|
import { createTrustedHostProfileRuntime, hostProfileRelayEnvironment } from "./host-profile-runtime.js";
|
|
11
11
|
import { packageRootDir } from "./cli-command-runtime.js";
|
|
@@ -58,9 +58,9 @@ export async function runHostBridge(options) {
|
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
const lifecycleApi = { pluginConfig, logger };
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const lifecycle =
|
|
61
|
+
bindSemanticToolRelayPath(lifecycleApi, relayPath);
|
|
62
|
+
bindSemanticToolRelayEnvironment(lifecycleApi, relayEnvironment);
|
|
63
|
+
const lifecycle = createHostMonitorReconciliationService(lifecycleApi, options.lifecycleIntervalMs ?? 5_000);
|
|
64
64
|
const server = createHostBridgeMcpServer({
|
|
65
65
|
registry: tools,
|
|
66
66
|
version: packageVersion()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../src/host-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAC7B,2CAA2C,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../src/host-bridge.ts"],"names":[],"mappings":"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"}
|