@nookplot/runtime 0.5.148 → 0.5.150
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/__tests__/apiMarketplace.test.js +2 -189
- package/dist/__tests__/apiMarketplace.test.js.map +1 -1
- package/dist/__tests__/autonomous.dedup.test.js +0 -11
- package/dist/__tests__/autonomous.dedup.test.js.map +1 -1
- package/dist/__tests__/autonomous.getAvailableActions.test.js +1 -13
- package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -1
- package/dist/__tests__/autonomous.openSignals.test.d.ts +13 -0
- package/dist/__tests__/autonomous.openSignals.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.openSignals.test.js +69 -0
- package/dist/__tests__/autonomous.openSignals.test.js.map +1 -0
- package/dist/__tests__/autonomous.v11OpenSignals.test.js +3 -0
- package/dist/__tests__/autonomous.v11OpenSignals.test.js.map +1 -1
- package/dist/__tests__/bdAgentPack.test.js +1 -1
- package/dist/__tests__/bdAgentPack.test.js.map +1 -1
- package/dist/__tests__/bounties.test.js +0 -12
- package/dist/__tests__/bounties.test.js.map +1 -1
- package/dist/__tests__/codegen-drift.test.js +1 -3
- package/dist/__tests__/codegen-drift.test.js.map +1 -1
- package/dist/__tests__/conversation/modelThresholdsParity.test.js +14 -19
- package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -1
- package/dist/__tests__/economy.frontierInference.test.d.ts +2 -0
- package/dist/__tests__/economy.frontierInference.test.d.ts.map +1 -0
- package/dist/__tests__/economy.frontierInference.test.js +61 -0
- package/dist/__tests__/economy.frontierInference.test.js.map +1 -0
- package/dist/__tests__/economy.surplusBranch.test.js +0 -64
- package/dist/__tests__/economy.surplusBranch.test.js.map +1 -1
- package/dist/__tests__/pack.test.js +14 -14
- package/dist/__tests__/packLoader.test.js +4 -4
- package/dist/__tests__/presetLoader.test.js +42 -42
- package/dist/__tests__/sandbox.test.js +24 -24
- package/dist/actionCatalog.d.ts.map +1 -1
- package/dist/actionCatalog.generated.d.ts +1 -1
- package/dist/actionCatalog.generated.d.ts.map +1 -1
- package/dist/actionCatalog.generated.js +31 -141
- package/dist/actionCatalog.generated.js.map +1 -1
- package/dist/actionCatalog.js +10 -0
- package/dist/actionCatalog.js.map +1 -1
- package/dist/api-marketplace.d.ts +0 -146
- package/dist/api-marketplace.d.ts.map +1 -1
- package/dist/api-marketplace.js +0 -218
- package/dist/api-marketplace.js.map +1 -1
- package/dist/autonomous.d.ts +9 -16
- package/dist/autonomous.d.ts.map +1 -1
- package/dist/autonomous.js +59 -276
- package/dist/autonomous.js.map +1 -1
- package/dist/bounties.d.ts +0 -8
- package/dist/bounties.d.ts.map +1 -1
- package/dist/bounties.js +0 -2
- package/dist/bounties.js.map +1 -1
- package/dist/chat/terminals/httpChatTerminal.d.ts +43 -0
- package/dist/chat/terminals/httpChatTerminal.d.ts.map +1 -0
- package/dist/chat/terminals/httpChatTerminal.js +186 -0
- package/dist/chat/terminals/httpChatTerminal.js.map +1 -0
- package/dist/contentSafety.d.ts +1 -1
- package/dist/contentSafety.d.ts.map +1 -1
- package/dist/contentSafety.js +2 -6
- package/dist/contentSafety.js.map +1 -1
- package/dist/conversation/modelLimits.js +17 -17
- package/dist/discovery.js +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/economy.d.ts +15 -10
- package/dist/economy.d.ts.map +1 -1
- package/dist/economy.js +29 -16
- package/dist/economy.js.map +1 -1
- package/dist/frontierPass.d.ts +30 -0
- package/dist/frontierPass.d.ts.map +1 -0
- package/dist/frontierPass.js +42 -0
- package/dist/frontierPass.js.map +1 -0
- package/dist/goal/goalPrompts.js +27 -27
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/signalActionMap.d.ts.map +1 -1
- package/dist/signalActionMap.js +6 -15
- package/dist/signalActionMap.js.map +1 -1
- package/dist/swarms.d.ts +0 -13
- package/dist/swarms.d.ts.map +1 -1
- package/dist/swarms.js +0 -4
- package/dist/swarms.js.map +1 -1
- package/dist/tools.js +1 -1
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +4 -20
- package/dist/types.d.ts.map +1 -1
- package/package.json +75 -75
- package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +0 -2
- package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.goalBootstrap.test.js +0 -148
- package/dist/__tests__/autonomous.goalBootstrap.test.js.map +0 -1
- package/dist/__tests__/autonomous.miningTrack.test.d.ts +0 -2
- package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.miningTrack.test.js +0 -38
- package/dist/__tests__/autonomous.miningTrack.test.js.map +0 -1
- package/dist/__tests__/autonomous.payApi.test.d.ts +0 -2
- package/dist/__tests__/autonomous.payApi.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.payApi.test.js +0 -73
- package/dist/__tests__/autonomous.payApi.test.js.map +0 -1
- package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts +0 -2
- package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.workspaceOpportunity.test.js +0 -212
- package/dist/__tests__/autonomous.workspaceOpportunity.test.js.map +0 -1
- package/dist/__tests__/mining.test.d.ts +0 -2
- package/dist/__tests__/mining.test.d.ts.map +0 -1
- package/dist/__tests__/mining.test.js +0 -306
- package/dist/__tests__/mining.test.js.map +0 -1
- package/dist/__tests__/signalActionMap.test.d.ts +0 -17
- package/dist/__tests__/signalActionMap.test.d.ts.map +0 -1
- package/dist/__tests__/signalActionMap.test.js +0 -165
- package/dist/__tests__/signalActionMap.test.js.map +0 -1
|
@@ -12,15 +12,9 @@
|
|
|
12
12
|
* `runtime/src/conversation/modelLimits.ts` (if missing there) OR remove/fix
|
|
13
13
|
* the gateway entry that disagrees. Do NOT just update this test — the whole
|
|
14
14
|
* point is that it catches the drift.
|
|
15
|
-
*
|
|
16
|
-
* Gateway-absent note: the gateway compactor lives in the orchestrator
|
|
17
|
-
* subsystem, which is not always present (decommissioned in dev; absent when
|
|
18
|
-
* the runtime SDK is built/tested standalone). When the source file is missing
|
|
19
|
-
* there is nothing to drift against, so the parity assertions skip — and they
|
|
20
|
-
* reactivate automatically the moment a compactor reappears at that path.
|
|
21
15
|
*/
|
|
22
16
|
import { describe, it, expect } from "vitest";
|
|
23
|
-
import {
|
|
17
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
24
18
|
import { resolve } from "node:path";
|
|
25
19
|
import { MODEL_THRESHOLDS as SDK_THRESHOLDS } from "../../conversation/modelLimits.js";
|
|
26
20
|
/**
|
|
@@ -43,29 +37,30 @@ function parseThresholds(source, varName) {
|
|
|
43
37
|
}
|
|
44
38
|
return out;
|
|
45
39
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
it.skipIf(!gatewayExists)("gateway entries are a subset of SDK entries", () => {
|
|
40
|
+
const repoRoot = resolve(__dirname, "..", "..", "..", "..");
|
|
41
|
+
const gatewayPath = resolve(repoRoot, "gateway", "src", "services", "sessionCompactor.ts");
|
|
42
|
+
const gatewayExists = existsSync(gatewayPath);
|
|
43
|
+
// Skip the whole suite when the gateway file doesn't exist — prod/main
|
|
44
|
+
// hasn't landed sessionCompactor yet. The SDK is still the canonical source;
|
|
45
|
+
// this guard just ensures the suite auto-activates once the gateway catches up.
|
|
46
|
+
describe.skipIf(!gatewayExists)("MODEL_THRESHOLDS parity", () => {
|
|
47
|
+
it("gateway entries are a subset of SDK entries", () => {
|
|
48
|
+
const gatewayThresholds = parseThresholds(readFileSync(gatewayPath, "utf8"), "MODEL_THRESHOLDS");
|
|
56
49
|
for (const [model, gatewayT] of Object.entries(gatewayThresholds)) {
|
|
57
50
|
expect(SDK_THRESHOLDS).toHaveProperty(model);
|
|
58
51
|
expect(SDK_THRESHOLDS[model]).toEqual(gatewayT);
|
|
59
52
|
}
|
|
60
53
|
});
|
|
61
|
-
it
|
|
54
|
+
it("gateway has at least one known entry (sanity check on the parser)", () => {
|
|
55
|
+
const gatewayThresholds = parseThresholds(readFileSync(gatewayPath, "utf8"), "MODEL_THRESHOLDS");
|
|
62
56
|
expect(Object.keys(gatewayThresholds).length).toBeGreaterThan(5);
|
|
63
57
|
expect(gatewayThresholds["claude-opus-4-6"]).toEqual({
|
|
64
58
|
compactAt: 24000,
|
|
65
59
|
preserveRecent: 12,
|
|
66
60
|
});
|
|
67
61
|
});
|
|
68
|
-
it
|
|
62
|
+
it("SDK has every gateway entry with byte-identical values", () => {
|
|
63
|
+
const gatewayThresholds = parseThresholds(readFileSync(gatewayPath, "utf8"), "MODEL_THRESHOLDS");
|
|
69
64
|
const missing = [];
|
|
70
65
|
const mismatched = [];
|
|
71
66
|
for (const [model, gatewayT] of Object.entries(gatewayThresholds)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelThresholdsParity.test.js","sourceRoot":"","sources":["../../../src/__tests__/conversation/modelThresholdsParity.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"modelThresholdsParity.test.js","sourceRoot":"","sources":["../../../src/__tests__/conversation/modelThresholdsParity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"economy.frontierInference.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/economy.frontierInference.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EconomyManager.frontierInference() — the one-shot frontier (Surplus) call that
|
|
3
|
+
* backs the `use_frontier_model` autonomous action (spends an owner-reserved
|
|
4
|
+
* pass). Contract:
|
|
5
|
+
* 1. ALWAYS routes to Surplus regardless of the configured default source.
|
|
6
|
+
* 2. Returns `costUsdcMicros` = the spend-tracker delta for this call (so the
|
|
7
|
+
* caller can finalize the reserved pass with the real settled spend).
|
|
8
|
+
* 3. Throws a keyless SurplusError (no network) when there's no private key.
|
|
9
|
+
*
|
|
10
|
+
* `surplusInference` is mocked here so the test doesn't require the optional
|
|
11
|
+
* x402/viem peers (the real-client path is covered by economy.surplusBranch).
|
|
12
|
+
*/
|
|
13
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
14
|
+
vi.mock("../inference/surplusInference.js", async (importOriginal) => {
|
|
15
|
+
const actual = await importOriginal();
|
|
16
|
+
return {
|
|
17
|
+
...actual,
|
|
18
|
+
// Simulate an x402 spend of $0.042 by bumping the shared tracker, and echo
|
|
19
|
+
// the requested model so we can assert the override took effect.
|
|
20
|
+
surplusInference: vi.fn(async (params) => {
|
|
21
|
+
if (params.tracker)
|
|
22
|
+
params.tracker.spentBaseUnits += 42000n;
|
|
23
|
+
return {
|
|
24
|
+
content: "frontier says hi",
|
|
25
|
+
model: params.options?.model ?? "unknown",
|
|
26
|
+
provider: "surplus",
|
|
27
|
+
usage: { promptTokens: 1, completionTokens: 1, totalTokens: 2, creditsCost: 0 },
|
|
28
|
+
};
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
const { ConnectionManager } = await import("../connection.js");
|
|
33
|
+
const { EconomyManager } = await import("../economy.js");
|
|
34
|
+
const surplusMod = await import("../inference/surplusInference.js");
|
|
35
|
+
const TEST_PK = "0x" + "ab".repeat(32);
|
|
36
|
+
const TEST_BASE = "https://gateway.example.com";
|
|
37
|
+
const MSGS = [{ role: "user", content: "Prove the theorem." }];
|
|
38
|
+
beforeEach(() => vi.clearAllMocks());
|
|
39
|
+
describe("EconomyManager.frontierInference()", () => {
|
|
40
|
+
it("routes to Surplus even when the default source is platform, and returns the cost delta", async () => {
|
|
41
|
+
const economy = new EconomyManager(new ConnectionManager({
|
|
42
|
+
gatewayUrl: TEST_BASE,
|
|
43
|
+
apiKey: "nk_test",
|
|
44
|
+
privateKey: TEST_PK,
|
|
45
|
+
inferenceSource: "platform", // default — frontierInference overrides to Surplus
|
|
46
|
+
surplus: { model: "llama-3.3-70b-instruct" },
|
|
47
|
+
}));
|
|
48
|
+
const result = await economy.frontierInference(MSGS, { model: "claude-opus-4.8" });
|
|
49
|
+
expect(surplusMod.surplusInference).toHaveBeenCalledTimes(1);
|
|
50
|
+
expect(result.provider).toBe("surplus");
|
|
51
|
+
expect(result.content).toBe("frontier says hi");
|
|
52
|
+
expect(result.model).toBe("claude-opus-4.8"); // the per-call override won
|
|
53
|
+
expect(result.costUsdcMicros).toBe(42_000); // tracker delta, 6-dec base units
|
|
54
|
+
});
|
|
55
|
+
it("throws keyless (no surplus call) when there is no private key", async () => {
|
|
56
|
+
const economy = new EconomyManager(new ConnectionManager({ gatewayUrl: TEST_BASE, apiKey: "nk_test" }));
|
|
57
|
+
await expect(economy.frontierInference(MSGS, { model: "claude-opus-4.8" })).rejects.toMatchObject({ code: "keyless" });
|
|
58
|
+
expect(surplusMod.surplusInference).not.toHaveBeenCalled();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=economy.frontierInference.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"economy.frontierInference.test.js","sourceRoot":"","sources":["../../src/__tests__/economy.frontierInference.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,68 +92,4 @@ describe("EconomyManager.inference() — source routing", () => {
|
|
|
92
92
|
expect(calls.some((u) => u.includes("surplusintelligence"))).toBe(false);
|
|
93
93
|
});
|
|
94
94
|
});
|
|
95
|
-
/**
|
|
96
|
-
* Phase 4 — per-call source override. `options.inferenceSource` overrides the
|
|
97
|
-
* connection-level source for a single call (D7: the override is the enum, NOT a
|
|
98
|
-
* `surplus` boolean). The showcase is a platform-default self-hosted agent
|
|
99
|
-
* escalating ONE task to frontier inference paid in USDC via x402. The per-call
|
|
100
|
-
* cap / selector behaviour itself is covered by `surplusInference.test.ts`; here
|
|
101
|
-
* we assert only the routing decision the override controls.
|
|
102
|
-
*/
|
|
103
|
-
describe("EconomyManager.inference() — per-call source override (Phase 4)", () => {
|
|
104
|
-
it("per-call inferenceSource='surplus' escalates a platform-default agent to x402 (gateway bypassed)", async () => {
|
|
105
|
-
const calls = [];
|
|
106
|
-
const fetchSpy = vi.fn(async (...args) => {
|
|
107
|
-
calls.push(urlOf(args));
|
|
108
|
-
return SURPLUS_OK();
|
|
109
|
-
});
|
|
110
|
-
vi.stubGlobal("fetch", fetchSpy);
|
|
111
|
-
// Connection default is "platform" (inferenceSource unset) — the whole point
|
|
112
|
-
// is escalating a SINGLE call without reconfiguring the runtime's source.
|
|
113
|
-
const economy = new EconomyManager(new ConnectionManager({
|
|
114
|
-
gatewayUrl: TEST_BASE,
|
|
115
|
-
apiKey: "nk_test",
|
|
116
|
-
privateKey: TEST_PK,
|
|
117
|
-
surplus: { model: "llama-3.3-70b-instruct" },
|
|
118
|
-
}));
|
|
119
|
-
const result = await economy.inference(MSGS, { inferenceSource: "surplus" });
|
|
120
|
-
expect(result.provider).toBe("surplus");
|
|
121
|
-
expect(result.content).toBe("surplus says hi");
|
|
122
|
-
expect(result.usage.creditsCost).toBe(0);
|
|
123
|
-
expect(calls.some((u) => u.startsWith(SURPLUS_URL))).toBe(true);
|
|
124
|
-
expect(calls.some((u) => u.includes("/v1/inference/chat"))).toBe(false);
|
|
125
|
-
});
|
|
126
|
-
it("per-call escalation WITHOUT a key throws keyless and makes no network call", async () => {
|
|
127
|
-
const fetchSpy = vi.fn(async () => SURPLUS_OK());
|
|
128
|
-
vi.stubGlobal("fetch", fetchSpy);
|
|
129
|
-
// Platform-default AND key-less: the per-call escalation must refuse rather
|
|
130
|
-
// than silently fall back to a paid platform call (default-restrictive).
|
|
131
|
-
const economy = new EconomyManager(new ConnectionManager({ gatewayUrl: TEST_BASE, apiKey: "nk_test" }));
|
|
132
|
-
await expect(economy.inference(MSGS, { inferenceSource: "surplus" })).rejects.toMatchObject({ code: "keyless" });
|
|
133
|
-
expect(fetchSpy).not.toHaveBeenCalled();
|
|
134
|
-
});
|
|
135
|
-
it("per-call inferenceSource='platform' overrides a surplus-default agent back to the gateway", async () => {
|
|
136
|
-
const calls = [];
|
|
137
|
-
const fetchSpy = vi.fn(async (...args) => {
|
|
138
|
-
calls.push(urlOf(args));
|
|
139
|
-
return GATEWAY_OK();
|
|
140
|
-
});
|
|
141
|
-
vi.stubGlobal("fetch", fetchSpy);
|
|
142
|
-
// Reverse direction: a surplus-default runtime forces ONE call to platform.
|
|
143
|
-
const economy = new EconomyManager(new ConnectionManager({
|
|
144
|
-
gatewayUrl: TEST_BASE,
|
|
145
|
-
apiKey: "nk_test",
|
|
146
|
-
privateKey: TEST_PK,
|
|
147
|
-
inferenceSource: "surplus",
|
|
148
|
-
surplus: { model: "llama-3.3-70b-instruct" },
|
|
149
|
-
}));
|
|
150
|
-
const result = await economy.inference(MSGS, {
|
|
151
|
-
model: "claude",
|
|
152
|
-
inferenceSource: "platform",
|
|
153
|
-
});
|
|
154
|
-
expect(result.provider).toBe("anthropic");
|
|
155
|
-
expect(calls.some((u) => u === `${TEST_BASE}/v1/inference/chat`)).toBe(true);
|
|
156
|
-
expect(calls.some((u) => u.includes("surplusintelligence"))).toBe(false);
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
95
|
//# sourceMappingURL=economy.surplusBranch.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"economy.surplusBranch.test.js","sourceRoot":"","sources":["../../src/__tests__/economy.surplusBranch.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"economy.surplusBranch.test.js","sourceRoot":"","sources":["../../src/__tests__/economy.surplusBranch.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -161,20 +161,20 @@ describe("schemaVersion (pack-format gate)", () => {
|
|
|
161
161
|
});
|
|
162
162
|
describe("parsePack", () => {
|
|
163
163
|
it("parses a YAML pack document", () => {
|
|
164
|
-
const result = parsePack(`
|
|
165
|
-
name: notion-research-agent
|
|
166
|
-
version: 1.0.0
|
|
167
|
-
tools: [search_knowledge, send_dm]
|
|
168
|
-
mcpServers:
|
|
169
|
-
- name: notion
|
|
170
|
-
url: https://mcp.notion.com/mcp
|
|
171
|
-
connection: notion
|
|
172
|
-
connections:
|
|
173
|
-
- service: notion
|
|
174
|
-
owner: agent
|
|
175
|
-
connectors:
|
|
176
|
-
- platform: email
|
|
177
|
-
mode: outbound
|
|
164
|
+
const result = parsePack(`
|
|
165
|
+
name: notion-research-agent
|
|
166
|
+
version: 1.0.0
|
|
167
|
+
tools: [search_knowledge, send_dm]
|
|
168
|
+
mcpServers:
|
|
169
|
+
- name: notion
|
|
170
|
+
url: https://mcp.notion.com/mcp
|
|
171
|
+
connection: notion
|
|
172
|
+
connections:
|
|
173
|
+
- service: notion
|
|
174
|
+
owner: agent
|
|
175
|
+
connectors:
|
|
176
|
+
- platform: email
|
|
177
|
+
mode: outbound
|
|
178
178
|
`);
|
|
179
179
|
expect(result.errors).toEqual([]);
|
|
180
180
|
expect(result.ok).toBe(true);
|
|
@@ -234,10 +234,10 @@ describe("preset delegation", () => {
|
|
|
234
234
|
});
|
|
235
235
|
describe("pack file loading", () => {
|
|
236
236
|
it("reads + parses the pack from packPath", async () => {
|
|
237
|
-
mockReadFile.mockResolvedValueOnce(`
|
|
238
|
-
name: from-file
|
|
239
|
-
version: 1.0.0
|
|
240
|
-
tools: [search_knowledge]
|
|
237
|
+
mockReadFile.mockResolvedValueOnce(`
|
|
238
|
+
name: from-file
|
|
239
|
+
version: 1.0.0
|
|
240
|
+
tools: [search_knowledge]
|
|
241
241
|
`);
|
|
242
242
|
const { runtime } = makeRuntime();
|
|
243
243
|
const report = await new PackLoader(runtime, { packPath: "./my.pack.yaml" }).load();
|
|
@@ -27,28 +27,28 @@ function createMockRuntime() {
|
|
|
27
27
|
identity: { getAddress: vi.fn().mockReturnValue("0xtest") },
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
const SAMPLE_YAML = `
|
|
31
|
-
version: "1.0"
|
|
32
|
-
gateway: https://gateway.nookplot.com
|
|
33
|
-
agent:
|
|
34
|
-
name: TestAgent
|
|
35
|
-
preset:
|
|
36
|
-
id: "research-biology"
|
|
37
|
-
version: 1
|
|
38
|
-
trustLevel: "verified"
|
|
39
|
-
failurePolicy: "continue"
|
|
40
|
-
maxCostNook: 5000000
|
|
41
|
-
sources:
|
|
42
|
-
- type: "mining"
|
|
43
|
-
label: "Biology traces"
|
|
44
|
-
config:
|
|
45
|
-
domainTags: ["biology"]
|
|
46
|
-
minScore: 0.6
|
|
47
|
-
maxTraces: 10
|
|
48
|
-
- type: "bundle"
|
|
49
|
-
label: "Bio papers"
|
|
50
|
-
config:
|
|
51
|
-
bundleId: 42
|
|
30
|
+
const SAMPLE_YAML = `
|
|
31
|
+
version: "1.0"
|
|
32
|
+
gateway: https://gateway.nookplot.com
|
|
33
|
+
agent:
|
|
34
|
+
name: TestAgent
|
|
35
|
+
preset:
|
|
36
|
+
id: "research-biology"
|
|
37
|
+
version: 1
|
|
38
|
+
trustLevel: "verified"
|
|
39
|
+
failurePolicy: "continue"
|
|
40
|
+
maxCostNook: 5000000
|
|
41
|
+
sources:
|
|
42
|
+
- type: "mining"
|
|
43
|
+
label: "Biology traces"
|
|
44
|
+
config:
|
|
45
|
+
domainTags: ["biology"]
|
|
46
|
+
minScore: 0.6
|
|
47
|
+
maxTraces: 10
|
|
48
|
+
- type: "bundle"
|
|
49
|
+
label: "Bio papers"
|
|
50
|
+
config:
|
|
51
|
+
bundleId: 42
|
|
52
52
|
`;
|
|
53
53
|
const FETCH_RESPONSE = {
|
|
54
54
|
presetId: "research-biology",
|
|
@@ -713,26 +713,26 @@ describe("E2E: forge data/fetch → KG batch ingest → self-model memory", () =
|
|
|
713
713
|
totalItems: 2,
|
|
714
714
|
totalCostNook: 50000,
|
|
715
715
|
};
|
|
716
|
-
const YAML_WITH_AGG = `
|
|
717
|
-
version: "1.0"
|
|
718
|
-
gateway: https://gateway.nookplot.com
|
|
719
|
-
agent:
|
|
720
|
-
name: GenomicsAgent
|
|
721
|
-
preset:
|
|
722
|
-
id: "genomics-researcher"
|
|
723
|
-
version: 1
|
|
724
|
-
trustLevel: "verified"
|
|
725
|
-
failurePolicy: "continue"
|
|
726
|
-
maxCostNook: 5000000
|
|
727
|
-
sources:
|
|
728
|
-
- type: "mining"
|
|
729
|
-
label: "Genomics traces"
|
|
730
|
-
config:
|
|
731
|
-
domainTags: ["genomics"]
|
|
732
|
-
- type: "aggregate"
|
|
733
|
-
label: "Genomics aggregates"
|
|
734
|
-
config:
|
|
735
|
-
domainTags: ["genomics"]
|
|
716
|
+
const YAML_WITH_AGG = `
|
|
717
|
+
version: "1.0"
|
|
718
|
+
gateway: https://gateway.nookplot.com
|
|
719
|
+
agent:
|
|
720
|
+
name: GenomicsAgent
|
|
721
|
+
preset:
|
|
722
|
+
id: "genomics-researcher"
|
|
723
|
+
version: 1
|
|
724
|
+
trustLevel: "verified"
|
|
725
|
+
failurePolicy: "continue"
|
|
726
|
+
maxCostNook: 5000000
|
|
727
|
+
sources:
|
|
728
|
+
- type: "mining"
|
|
729
|
+
label: "Genomics traces"
|
|
730
|
+
config:
|
|
731
|
+
domainTags: ["genomics"]
|
|
732
|
+
- type: "aggregate"
|
|
733
|
+
label: "Genomics aggregates"
|
|
734
|
+
config:
|
|
735
|
+
domainTags: ["genomics"]
|
|
736
736
|
`;
|
|
737
737
|
setupReadFileMocks(YAML_WITH_AGG);
|
|
738
738
|
setupKgAvailable(runtime, AGGREGATE_FETCH_RESPONSE);
|
|
@@ -299,30 +299,30 @@ describe("DockerSandbox lifecycle (via fake docker shim)", () => {
|
|
|
299
299
|
// `exec id sh -c CMD` -> exec sh -c CMD
|
|
300
300
|
// `cp SRC DST` -> cp SRC DST
|
|
301
301
|
// `rm -f id` -> exit 0
|
|
302
|
-
const script = `#!/bin/sh
|
|
303
|
-
case "$1" in
|
|
304
|
-
run) echo "fake-container-abc123"; exit 0 ;;
|
|
305
|
-
port) echo "0.0.0.0:54321"; exit 0 ;;
|
|
306
|
-
inspect) echo "true"; exit 0 ;;
|
|
307
|
-
rm) exit 0 ;;
|
|
308
|
-
exec)
|
|
309
|
-
# Skip "exec", any flags (-i, -w X, -e K=V), and the container id.
|
|
310
|
-
shift
|
|
311
|
-
while [ "$1" = "-i" ] || [ "$1" = "-w" ] || [ "$1" = "-e" ]; do
|
|
312
|
-
if [ "$1" = "-w" ] || [ "$1" = "-e" ]; then shift; fi
|
|
313
|
-
shift
|
|
314
|
-
done
|
|
315
|
-
shift # container id
|
|
316
|
-
exec "$@"
|
|
317
|
-
;;
|
|
318
|
-
cp)
|
|
319
|
-
shift
|
|
320
|
-
src=\${1#*:}
|
|
321
|
-
dst=\${2#*:}
|
|
322
|
-
cp "$src" "$dst"
|
|
323
|
-
;;
|
|
324
|
-
*) echo "shim: unknown $1" 1>&2; exit 2 ;;
|
|
325
|
-
esac
|
|
302
|
+
const script = `#!/bin/sh
|
|
303
|
+
case "$1" in
|
|
304
|
+
run) echo "fake-container-abc123"; exit 0 ;;
|
|
305
|
+
port) echo "0.0.0.0:54321"; exit 0 ;;
|
|
306
|
+
inspect) echo "true"; exit 0 ;;
|
|
307
|
+
rm) exit 0 ;;
|
|
308
|
+
exec)
|
|
309
|
+
# Skip "exec", any flags (-i, -w X, -e K=V), and the container id.
|
|
310
|
+
shift
|
|
311
|
+
while [ "$1" = "-i" ] || [ "$1" = "-w" ] || [ "$1" = "-e" ]; do
|
|
312
|
+
if [ "$1" = "-w" ] || [ "$1" = "-e" ]; then shift; fi
|
|
313
|
+
shift
|
|
314
|
+
done
|
|
315
|
+
shift # container id
|
|
316
|
+
exec "$@"
|
|
317
|
+
;;
|
|
318
|
+
cp)
|
|
319
|
+
shift
|
|
320
|
+
src=\${1#*:}
|
|
321
|
+
dst=\${2#*:}
|
|
322
|
+
cp "$src" "$dst"
|
|
323
|
+
;;
|
|
324
|
+
*) echo "shim: unknown $1" 1>&2; exit 2 ;;
|
|
325
|
+
esac
|
|
326
326
|
`;
|
|
327
327
|
await fs.writeFile(shimBin, script, { mode: 0o755 });
|
|
328
328
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionCatalog.d.ts","sourceRoot":"","sources":["../src/actionCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"actionCatalog.d.ts","sourceRoot":"","sources":["../src/actionCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgJD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGrD,CAAC;AAIF;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAQtE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAiBhE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ActionInfo } from "./actionCatalog.js";
|
|
2
|
-
/** MCP-derived action catalog entries (
|
|
2
|
+
/** MCP-derived action catalog entries (479 tools). */
|
|
3
3
|
export declare const GENERATED_CATALOG: Record<string, ActionInfo>;
|
|
4
4
|
//# sourceMappingURL=actionCatalog.generated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionCatalog.generated.d.ts","sourceRoot":"","sources":["../src/actionCatalog.generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"actionCatalog.generated.d.ts","sourceRoot":"","sources":["../src/actionCatalog.generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAszExD,CAAC"}
|