@nookplot/runtime 0.5.119 → 0.5.120

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.
Files changed (98) hide show
  1. package/dist/__tests__/autonomous.getAvailableActions.test.js +4 -7
  2. package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -1
  3. package/dist/__tests__/codegen-drift.test.js +1 -3
  4. package/dist/__tests__/codegen-drift.test.js.map +1 -1
  5. package/dist/__tests__/conversation/modelThresholdsParity.test.js +11 -6
  6. package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -1
  7. package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -1
  8. package/dist/__tests__/helpers/mockRuntime.js +0 -7
  9. package/dist/__tests__/helpers/mockRuntime.js.map +1 -1
  10. package/dist/__tests__/sandbox.test.js +24 -24
  11. package/dist/actionCatalog.generated.d.ts +1 -1
  12. package/dist/actionCatalog.generated.d.ts.map +1 -1
  13. package/dist/actionCatalog.generated.js +33 -178
  14. package/dist/actionCatalog.generated.js.map +1 -1
  15. package/dist/autonomous.d.ts +1 -25
  16. package/dist/autonomous.d.ts.map +1 -1
  17. package/dist/autonomous.js +38 -217
  18. package/dist/autonomous.js.map +1 -1
  19. package/dist/bounties.js +1 -1
  20. package/dist/bounties.js.map +1 -1
  21. package/dist/connection.d.ts +1 -1
  22. package/dist/connection.d.ts.map +1 -1
  23. package/dist/connection.js +1 -2
  24. package/dist/connection.js.map +1 -1
  25. package/dist/contentSafety.d.ts +1 -1
  26. package/dist/contentSafety.d.ts.map +1 -1
  27. package/dist/contentSafety.js +2 -6
  28. package/dist/contentSafety.js.map +1 -1
  29. package/dist/conversation/modelLimits.js +17 -17
  30. package/dist/discovery.js +1 -1
  31. package/dist/discovery.js.map +1 -1
  32. package/dist/identity.d.ts +0 -51
  33. package/dist/identity.d.ts.map +1 -1
  34. package/dist/identity.js +0 -50
  35. package/dist/identity.js.map +1 -1
  36. package/dist/index.d.ts +0 -13
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +0 -10
  39. package/dist/index.js.map +1 -1
  40. package/dist/signalActionMap.d.ts.map +1 -1
  41. package/dist/signalActionMap.js +14 -21
  42. package/dist/signalActionMap.js.map +1 -1
  43. package/dist/swarms.d.ts +0 -13
  44. package/dist/swarms.d.ts.map +1 -1
  45. package/dist/swarms.js +0 -4
  46. package/dist/swarms.js.map +1 -1
  47. package/dist/tools.d.ts.map +1 -1
  48. package/dist/tools.js +2 -7
  49. package/dist/tools.js.map +1 -1
  50. package/package.json +1 -1
  51. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +0 -2
  52. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +0 -1
  53. package/dist/__tests__/autonomous.goalBootstrap.test.js +0 -148
  54. package/dist/__tests__/autonomous.goalBootstrap.test.js.map +0 -1
  55. package/dist/__tests__/autonomous.miningTrack.test.d.ts +0 -2
  56. package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +0 -1
  57. package/dist/__tests__/autonomous.miningTrack.test.js +0 -38
  58. package/dist/__tests__/autonomous.miningTrack.test.js.map +0 -1
  59. package/dist/__tests__/goalLoop.test.d.ts +0 -2
  60. package/dist/__tests__/goalLoop.test.d.ts.map +0 -1
  61. package/dist/__tests__/goalLoop.test.js +0 -335
  62. package/dist/__tests__/goalLoop.test.js.map +0 -1
  63. package/dist/__tests__/loadProfile.test.d.ts +0 -8
  64. package/dist/__tests__/loadProfile.test.d.ts.map +0 -1
  65. package/dist/__tests__/loadProfile.test.js +0 -134
  66. package/dist/__tests__/loadProfile.test.js.map +0 -1
  67. package/dist/__tests__/mining.test.d.ts +0 -2
  68. package/dist/__tests__/mining.test.d.ts.map +0 -1
  69. package/dist/__tests__/mining.test.js +0 -306
  70. package/dist/__tests__/mining.test.js.map +0 -1
  71. package/dist/__tests__/presetLoader.test.d.ts +0 -2
  72. package/dist/__tests__/presetLoader.test.d.ts.map +0 -1
  73. package/dist/__tests__/presetLoader.test.js +0 -749
  74. package/dist/__tests__/presetLoader.test.js.map +0 -1
  75. package/dist/goal/goalLoop.d.ts +0 -78
  76. package/dist/goal/goalLoop.d.ts.map +0 -1
  77. package/dist/goal/goalLoop.js +0 -376
  78. package/dist/goal/goalLoop.js.map +0 -1
  79. package/dist/goal/goalPrompts.d.ts +0 -20
  80. package/dist/goal/goalPrompts.d.ts.map +0 -1
  81. package/dist/goal/goalPrompts.js +0 -54
  82. package/dist/goal/goalPrompts.js.map +0 -1
  83. package/dist/goal/types.d.ts +0 -98
  84. package/dist/goal/types.d.ts.map +0 -1
  85. package/dist/goal/types.js +0 -7
  86. package/dist/goal/types.js.map +0 -1
  87. package/dist/loadProfile.d.ts +0 -100
  88. package/dist/loadProfile.d.ts.map +0 -1
  89. package/dist/loadProfile.js +0 -221
  90. package/dist/loadProfile.js.map +0 -1
  91. package/dist/mining.d.ts +0 -155
  92. package/dist/mining.d.ts.map +0 -1
  93. package/dist/mining.js +0 -365
  94. package/dist/mining.js.map +0 -1
  95. package/dist/presetLoader.d.ts +0 -130
  96. package/dist/presetLoader.d.ts.map +0 -1
  97. package/dist/presetLoader.js +0 -734
  98. package/dist/presetLoader.js.map +0 -1
package/dist/mining.js DELETED
@@ -1,365 +0,0 @@
1
- /**
2
- * Unified mining loop for the Nookplot Agent Runtime SDK.
3
- *
4
- * Surfaces a single `np.mining.start()` API that handles the full
5
- * "discover → rank → solve → submit" cycle across all enabled tracks
6
- * (knowledge, embedding, RLM). Per-track solver dispatch is private
7
- * here — solver implementations call out to the gateway via
8
- * `connection.request()` and the user's existing inference setup
9
- * (BYOK / local Ollama / gateway-credit-based inference).
10
- *
11
- * Usage from the CLI's `nookplot mine` command:
12
- * const session = await runtime.mining.start({
13
- * tracks: ["knowledge", "embedding", "rlm"],
14
- * maxCredits: 5000,
15
- * once: false,
16
- * });
17
- * await session.until(() => process.signals.interrupted);
18
- * await session.stop();
19
- *
20
- * Same surface from the `mining_opportunity` autonomous handler:
21
- * await runtime.mining.runOnce({ tracks: ["knowledge"] });
22
- *
23
- * @module mining
24
- */
25
- const DEFAULT_TICK_MS = 60_000;
26
- const DEFAULT_MAX_CREDITS = 5000;
27
- /**
28
- * Local credit cost estimates per submitted solve, used only for client-side
29
- * budget enforcement (the gateway is the authoritative deductor). Values track
30
- * the gateway's per-route rate-limit credit costs as of Phase 3 — bump these
31
- * when the gateway costs change. Keep in sync with runtime-py/.../mining.py
32
- * `_BUDGET_COST_*` constants.
33
- */
34
- const BUDGET_COST_KNOWLEDGE_SUBMIT = 50;
35
- const BUDGET_COST_EMBEDDING_SUBMIT = 5;
36
- const DIFFICULTY_RANK = {
37
- easy: 1,
38
- medium: 2,
39
- hard: 3,
40
- expert: 4,
41
- };
42
- // ─── Track classification ───────────────────────────────────────────────
43
- export function trackOf(sourceType) {
44
- if (sourceType === "embedding_generation")
45
- return "embedding";
46
- if (sourceType === "rlm_trajectory" || sourceType === "rlm_audit")
47
- return "rlm";
48
- return "knowledge";
49
- }
50
- // ─── MiningManager ──────────────────────────────────────────────────────
51
- export class MiningManager {
52
- connection;
53
- economy;
54
- activeSession = null;
55
- constructor(connection, economy) {
56
- this.connection = connection;
57
- this.economy = economy;
58
- }
59
- /**
60
- * Start a long-running mining session. Returns immediately; the loop runs
61
- * in the background until `session.stop()` or `once: true` completion.
62
- */
63
- async start(opts = {}) {
64
- if (this.activeSession) {
65
- throw new Error("MiningManager: a session is already active. Call stop() first.");
66
- }
67
- const session = this.makeSession(opts);
68
- this.activeSession = session;
69
- return session;
70
- }
71
- /**
72
- * Run one tick (discover → rank → solve top → submit) and return the
73
- * results. Suitable for `mining_opportunity` autonomous-handler dispatch.
74
- * Loop-only options (`maxCredits`, `tickIntervalMs`, `once`) are not
75
- * accepted here — they're meaningless for a single-shot call.
76
- */
77
- async runOnce(opts = {}) {
78
- return this.tick(opts, { creditsSpent: 0 });
79
- }
80
- /** Snapshot stats from the active session, if any. */
81
- stats() {
82
- return this.activeSession?.stats() ?? null;
83
- }
84
- // ─── Internal: session bookkeeping ────────────────────────────────────
85
- makeSession(opts) {
86
- const log = opts.log ?? (() => undefined);
87
- const tickMs = opts.tickIntervalMs ?? DEFAULT_TICK_MS;
88
- const maxCredits = opts.maxCredits ?? DEFAULT_MAX_CREDITS;
89
- const stats = {
90
- ticks: 0,
91
- attempted: 0,
92
- submitted: 0,
93
- skipped: 0,
94
- dryRun: 0,
95
- errors: 0,
96
- creditsSpent: 0,
97
- byTrack: {
98
- knowledge: { attempted: 0, submitted: 0, errors: 0 },
99
- embedding: { attempted: 0, submitted: 0, errors: 0 },
100
- rlm: { attempted: 0, submitted: 0, errors: 0 },
101
- gradient: { attempted: 0, submitted: 0, errors: 0 },
102
- },
103
- };
104
- const budget = { creditsSpent: 0 };
105
- let stopped = false;
106
- let resolveDone;
107
- const done = new Promise((resolve) => { resolveDone = resolve; });
108
- const runLoop = async () => {
109
- while (!stopped) {
110
- stats.ticks++;
111
- try {
112
- if (budget.creditsSpent >= maxCredits) {
113
- log(`[mining] budget exhausted (${budget.creditsSpent}/${maxCredits} credits) — stopping`);
114
- break;
115
- }
116
- const results = await this.tick(opts, budget);
117
- for (const r of results) {
118
- stats.attempted++;
119
- stats.byTrack[r.track].attempted++;
120
- if (r.status === "submitted") {
121
- stats.submitted++;
122
- stats.byTrack[r.track].submitted++;
123
- }
124
- else if (r.status === "skipped") {
125
- if (r.reason === "dry-run")
126
- stats.dryRun++;
127
- else
128
- stats.skipped++;
129
- }
130
- else {
131
- stats.errors++;
132
- stats.byTrack[r.track].errors++;
133
- }
134
- }
135
- stats.creditsSpent = budget.creditsSpent;
136
- if (opts.once && results.length === 0) {
137
- log("[mining] no challenges remaining — once mode complete");
138
- break;
139
- }
140
- if (opts.once) {
141
- // In `once` mode, do not sleep — the next tick happens immediately
142
- // and exits when the queue drains.
143
- continue;
144
- }
145
- }
146
- catch (err) {
147
- log(`[mining][error] tick failed: ${err instanceof Error ? err.message : String(err)}`);
148
- stats.errors++;
149
- }
150
- if (stopped)
151
- break;
152
- await sleep(tickMs);
153
- }
154
- resolveDone();
155
- };
156
- void runLoop();
157
- return {
158
- done,
159
- stop: async () => {
160
- stopped = true;
161
- await done;
162
- this.activeSession = null;
163
- },
164
- stats: () => ({ ...stats, byTrack: { ...stats.byTrack } }),
165
- };
166
- }
167
- // ─── Internal: one tick ───────────────────────────────────────────────
168
- async tick(opts, budget) {
169
- const log = opts.log ?? (() => undefined);
170
- const tracks = await this.resolveTracks(opts.tracks);
171
- if (tracks.length === 0) {
172
- log("[mining] no eligible tracks — exiting tick");
173
- return [];
174
- }
175
- // 1. Discover open challenges across all enabled tracks.
176
- const challenges = await this.discoverAcross(tracks);
177
- if (challenges.length === 0) {
178
- log("[mining] no open challenges across enabled tracks");
179
- return [];
180
- }
181
- // 2. Rank by (reward × difficulty) / 1.0 — successRate is unknown locally,
182
- // so the loop uses a difficulty-weighted estimate. The earnings-preview
183
- // endpoint surfaces successRate to the user up-front via the CLI banner.
184
- const ranked = challenges
185
- .map((c) => ({ ...c, rankScore: c.estimatedRewardNook * (DIFFICULTY_RANK[c.difficulty] ?? 1) }))
186
- .sort((a, b) => (b.rankScore ?? 0) - (a.rankScore ?? 0));
187
- if (opts.explain) {
188
- for (const c of ranked.slice(0, 5)) {
189
- log(`[mining][rank] ${c.track}/${c.id} reward=${c.estimatedRewardNook} difficulty=${c.difficulty} score=${c.rankScore}`);
190
- }
191
- }
192
- // 3. Solve top challenge. `once` mode keeps draining on subsequent ticks.
193
- const top = ranked[0];
194
- const result = await this.solveOne(top, opts, budget);
195
- return [result];
196
- }
197
- // ─── Internal: track resolution ───────────────────────────────────────
198
- async resolveTracks(input) {
199
- if (Array.isArray(input))
200
- return input;
201
- // 'auto' or undefined: ask the gateway which tracks have open challenges.
202
- try {
203
- const res = await this.connection.request("GET", "/v1/mining/earnings-preview?capabilities=knowledge,embedding,rlm");
204
- return res.tracks.filter((t) => t.openCount > 0).map((t) => t.track);
205
- }
206
- catch {
207
- // Fallback: try all three solver tracks.
208
- return ["knowledge", "embedding", "rlm"];
209
- }
210
- }
211
- // ─── Internal: discovery ──────────────────────────────────────────────
212
- async discoverAcross(tracks) {
213
- const results = [];
214
- for (const track of tracks) {
215
- try {
216
- if (track === "embedding") {
217
- results.push(...await this.discoverEmbedding());
218
- }
219
- else if (track === "rlm") {
220
- results.push(...await this.discoverRlm());
221
- }
222
- else if (track === "knowledge") {
223
- results.push(...await this.discoverKnowledge());
224
- }
225
- }
226
- catch {
227
- // Per-track failure isolation — a single track's discovery error must
228
- // not poison the others.
229
- }
230
- }
231
- return results;
232
- }
233
- async discoverKnowledge() {
234
- const data = await this.connection.request("GET", "/v1/mining/challenges?status=open&limit=20");
235
- return (data.challenges ?? [])
236
- // Knowledge bucket = anything not embedding / RLM.
237
- .filter((c) => trackOf(c.sourceType) === "knowledge")
238
- .map((c) => this.toSummary(c, "knowledge"));
239
- }
240
- async discoverEmbedding() {
241
- const data = await this.connection.request("GET", "/v1/mining/embedding-challenges?status=open&limit=20");
242
- return (data.challenges ?? []).map((c) => this.toSummary({
243
- ...c,
244
- difficulty: c.difficulty ?? "medium",
245
- estimatedRewardNook: c.estimatedRewardNook ?? 0,
246
- sourceType: c.sourceType ?? "embedding_generation",
247
- }, "embedding"));
248
- }
249
- async discoverRlm() {
250
- const data = await this.connection.request("GET", "/v1/mining/challenges?status=open&sourceType=rlm_trajectory&limit=20");
251
- return (data.challenges ?? []).map((c) => this.toSummary(c, "rlm"));
252
- }
253
- toSummary(c, track) {
254
- return {
255
- id: c.id,
256
- track,
257
- title: c.title,
258
- description: c.description,
259
- difficulty: c.difficulty ?? "medium",
260
- estimatedRewardNook: c.estimatedRewardNook ?? 0,
261
- domainTags: c.domainTags ?? [],
262
- sourceType: c.sourceType,
263
- closesAt: c.closesAt,
264
- };
265
- }
266
- // ─── Internal: per-track solvers ──────────────────────────────────────
267
- async solveOne(challenge, opts, budget) {
268
- const log = opts.log ?? (() => undefined);
269
- if (opts.dryRun) {
270
- log(`[mining][dry-run] would solve ${challenge.track}/${challenge.id} (${challenge.title.slice(0, 60)})`);
271
- return { track: challenge.track, challengeId: challenge.id, status: "skipped", reason: "dry-run", estimatedRewardNook: challenge.estimatedRewardNook };
272
- }
273
- try {
274
- if (challenge.track === "knowledge") {
275
- return await this.solveKnowledgeChallenge(challenge, opts, budget);
276
- }
277
- if (challenge.track === "embedding") {
278
- return await this.solveEmbeddingChallenge(challenge, opts, budget);
279
- }
280
- if (challenge.track === "rlm") {
281
- return await this.solveRlmChallenge(challenge, opts, budget);
282
- }
283
- return { track: challenge.track, challengeId: challenge.id, status: "skipped", reason: "no solver for track" };
284
- }
285
- catch (err) {
286
- const msg = err instanceof Error ? err.message : String(err);
287
- log(`[mining][error] solver ${challenge.track}/${challenge.id}: ${msg}`);
288
- return { track: challenge.track, challengeId: challenge.id, status: "error", reason: msg };
289
- }
290
- }
291
- async solveKnowledgeChallenge(challenge, opts, budget) {
292
- const trace = opts.solveKnowledge
293
- ? await opts.solveKnowledge(challenge, this.economy)
294
- : await this.defaultKnowledgeSolver(challenge);
295
- if (!trace || trace.length < 50) {
296
- return { track: "knowledge", challengeId: challenge.id, status: "skipped", reason: "trace too short" };
297
- }
298
- const submission = await this.connection.request("POST", `/v1/mining/submissions/${encodeURIComponent(challenge.id)}`, { traceContent: trace, guildId: opts.guildId });
299
- // Gateway is the authoritative deductor; this estimate exists only so the
300
- // local --max-credits cap trips before sending too many submissions.
301
- budget.creditsSpent += BUDGET_COST_KNOWLEDGE_SUBMIT;
302
- return {
303
- track: "knowledge",
304
- challengeId: challenge.id,
305
- status: "submitted",
306
- submissionId: submission.submissionId,
307
- estimatedRewardNook: challenge.estimatedRewardNook,
308
- };
309
- }
310
- async defaultKnowledgeSolver(challenge) {
311
- const prompt = [
312
- `Solve the following reasoning challenge. Show your full reasoning trace.`,
313
- ``,
314
- `Title: ${challenge.title}`,
315
- challenge.description ? `Description: ${challenge.description}` : ``,
316
- ``,
317
- `Domains: ${challenge.domainTags.join(", ") || "general"}`,
318
- `Difficulty: ${challenge.difficulty}`,
319
- ].join("\n");
320
- const result = await this.economy.inference([{ role: "user", content: prompt }], { temperature: 0.4 });
321
- return (result.content ?? "").trim();
322
- }
323
- async solveEmbeddingChallenge(challenge, opts, budget) {
324
- if (!opts.generateEmbeddings) {
325
- return { track: "embedding", challengeId: challenge.id, status: "skipped", reason: "no generateEmbeddings callback provided" };
326
- }
327
- const detail = await this.connection.request("GET", `/v1/mining/embedding-challenges/${encodeURIComponent(challenge.id)}`);
328
- const prompts = detail.prompts ?? [];
329
- const dimensions = detail.dimensions ?? 768;
330
- if (prompts.length === 0) {
331
- return { track: "embedding", challengeId: challenge.id, status: "skipped", reason: "challenge has no prompts" };
332
- }
333
- const vectors = await opts.generateEmbeddings(prompts, dimensions);
334
- if (vectors.length !== prompts.length) {
335
- return { track: "embedding", challengeId: challenge.id, status: "error", reason: `vector count mismatch (got ${vectors.length}, expected ${prompts.length})` };
336
- }
337
- const submission = await this.connection.request("POST", `/v1/mining/embedding-challenges/${encodeURIComponent(challenge.id)}/submit`, { vectors, guildId: opts.guildId });
338
- budget.creditsSpent += BUDGET_COST_EMBEDDING_SUBMIT;
339
- return {
340
- track: "embedding",
341
- challengeId: challenge.id,
342
- status: "submitted",
343
- submissionId: submission.submissionId,
344
- estimatedRewardNook: challenge.estimatedRewardNook,
345
- };
346
- }
347
- async solveRlmChallenge(challenge, opts, _budget) {
348
- if (opts.solveRlm)
349
- return opts.solveRlm(challenge, this.economy);
350
- // Default behaviour: skip with a clear "deferred" reason. Full RLM
351
- // autosolve requires an LLM that can plan REPL steps — a future phase
352
- // ships that. CLI users with a custom solver can pass `solveRlm` here.
353
- return {
354
- track: "rlm",
355
- challengeId: challenge.id,
356
- status: "skipped",
357
- reason: "RLM autosolve deferred — pass `solveRlm` to mine the RLM track",
358
- estimatedRewardNook: challenge.estimatedRewardNook,
359
- };
360
- }
361
- }
362
- function sleep(ms) {
363
- return new Promise((resolve) => setTimeout(resolve, ms));
364
- }
365
- //# sourceMappingURL=mining.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mining.js","sourceRoot":"","sources":["../src/mining.ts"],"names":[],"mappings":"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"}
@@ -1,130 +0,0 @@
1
- /**
2
- * PresetLoader — loads forge preset data into agent memory at boot.
3
- *
4
- * Reads the preset section of nookplot.yaml, fetches data per source via
5
- * the gateway's forge data endpoint, runs content scanning, and ingests
6
- * items as preset-tagged memories. Supports layered ingestion: RAG when
7
- * available, memory.import() fallback.
8
- *
9
- * Features:
10
- * - Content scanning (sanitizeForPrompt) on every item
11
- * - Idempotent loading via .preset-loaded.json manifest
12
- * - Configurable failure policy (abort / continue / retry)
13
- * - Boot progress events via EventEmitter
14
- * - Self-awareness memory generation
15
- *
16
- * @module presetLoader
17
- */
18
- import { EventEmitter } from "node:events";
19
- import type { NookplotRuntime } from "./index.js";
20
- export interface PresetConfig {
21
- id: string;
22
- version?: number;
23
- trustLevel?: "verified" | "scanned" | "raw";
24
- failurePolicy?: "abort" | "continue";
25
- maxCostNook?: number;
26
- sources?: Array<{
27
- type: string;
28
- label?: string;
29
- config: Record<string, unknown>;
30
- }>;
31
- }
32
- export interface PresetLoadResult {
33
- sources: Array<{
34
- type: string;
35
- label: string;
36
- itemsLoaded: number;
37
- itemsBlocked: number;
38
- itemsSkipped: number;
39
- method: "memory" | "rag" | "prompt";
40
- status: "loaded" | "partial" | "failed";
41
- error?: string;
42
- costNook: number;
43
- }>;
44
- totalItems: number;
45
- totalBlocked: number;
46
- totalCostNook: number;
47
- ragAvailable: boolean;
48
- presetVersion: number;
49
- loadedAt: string;
50
- }
51
- export type PresetLoadEvent = {
52
- phase: "estimating";
53
- message: string;
54
- } | {
55
- phase: "fetching";
56
- source: string;
57
- progress: string;
58
- } | {
59
- phase: "scanning";
60
- source: string;
61
- blocked: number;
62
- } | {
63
- phase: "ingesting";
64
- source: string;
65
- method: "memory" | "rag";
66
- } | {
67
- phase: "complete";
68
- result: PresetLoadResult;
69
- } | {
70
- phase: "error";
71
- source: string;
72
- error: string;
73
- };
74
- export declare class PresetLoader extends EventEmitter {
75
- private runtime;
76
- private configPath;
77
- private loading;
78
- constructor(runtime: NookplotRuntime, configPath?: string);
79
- /**
80
- * Build x-preset-hmac header so the gateway trusts isPreset/presetId fields.
81
- * HMAC = SHA-256(apiKey, "preset-ingest:" + agent_address).
82
- */
83
- private presetIngestHeaders;
84
- /**
85
- * Load all preset data sources. Called once at agent boot.
86
- * Concurrent calls are coalesced — only the first triggers a fetch,
87
- * subsequent callers await the same promise (prevents double-pay).
88
- */
89
- load(): Promise<PresetLoadResult>;
90
- private _doLoad;
91
- /**
92
- * Check if preset data was already loaded (idempotent reboot check).
93
- */
94
- isLoaded(): Promise<boolean>;
95
- /**
96
- * Map preset source type to knowledge graph knowledge_type.
97
- */
98
- private mapSourceToKnowledgeType;
99
- /**
100
- * Map preset source type to knowledge graph source_type.
101
- */
102
- private mapSourceToKGSourceType;
103
- /**
104
- * Ingest a KnowledgeAggregateV1 into the knowledge graph as structured items.
105
- * Same decomposition as ingestAggregate but targets the KG endpoint.
106
- */
107
- private ingestAggregateToKG;
108
- /**
109
- * Ingest a KnowledgeAggregateV1 as structured memories.
110
- * Uses 5-7x fewer memory slots than equivalent raw traces:
111
- * - Synthesis → semantic memory (importance 0.9)
112
- * - Each keyInsight → procedural memory (confidence-weighted)
113
- * - Each reasoning pattern → procedural memory
114
- * - Contradictions → self_model memory
115
- *
116
- * Returns the number of memories stored.
117
- */
118
- private ingestAggregate;
119
- private readConfig;
120
- private readManifest;
121
- private writeManifest;
122
- /**
123
- * Lightweight client-side severity assessment.
124
- * Full ContentScanner runs server-side; this is a first pass.
125
- */
126
- private assessSeverity;
127
- private emptyResult;
128
- private manifestToResult;
129
- }
130
- //# sourceMappingURL=presetLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presetLoader.d.ts","sourceRoot":"","sources":["../src/presetLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;IAC5C,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;QACpC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;QACxC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,GAChE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AActD,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAA0C;gBAE7C,OAAO,EAAE,eAAe,EAAE,UAAU,SAAoB;IAMpE;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAUzB,OAAO;IAiVrB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAWlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;;OAGG;YACW,mBAAmB;IAwIjC;;;;;;;;;OASG;YACW,eAAe;YAgHf,UAAU;YAYV,YAAY;YASZ,aAAa;IAQ3B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,gBAAgB;CAWzB"}