pi-shadow-mind 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +6441 -7194
- package/dist/index.js.map +4 -4
- package/package.json +11 -3
- package/dist/config.d.ts +0 -18
- package/dist/config.js +0 -132
- package/dist/config.js.map +0 -1
- package/dist/entity-store.d.ts +0 -22
- package/dist/entity-store.js +0 -71
- package/dist/entity-store.js.map +0 -1
- package/dist/management-tools.d.ts +0 -4
- package/dist/management-tools.js +0 -130
- package/dist/management-tools.js.map +0 -1
- package/dist/protocol.d.ts +0 -3
- package/dist/protocol.js +0 -15
- package/dist/protocol.js.map +0 -1
- package/dist/random.d.ts +0 -2
- package/dist/random.js +0 -14
- package/dist/random.js.map +0 -1
- package/dist/registry.d.ts +0 -9
- package/dist/registry.js +0 -139
- package/dist/registry.js.map +0 -1
- package/dist/report-batcher.d.ts +0 -15
- package/dist/report-batcher.js +0 -49
- package/dist/report-batcher.js.map +0 -1
- package/dist/runtime.d.ts +0 -38
- package/dist/runtime.js +0 -312
- package/dist/runtime.js.map +0 -1
- package/dist/scheduler.d.ts +0 -16
- package/dist/scheduler.js +0 -54
- package/dist/scheduler.js.map +0 -1
- package/dist/session-lifetime.d.ts +0 -8
- package/dist/session-lifetime.js +0 -31
- package/dist/session-lifetime.js.map +0 -1
- package/dist/shadow-runner.d.ts +0 -93
- package/dist/shadow-runner.js +0 -248
- package/dist/shadow-runner.js.map +0 -1
- package/dist/shutdown-drain.d.ts +0 -12
- package/dist/shutdown-drain.js +0 -22
- package/dist/shutdown-drain.js.map +0 -1
- package/dist/summaries.d.ts +0 -9
- package/dist/summaries.js +0 -56
- package/dist/summaries.js.map +0 -1
- package/dist/trajectory.d.ts +0 -8
- package/dist/trajectory.js +0 -107
- package/dist/trajectory.js.map +0 -1
- package/dist/types.d.ts +0 -64
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/validation.d.ts +0 -8
- package/dist/validation.js +0 -18
- package/dist/validation.js.map +0 -1
package/dist/registry.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, readdir, stat } from "node:fs/promises";
|
|
2
|
-
import { basename, extname, join } from "node:path";
|
|
3
|
-
import YAML from "yaml";
|
|
4
|
-
import { inRange, isFiniteNumber, isNonEmptyString, isStringArray, isThinkingLevel } from "./validation.js";
|
|
5
|
-
const ID_PATTERN = /^[a-z0-9][a-z0-9_-]*$/;
|
|
6
|
-
export class ShadowRegistry {
|
|
7
|
-
directory;
|
|
8
|
-
cache = new Map();
|
|
9
|
-
constructor(agentDir) {
|
|
10
|
-
this.directory = join(agentDir, "shadow-minds");
|
|
11
|
-
}
|
|
12
|
-
async initialize() {
|
|
13
|
-
await mkdir(this.directory, { recursive: true });
|
|
14
|
-
}
|
|
15
|
-
async load() {
|
|
16
|
-
await this.initialize();
|
|
17
|
-
const names = (await readdir(this.directory)).filter((name) => extname(name).toLowerCase() === ".md").sort();
|
|
18
|
-
const shadows = [];
|
|
19
|
-
const diagnostics = [];
|
|
20
|
-
const seen = new Set();
|
|
21
|
-
for (const name of names) {
|
|
22
|
-
const filePath = join(this.directory, name);
|
|
23
|
-
seen.add(filePath);
|
|
24
|
-
const fileStat = await stat(filePath);
|
|
25
|
-
const cached = this.cache.get(filePath);
|
|
26
|
-
if (cached && cached.mtimeMs === fileStat.mtimeMs) {
|
|
27
|
-
// Unchanged since last load: reuse the cached parse result.
|
|
28
|
-
if (cached.shadow)
|
|
29
|
-
shadows.push(cached.shadow);
|
|
30
|
-
if (cached.error)
|
|
31
|
-
diagnostics.push({ filePath, message: cached.error });
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
try {
|
|
35
|
-
const definition = parseShadowMarkdown(await readFile(filePath, "utf8"), filePath);
|
|
36
|
-
this.cache.set(filePath, { mtimeMs: fileStat.mtimeMs, shadow: definition });
|
|
37
|
-
shadows.push(definition);
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
-
this.cache.set(filePath, { mtimeMs: fileStat.mtimeMs, error: message });
|
|
42
|
-
diagnostics.push({ filePath, message });
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
for (const filePath of [...this.cache.keys()]) {
|
|
46
|
-
if (!seen.has(filePath))
|
|
47
|
-
this.cache.delete(filePath);
|
|
48
|
-
}
|
|
49
|
-
// Detect duplicate ids across (possibly cached) definitions; first file wins.
|
|
50
|
-
const unique = [];
|
|
51
|
-
const ids = new Set();
|
|
52
|
-
for (const shadow of shadows) {
|
|
53
|
-
if (ids.has(shadow.id)) {
|
|
54
|
-
diagnostics.push({ filePath: shadow.filePath, message: `duplicate shadow id: ${shadow.id}` });
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
ids.add(shadow.id);
|
|
58
|
-
unique.push(shadow);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return { shadows: unique, diagnostics };
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
export function parseShadowMarkdown(source, filePath) {
|
|
65
|
-
const match = /^---\s*\r?\n([\s\S]*?)\r?\n---\s*(?:\r?\n|$)([\s\S]*)$/.exec(source);
|
|
66
|
-
if (!match)
|
|
67
|
-
throw new Error("missing YAML frontmatter");
|
|
68
|
-
const meta = YAML.parse(match[1]);
|
|
69
|
-
if (!meta || typeof meta !== "object" || Array.isArray(meta))
|
|
70
|
-
throw new Error("frontmatter must be an object");
|
|
71
|
-
const value = meta;
|
|
72
|
-
const fallbackId = basename(filePath, extname(filePath));
|
|
73
|
-
const id = stringValue(value.id, fallbackId, "id");
|
|
74
|
-
if (!ID_PATTERN.test(id))
|
|
75
|
-
throw new Error("id must match [a-z0-9][a-z0-9_-]*");
|
|
76
|
-
const prompt = match[2].trim();
|
|
77
|
-
if (!prompt)
|
|
78
|
-
throw new Error("shadow prompt body is empty");
|
|
79
|
-
return {
|
|
80
|
-
id,
|
|
81
|
-
name: stringValue(value.name, id, "name"),
|
|
82
|
-
enabled: booleanValue(value.enabled, true, "enabled"),
|
|
83
|
-
debug: booleanValue(value.debug, false, "debug"),
|
|
84
|
-
activationProbability: probabilityValue(value.activation_probability, 0.3, "activation_probability"),
|
|
85
|
-
activeForModels: stringArray(value.active_for_models, ["*"], "active_for_models"),
|
|
86
|
-
runWithModel: optionalString(value.run_with_model, "run_with_model"),
|
|
87
|
-
thinkingLevel: optionalThinking(value.thinking_level),
|
|
88
|
-
timeoutSeconds: optionalPositiveNumber(value.timeout_seconds, "timeout_seconds"),
|
|
89
|
-
tools: stringArray(value.tools, [], "tools"),
|
|
90
|
-
prompt,
|
|
91
|
-
filePath,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
function stringValue(value, fallback, name) {
|
|
95
|
-
if (value === undefined)
|
|
96
|
-
return fallback;
|
|
97
|
-
if (!isNonEmptyString(value))
|
|
98
|
-
throw new Error(`${name} must be a non-empty string`);
|
|
99
|
-
return value.trim();
|
|
100
|
-
}
|
|
101
|
-
function optionalString(value, name) {
|
|
102
|
-
return value === undefined ? undefined : stringValue(value, "", name);
|
|
103
|
-
}
|
|
104
|
-
function booleanValue(value, fallback, name) {
|
|
105
|
-
if (value === undefined)
|
|
106
|
-
return fallback;
|
|
107
|
-
if (typeof value !== "boolean")
|
|
108
|
-
throw new Error(`${name} must be boolean`);
|
|
109
|
-
return value;
|
|
110
|
-
}
|
|
111
|
-
function probabilityValue(value, fallback, name) {
|
|
112
|
-
if (value === undefined)
|
|
113
|
-
return fallback;
|
|
114
|
-
if (!isFiniteNumber(value) || !inRange(value, 0, 1))
|
|
115
|
-
throw new Error(`${name} must be between 0 and 1`);
|
|
116
|
-
return value;
|
|
117
|
-
}
|
|
118
|
-
function optionalPositiveNumber(value, name) {
|
|
119
|
-
if (value === undefined)
|
|
120
|
-
return undefined;
|
|
121
|
-
if (!isFiniteNumber(value) || value <= 0)
|
|
122
|
-
throw new Error(`${name} must be positive`);
|
|
123
|
-
return value;
|
|
124
|
-
}
|
|
125
|
-
function stringArray(value, fallback, name) {
|
|
126
|
-
if (value === undefined)
|
|
127
|
-
return [...fallback];
|
|
128
|
-
if (!isStringArray(value))
|
|
129
|
-
throw new Error(`${name} must be an array of non-empty strings`);
|
|
130
|
-
return [...new Set(value.map((item) => item.trim()))];
|
|
131
|
-
}
|
|
132
|
-
function optionalThinking(value) {
|
|
133
|
-
if (value === undefined)
|
|
134
|
-
return undefined;
|
|
135
|
-
if (!isThinkingLevel(value))
|
|
136
|
-
throw new Error("thinking_level is invalid");
|
|
137
|
-
return value;
|
|
138
|
-
}
|
|
139
|
-
//# sourceMappingURL=registry.js.map
|
package/dist/registry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/report-batcher.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { ShadowReport } from "./types.js";
|
|
2
|
-
export declare class ReportBatcher {
|
|
3
|
-
private windowMs;
|
|
4
|
-
private readonly deliver;
|
|
5
|
-
private reports;
|
|
6
|
-
private timer?;
|
|
7
|
-
private deliveries;
|
|
8
|
-
constructor(windowMs: number, deliver: (reports: ShadowReport[]) => void | Promise<void>);
|
|
9
|
-
setWindow(windowMs: number): void;
|
|
10
|
-
add(report: ShadowReport): void;
|
|
11
|
-
flush(): Promise<void>;
|
|
12
|
-
get hasPending(): boolean;
|
|
13
|
-
clear(): void;
|
|
14
|
-
}
|
|
15
|
-
export declare function formatReportBatch(reports: readonly ShadowReport[]): string;
|
package/dist/report-batcher.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export class ReportBatcher {
|
|
2
|
-
windowMs;
|
|
3
|
-
deliver;
|
|
4
|
-
reports = [];
|
|
5
|
-
timer;
|
|
6
|
-
deliveries = 0;
|
|
7
|
-
constructor(windowMs, deliver) {
|
|
8
|
-
this.windowMs = windowMs;
|
|
9
|
-
this.deliver = deliver;
|
|
10
|
-
}
|
|
11
|
-
setWindow(windowMs) {
|
|
12
|
-
this.windowMs = windowMs;
|
|
13
|
-
}
|
|
14
|
-
add(report) {
|
|
15
|
-
this.reports.push(report);
|
|
16
|
-
if (this.timer)
|
|
17
|
-
return;
|
|
18
|
-
this.timer = setTimeout(() => void this.flush(), this.windowMs);
|
|
19
|
-
}
|
|
20
|
-
async flush() {
|
|
21
|
-
if (this.timer)
|
|
22
|
-
clearTimeout(this.timer);
|
|
23
|
-
this.timer = undefined;
|
|
24
|
-
if (!this.reports.length)
|
|
25
|
-
return;
|
|
26
|
-
const batch = this.reports;
|
|
27
|
-
this.reports = [];
|
|
28
|
-
this.deliveries += 1;
|
|
29
|
-
try {
|
|
30
|
-
await this.deliver(batch);
|
|
31
|
-
}
|
|
32
|
-
finally {
|
|
33
|
-
this.deliveries -= 1;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
get hasPending() {
|
|
37
|
-
return this.reports.length > 0 || this.timer !== undefined || this.deliveries > 0;
|
|
38
|
-
}
|
|
39
|
-
clear() {
|
|
40
|
-
if (this.timer)
|
|
41
|
-
clearTimeout(this.timer);
|
|
42
|
-
this.timer = undefined;
|
|
43
|
-
this.reports = [];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
export function formatReportBatch(reports) {
|
|
47
|
-
return reports.map((report) => `[${report.shadowName} / ${report.shadowId}]\n${report.content}`).join("\n\n");
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=report-batcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report-batcher.js","sourceRoot":"","sources":["../src/report-batcher.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAKJ;IAAmC;IAJ/C,OAAO,GAAmB,EAAE,CAAC;IAC7B,KAAK,CAAiC;IACtC,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAoB,QAAgB,EAAmB,OAA0D;QAA7F,aAAQ,GAAR,QAAQ,CAAQ;QAAmB,YAAO,GAAP,OAAO,CAAmD;IAAG,CAAC;IAErH,SAAS,CAAC,QAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,MAAoB;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK;YAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgC;IAChE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,MAAM,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChH,CAAC"}
|
package/dist/runtime.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { type ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
export declare class ShadowMindRuntime {
|
|
3
|
-
private readonly pi;
|
|
4
|
-
private readonly agentDir;
|
|
5
|
-
private readonly configStore;
|
|
6
|
-
private readonly registry;
|
|
7
|
-
private readonly entityStore;
|
|
8
|
-
private readonly runner;
|
|
9
|
-
private readonly active;
|
|
10
|
-
private readonly recentEvents;
|
|
11
|
-
private readonly batcher;
|
|
12
|
-
private readonly sessionLifetime;
|
|
13
|
-
private epoch;
|
|
14
|
-
private modelCalls;
|
|
15
|
-
private paused;
|
|
16
|
-
private panelVisible;
|
|
17
|
-
private latestContext?;
|
|
18
|
-
private diagnostics;
|
|
19
|
-
private shadowCount;
|
|
20
|
-
private random;
|
|
21
|
-
constructor(pi: ExtensionAPI);
|
|
22
|
-
register(): void;
|
|
23
|
-
private registerEvents;
|
|
24
|
-
private registerUi;
|
|
25
|
-
private onHeartbeat;
|
|
26
|
-
private launchShadow;
|
|
27
|
-
private handleRunEnd;
|
|
28
|
-
private acceptReport;
|
|
29
|
-
private deliverReports;
|
|
30
|
-
private refresh;
|
|
31
|
-
private abortAll;
|
|
32
|
-
private drainHeadless;
|
|
33
|
-
private record;
|
|
34
|
-
private setPaused;
|
|
35
|
-
private updateStatus;
|
|
36
|
-
private hasRecentRunErrors;
|
|
37
|
-
private statusLines;
|
|
38
|
-
}
|
package/dist/runtime.js
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { buildSessionContext, } from "@earendil-works/pi-coding-agent";
|
|
3
|
-
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
4
|
-
import { Text } from "@earendil-works/pi-tui";
|
|
5
|
-
import { ConfigStore } from "./config.js";
|
|
6
|
-
import { EntityStore } from "./entity-store.js";
|
|
7
|
-
import { registerManagementTools } from "./management-tools.js";
|
|
8
|
-
import { ShadowRegistry } from "./registry.js";
|
|
9
|
-
import { ReportBatcher, formatReportBatch } from "./report-batcher.js";
|
|
10
|
-
import { createRandom } from "./random.js";
|
|
11
|
-
import { decideHeartbeat, shouldEvaluateHeartbeat } from "./scheduler.js";
|
|
12
|
-
import { SessionLifetime } from "./session-lifetime.js";
|
|
13
|
-
import { ShadowRunner, resolveShadowTools } from "./shadow-runner.js";
|
|
14
|
-
import { waitForSettled } from "./shutdown-drain.js";
|
|
15
|
-
export class ShadowMindRuntime {
|
|
16
|
-
pi;
|
|
17
|
-
agentDir = getAgentDir();
|
|
18
|
-
configStore = new ConfigStore(this.agentDir);
|
|
19
|
-
registry = new ShadowRegistry(this.agentDir);
|
|
20
|
-
entityStore = new EntityStore(this.registry, this.configStore.configPath);
|
|
21
|
-
runner = new ShadowRunner();
|
|
22
|
-
active = new Map();
|
|
23
|
-
recentEvents = [];
|
|
24
|
-
batcher;
|
|
25
|
-
sessionLifetime = new SessionLifetime();
|
|
26
|
-
epoch = 0;
|
|
27
|
-
modelCalls = 0;
|
|
28
|
-
paused = false;
|
|
29
|
-
panelVisible = false;
|
|
30
|
-
latestContext;
|
|
31
|
-
diagnostics = [];
|
|
32
|
-
shadowCount = 0;
|
|
33
|
-
random = Math.random;
|
|
34
|
-
constructor(pi) {
|
|
35
|
-
this.pi = pi;
|
|
36
|
-
this.batcher = new ReportBatcher(this.configStore.current.resultBatchWindowMs, (reports) => this.deliverReports(reports));
|
|
37
|
-
}
|
|
38
|
-
register() {
|
|
39
|
-
registerManagementTools(this.pi, this.entityStore, () => this.configStore.current);
|
|
40
|
-
this.registerEvents();
|
|
41
|
-
this.registerUi();
|
|
42
|
-
}
|
|
43
|
-
registerEvents() {
|
|
44
|
-
this.pi.on("session_start", async (_event, ctx) => {
|
|
45
|
-
this.sessionLifetime.activate();
|
|
46
|
-
this.latestContext = ctx;
|
|
47
|
-
this.modelCalls = 0;
|
|
48
|
-
await this.configStore.initialize();
|
|
49
|
-
this.random = createRandom(this.configStore.current.randomSeed);
|
|
50
|
-
await this.registry.initialize();
|
|
51
|
-
await this.refresh(ctx);
|
|
52
|
-
this.record("session-config", { randomSeed: this.configStore.current.randomSeed ?? "random" });
|
|
53
|
-
this.updateStatus(ctx);
|
|
54
|
-
});
|
|
55
|
-
this.pi.on("input", (event, ctx) => {
|
|
56
|
-
this.latestContext = ctx;
|
|
57
|
-
if (event.source === "extension")
|
|
58
|
-
return;
|
|
59
|
-
this.epoch += 1;
|
|
60
|
-
this.abortAll("new-user-input");
|
|
61
|
-
});
|
|
62
|
-
this.pi.on("after_provider_response", (_event, ctx) => {
|
|
63
|
-
this.latestContext = ctx;
|
|
64
|
-
this.modelCalls += 1;
|
|
65
|
-
});
|
|
66
|
-
this.pi.on("turn_end", async (event, ctx) => {
|
|
67
|
-
this.latestContext = ctx;
|
|
68
|
-
if (!shouldEvaluateHeartbeat(event.toolResults)) {
|
|
69
|
-
this.record("heartbeat-skipped", { reason: "no-tool-activity", modelCalls: this.modelCalls });
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
await this.onHeartbeat(ctx);
|
|
73
|
-
});
|
|
74
|
-
this.pi.on("session_shutdown", async (event, ctx) => {
|
|
75
|
-
this.latestContext = ctx;
|
|
76
|
-
if (event.reason === "quit" && (ctx.mode === "print" || ctx.mode === "json")) {
|
|
77
|
-
await this.drainHeadless(ctx);
|
|
78
|
-
}
|
|
79
|
-
this.epoch += 1;
|
|
80
|
-
this.abortAll("session-shutdown");
|
|
81
|
-
ctx.ui.setStatus("shadow-mind", undefined);
|
|
82
|
-
ctx.ui.setWidget("shadow-mind-panel", undefined);
|
|
83
|
-
this.sessionLifetime.deactivate();
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
registerUi() {
|
|
87
|
-
this.pi.registerCommand("shadow", {
|
|
88
|
-
description: "Show Shadow Mind status, or toggle/pause/resume it",
|
|
89
|
-
handler: async (args, ctx) => {
|
|
90
|
-
this.latestContext = ctx;
|
|
91
|
-
const command = args.trim().toLowerCase();
|
|
92
|
-
if (command === "pause") {
|
|
93
|
-
this.setPaused(true, ctx);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (command === "resume") {
|
|
97
|
-
this.setPaused(false, ctx);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
if (command === "toggle") {
|
|
101
|
-
this.setPaused(!this.paused, ctx);
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
if (command === "status") {
|
|
105
|
-
await this.refresh(ctx);
|
|
106
|
-
ctx.ui.notify(this.statusLines().join("\n"), this.diagnostics.length ? "warning" : "info");
|
|
107
|
-
}
|
|
108
|
-
else if (command === "hide") {
|
|
109
|
-
this.panelVisible = false;
|
|
110
|
-
ctx.ui.setWidget("shadow-mind-panel", undefined);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
await this.refresh(ctx);
|
|
114
|
-
this.panelVisible = !this.panelVisible;
|
|
115
|
-
}
|
|
116
|
-
this.updateStatus(ctx);
|
|
117
|
-
},
|
|
118
|
-
});
|
|
119
|
-
this.pi.registerShortcut("alt+s", {
|
|
120
|
-
description: "Pause or resume Shadow Mind",
|
|
121
|
-
handler: (ctx) => {
|
|
122
|
-
this.latestContext = ctx;
|
|
123
|
-
this.setPaused(!this.paused, ctx);
|
|
124
|
-
},
|
|
125
|
-
});
|
|
126
|
-
this.pi.registerMessageRenderer("shadow-report", (message, _options, theme) => {
|
|
127
|
-
const content = typeof message.content === "string" ? message.content : "Shadow report";
|
|
128
|
-
const prefix = theme.fg("accent", "🐙 shadow · ");
|
|
129
|
-
return new Text(`${prefix}${content}`, 0, 0);
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
async onHeartbeat(ctx) {
|
|
133
|
-
await this.refresh(ctx);
|
|
134
|
-
if (this.paused || !ctx.model) {
|
|
135
|
-
this.record("heartbeat-skipped", { reason: this.paused ? "paused" : "no-model", modelCalls: this.modelCalls });
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
const snapshot = await this.registry.load();
|
|
139
|
-
const fullModelId = `${ctx.model.provider}/${ctx.model.id}`;
|
|
140
|
-
const decision = decideHeartbeat({
|
|
141
|
-
heartbeatProbability: this.configStore.current.heartbeatProbability,
|
|
142
|
-
availableSlots: Math.max(0, this.configStore.current.maxParallelShadows - this.active.size),
|
|
143
|
-
shadows: snapshot.shadows,
|
|
144
|
-
activeShadowIds: new Set([...this.active.values()].map(({ shadow }) => shadow.id)),
|
|
145
|
-
mainModelId: fullModelId,
|
|
146
|
-
random: this.random,
|
|
147
|
-
});
|
|
148
|
-
this.record("heartbeat", {
|
|
149
|
-
modelCalls: this.modelCalls,
|
|
150
|
-
roll: decision.heartbeatRoll,
|
|
151
|
-
candidates: decision.candidates,
|
|
152
|
-
activated: decision.activated.map(({ shadow, roll }) => ({ id: shadow.id, roll })),
|
|
153
|
-
...(decision.modelFiltered.length ? { modelFiltered: decision.modelFiltered } : {}),
|
|
154
|
-
...(decision.runningExcluded.length ? { runningExcluded: decision.runningExcluded } : {}),
|
|
155
|
-
});
|
|
156
|
-
if (!decision.activated.length)
|
|
157
|
-
return;
|
|
158
|
-
const context = buildSessionContext(ctx.sessionManager.getEntries(), ctx.sessionManager.getLeafId());
|
|
159
|
-
const availableTools = new Set(this.pi.getAllTools().map((tool) => tool.name));
|
|
160
|
-
for (const { shadow } of decision.activated) {
|
|
161
|
-
this.launchShadow(ctx, shadow, ctx.model, fullModelId, context, availableTools);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
launchShadow(ctx, shadow, mainModel, fullModelId, context, availableTools) {
|
|
165
|
-
const runId = randomUUID();
|
|
166
|
-
const runEpoch = this.epoch;
|
|
167
|
-
const { tools, missing } = resolveShadowTools(shadow.tools, availableTools);
|
|
168
|
-
this.active.set(runId, { shadow, epoch: runEpoch });
|
|
169
|
-
this.record("run-start", {
|
|
170
|
-
runId,
|
|
171
|
-
shadowId: shadow.id,
|
|
172
|
-
model: shadow.runWithModel ?? this.configStore.current.defaultShadowModel ?? fullModelId,
|
|
173
|
-
...(missing.length ? { missingTools: missing } : {}),
|
|
174
|
-
});
|
|
175
|
-
this.updateStatus(ctx);
|
|
176
|
-
void this.runner.run({
|
|
177
|
-
shadow: structuredClone(shadow),
|
|
178
|
-
config: structuredClone(this.configStore.current),
|
|
179
|
-
epoch: runEpoch,
|
|
180
|
-
runId,
|
|
181
|
-
cwd: ctx.cwd,
|
|
182
|
-
agentDir: this.agentDir,
|
|
183
|
-
mainSystemPrompt: ctx.getSystemPrompt(),
|
|
184
|
-
messages: context.messages,
|
|
185
|
-
mainModel,
|
|
186
|
-
tools,
|
|
187
|
-
resolveModel: (id) => resolveModel(ctx, id),
|
|
188
|
-
modelAuthOk: (model) => ctx.modelRegistry.hasConfiguredAuth(model) || ctx.modelRegistry.isUsingOAuth(model),
|
|
189
|
-
mainThinkingLevel: ctx.thinkingLevel,
|
|
190
|
-
onReport: (report) => this.acceptReport(report),
|
|
191
|
-
}).then((result) => this.handleRunEnd(runId, shadow, result)).catch((error) => {
|
|
192
|
-
this.active.delete(runId);
|
|
193
|
-
this.record("run-end", {
|
|
194
|
-
runId,
|
|
195
|
-
shadowId: shadow.id,
|
|
196
|
-
reason: "error",
|
|
197
|
-
error: error instanceof Error ? error.message : String(error),
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
handleRunEnd(runId, shadow, result) {
|
|
202
|
-
this.active.delete(runId);
|
|
203
|
-
this.record("run-end", { runId, shadowId: shadow.id, ...result });
|
|
204
|
-
if (this.latestContext && this.sessionLifetime.isActive)
|
|
205
|
-
this.updateStatus(this.latestContext);
|
|
206
|
-
}
|
|
207
|
-
acceptReport(report) {
|
|
208
|
-
if (report.epoch !== this.epoch)
|
|
209
|
-
return;
|
|
210
|
-
this.batcher.add(report);
|
|
211
|
-
}
|
|
212
|
-
async deliverReports(reports) {
|
|
213
|
-
const current = reports.filter((report) => report.epoch === this.epoch);
|
|
214
|
-
if (!current.length)
|
|
215
|
-
return;
|
|
216
|
-
const content = formatReportBatch(current);
|
|
217
|
-
this.record("report-delivered", { runIds: current.map((report) => report.runId), count: current.length });
|
|
218
|
-
const idle = this.latestContext?.isIdle() ?? true;
|
|
219
|
-
this.sessionLifetime.run(() => {
|
|
220
|
-
this.pi.sendMessage({
|
|
221
|
-
customType: "shadow-report",
|
|
222
|
-
content,
|
|
223
|
-
display: true,
|
|
224
|
-
details: { reports: current.map(({ shadowId, runId }) => ({ shadowId, runId })) },
|
|
225
|
-
}, { triggerTurn: true, deliverAs: idle ? "followUp" : "steer" });
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
async refresh(ctx) {
|
|
229
|
-
const config = await this.configStore.reload();
|
|
230
|
-
const registry = await this.registry.load();
|
|
231
|
-
this.batcher.setWindow(config.config.resultBatchWindowMs);
|
|
232
|
-
this.shadowCount = registry.shadows.length;
|
|
233
|
-
this.diagnostics = [
|
|
234
|
-
...(config.error ? [`config: ${config.error}`] : []),
|
|
235
|
-
...registry.diagnostics.map((item) => `${item.filePath}: ${item.message}`),
|
|
236
|
-
];
|
|
237
|
-
this.updateStatus(ctx);
|
|
238
|
-
}
|
|
239
|
-
abortAll(reason) {
|
|
240
|
-
this.runner.abortAll();
|
|
241
|
-
this.batcher.clear();
|
|
242
|
-
this.record("runs-aborted", { reason, count: this.active.size });
|
|
243
|
-
}
|
|
244
|
-
async drainHeadless(ctx) {
|
|
245
|
-
if (this.active.size === 0 && !this.batcher.hasPending)
|
|
246
|
-
return;
|
|
247
|
-
const timeoutMs = this.configStore.current.headlessDrainTimeoutSeconds * 1000;
|
|
248
|
-
this.record("headless-drain-start", { timeoutMs, active: this.active.size });
|
|
249
|
-
const result = await waitForSettled({
|
|
250
|
-
timeoutMs,
|
|
251
|
-
isSettled: () => this.active.size === 0
|
|
252
|
-
&& !this.batcher.hasPending
|
|
253
|
-
&& ctx.isIdle()
|
|
254
|
-
&& !ctx.hasPendingMessages(),
|
|
255
|
-
});
|
|
256
|
-
this.record(result.settled ? "headless-drain-complete" : "headless-drain-timeout", {
|
|
257
|
-
durationMs: result.durationMs,
|
|
258
|
-
active: this.active.size,
|
|
259
|
-
});
|
|
260
|
-
if (!result.settled)
|
|
261
|
-
this.abortAll("headless-drain-timeout");
|
|
262
|
-
}
|
|
263
|
-
record(kind, data) {
|
|
264
|
-
const event = { at: new Date().toISOString(), kind, epoch: this.epoch, data };
|
|
265
|
-
this.recentEvents.push(event);
|
|
266
|
-
if (this.recentEvents.length > 20)
|
|
267
|
-
this.recentEvents.shift();
|
|
268
|
-
this.sessionLifetime.run(() => this.pi.appendEntry("shadow-mind-event", event));
|
|
269
|
-
}
|
|
270
|
-
setPaused(paused, ctx) {
|
|
271
|
-
this.paused = paused;
|
|
272
|
-
if (paused)
|
|
273
|
-
this.abortAll("paused");
|
|
274
|
-
ctx.ui.notify(paused ? "Shadow Mind paused" : "Shadow Mind resumed", "info");
|
|
275
|
-
this.updateStatus(ctx);
|
|
276
|
-
}
|
|
277
|
-
updateStatus(ctx) {
|
|
278
|
-
this.sessionLifetime.run(() => {
|
|
279
|
-
const warning = this.diagnostics.length || this.hasRecentRunErrors() ? " !" : "";
|
|
280
|
-
ctx.ui.setStatus("shadow-mind", this.paused ? `🐙 Paused${warning}` : `🐙 ${this.active.size}${warning}`);
|
|
281
|
-
if (this.panelVisible)
|
|
282
|
-
ctx.ui.setWidget("shadow-mind-panel", this.statusLines(), { placement: "aboveEditor" });
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
hasRecentRunErrors() {
|
|
286
|
-
return this.recentEvents.slice(-3).some((event) => event.kind === "run-end" && (event.data?.reason === "error" || event.data?.reason === "timeout"));
|
|
287
|
-
}
|
|
288
|
-
statusLines() {
|
|
289
|
-
const config = this.configStore.current;
|
|
290
|
-
return [
|
|
291
|
-
`🐙 Shadow Mind · ${this.paused ? "paused" : "active"} · running ${this.active.size}/${config.maxParallelShadows}`,
|
|
292
|
-
`heartbeat ${formatNumber(config.heartbeatProbability)} · batch ${config.resultBatchWindowMs}ms · timeout ${config.defaultShadowTimeoutSeconds}s · drain ${config.headlessDrainTimeoutSeconds}s · thinking ${config.defaultThinkingLevel}`,
|
|
293
|
-
`definitions: ${this.shadowCount} valid · ${this.diagnostics.length} invalid`,
|
|
294
|
-
...this.recentEvents.slice(-5).map((event) => {
|
|
295
|
-
const failed = event.kind === "run-end" && (event.data?.reason === "error" || event.data?.reason === "timeout");
|
|
296
|
-
const detail = failed ? ` ${event.data?.error ?? event.data?.reason}` : "";
|
|
297
|
-
return `${event.at.slice(11, 19)} ${event.kind}${detail}`;
|
|
298
|
-
}),
|
|
299
|
-
"Shortcut: Alt+S toggle · Commands: /shadow toggle | pause | resume | status | hide",
|
|
300
|
-
];
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
function resolveModel(ctx, fullId) {
|
|
304
|
-
const separator = fullId.indexOf("/");
|
|
305
|
-
if (separator <= 0 || separator === fullId.length - 1)
|
|
306
|
-
return undefined;
|
|
307
|
-
return ctx.modelRegistry.find(fullId.slice(0, separator), fullId.slice(separator + 1));
|
|
308
|
-
}
|
|
309
|
-
function formatNumber(value) {
|
|
310
|
-
return Number(value.toFixed(3)).toString();
|
|
311
|
-
}
|
|
312
|
-
//# sourceMappingURL=runtime.js.map
|
package/dist/runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/scheduler.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { HeartbeatDecision, ShadowDefinition } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Pure conversation turns do not create useful new evidence for repository-oriented
|
|
4
|
-
* Shadows. Requiring at least one completed Main tool call also prevents a silent
|
|
5
|
-
* Shadow report response from recursively scheduling more Shadows.
|
|
6
|
-
*/
|
|
7
|
-
export declare function shouldEvaluateHeartbeat(toolResults: readonly unknown[]): boolean;
|
|
8
|
-
export declare function decideHeartbeat(options: {
|
|
9
|
-
heartbeatProbability: number;
|
|
10
|
-
availableSlots: number;
|
|
11
|
-
shadows: readonly ShadowDefinition[];
|
|
12
|
-
activeShadowIds: ReadonlySet<string>;
|
|
13
|
-
mainModelId: string;
|
|
14
|
-
random?: () => number;
|
|
15
|
-
}): HeartbeatDecision;
|
|
16
|
-
export declare function matchesModel(shadow: ShadowDefinition, fullModelId: string): boolean;
|