@noopolis/daimon 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runtime/agentSkillsDirectory.d.ts +25 -0
- package/dist/runtime/agentSkillsDirectory.d.ts.map +1 -0
- package/dist/runtime/agentSkillsDirectory.js +101 -0
- package/dist/runtime/engineBrokerServiceConfig.d.ts +10 -2
- package/dist/runtime/engineBrokerServiceConfig.d.ts.map +1 -1
- package/dist/runtime/engineBrokerServiceConfig.js +9 -5
- package/dist/runtime/grokBrokerProjection.d.ts +17 -1
- package/dist/runtime/grokBrokerProjection.d.ts.map +1 -1
- package/dist/runtime/grokBrokerProjection.js +7 -3
- package/dist/runtime/grokBrokerProxy.d.ts +8 -1
- package/dist/runtime/grokBrokerProxy.d.ts.map +1 -1
- package/dist/runtime/grokBrokerProxy.js +28 -10
- package/dist/runtime/grokBrokerProxyBodyShape.d.ts +24 -0
- package/dist/runtime/grokBrokerProxyBodyShape.d.ts.map +1 -0
- package/dist/runtime/grokBrokerProxyBodyShape.js +60 -0
- package/dist/runtime/grokBrokerProxyRequest.d.ts +29 -0
- package/dist/runtime/grokBrokerProxyRequest.d.ts.map +1 -1
- package/dist/runtime/grokBrokerProxyRequest.js +68 -13
- package/dist/runtime/grokBrokerTurnMeter.d.ts +7 -2
- package/dist/runtime/grokBrokerTurnMeter.d.ts.map +1 -1
- package/dist/runtime/grokBrokerTurnMeter.js +8 -4
- package/dist/runtime/grokWorkerAttestation.d.ts +3 -1
- package/dist/runtime/grokWorkerAttestation.d.ts.map +1 -1
- package/dist/runtime/grokWorkerAttestation.js +4 -2
- package/dist/runtime/grokWorkerHomeAttestation.d.ts +48 -4
- package/dist/runtime/grokWorkerHomeAttestation.d.ts.map +1 -1
- package/dist/runtime/grokWorkerHomeAttestation.js +95 -6
- package/dist/runtime/grokWorkerSkills.d.ts +86 -0
- package/dist/runtime/grokWorkerSkills.d.ts.map +1 -0
- package/dist/runtime/grokWorkerSkills.js +135 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/productionAgentTools.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { canonicalJson } from "../contracts/canonicalJson.js";
|
|
3
|
+
/**
|
|
4
|
+
* Where root provisioning renders the agent's declared skills inside the worker
|
|
5
|
+
* home (`$GROK_HOME/skills`), and what every entry must be: root-owned, no
|
|
6
|
+
* write bit. Grok discovers that directory as user-scoped skills even in an
|
|
7
|
+
* untrusted workspace. Absent when the registration declares no `skillsSha256`.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately *not* folded into `RUNTIME_CONTRACT_MANIFEST`, as with
|
|
10
|
+
* `TURN_USAGE_LEDGER`: the manifest's canonical bytes are digest-pinned by
|
|
11
|
+
* Spawnfile and attested against the selected runtime image, so a new key
|
|
12
|
+
* there makes every pinned image fail to attest. Only Daimon reads this layout
|
|
13
|
+
* (the renderer below and the broker's pre-turn attestation); Spawnfile
|
|
14
|
+
* consumes it through `renderGrokWorkerSkillsTree`.
|
|
15
|
+
*/
|
|
16
|
+
export const GROK_WORKER_SKILLS_LAYOUT = Object.freeze({
|
|
17
|
+
relativePath: "skills", uid: 0, gid: 0, directoryMode: 0o555, fileMode: 0o444, digestVersion: "noopolis.daimon.grok-worker-skills.v1"
|
|
18
|
+
});
|
|
19
|
+
const LAYOUT = GROK_WORKER_SKILLS_LAYOUT;
|
|
20
|
+
/**
|
|
21
|
+
* The engine-neutral skills input. It is the compiled workspace tree every
|
|
22
|
+
* engine is given — Spawnfile lowers declared skills (and Moltnet installs its
|
|
23
|
+
* own) into `<workspace>/.agents/skills/<name>/SKILL.md`, which Codex reads in
|
|
24
|
+
* place. A brokered Grok worker cannot read it there: its workspace stays
|
|
25
|
+
* untrusted, so root provisioning renders the same skills into
|
|
26
|
+
* `$GROK_HOME/skills` instead.
|
|
27
|
+
*/
|
|
28
|
+
export const AGENT_SKILLS_WORKSPACE_DIRECTORY = ".agents/skills";
|
|
29
|
+
export const GROK_WORKER_SKILLS_VERSION = LAYOUT.digestVersion;
|
|
30
|
+
export const AGENT_SKILLS_BOUNDS = Object.freeze({ skills: 64, filesPerSkill: 64, fileBytes: 262_144, totalBytes: 4_194_304, depth: 8 });
|
|
31
|
+
const COMPONENT = /^[A-Za-z0-9_][A-Za-z0-9._-]{0,127}$/u;
|
|
32
|
+
const invalid = (detail) => new TypeError(`invalid agent skills: ${detail}`);
|
|
33
|
+
const plain = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
34
|
+
const exact = (value, keys) => Object.keys(value).length === keys.length && keys.every((key) => Object.hasOwn(value, key));
|
|
35
|
+
const byteLength = (content) => Buffer.byteLength(content, "utf8");
|
|
36
|
+
/**
|
|
37
|
+
* Strict, canonicalizing parser: names and path components are plain
|
|
38
|
+
* identifiers (no `.`/`..`, no hidden entries, no separators other than `/`),
|
|
39
|
+
* every skill carries `SKILL.md`, nothing collides, and the sizes are bounded.
|
|
40
|
+
* Output is sorted by name and path so equal sets digest equally.
|
|
41
|
+
*/
|
|
42
|
+
export function parseAgentSkills(value) {
|
|
43
|
+
if (!Array.isArray(value) || value.length > AGENT_SKILLS_BOUNDS.skills)
|
|
44
|
+
throw invalid("expected a bounded array");
|
|
45
|
+
let total = 0;
|
|
46
|
+
const names = new Set();
|
|
47
|
+
const skills = value.map((entry) => {
|
|
48
|
+
if (!plain(entry) || !exact(entry, ["name", "files"]) || typeof entry.name !== "string" || !COMPONENT.test(entry.name))
|
|
49
|
+
throw invalid(`skill name ${plain(entry) && typeof entry.name === "string" ? JSON.stringify(entry.name) : "(missing)"}`);
|
|
50
|
+
if (names.has(entry.name))
|
|
51
|
+
throw invalid(`duplicate skill ${entry.name}`);
|
|
52
|
+
names.add(entry.name);
|
|
53
|
+
if (!Array.isArray(entry.files) || entry.files.length === 0 || entry.files.length > AGENT_SKILLS_BOUNDS.filesPerSkill)
|
|
54
|
+
throw invalid(`files of ${entry.name}`);
|
|
55
|
+
const paths = new Set();
|
|
56
|
+
const files = entry.files.map((file) => {
|
|
57
|
+
if (!plain(file) || !exact(file, ["path", "content"]) || typeof file.path !== "string" || typeof file.content !== "string")
|
|
58
|
+
throw invalid(`file ${plain(file) && typeof file.path === "string" ? JSON.stringify(`${entry.name}/${file.path}`) : `of ${entry.name}`}`);
|
|
59
|
+
const parts = file.path.split("/");
|
|
60
|
+
if (parts.length > AGENT_SKILLS_BOUNDS.depth || parts.some((part) => !COMPONENT.test(part)))
|
|
61
|
+
throw invalid(`path ${JSON.stringify(`${entry.name}/${file.path}`)}`);
|
|
62
|
+
const bytes = byteLength(file.content);
|
|
63
|
+
if (bytes > AGENT_SKILLS_BOUNDS.fileBytes)
|
|
64
|
+
throw invalid(`size of ${entry.name}/${file.path}`);
|
|
65
|
+
total += bytes;
|
|
66
|
+
if (paths.has(file.path))
|
|
67
|
+
throw invalid(`duplicate path ${entry.name}/${file.path}`);
|
|
68
|
+
paths.add(file.path);
|
|
69
|
+
try {
|
|
70
|
+
canonicalJson(file.content);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw invalid(`content of ${entry.name}/${file.path} is not Unicode text`);
|
|
74
|
+
}
|
|
75
|
+
return Object.freeze({ path: file.path, content: file.content });
|
|
76
|
+
});
|
|
77
|
+
// A file may not also be the directory of another file.
|
|
78
|
+
for (const candidate of paths)
|
|
79
|
+
if ([...paths].some((other) => other.startsWith(`${candidate}/`)))
|
|
80
|
+
throw invalid(`path collision ${entry.name}/${candidate}`);
|
|
81
|
+
if (!paths.has("SKILL.md"))
|
|
82
|
+
throw invalid(`${entry.name} has no SKILL.md`);
|
|
83
|
+
return Object.freeze({ name: entry.name, files: Object.freeze(files.sort((a, b) => compare(a.path, b.path))) });
|
|
84
|
+
});
|
|
85
|
+
if (total > AGENT_SKILLS_BOUNDS.totalBytes)
|
|
86
|
+
throw invalid("total size");
|
|
87
|
+
return Object.freeze(skills.sort((a, b) => compare(a.name, b.name)));
|
|
88
|
+
}
|
|
89
|
+
const compare = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
90
|
+
/**
|
|
91
|
+
* sha256 over the canonical description of the rendered tree: every skill's
|
|
92
|
+
* name and, per file, its path, byte length and content digest. The broker
|
|
93
|
+
* attests `$GROK_HOME/skills` against it before every turn, and the Grok broker
|
|
94
|
+
* projection carries it, so the slot preflight receipt and every recomputed
|
|
95
|
+
* projection bind the exact skills a subject was given.
|
|
96
|
+
*/
|
|
97
|
+
export function grokWorkerSkillsSha256(skills) {
|
|
98
|
+
const parsed = parseAgentSkills(skills);
|
|
99
|
+
const description = { version: GROK_WORKER_SKILLS_VERSION, skills: parsed.map((skill) => ({
|
|
100
|
+
name: skill.name,
|
|
101
|
+
files: skill.files.map((file) => ({ path: file.path, bytes: byteLength(file.content), sha256: createHash("sha256").update(file.content, "utf8").digest("hex") }))
|
|
102
|
+
})) };
|
|
103
|
+
return createHash("sha256").update(canonicalJson(description)).digest("hex");
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Every directory and file root provisioning writes for these skills, parents
|
|
107
|
+
* before children: `skills/` itself, each `skills/<name>/`, any intermediate
|
|
108
|
+
* directory, and each file. Directories are `root:root 0555` and files
|
|
109
|
+
* `root:root 0444` (single link), so a worker-uid process can read them but
|
|
110
|
+
* neither change nor replace them; `$GROK_HOME` is root-owned and sticky, so the
|
|
111
|
+
* worker cannot rename `skills/` away either. No skills renders nothing: the
|
|
112
|
+
* directory must then be absent, exactly as before this layout existed.
|
|
113
|
+
*/
|
|
114
|
+
export function renderGrokWorkerSkillsTree(skills) {
|
|
115
|
+
const parsed = parseAgentSkills(skills);
|
|
116
|
+
if (parsed.length === 0)
|
|
117
|
+
return Object.freeze([]);
|
|
118
|
+
const directory = (relative) => Object.freeze({ path: relative, kind: "directory", uid: LAYOUT.uid, gid: LAYOUT.gid, mode: LAYOUT.directoryMode });
|
|
119
|
+
const entries = [directory(LAYOUT.relativePath)];
|
|
120
|
+
const seen = new Set([LAYOUT.relativePath]);
|
|
121
|
+
for (const skill of parsed) {
|
|
122
|
+
for (const file of skill.files) {
|
|
123
|
+
const parts = [LAYOUT.relativePath, skill.name, ...file.path.split("/")];
|
|
124
|
+
for (let depth = 2; depth < parts.length; depth += 1) {
|
|
125
|
+
const relative = parts.slice(0, depth).join("/");
|
|
126
|
+
if (!seen.has(relative)) {
|
|
127
|
+
seen.add(relative);
|
|
128
|
+
entries.push(directory(relative));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
entries.push(Object.freeze({ path: parts.join("/"), kind: "file", uid: LAYOUT.uid, gid: LAYOUT.gid, mode: LAYOUT.fileMode, content: file.content }));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return Object.freeze(entries);
|
|
135
|
+
}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -18,6 +18,9 @@ export { GROK_INFERENCE_AUTH_STALE_BODY } from "./grokInferenceProxy.js";
|
|
|
18
18
|
export { assertGrokWorkerDenyPathPlacement, assertGrokWorkerDenyPathShape, assertGrokWorkerDenyPathsPlaceable, GROK_WORKER_BASE_PROFILE_GRANTS, grokWorkerCanSearch, grokWorkerDenyPathChain, GrokWorkerDenyPlacementError, readGrokWorkerDenyPathChain } from "./grokWorkerDenyPlacement.js";
|
|
19
19
|
export type { GrokWorkerDenyPathEntry, GrokWorkerDenyPathStep, GrokWorkerDenyPathWorker } from "./grokWorkerDenyPlacement.js";
|
|
20
20
|
export { grokWorkerSandboxProfileSha256, renderGrokWorkerSandboxProfile } from "./grokWorkerSandboxProfile.js";
|
|
21
|
+
export { AGENT_SKILLS_BOUNDS, AGENT_SKILLS_WORKSPACE_DIRECTORY, GROK_WORKER_SKILLS_LAYOUT, GROK_WORKER_SKILLS_VERSION, grokWorkerSkillsSha256, parseAgentSkills, renderGrokWorkerSkillsTree, type AgentSkill, type AgentSkillFile, type GrokWorkerSkillsEntry } from "./grokWorkerSkills.js";
|
|
22
|
+
export { readAgentSkillsDirectory, type AgentSkillsTreePolicy } from "./agentSkillsDirectory.js";
|
|
23
|
+
export { GROK_WORKER_FOREIGN_SKILL_ROOTS, verifyGrokWorkerForeignSkillRoots, verifyGrokWorkerSkills } from "./grokWorkerHomeAttestation.js";
|
|
21
24
|
export { ENGINE_BROKER_SERVICE_V3, engineBrokerRequestLedgerPathFor, engineBrokerSealLedgerPathFor, parseEngineBrokerServiceConfig, type EngineBrokerServiceConfig, type EngineBrokerServiceRegistration } from "./engineBrokerServiceConfig.js";
|
|
22
25
|
export { TURN_SEAL_LEDGER, TURN_SEAL_LEDGER_VERSION } from "./engineBrokerSealLedger.js";
|
|
23
26
|
export { DEFAULT_GROK_BROKER_TURN_LIMITS, ENGINE_BROKER_LIMIT_REASONS, type EngineBrokerLimitReason, type EngineBrokerTurnAccounting, type EngineBrokerTurnLimits, type EngineBrokerTurnUsage } from "./engineBrokerTurnAccounting.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,mCAAmC,EAAE,gCAAgC,EAAE,KAAK,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAClL,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,yCAAyC,EAClF,KAAK,kCAAkC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,uCAAuC,EAC5I,6CAA6C,EAAE,KAAK,gCAAgC,EAAE,KAAK,uCAAuC,EAAE,MAAM,2BAA2B,CAAC;AACxK,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,KAAK,0BAA0B,EACjK,8BAA8B,EAAE,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AACzG,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,yCAAyC,EAAE,KAAK,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAC5P,OAAO,EAAE,6BAA6B,EAAE,qCAAqC,EAAE,KAAK,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACjK,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACzJ,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,iCAAiC,EAAE,6BAA6B,EAAE,kCAAkC,EAAE,+BAA+B,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC9R,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC9H,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC7R,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,+BAA+B,EAAE,iCAAiC,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC5I,OAAO,EAAE,wBAAwB,EAAE,gCAAgC,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,KAAK,yBAAyB,EAAE,KAAK,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjP,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,KAAK,uBAAuB,EAAE,KAAK,0BAA0B,EAClI,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,mCAAmC,EACnC,qCAAqC,EACrC,8BAA8B,EAC9B,yCAAyC,EACzC,2CAA2C,EAC3C,2CAA2C,EAC3C,8BAA8B,EAC9B,KAAK,4BAA4B,EACjC,KAAK,mDAAmD,EACxD,KAAK,sCAAsC,EAC3C,KAAK,2CAA2C,EAChD,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC3C,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,0BAA0B,EAC1B,eAAe,EACf,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,iCAAiC,EACtC,KAAK,wCAAwC,EAC7C,KAAK,uCAAuC,EAC5C,KAAK,oCAAoC,EACzC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACzH,OAAO,EAAE,yBAAyB,EAAE,iCAAiC,EAAE,KAAK,0BAA0B,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC7K,YAAY,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -17,6 +17,9 @@ export { dedupeInferenceUsageRows, INFERENCE_USAGE_LEDGER_VERSION, GROK_INFERENC
|
|
|
17
17
|
export { GROK_INFERENCE_AUTH_STALE_BODY } from "./grokInferenceProxy.js";
|
|
18
18
|
export { assertGrokWorkerDenyPathPlacement, assertGrokWorkerDenyPathShape, assertGrokWorkerDenyPathsPlaceable, GROK_WORKER_BASE_PROFILE_GRANTS, grokWorkerCanSearch, grokWorkerDenyPathChain, GrokWorkerDenyPlacementError, readGrokWorkerDenyPathChain } from "./grokWorkerDenyPlacement.js";
|
|
19
19
|
export { grokWorkerSandboxProfileSha256, renderGrokWorkerSandboxProfile } from "./grokWorkerSandboxProfile.js";
|
|
20
|
+
export { AGENT_SKILLS_BOUNDS, AGENT_SKILLS_WORKSPACE_DIRECTORY, GROK_WORKER_SKILLS_LAYOUT, GROK_WORKER_SKILLS_VERSION, grokWorkerSkillsSha256, parseAgentSkills, renderGrokWorkerSkillsTree } from "./grokWorkerSkills.js";
|
|
21
|
+
export { readAgentSkillsDirectory } from "./agentSkillsDirectory.js";
|
|
22
|
+
export { GROK_WORKER_FOREIGN_SKILL_ROOTS, verifyGrokWorkerForeignSkillRoots, verifyGrokWorkerSkills } from "./grokWorkerHomeAttestation.js";
|
|
20
23
|
export { ENGINE_BROKER_SERVICE_V3, engineBrokerRequestLedgerPathFor, engineBrokerSealLedgerPathFor, parseEngineBrokerServiceConfig } from "./engineBrokerServiceConfig.js";
|
|
21
24
|
export { TURN_SEAL_LEDGER, TURN_SEAL_LEDGER_VERSION } from "./engineBrokerSealLedger.js";
|
|
22
25
|
export { DEFAULT_GROK_BROKER_TURN_LIMITS, ENGINE_BROKER_LIMIT_REASONS } from "./engineBrokerTurnAccounting.js";
|
|
@@ -226,7 +226,7 @@ function moltnetTool(agent, wakeContext) {
|
|
|
226
226
|
}
|
|
227
227
|
async function connect(agent, server) {
|
|
228
228
|
taskClockChildEnvironment(server.env);
|
|
229
|
-
const client = new Client({ name: "daimon-production", version: "0.2.
|
|
229
|
+
const client = new Client({ name: "daimon-production", version: "0.2.3" });
|
|
230
230
|
const headers = server.authSecretEnv === undefined ? {} : { authorization: `Bearer ${requiredSecret(server.authSecretEnv)}` };
|
|
231
231
|
const transport = server.transport === "stdio"
|
|
232
232
|
? new StdioClientTransport({ command: server.command, args: [...server.args], env: stringEnvironment(readyTaskClockEnvironment({ ...server.env, ...cliChildEnvironment([], agent.runtimeHomePath, { executablePath: server.command }) })) })
|