@bastani/atomic 0.9.28-alpha.1 → 0.9.28-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +23 -0
- package/dist/builtin/workflows/builtin/{chunk-wz8v67bn.js → chunk-aqv8ny38.js} +257 -259
- package/dist/builtin/workflows/builtin/{chunk-f61w0hpm.js → chunk-br4ac9a3.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-tecnpe8j.js → chunk-p3xmajmj.js} +438 -39
- package/dist/builtin/workflows/builtin/chunk-p6jagvyf.js +8 -0
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +4 -4
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/authoring.d.ts +14 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +107577 -106722
- package/dist/builtin/workflows/src/index.js +42284 -41141
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +16 -11
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +16 -1
- package/dist/cli/credential-print.d.ts +1 -1
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +2 -56
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +6 -1
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +20 -3
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +2 -1
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +6 -0
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +87 -7
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +2 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +14 -1
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +1 -0
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +1 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/compaction/classifier-compaction.d.ts +13 -0
- package/dist/core/compaction/classifier-compaction.d.ts.map +1 -0
- package/dist/core/compaction/classifier-compaction.js +110 -0
- package/dist/core/compaction/classifier-compaction.js.map +1 -0
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.js +2 -6
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +16 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +97 -12
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +18 -1
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.js +1 -1
- package/dist/core/compaction/compaction-types.js.map +1 -1
- package/dist/core/compaction/fallback-planner.d.ts +1 -0
- package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
- package/dist/core/compaction/fallback-planner.js +2 -0
- package/dist/core/compaction/fallback-planner.js.map +1 -1
- package/dist/core/compaction/index.d.ts +3 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +3 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/model-resolver.d.ts +16 -0
- package/dist/core/compaction/model-resolver.d.ts.map +1 -0
- package/dist/core/compaction/model-resolver.js +18 -0
- package/dist/core/compaction/model-resolver.js.map +1 -0
- package/dist/core/compaction/morph-compaction.d.ts +14 -0
- package/dist/core/compaction/morph-compaction.d.ts.map +1 -0
- package/dist/core/compaction/morph-compaction.js +99 -0
- package/dist/core/compaction/morph-compaction.js.map +1 -0
- package/dist/core/compaction/pi-summary-fallback.d.ts +34 -0
- package/dist/core/compaction/pi-summary-fallback.d.ts.map +1 -0
- package/dist/core/compaction/pi-summary-fallback.js +357 -0
- package/dist/core/compaction/pi-summary-fallback.js.map +1 -0
- package/dist/core/compaction/planner-outcome.d.ts +10 -6
- package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
- package/dist/core/compaction/planner-outcome.js +11 -4
- package/dist/core/compaction/planner-outcome.js.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts +3 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.js +11 -0
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +3 -3
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +59 -28
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/region-trimming.d.ts.map +1 -1
- package/dist/core/compaction/region-trimming.js +7 -0
- package/dist/core/compaction/region-trimming.js.map +1 -1
- package/dist/core/compaction/structured-compaction-input.d.ts +19 -0
- package/dist/core/compaction/structured-compaction-input.d.ts.map +1 -0
- package/dist/core/compaction/structured-compaction-input.js +70 -0
- package/dist/core/compaction/structured-compaction-input.js.map +1 -0
- package/dist/core/compaction/transcript-serialization.d.ts +1 -0
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.js +26 -0
- package/dist/core/compaction/transcript-serialization.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +2 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +1 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +10 -4
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +47 -3
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +10 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +31 -7
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/workflow-events.d.ts +49 -0
- package/dist/core/extensions/workflow-events.d.ts.map +1 -1
- package/dist/core/extensions/workflow-events.js.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.d.ts +16 -4
- package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.js +72 -1
- package/dist/core/extensions/workflow-run-control-hub.js.map +1 -1
- package/dist/core/extensions/workflow-run-control.d.ts +11 -3
- package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
- package/dist/core/extensions/workflow-run-control.js.map +1 -1
- package/dist/core/messages.d.ts +1 -0
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +5 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +3 -0
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +4 -2
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +2 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +29 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-types.d.ts +1 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/transcript.d.ts +58 -0
- package/dist/core/transcript.d.ts.map +1 -0
- package/dist/core/transcript.js +185 -0
- package/dist/core/transcript.js.map +1 -0
- package/dist/extensions/herdr/index.d.ts.map +1 -1
- package/dist/extensions/herdr/index.js +15 -10
- package/dist/extensions/herdr/index.js.map +1 -1
- package/dist/extensions/herdr/pane-owner.d.ts +6 -2
- package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
- package/dist/extensions/herdr/pane-owner.js +19 -4
- package/dist/extensions/herdr/pane-owner.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts +2 -0
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js +15 -3
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +43 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +6 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/interactive-prompt-turn.js +6 -4
- package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +13 -1
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +8 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +2 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +1 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/utils/credential-redaction.d.ts +2 -0
- package/dist/utils/credential-redaction.d.ts.map +1 -0
- package/dist/utils/credential-redaction.js +20 -0
- package/dist/utils/credential-redaction.js.map +1 -0
- package/docs/compaction/reference.md +10 -4
- package/docs/compaction.md +40 -8
- package/docs/docs.json +1 -0
- package/docs/extensions/api-reference.md +4 -0
- package/docs/extensions/events.md +2 -2
- package/docs/providers.md +12 -1
- package/docs/sdk/reference.md +16 -1
- package/docs/sdk/web-server.md +325 -0
- package/docs/sdk.md +83 -1
- package/docs/security.md +1 -1
- package/docs/workflows/api-reference.md +71 -3
- package/docs/workflows/builtins.md +4 -0
- package/docs/workflows/operations.md +12 -4
- package/npm-shrinkwrap.json +32 -32
- package/package.json +3 -3
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { applyAssistantMessageDelta, beginStreamingAssistantMessage, } from "../modes/interactive/streaming-assistant-message.js";
|
|
2
|
+
/** A detached, JSON-shaped copy, so callers cannot mutate transcript state and parts always serialize. */
|
|
3
|
+
function toJson(value) {
|
|
4
|
+
try {
|
|
5
|
+
const text = JSON.stringify(value);
|
|
6
|
+
return text === undefined ? null : JSON.parse(text);
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function hasToolCall(message, id) {
|
|
13
|
+
return message.content.some((block) => block.type === "toolCall" && block.id === id);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Reduce session events into the assistant's output as plain JSON parts.
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* const transcript = createTranscript();
|
|
20
|
+
* session.subscribe((event) => transcript.apply(event));
|
|
21
|
+
* transcript.parts();
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export function createTranscript(options = {}) {
|
|
25
|
+
const entries = [];
|
|
26
|
+
/** Results that arrived before any assistant message held their tool call. */
|
|
27
|
+
const unbound = new Map();
|
|
28
|
+
let streaming;
|
|
29
|
+
/** Bind to the most recent call with this id that has no final result, so reused ids keep separate results. */
|
|
30
|
+
const record = (id, raw) => {
|
|
31
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
32
|
+
const entry = entries[i];
|
|
33
|
+
if (!hasToolCall(entry.message, id) || entry.results.get(id)?.isPartial === false)
|
|
34
|
+
continue;
|
|
35
|
+
entry.results.set(id, raw);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (raw.isPartial && unbound.get(id)?.isPartial === false)
|
|
39
|
+
return;
|
|
40
|
+
unbound.set(id, raw);
|
|
41
|
+
};
|
|
42
|
+
const adopt = (entry) => {
|
|
43
|
+
for (const block of entry.message.content) {
|
|
44
|
+
if (block.type !== "toolCall" || entry.results.has(block.id))
|
|
45
|
+
continue;
|
|
46
|
+
const raw = unbound.get(block.id);
|
|
47
|
+
if (!raw)
|
|
48
|
+
continue;
|
|
49
|
+
entry.results.set(block.id, raw);
|
|
50
|
+
unbound.delete(block.id);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const settle = (entry) => {
|
|
54
|
+
const message = entry.message;
|
|
55
|
+
if (message.stopReason !== "aborted" && message.stopReason !== "error")
|
|
56
|
+
return;
|
|
57
|
+
const text = message.errorMessage || (message.stopReason === "aborted" ? "Operation aborted" : "Unknown error");
|
|
58
|
+
for (const block of message.content) {
|
|
59
|
+
if (block.type !== "toolCall" || entry.results.get(block.id)?.isPartial === false)
|
|
60
|
+
continue;
|
|
61
|
+
entry.results.set(block.id, {
|
|
62
|
+
result: { content: [{ type: "text", text }] },
|
|
63
|
+
isError: true,
|
|
64
|
+
isPartial: false,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const toolResult = (toolName, raw) => {
|
|
69
|
+
const value = raw.result;
|
|
70
|
+
let content = typeof value === "string" ? value : "";
|
|
71
|
+
if (typeof value === "object" && value !== null && Array.isArray(value.content)) {
|
|
72
|
+
content = value.content
|
|
73
|
+
.filter((item) => item?.type === "text")
|
|
74
|
+
.map((item) => item.text)
|
|
75
|
+
.join("\n");
|
|
76
|
+
}
|
|
77
|
+
if ((options.toolResult?.(toolName) ?? "content") === "details") {
|
|
78
|
+
const details = toJson(typeof value === "object" && value !== null ? value.details : undefined);
|
|
79
|
+
const errorText = raw.isError && details === null && content !== "" ? { content } : {};
|
|
80
|
+
return { details, ...errorText, isError: raw.isError, isPartial: raw.isPartial };
|
|
81
|
+
}
|
|
82
|
+
return { content, isError: raw.isError, isPartial: raw.isPartial };
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
apply(event) {
|
|
86
|
+
if ("parentToolCallId" in event && typeof event.parentToolCallId === "string")
|
|
87
|
+
return;
|
|
88
|
+
switch (event.type) {
|
|
89
|
+
case "message_start":
|
|
90
|
+
if (event.message.role !== "assistant")
|
|
91
|
+
return;
|
|
92
|
+
streaming = { message: beginStreamingAssistantMessage(event.message), results: new Map() };
|
|
93
|
+
entries.push(streaming);
|
|
94
|
+
return;
|
|
95
|
+
case "message_update": {
|
|
96
|
+
if (!streaming) {
|
|
97
|
+
streaming = {
|
|
98
|
+
message: {
|
|
99
|
+
role: "assistant",
|
|
100
|
+
content: [],
|
|
101
|
+
api: "",
|
|
102
|
+
provider: "",
|
|
103
|
+
model: "",
|
|
104
|
+
usage: {
|
|
105
|
+
input: 0,
|
|
106
|
+
output: 0,
|
|
107
|
+
cacheRead: 0,
|
|
108
|
+
cacheWrite: 0,
|
|
109
|
+
totalTokens: 0,
|
|
110
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
111
|
+
},
|
|
112
|
+
stopReason: "stop",
|
|
113
|
+
timestamp: Date.now(),
|
|
114
|
+
},
|
|
115
|
+
results: new Map(),
|
|
116
|
+
};
|
|
117
|
+
entries.push(streaming);
|
|
118
|
+
}
|
|
119
|
+
const delta = event.assistantMessageEvent;
|
|
120
|
+
applyAssistantMessageDelta(streaming.message, delta);
|
|
121
|
+
if (delta.type === "thinking_start" ||
|
|
122
|
+
delta.type === "thinking_delta" ||
|
|
123
|
+
delta.type === "thinking_end") {
|
|
124
|
+
// Deltas do not carry the redaction flag; the provider's partial does.
|
|
125
|
+
const source = delta.partial?.content[delta.contentIndex];
|
|
126
|
+
const block = streaming.message.content[delta.contentIndex];
|
|
127
|
+
if (source?.type === "thinking" && source.redacted && block?.type === "thinking")
|
|
128
|
+
block.redacted = true;
|
|
129
|
+
}
|
|
130
|
+
adopt(streaming);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
case "message_end": {
|
|
134
|
+
if (event.message.role !== "assistant")
|
|
135
|
+
return;
|
|
136
|
+
const message = beginStreamingAssistantMessage(event.message);
|
|
137
|
+
const entry = streaming ?? { message, results: new Map() };
|
|
138
|
+
if (streaming)
|
|
139
|
+
entry.message = message;
|
|
140
|
+
else
|
|
141
|
+
entries.push(entry);
|
|
142
|
+
streaming = undefined;
|
|
143
|
+
adopt(entry);
|
|
144
|
+
settle(entry);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
case "tool_execution_update":
|
|
148
|
+
record(event.toolCallId, { result: event.partialResult, isError: false, isPartial: true });
|
|
149
|
+
return;
|
|
150
|
+
case "tool_execution_end":
|
|
151
|
+
record(event.toolCallId, { result: event.result, isError: event.isError, isPartial: false });
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
parts() {
|
|
156
|
+
const parts = [];
|
|
157
|
+
for (const { message, results } of entries) {
|
|
158
|
+
for (const block of message.content) {
|
|
159
|
+
if (block.type === "text") {
|
|
160
|
+
if (block.text)
|
|
161
|
+
parts.push({ type: "text", text: block.text });
|
|
162
|
+
}
|
|
163
|
+
else if (block.type === "thinking") {
|
|
164
|
+
if (!block.redacted && block.thinking)
|
|
165
|
+
parts.push({ type: "thinking", thinking: block.thinking });
|
|
166
|
+
}
|
|
167
|
+
else if (block.type === "toolCall") {
|
|
168
|
+
const raw = results.get(block.id);
|
|
169
|
+
const part = {
|
|
170
|
+
type: "toolCall",
|
|
171
|
+
id: block.id,
|
|
172
|
+
name: block.name,
|
|
173
|
+
arguments: toJson(block.arguments),
|
|
174
|
+
};
|
|
175
|
+
if (raw)
|
|
176
|
+
part.result = toolResult(block.name, raw);
|
|
177
|
+
parts.push(part);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return parts;
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/core/transcript.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsonObject, JsonValue } from \"@bastani/pi-ai\";\nimport type { AssistantMessage, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport {\n\tapplyAssistantMessageDelta,\n\tbeginStreamingAssistantMessage,\n} from \"../modes/interactive/streaming-assistant-message.ts\";\nimport type { AgentSessionEvent } from \"./agent-session-types.js\";\n\n/** Assistant prose. */\nexport interface TranscriptTextPart {\n\ttype: \"text\";\n\ttext: string;\n}\n\n/** Visible assistant reasoning. Redacted thinking blocks are never reported. */\nexport interface TranscriptThinkingPart {\n\ttype: \"thinking\";\n\tthinking: string;\n}\n\n/** The latest result reported for a tool call. */\nexport interface TranscriptToolResult {\n\t/** Text content of the result, joined with newlines. Set when the tool reports `\"content\"`. */\n\tcontent?: string;\n\t/**\n\t * The result's `details`, or `null` when it had none. Set when the tool reports `\"details\"`.\n\t * A failed call without details also carries its error text in `content`.\n\t */\n\tdetails?: JsonValue;\n\tisError: boolean;\n\t/** True while the result comes from `tool_execution_update` and the tool is still running. */\n\tisPartial: boolean;\n}\n\n/** A tool call from assistant content, joined by id with its execution result. */\nexport interface TranscriptToolCallPart {\n\ttype: \"toolCall\";\n\tid: string;\n\tname: string;\n\targuments: JsonObject;\n\t/** Absent until the tool reports an update or finishes. */\n\tresult?: TranscriptToolResult;\n}\n\nexport type TranscriptPart = TranscriptTextPart | TranscriptThinkingPart | TranscriptToolCallPart;\n\n/** Which field of a tool result to report: its text content (the default) or its `details`. */\nexport type TranscriptToolResultFormat = \"content\" | \"details\";\n\nexport interface TranscriptOptions {\n\t/** Choose per tool whether `result.content` or `result.details` is reported. Defaults to `\"content\"`. */\n\ttoolResult?: (toolName: string) => TranscriptToolResultFormat;\n}\n\nexport interface Transcript {\n\t/** Feed one session event. Events from nested tool calls (`parentToolCallId`) are ignored. */\n\tapply(event: AgentSessionEvent): void;\n\t/** Ordered parts of every assistant message seen so far, including the one still streaming. */\n\tparts(): TranscriptPart[];\n}\n\n/** What a tool reports as its result; anything else reports empty content and no details. */\ntype ToolResultValue = Partial<AgentToolResult> | string | null | undefined;\n\ninterface RawToolResult {\n\tresult: ToolResultValue;\n\tisError: boolean;\n\tisPartial: boolean;\n}\n\n/** One assistant message and the results bound to its tool calls, keyed by call id. */\ninterface MessageEntry {\n\tmessage: AssistantMessage;\n\tresults: Map<string, RawToolResult>;\n}\n\n/** A detached, JSON-shaped copy, so callers cannot mutate transcript state and parts always serialize. */\nfunction toJson(value: JsonValue | undefined): JsonValue {\n\ttry {\n\t\tconst text = JSON.stringify(value);\n\t\treturn text === undefined ? null : (JSON.parse(text) as JsonValue);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction hasToolCall(message: AssistantMessage, id: string): boolean {\n\treturn message.content.some((block) => block.type === \"toolCall\" && block.id === id);\n}\n\n/**\n * Reduce session events into the assistant's output as plain JSON parts.\n *\n * ```ts\n * const transcript = createTranscript();\n * session.subscribe((event) => transcript.apply(event));\n * transcript.parts();\n * ```\n */\nexport function createTranscript(options: TranscriptOptions = {}): Transcript {\n\tconst entries: MessageEntry[] = [];\n\t/** Results that arrived before any assistant message held their tool call. */\n\tconst unbound = new Map<string, RawToolResult>();\n\tlet streaming: MessageEntry | undefined;\n\n\t/** Bind to the most recent call with this id that has no final result, so reused ids keep separate results. */\n\tconst record = (id: string, raw: RawToolResult): void => {\n\t\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\t\tconst entry = entries[i];\n\t\t\tif (!hasToolCall(entry.message, id) || entry.results.get(id)?.isPartial === false) continue;\n\t\t\tentry.results.set(id, raw);\n\t\t\treturn;\n\t\t}\n\t\tif (raw.isPartial && unbound.get(id)?.isPartial === false) return;\n\t\tunbound.set(id, raw);\n\t};\n\n\tconst adopt = (entry: MessageEntry): void => {\n\t\tfor (const block of entry.message.content) {\n\t\t\tif (block.type !== \"toolCall\" || entry.results.has(block.id)) continue;\n\t\t\tconst raw = unbound.get(block.id);\n\t\t\tif (!raw) continue;\n\t\t\tentry.results.set(block.id, raw);\n\t\t\tunbound.delete(block.id);\n\t\t}\n\t};\n\n\tconst settle = (entry: MessageEntry): void => {\n\t\tconst message = entry.message;\n\t\tif (message.stopReason !== \"aborted\" && message.stopReason !== \"error\") return;\n\t\tconst text = message.errorMessage || (message.stopReason === \"aborted\" ? \"Operation aborted\" : \"Unknown error\");\n\t\tfor (const block of message.content) {\n\t\t\tif (block.type !== \"toolCall\" || entry.results.get(block.id)?.isPartial === false) continue;\n\t\t\tentry.results.set(block.id, {\n\t\t\t\tresult: { content: [{ type: \"text\", text }] },\n\t\t\t\tisError: true,\n\t\t\t\tisPartial: false,\n\t\t\t});\n\t\t}\n\t};\n\n\tconst toolResult = (toolName: string, raw: RawToolResult): TranscriptToolResult => {\n\t\tconst value = raw.result;\n\t\tlet content = typeof value === \"string\" ? value : \"\";\n\t\tif (typeof value === \"object\" && value !== null && Array.isArray(value.content)) {\n\t\t\tcontent = value.content\n\t\t\t\t.filter((item): item is TextContent => item?.type === \"text\")\n\t\t\t\t.map((item) => item.text)\n\t\t\t\t.join(\"\\n\");\n\t\t}\n\t\tif ((options.toolResult?.(toolName) ?? \"content\") === \"details\") {\n\t\t\tconst details = toJson(typeof value === \"object\" && value !== null ? value.details : undefined);\n\t\t\tconst errorText = raw.isError && details === null && content !== \"\" ? { content } : {};\n\t\t\treturn { details, ...errorText, isError: raw.isError, isPartial: raw.isPartial };\n\t\t}\n\t\treturn { content, isError: raw.isError, isPartial: raw.isPartial };\n\t};\n\n\treturn {\n\t\tapply(event) {\n\t\t\tif (\"parentToolCallId\" in event && typeof event.parentToolCallId === \"string\") return;\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"message_start\":\n\t\t\t\t\tif (event.message.role !== \"assistant\") return;\n\t\t\t\t\tstreaming = { message: beginStreamingAssistantMessage(event.message), results: new Map() };\n\t\t\t\t\tentries.push(streaming);\n\t\t\t\t\treturn;\n\t\t\t\tcase \"message_update\": {\n\t\t\t\t\tif (!streaming) {\n\t\t\t\t\t\tstreaming = {\n\t\t\t\t\t\t\tmessage: {\n\t\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\t\tcontent: [],\n\t\t\t\t\t\t\t\tapi: \"\",\n\t\t\t\t\t\t\t\tprovider: \"\",\n\t\t\t\t\t\t\t\tmodel: \"\",\n\t\t\t\t\t\t\t\tusage: {\n\t\t\t\t\t\t\t\t\tinput: 0,\n\t\t\t\t\t\t\t\t\toutput: 0,\n\t\t\t\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\t\t\t\ttotalTokens: 0,\n\t\t\t\t\t\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tstopReason: \"stop\",\n\t\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tresults: new Map(),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tentries.push(streaming);\n\t\t\t\t\t}\n\t\t\t\t\tconst delta = event.assistantMessageEvent;\n\t\t\t\t\tapplyAssistantMessageDelta(streaming.message, delta);\n\t\t\t\t\tif (\n\t\t\t\t\t\tdelta.type === \"thinking_start\" ||\n\t\t\t\t\t\tdelta.type === \"thinking_delta\" ||\n\t\t\t\t\t\tdelta.type === \"thinking_end\"\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Deltas do not carry the redaction flag; the provider's partial does.\n\t\t\t\t\t\tconst source = delta.partial?.content[delta.contentIndex];\n\t\t\t\t\t\tconst block = streaming.message.content[delta.contentIndex];\n\t\t\t\t\t\tif (source?.type === \"thinking\" && source.redacted && block?.type === \"thinking\")\n\t\t\t\t\t\t\tblock.redacted = true;\n\t\t\t\t\t}\n\t\t\t\t\tadopt(streaming);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase \"message_end\": {\n\t\t\t\t\tif (event.message.role !== \"assistant\") return;\n\t\t\t\t\tconst message = beginStreamingAssistantMessage(event.message);\n\t\t\t\t\tconst entry = streaming ?? { message, results: new Map<string, RawToolResult>() };\n\t\t\t\t\tif (streaming) entry.message = message;\n\t\t\t\t\telse entries.push(entry);\n\t\t\t\t\tstreaming = undefined;\n\t\t\t\t\tadopt(entry);\n\t\t\t\t\tsettle(entry);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase \"tool_execution_update\":\n\t\t\t\t\trecord(event.toolCallId, { result: event.partialResult, isError: false, isPartial: true });\n\t\t\t\t\treturn;\n\t\t\t\tcase \"tool_execution_end\":\n\t\t\t\t\trecord(event.toolCallId, { result: event.result, isError: event.isError, isPartial: false });\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\tparts() {\n\t\t\tconst parts: TranscriptPart[] = [];\n\t\t\tfor (const { message, results } of entries) {\n\t\t\t\tfor (const block of message.content) {\n\t\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\t\tif (block.text) parts.push({ type: \"text\", text: block.text });\n\t\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t\tif (!block.redacted && block.thinking) parts.push({ type: \"thinking\", thinking: block.thinking });\n\t\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\t\tconst raw = results.get(block.id);\n\t\t\t\t\t\tconst part: TranscriptToolCallPart = {\n\t\t\t\t\t\t\ttype: \"toolCall\",\n\t\t\t\t\t\t\tid: block.id,\n\t\t\t\t\t\t\tname: block.name,\n\t\t\t\t\t\t\targuments: toJson(block.arguments) as JsonObject,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (raw) part.result = toolResult(block.name, raw);\n\t\t\t\t\t\tparts.push(part);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn parts;\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/herdr/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMvG,OAAO,EAGN,KAAK,oBAAoB,EAIzB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC;CAC7C;AAOD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/herdr/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMvG,OAAO,EAGN,KAAK,oBAAoB,EAIzB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC;CAC7C;AAOD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,gBAAgB,CAsL1F;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAE7D"}
|
|
@@ -26,14 +26,14 @@ export function createHerdrExtension(options = {}) {
|
|
|
26
26
|
let availability = "unavailable";
|
|
27
27
|
const roots = new Map();
|
|
28
28
|
const acknowledgedBlocks = new Map();
|
|
29
|
+
const sameSummary = (left, right) => left.state === right.state &&
|
|
30
|
+
left.reason === right.reason &&
|
|
31
|
+
left.actionableBlockCount === right.actionableBlockCount &&
|
|
32
|
+
left.activeExecutionCount === right.activeExecutionCount &&
|
|
33
|
+
left.needsAttention === right.needsAttention;
|
|
29
34
|
const updateRoot = (root) => {
|
|
30
35
|
const acknowledged = acknowledgedBlocks.get(root.rootRunId);
|
|
31
|
-
if (acknowledged &&
|
|
32
|
-
(root.state !== acknowledged.state ||
|
|
33
|
-
root.reason !== acknowledged.reason ||
|
|
34
|
-
root.actionableBlockCount !== acknowledged.actionableBlockCount ||
|
|
35
|
-
root.activeExecutionCount !== acknowledged.activeExecutionCount ||
|
|
36
|
-
root.needsAttention !== acknowledged.needsAttention))
|
|
36
|
+
if (acknowledged && !sameSummary(root, acknowledged))
|
|
37
37
|
acknowledgedBlocks.delete(root.rootRunId);
|
|
38
38
|
roots.set(root.rootRunId, root);
|
|
39
39
|
};
|
|
@@ -50,7 +50,7 @@ export function createHerdrExtension(options = {}) {
|
|
|
50
50
|
console.error(`[Herdr] ${value.kind}${value.owner ? `: deferring to ${value.owner}` : ""}`);
|
|
51
51
|
};
|
|
52
52
|
const tasksRunning = () => taskStore?.tasks.some((task) => task.execution.kind !== "settled") ?? false;
|
|
53
|
-
const report = () => {
|
|
53
|
+
const report = (skipUnchanged = false) => {
|
|
54
54
|
if (!owner)
|
|
55
55
|
return;
|
|
56
56
|
const activity = deriveSessionActivity({
|
|
@@ -61,7 +61,7 @@ export function createHerdrExtension(options = {}) {
|
|
|
61
61
|
availability,
|
|
62
62
|
});
|
|
63
63
|
if (activity)
|
|
64
|
-
reportPaneActivity(owner, activity);
|
|
64
|
+
reportPaneActivity(owner, activity, skipUnchanged);
|
|
65
65
|
};
|
|
66
66
|
const start = async (ctx) => {
|
|
67
67
|
const runner = getExtensionContextOwner(ctx);
|
|
@@ -126,13 +126,18 @@ export function createHerdrExtension(options = {}) {
|
|
|
126
126
|
acknowledgedBlocks.delete(id);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
else if (frame.kind === "changed")
|
|
129
|
+
else if (frame.kind === "changed") {
|
|
130
|
+
const previous = roots.get(frame.root.rootRunId);
|
|
130
131
|
updateRoot(frame.root);
|
|
132
|
+
// Graph-only changes do not alter the pane state; skip the redundant report.
|
|
133
|
+
if (previous && sameSummary(previous, frame.root))
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
131
136
|
else {
|
|
132
137
|
roots.delete(frame.rootRunId);
|
|
133
138
|
acknowledgedBlocks.delete(frame.rootRunId);
|
|
134
139
|
}
|
|
135
|
-
report();
|
|
140
|
+
report(frame.kind === "snapshot");
|
|
136
141
|
});
|
|
137
142
|
};
|
|
138
143
|
pi.on("session_start", (_event, ctx) => publishExtensionContextEffect(ctx, () => start(ctx)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/herdr/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { getExtensionContextOwner, publishExtensionContextEffect } from \"../../core/extensions/runner-context.ts\";\nimport type { ExtensionAPI, ExtensionContext, ExtensionFactory } from \"../../core/extensions/types.ts\";\nimport type { WorkflowRootActivity } from \"../../core/extensions/workflow-events.js\";\nimport { SettingsManager } from \"../../core/settings-manager.ts\";\nimport { OwnerTaskStore } from \"../../core/tasks/owner-store.js\";\nimport { deriveSessionActivity } from \"./activity.js\";\nimport { captureHerdrEnvironment } from \"./environment.js\";\nimport {\n\tclaimPaneReporting,\n\ttype PaneOwner,\n\ttype PaneReportingOptions,\n\treleasePaneReporting,\n\treportPaneActivity,\n\tretirePaneReporting,\n} from \"./pane-owner.js\";\nimport type { HerdrDiagnostic } from \"./transport.js\";\n\nexport interface HerdrExtensionOptions extends PaneReportingOptions {\n\tenv?: NodeJS.ProcessEnv;\n\tenabled?: (ctx: ExtensionContext) => boolean;\n}\n\nfunction enabled(ctx: ExtensionContext): boolean {\n\tconst settings = SettingsManager.create(ctx.cwd, undefined, { projectTrusted: ctx.isProjectTrusted() });\n\treturn (settings.getProjectSettings().herdr?.enabled ?? settings.getGlobalSettings().herdr?.enabled) !== false;\n}\n\nexport function createHerdrExtension(options: HerdrExtensionOptions = {}): ExtensionFactory {\n\treturn (pi) => {\n\t\tif (!captureHerdrEnvironment(options.env ?? process.env)) return;\n\t\tlet owner: PaneOwner | undefined;\n\t\t// Supplied loaders can share closures across sessions and overlapping reload runners.\n\t\tlet boundSessionManager: ExtensionContext[\"sessionManager\"] | undefined;\n\t\tlet boundRunner: object | undefined;\n\t\tconst retiredRunners = new WeakSet<object>();\n\t\tconst ownsBinding = (ctx: ExtensionContext) =>\n\t\t\tboundSessionManager !== undefined && getExtensionContextOwner(ctx) === boundRunner;\n\t\tlet lease: { dispose(): void } | undefined;\n\t\tlet taskStore: OwnerTaskStore | undefined;\n\t\tlet unsubscribeTasks: (() => void) | undefined;\n\t\tlet agentRunning = false;\n\t\tlet openPromptCount = 0;\n\t\tlet availability: \"ready\" | \"unavailable\" | \"recovering\" = \"unavailable\";\n\t\tconst roots = new Map<string, WorkflowRootActivity>();\n\t\tconst acknowledgedBlocks = new Map<string, WorkflowRootActivity>();\n\t\tconst updateRoot = (root: WorkflowRootActivity) => {\n\t\t\tconst acknowledged = acknowledgedBlocks.get(root.rootRunId);\n\t\t\tif (\n\t\t\t\tacknowledged &&\n\t\t\t\t(root.state !== acknowledged.state ||\n\t\t\t\t\troot.reason !== acknowledged.reason ||\n\t\t\t\t\troot.actionableBlockCount !== acknowledged.actionableBlockCount ||\n\t\t\t\t\troot.activeExecutionCount !== acknowledged.activeExecutionCount ||\n\t\t\t\t\troot.needsAttention !== acknowledged.needsAttention)\n\t\t\t)\n\t\t\t\tacknowledgedBlocks.delete(root.rootRunId);\n\t\t\troots.set(root.rootRunId, root);\n\t\t};\n\t\tconst seenDiagnostics = new Set<string>();\n\t\tlet generation = 0;\n\t\tconst diagnostic = (value: HerdrDiagnostic) => {\n\t\t\tconst key = `${value.kind}:${value.owner ?? \"\"}`;\n\t\t\tif (seenDiagnostics.has(key)) return;\n\t\t\tseenDiagnostics.add(key);\n\t\t\tif (options.diagnostic) options.diagnostic(value);\n\t\t\telse console.error(`[Herdr] ${value.kind}${value.owner ? `: deferring to ${value.owner}` : \"\"}`);\n\t\t};\n\t\tconst tasksRunning = () => taskStore?.tasks.some((task) => task.execution.kind !== \"settled\") ?? false;\n\t\tconst report = () => {\n\t\t\tif (!owner) return;\n\t\t\tconst activity = deriveSessionActivity({\n\t\t\t\tagentRunning,\n\t\t\t\ttasksRunning: tasksRunning(),\n\t\t\t\topenPromptCount,\n\t\t\t\troots: [...roots.values()].filter((root) => !acknowledgedBlocks.has(root.rootRunId)),\n\t\t\t\tavailability,\n\t\t\t});\n\t\t\tif (activity) reportPaneActivity(owner, activity);\n\t\t};\n\t\tconst start = async (ctx: ExtensionContext) => {\n\t\t\tconst runner = getExtensionContextOwner(ctx);\n\t\t\tif (retiredRunners.has(runner)) return;\n\t\t\tif (boundSessionManager && ctx.sessionManager !== boundSessionManager) return;\n\t\t\tconst environment = captureHerdrEnvironment(options.env ?? process.env);\n\t\t\tif (!environment || ctx.mode !== \"tui\" || !ctx.hasUI || ctx.subagentPolicy || ctx.orchestrationContext) return;\n\t\t\tif (!(options.enabled ?? enabled)(ctx)) return;\n\t\t\tif (boundRunner && boundRunner !== runner) retiredRunners.add(boundRunner);\n\t\t\tboundRunner = runner;\n\t\t\tboundSessionManager = ctx.sessionManager;\n\t\t\tconst current = ++generation;\n\t\t\tlease?.dispose();\n\t\t\tlease = undefined;\n\t\t\tunsubscribeTasks?.();\n\t\t\ttaskStore?.dispose();\n\t\t\tunsubscribeTasks = undefined;\n\t\t\ttaskStore = undefined;\n\t\t\topenPromptCount = 0;\n\t\t\troots.clear();\n\t\t\tacknowledgedBlocks.clear();\n\t\t\tavailability = \"unavailable\";\n\t\t\tconst claimed = await claimPaneReporting(\n\t\t\t\tenvironment,\n\t\t\t\t{ id: ctx.sessionManager.getSessionId(), path: ctx.sessionManager.getSessionFile() },\n\t\t\t\t{ ...options, diagnostic },\n\t\t\t);\n\t\t\tif (current !== generation) {\n\t\t\t\tawait releasePaneReporting(claimed);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\towner = claimed;\n\t\t\tagentRunning = !ctx.isIdle();\n\t\t\tconst taskHost = ctx.getAgentTaskHost?.();\n\t\t\tif (taskHost) {\n\t\t\t\tconst { supervisor, owner: taskOwner } = taskHost.ownerBinding;\n\t\t\t\ttaskStore = new OwnerTaskStore(supervisor, taskOwner);\n\t\t\t\ttaskStore.connect();\n\t\t\t\tlet running = tasksRunning();\n\t\t\t\tunsubscribeTasks = taskStore.subscribe(() => {\n\t\t\t\t\tif (current !== generation) return;\n\t\t\t\t\tconst next = tasksRunning();\n\t\t\t\t\tif (next === running) return;\n\t\t\t\t\trunning = next;\n\t\t\t\t\treport();\n\t\t\t\t});\n\t\t\t}\n\t\t\tlease = ctx.observeWorkflowActivity((frame) => {\n\t\t\t\tif (current !== generation) return;\n\t\t\t\tif (frame.kind === \"snapshot\") {\n\t\t\t\t\tavailability = frame.availability;\n\t\t\t\t\troots.clear();\n\t\t\t\t\tif (frame.availability === \"ready\") {\n\t\t\t\t\t\tfor (const root of frame.roots) updateRoot(root);\n\t\t\t\t\t\tfor (const id of acknowledgedBlocks.keys()) if (!roots.has(id)) acknowledgedBlocks.delete(id);\n\t\t\t\t\t}\n\t\t\t\t} else if (frame.kind === \"changed\") updateRoot(frame.root);\n\t\t\t\telse {\n\t\t\t\t\troots.delete(frame.rootRunId);\n\t\t\t\t\tacknowledgedBlocks.delete(frame.rootRunId);\n\t\t\t\t}\n\t\t\t\treport();\n\t\t\t});\n\t\t};\n\t\tpi.on(\"session_start\", (_event, ctx) => publishExtensionContextEffect(ctx, () => start(ctx)));\n\t\tpi.on(\"input\", (event, ctx) => {\n\t\t\tif (!ownsBinding(ctx) || event.source !== \"interactive\") return;\n\t\t\tlet changed = false;\n\t\t\tfor (const root of roots.values()) {\n\t\t\t\tif (root.state === \"blocked\" && !acknowledgedBlocks.has(root.rootRunId)) {\n\t\t\t\t\tacknowledgedBlocks.set(root.rootRunId, { ...root });\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (changed) report();\n\t\t});\n\t\tpi.on(\"workflow_lifecycle\", (event, ctx) => {\n\t\t\tif (!ownsBinding(ctx) || event.delivery !== \"live\") return;\n\t\t\tconst target = event.target;\n\t\t\tconst newBlock =\n\t\t\t\ttarget.kind === \"prompt\"\n\t\t\t\t\t? target.status === \"opened\"\n\t\t\t\t\t: (target.kind === \"run\" || target.kind === \"stage\") &&\n\t\t\t\t\t\t(target.status === \"blocked\" || target.status === \"awaiting_input\") &&\n\t\t\t\t\t\ttarget.previousStatus !== target.status;\n\t\t\tif (newBlock && acknowledgedBlocks.delete(event.rootRunId)) report();\n\t\t});\n\t\tpi.on(\"agent_start\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\tagentRunning = true;\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"agent_settled\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\tagentRunning = false;\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"ui_prompt_start\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\topenPromptCount++;\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"ui_prompt_end\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\topenPromptCount = Math.max(0, openPromptCount - 1);\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"session_shutdown\", async (event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\t// A non-quit stop may restart this runner, unless a successor supersedes it first.\n\t\t\tif (event.reason === \"quit\") retiredRunners.add(boundRunner!);\n\t\t\tgeneration++;\n\t\t\tlease?.dispose();\n\t\t\tlease = undefined;\n\t\t\tunsubscribeTasks?.();\n\t\t\ttaskStore?.dispose();\n\t\t\tunsubscribeTasks = undefined;\n\t\t\ttaskStore = undefined;\n\t\t\tconst previous = owner;\n\t\t\towner = undefined;\n\t\t\t// Clear before awaiting transport: a successor can bind while retirement drains,\n\t\t\t// and this shutdown's completion must never clear that newer binding.\n\t\t\tboundSessionManager = undefined;\n\t\t\tif (previous) {\n\t\t\t\tif (event.reason === \"quit\") await releasePaneReporting(previous);\n\t\t\t\telse await retirePaneReporting(previous);\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport default function herdrExtension(pi: ExtensionAPI): void {\n\tcreateHerdrExtension()(pi);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/herdr/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { getExtensionContextOwner, publishExtensionContextEffect } from \"../../core/extensions/runner-context.ts\";\nimport type { ExtensionAPI, ExtensionContext, ExtensionFactory } from \"../../core/extensions/types.ts\";\nimport type { WorkflowRootActivity } from \"../../core/extensions/workflow-events.js\";\nimport { SettingsManager } from \"../../core/settings-manager.ts\";\nimport { OwnerTaskStore } from \"../../core/tasks/owner-store.js\";\nimport { deriveSessionActivity } from \"./activity.js\";\nimport { captureHerdrEnvironment } from \"./environment.js\";\nimport {\n\tclaimPaneReporting,\n\ttype PaneOwner,\n\ttype PaneReportingOptions,\n\treleasePaneReporting,\n\treportPaneActivity,\n\tretirePaneReporting,\n} from \"./pane-owner.js\";\nimport type { HerdrDiagnostic } from \"./transport.js\";\n\nexport interface HerdrExtensionOptions extends PaneReportingOptions {\n\tenv?: NodeJS.ProcessEnv;\n\tenabled?: (ctx: ExtensionContext) => boolean;\n}\n\nfunction enabled(ctx: ExtensionContext): boolean {\n\tconst settings = SettingsManager.create(ctx.cwd, undefined, { projectTrusted: ctx.isProjectTrusted() });\n\treturn (settings.getProjectSettings().herdr?.enabled ?? settings.getGlobalSettings().herdr?.enabled) !== false;\n}\n\nexport function createHerdrExtension(options: HerdrExtensionOptions = {}): ExtensionFactory {\n\treturn (pi) => {\n\t\tif (!captureHerdrEnvironment(options.env ?? process.env)) return;\n\t\tlet owner: PaneOwner | undefined;\n\t\t// Supplied loaders can share closures across sessions and overlapping reload runners.\n\t\tlet boundSessionManager: ExtensionContext[\"sessionManager\"] | undefined;\n\t\tlet boundRunner: object | undefined;\n\t\tconst retiredRunners = new WeakSet<object>();\n\t\tconst ownsBinding = (ctx: ExtensionContext) =>\n\t\t\tboundSessionManager !== undefined && getExtensionContextOwner(ctx) === boundRunner;\n\t\tlet lease: { dispose(): void } | undefined;\n\t\tlet taskStore: OwnerTaskStore | undefined;\n\t\tlet unsubscribeTasks: (() => void) | undefined;\n\t\tlet agentRunning = false;\n\t\tlet openPromptCount = 0;\n\t\tlet availability: \"ready\" | \"unavailable\" | \"recovering\" = \"unavailable\";\n\t\tconst roots = new Map<string, WorkflowRootActivity>();\n\t\tconst acknowledgedBlocks = new Map<string, WorkflowRootActivity>();\n\t\tconst sameSummary = (left: WorkflowRootActivity, right: WorkflowRootActivity) =>\n\t\t\tleft.state === right.state &&\n\t\t\tleft.reason === right.reason &&\n\t\t\tleft.actionableBlockCount === right.actionableBlockCount &&\n\t\t\tleft.activeExecutionCount === right.activeExecutionCount &&\n\t\t\tleft.needsAttention === right.needsAttention;\n\t\tconst updateRoot = (root: WorkflowRootActivity) => {\n\t\t\tconst acknowledged = acknowledgedBlocks.get(root.rootRunId);\n\t\t\tif (acknowledged && !sameSummary(root, acknowledged)) acknowledgedBlocks.delete(root.rootRunId);\n\t\t\troots.set(root.rootRunId, root);\n\t\t};\n\t\tconst seenDiagnostics = new Set<string>();\n\t\tlet generation = 0;\n\t\tconst diagnostic = (value: HerdrDiagnostic) => {\n\t\t\tconst key = `${value.kind}:${value.owner ?? \"\"}`;\n\t\t\tif (seenDiagnostics.has(key)) return;\n\t\t\tseenDiagnostics.add(key);\n\t\t\tif (options.diagnostic) options.diagnostic(value);\n\t\t\telse console.error(`[Herdr] ${value.kind}${value.owner ? `: deferring to ${value.owner}` : \"\"}`);\n\t\t};\n\t\tconst tasksRunning = () => taskStore?.tasks.some((task) => task.execution.kind !== \"settled\") ?? false;\n\t\tconst report = (skipUnchanged = false) => {\n\t\t\tif (!owner) return;\n\t\t\tconst activity = deriveSessionActivity({\n\t\t\t\tagentRunning,\n\t\t\t\ttasksRunning: tasksRunning(),\n\t\t\t\topenPromptCount,\n\t\t\t\troots: [...roots.values()].filter((root) => !acknowledgedBlocks.has(root.rootRunId)),\n\t\t\t\tavailability,\n\t\t\t});\n\t\t\tif (activity) reportPaneActivity(owner, activity, skipUnchanged);\n\t\t};\n\t\tconst start = async (ctx: ExtensionContext) => {\n\t\t\tconst runner = getExtensionContextOwner(ctx);\n\t\t\tif (retiredRunners.has(runner)) return;\n\t\t\tif (boundSessionManager && ctx.sessionManager !== boundSessionManager) return;\n\t\t\tconst environment = captureHerdrEnvironment(options.env ?? process.env);\n\t\t\tif (!environment || ctx.mode !== \"tui\" || !ctx.hasUI || ctx.subagentPolicy || ctx.orchestrationContext) return;\n\t\t\tif (!(options.enabled ?? enabled)(ctx)) return;\n\t\t\tif (boundRunner && boundRunner !== runner) retiredRunners.add(boundRunner);\n\t\t\tboundRunner = runner;\n\t\t\tboundSessionManager = ctx.sessionManager;\n\t\t\tconst current = ++generation;\n\t\t\tlease?.dispose();\n\t\t\tlease = undefined;\n\t\t\tunsubscribeTasks?.();\n\t\t\ttaskStore?.dispose();\n\t\t\tunsubscribeTasks = undefined;\n\t\t\ttaskStore = undefined;\n\t\t\topenPromptCount = 0;\n\t\t\troots.clear();\n\t\t\tacknowledgedBlocks.clear();\n\t\t\tavailability = \"unavailable\";\n\t\t\tconst claimed = await claimPaneReporting(\n\t\t\t\tenvironment,\n\t\t\t\t{ id: ctx.sessionManager.getSessionId(), path: ctx.sessionManager.getSessionFile() },\n\t\t\t\t{ ...options, diagnostic },\n\t\t\t);\n\t\t\tif (current !== generation) {\n\t\t\t\tawait releasePaneReporting(claimed);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\towner = claimed;\n\t\t\tagentRunning = !ctx.isIdle();\n\t\t\tconst taskHost = ctx.getAgentTaskHost?.();\n\t\t\tif (taskHost) {\n\t\t\t\tconst { supervisor, owner: taskOwner } = taskHost.ownerBinding;\n\t\t\t\ttaskStore = new OwnerTaskStore(supervisor, taskOwner);\n\t\t\t\ttaskStore.connect();\n\t\t\t\tlet running = tasksRunning();\n\t\t\t\tunsubscribeTasks = taskStore.subscribe(() => {\n\t\t\t\t\tif (current !== generation) return;\n\t\t\t\t\tconst next = tasksRunning();\n\t\t\t\t\tif (next === running) return;\n\t\t\t\t\trunning = next;\n\t\t\t\t\treport();\n\t\t\t\t});\n\t\t\t}\n\t\t\tlease = ctx.observeWorkflowActivity((frame) => {\n\t\t\t\tif (current !== generation) return;\n\t\t\t\tif (frame.kind === \"snapshot\") {\n\t\t\t\t\tavailability = frame.availability;\n\t\t\t\t\troots.clear();\n\t\t\t\t\tif (frame.availability === \"ready\") {\n\t\t\t\t\t\tfor (const root of frame.roots) updateRoot(root);\n\t\t\t\t\t\tfor (const id of acknowledgedBlocks.keys()) if (!roots.has(id)) acknowledgedBlocks.delete(id);\n\t\t\t\t\t}\n\t\t\t\t} else if (frame.kind === \"changed\") {\n\t\t\t\t\tconst previous = roots.get(frame.root.rootRunId);\n\t\t\t\t\tupdateRoot(frame.root);\n\t\t\t\t\t// Graph-only changes do not alter the pane state; skip the redundant report.\n\t\t\t\t\tif (previous && sameSummary(previous, frame.root)) return;\n\t\t\t\t} else {\n\t\t\t\t\troots.delete(frame.rootRunId);\n\t\t\t\t\tacknowledgedBlocks.delete(frame.rootRunId);\n\t\t\t\t}\n\t\t\t\treport(frame.kind === \"snapshot\");\n\t\t\t});\n\t\t};\n\t\tpi.on(\"session_start\", (_event, ctx) => publishExtensionContextEffect(ctx, () => start(ctx)));\n\t\tpi.on(\"input\", (event, ctx) => {\n\t\t\tif (!ownsBinding(ctx) || event.source !== \"interactive\") return;\n\t\t\tlet changed = false;\n\t\t\tfor (const root of roots.values()) {\n\t\t\t\tif (root.state === \"blocked\" && !acknowledgedBlocks.has(root.rootRunId)) {\n\t\t\t\t\tacknowledgedBlocks.set(root.rootRunId, { ...root });\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (changed) report();\n\t\t});\n\t\tpi.on(\"workflow_lifecycle\", (event, ctx) => {\n\t\t\tif (!ownsBinding(ctx) || event.delivery !== \"live\") return;\n\t\t\tconst target = event.target;\n\t\t\tconst newBlock =\n\t\t\t\ttarget.kind === \"prompt\"\n\t\t\t\t\t? target.status === \"opened\"\n\t\t\t\t\t: (target.kind === \"run\" || target.kind === \"stage\") &&\n\t\t\t\t\t\t(target.status === \"blocked\" || target.status === \"awaiting_input\") &&\n\t\t\t\t\t\ttarget.previousStatus !== target.status;\n\t\t\tif (newBlock && acknowledgedBlocks.delete(event.rootRunId)) report();\n\t\t});\n\t\tpi.on(\"agent_start\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\tagentRunning = true;\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"agent_settled\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\tagentRunning = false;\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"ui_prompt_start\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\topenPromptCount++;\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"ui_prompt_end\", (_event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\topenPromptCount = Math.max(0, openPromptCount - 1);\n\t\t\treport();\n\t\t});\n\t\tpi.on(\"session_shutdown\", async (event, ctx) => {\n\t\t\tif (!ownsBinding(ctx)) return;\n\t\t\t// A non-quit stop may restart this runner, unless a successor supersedes it first.\n\t\t\tif (event.reason === \"quit\") retiredRunners.add(boundRunner!);\n\t\t\tgeneration++;\n\t\t\tlease?.dispose();\n\t\t\tlease = undefined;\n\t\t\tunsubscribeTasks?.();\n\t\t\ttaskStore?.dispose();\n\t\t\tunsubscribeTasks = undefined;\n\t\t\ttaskStore = undefined;\n\t\t\tconst previous = owner;\n\t\t\towner = undefined;\n\t\t\t// Clear before awaiting transport: a successor can bind while retirement drains,\n\t\t\t// and this shutdown's completion must never clear that newer binding.\n\t\t\tboundSessionManager = undefined;\n\t\t\tif (previous) {\n\t\t\t\tif (event.reason === \"quit\") await releasePaneReporting(previous);\n\t\t\t\telse await retirePaneReporting(previous);\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport default function herdrExtension(pi: ExtensionAPI): void {\n\tcreateHerdrExtension()(pi);\n}\n"]}
|
|
@@ -17,13 +17,17 @@ export interface PaneOwner {
|
|
|
17
17
|
status: "active" | "releasing" | "retired";
|
|
18
18
|
seq: number;
|
|
19
19
|
identitySent: boolean;
|
|
20
|
-
|
|
20
|
+
lastDeliveredActivity?: SessionActivity;
|
|
21
|
+
pending?: {
|
|
22
|
+
activity: SessionActivity;
|
|
23
|
+
skipUnchanged: boolean;
|
|
24
|
+
};
|
|
21
25
|
flight?: Promise<void>;
|
|
22
26
|
release?: Promise<void>;
|
|
23
27
|
flush(): Promise<void>;
|
|
24
28
|
}
|
|
25
29
|
export declare function claimPaneReporting(environment: HerdrEnvironment, identity: PaneIdentity, options?: PaneReportingOptions): Promise<PaneOwner>;
|
|
26
|
-
export declare function reportPaneActivity(owner: PaneOwner, activity: SessionActivity): void;
|
|
30
|
+
export declare function reportPaneActivity(owner: PaneOwner, activity: SessionActivity, skipUnchanged?: boolean): void;
|
|
27
31
|
/** Fence and drain a local reporter without unregistering the still-running agent. */
|
|
28
32
|
export declare function retirePaneReporting(owner: PaneOwner): Promise<void>;
|
|
29
33
|
export declare function releasePaneReporting(owner: PaneOwner): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pane-owner.d.ts","sourceRoot":"","sources":["../../../src/extensions/herdr/pane-owner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;CACnD;AACD,MAAM,WAAW,SAAS;IACzB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"pane-owner.d.ts","sourceRoot":"","sources":["../../../src/extensions/herdr/pane-owner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;CACnD;AACD,MAAM,WAAW,SAAS;IACzB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,eAAe,CAAC;IACxC,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAmCD,wBAAsB,kBAAkB,CACvC,WAAW,EAAE,gBAAgB,EAC7B,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC,SAAS,CAAC,CAoBpB;AAUD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,UAAQ,GAAG,IAAI,CAiC3G;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE"}
|
|
@@ -51,18 +51,28 @@ export async function claimPaneReporting(environment, identity, options = {}) {
|
|
|
51
51
|
owners.set(environment.paneId, owner);
|
|
52
52
|
return owner;
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
function matchesActivity(previous, activity) {
|
|
55
|
+
return (activity.state === previous?.state &&
|
|
56
|
+
activity.reason === previous?.reason &&
|
|
57
|
+
activity.message === previous?.message);
|
|
58
|
+
}
|
|
59
|
+
export function reportPaneActivity(owner, activity, skipUnchanged = false) {
|
|
55
60
|
if (owner.status !== "active" || owners.get(owner.environment.paneId) !== owner) {
|
|
56
61
|
diagnostic(owner, { kind: "stale_owner" });
|
|
57
62
|
return;
|
|
58
63
|
}
|
|
59
|
-
owner.
|
|
64
|
+
if (!owner.flight && skipUnchanged && matchesActivity(owner.lastDeliveredActivity, activity))
|
|
65
|
+
return;
|
|
66
|
+
const pendingExplicitRefresh = owner.pending?.skipUnchanged === false && matchesActivity(owner.pending.activity, activity);
|
|
67
|
+
owner.pending = { activity, skipUnchanged: skipUnchanged && !pendingExplicitRefresh };
|
|
60
68
|
if (owner.flight)
|
|
61
69
|
return;
|
|
62
70
|
owner.flight = (async () => {
|
|
63
71
|
while (owner.pending && owner.status === "active") {
|
|
64
|
-
const next = owner.pending;
|
|
72
|
+
const { activity: next, skipUnchanged } = owner.pending;
|
|
65
73
|
owner.pending = undefined;
|
|
74
|
+
if (skipUnchanged && matchesActivity(owner.lastDeliveredActivity, next))
|
|
75
|
+
continue;
|
|
66
76
|
allocateSequence(owner);
|
|
67
77
|
const args = [...argv(owner, "report-agent"), "--state", next.state];
|
|
68
78
|
if (next.message)
|
|
@@ -72,8 +82,13 @@ export function reportPaneActivity(owner, activity) {
|
|
|
72
82
|
if (owner.identity.path && isAbsolute(owner.identity.path))
|
|
73
83
|
args.push("--agent-session-path", owner.identity.path);
|
|
74
84
|
}
|
|
75
|
-
if (await send(owner, args))
|
|
85
|
+
if (await send(owner, args)) {
|
|
76
86
|
owner.identitySent = true;
|
|
87
|
+
owner.lastDeliveredActivity = next;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
owner.lastDeliveredActivity = undefined;
|
|
91
|
+
}
|
|
77
92
|
}
|
|
78
93
|
})().finally(() => {
|
|
79
94
|
owner.flight = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pane-owner.js","sourceRoot":"","sources":["../../../src/extensions/herdr/pane-owner.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute } from \"node:path\";\nimport type { SessionActivity } from \"./activity.js\";\nimport type { HerdrEnvironment } from \"./environment.js\";\nimport { executeHerdr, type HerdrDiagnostic } from \"./transport.js\";\n\nexport interface PaneIdentity {\n\tid: string;\n\tpath?: string;\n}\nexport interface PaneReportingOptions {\n\tclock?: () => number;\n\ttimeoutMs?: number;\n\tdiagnostic?: (diagnostic: HerdrDiagnostic) => void;\n}\nexport interface PaneOwner {\n\tenvironment: HerdrEnvironment;\n\tidentity: PaneIdentity;\n\toptions: PaneReportingOptions;\n\tstatus: \"active\" | \"releasing\" | \"retired\";\n\tseq: number;\n\tidentitySent: boolean;\n\tpending?: SessionActivity;\n\tflight?: Promise<void>;\n\trelease?: Promise<void>;\n\tflush(): Promise<void>;\n}\n\n// Host module lifetime outlives inline extension factories and runner generations.\nconst owners = new Map<string, PaneOwner>();\nlet highWater = 0;\n\nfunction diagnostic(owner: PaneOwner, value: HerdrDiagnostic): void {\n\towner.options.diagnostic?.(value);\n}\n\n/** Every admitted command, including release, takes a fresh strictly increasing sequence: Herdr ignores equal or older `--seq`. */\nfunction allocateSequence(owner: PaneOwner): void {\n\towner.seq = highWater = Math.max((owner.options.clock ?? Date.now)(), highWater + 1);\n}\n\nfunction argv(owner: PaneOwner, command: string): string[] {\n\treturn [\n\t\t\"pane\",\n\t\tcommand,\n\t\towner.environment.paneId,\n\t\t\"--source\",\n\t\t\"custom:atomic\",\n\t\t\"--agent\",\n\t\t\"atomic\",\n\t\t\"--seq\",\n\t\tString(owner.seq),\n\t];\n}\n\nasync function send(owner: PaneOwner, args: string[]): Promise<boolean> {\n\tconst result = await executeHerdr(owner.environment, args, owner.options.timeoutMs);\n\tif (result) diagnostic(owner, result);\n\treturn result === undefined;\n}\n\nexport async function claimPaneReporting(\n\tenvironment: HerdrEnvironment,\n\tidentity: PaneIdentity,\n\toptions: PaneReportingOptions = {},\n): Promise<PaneOwner> {\n\tlet previous: PaneOwner | undefined;\n\tdo {\n\t\tprevious = owners.get(environment.paneId);\n\t\tif (previous) await retirePaneReporting(previous);\n\t} while (owners.get(environment.paneId) !== previous);\n\tconst owner: PaneOwner = {\n\t\tenvironment,\n\t\tidentity,\n\t\toptions,\n\t\tstatus: \"active\",\n\t\t// Inherit the registration even if recovery produces no successor report before quit.\n\t\tseq: previous?.seq ?? 0,\n\t\tidentitySent: false,\n\t\tasync flush() {\n\t\t\tawait this.flight;\n\t\t},\n\t};\n\towners.set(environment.paneId, owner);\n\treturn owner;\n}\n\nexport function reportPaneActivity(owner: PaneOwner, activity: SessionActivity): void {\n\tif (owner.status !== \"active\" || owners.get(owner.environment.paneId) !== owner) {\n\t\tdiagnostic(owner, { kind: \"stale_owner\" });\n\t\treturn;\n\t}\n\towner.pending = activity;\n\tif (owner.flight) return;\n\towner.flight = (async () => {\n\t\twhile (owner.pending && owner.status === \"active\") {\n\t\t\tconst next = owner.pending;\n\t\t\towner.pending = undefined;\n\t\t\tallocateSequence(owner);\n\t\t\tconst args = [...argv(owner, \"report-agent\"), \"--state\", next.state];\n\t\t\tif (next.message) args.push(\"--message\", next.message);\n\t\t\tif (!owner.identitySent) {\n\t\t\t\targs.push(\"--agent-session-id\", owner.identity.id);\n\t\t\t\tif (owner.identity.path && isAbsolute(owner.identity.path))\n\t\t\t\t\targs.push(\"--agent-session-path\", owner.identity.path);\n\t\t\t}\n\t\t\tif (await send(owner, args)) owner.identitySent = true;\n\t\t}\n\t})().finally(() => {\n\t\towner.flight = undefined;\n\t});\n}\n\n/** Fence and drain a local reporter without unregistering the still-running agent. */\nexport function retirePaneReporting(owner: PaneOwner): Promise<void> {\n\treturn stopPaneReporting(owner, false);\n}\n\nexport function releasePaneReporting(owner: PaneOwner): Promise<void> {\n\treturn stopPaneReporting(owner, true);\n}\n\nfunction stopPaneReporting(owner: PaneOwner, releaseRegistration: boolean): Promise<void> {\n\tif (owner.release) return owner.release;\n\tif (owners.get(owner.environment.paneId) !== owner || owner.status !== \"active\") {\n\t\tdiagnostic(owner, { kind: \"stale_owner\" });\n\t\treturn Promise.resolve();\n\t}\n\towner.status = \"releasing\";\n\towner.pending = undefined;\n\towner.release = (async () => {\n\t\tawait owner.flight;\n\t\t// A failed command may still have claimed authority before its response was lost.\n\t\tif (releaseRegistration && owner.seq > 0) {\n\t\t\tallocateSequence(owner);\n\t\t\tawait send(owner, argv(owner, \"release-agent\"));\n\t\t}\n\t\towner.status = \"retired\";\n\t\tif (releaseRegistration && owners.get(owner.environment.paneId) === owner)\n\t\t\towners.delete(owner.environment.paneId);\n\t})();\n\treturn owner.release;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pane-owner.js","sourceRoot":"","sources":["../../../src/extensions/herdr/pane-owner.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute } from \"node:path\";\nimport type { SessionActivity } from \"./activity.js\";\nimport type { HerdrEnvironment } from \"./environment.js\";\nimport { executeHerdr, type HerdrDiagnostic } from \"./transport.js\";\n\nexport interface PaneIdentity {\n\tid: string;\n\tpath?: string;\n}\nexport interface PaneReportingOptions {\n\tclock?: () => number;\n\ttimeoutMs?: number;\n\tdiagnostic?: (diagnostic: HerdrDiagnostic) => void;\n}\nexport interface PaneOwner {\n\tenvironment: HerdrEnvironment;\n\tidentity: PaneIdentity;\n\toptions: PaneReportingOptions;\n\tstatus: \"active\" | \"releasing\" | \"retired\";\n\tseq: number;\n\tidentitySent: boolean;\n\tlastDeliveredActivity?: SessionActivity;\n\tpending?: { activity: SessionActivity; skipUnchanged: boolean };\n\tflight?: Promise<void>;\n\trelease?: Promise<void>;\n\tflush(): Promise<void>;\n}\n\n// Host module lifetime outlives inline extension factories and runner generations.\nconst owners = new Map<string, PaneOwner>();\nlet highWater = 0;\n\nfunction diagnostic(owner: PaneOwner, value: HerdrDiagnostic): void {\n\towner.options.diagnostic?.(value);\n}\n\n/** Every admitted command, including release, takes a fresh strictly increasing sequence: Herdr ignores equal or older `--seq`. */\nfunction allocateSequence(owner: PaneOwner): void {\n\towner.seq = highWater = Math.max((owner.options.clock ?? Date.now)(), highWater + 1);\n}\n\nfunction argv(owner: PaneOwner, command: string): string[] {\n\treturn [\n\t\t\"pane\",\n\t\tcommand,\n\t\towner.environment.paneId,\n\t\t\"--source\",\n\t\t\"custom:atomic\",\n\t\t\"--agent\",\n\t\t\"atomic\",\n\t\t\"--seq\",\n\t\tString(owner.seq),\n\t];\n}\n\nasync function send(owner: PaneOwner, args: string[]): Promise<boolean> {\n\tconst result = await executeHerdr(owner.environment, args, owner.options.timeoutMs);\n\tif (result) diagnostic(owner, result);\n\treturn result === undefined;\n}\n\nexport async function claimPaneReporting(\n\tenvironment: HerdrEnvironment,\n\tidentity: PaneIdentity,\n\toptions: PaneReportingOptions = {},\n): Promise<PaneOwner> {\n\tlet previous: PaneOwner | undefined;\n\tdo {\n\t\tprevious = owners.get(environment.paneId);\n\t\tif (previous) await retirePaneReporting(previous);\n\t} while (owners.get(environment.paneId) !== previous);\n\tconst owner: PaneOwner = {\n\t\tenvironment,\n\t\tidentity,\n\t\toptions,\n\t\tstatus: \"active\",\n\t\t// Inherit the registration even if recovery produces no successor report before quit.\n\t\tseq: previous?.seq ?? 0,\n\t\tidentitySent: false,\n\t\tasync flush() {\n\t\t\tawait this.flight;\n\t\t},\n\t};\n\towners.set(environment.paneId, owner);\n\treturn owner;\n}\n\nfunction matchesActivity(previous: SessionActivity | undefined, activity: SessionActivity): boolean {\n\treturn (\n\t\tactivity.state === previous?.state &&\n\t\tactivity.reason === previous?.reason &&\n\t\tactivity.message === previous?.message\n\t);\n}\n\nexport function reportPaneActivity(owner: PaneOwner, activity: SessionActivity, skipUnchanged = false): void {\n\tif (owner.status !== \"active\" || owners.get(owner.environment.paneId) !== owner) {\n\t\tdiagnostic(owner, { kind: \"stale_owner\" });\n\t\treturn;\n\t}\n\tif (!owner.flight && skipUnchanged && matchesActivity(owner.lastDeliveredActivity, activity)) return;\n\tconst pendingExplicitRefresh =\n\t\towner.pending?.skipUnchanged === false && matchesActivity(owner.pending.activity, activity);\n\towner.pending = { activity, skipUnchanged: skipUnchanged && !pendingExplicitRefresh };\n\tif (owner.flight) return;\n\towner.flight = (async () => {\n\t\twhile (owner.pending && owner.status === \"active\") {\n\t\t\tconst { activity: next, skipUnchanged } = owner.pending;\n\t\t\towner.pending = undefined;\n\t\t\tif (skipUnchanged && matchesActivity(owner.lastDeliveredActivity, next)) continue;\n\t\t\tallocateSequence(owner);\n\t\t\tconst args = [...argv(owner, \"report-agent\"), \"--state\", next.state];\n\t\t\tif (next.message) args.push(\"--message\", next.message);\n\t\t\tif (!owner.identitySent) {\n\t\t\t\targs.push(\"--agent-session-id\", owner.identity.id);\n\t\t\t\tif (owner.identity.path && isAbsolute(owner.identity.path))\n\t\t\t\t\targs.push(\"--agent-session-path\", owner.identity.path);\n\t\t\t}\n\t\t\tif (await send(owner, args)) {\n\t\t\t\towner.identitySent = true;\n\t\t\t\towner.lastDeliveredActivity = next;\n\t\t\t} else {\n\t\t\t\towner.lastDeliveredActivity = undefined;\n\t\t\t}\n\t\t}\n\t})().finally(() => {\n\t\towner.flight = undefined;\n\t});\n}\n\n/** Fence and drain a local reporter without unregistering the still-running agent. */\nexport function retirePaneReporting(owner: PaneOwner): Promise<void> {\n\treturn stopPaneReporting(owner, false);\n}\n\nexport function releasePaneReporting(owner: PaneOwner): Promise<void> {\n\treturn stopPaneReporting(owner, true);\n}\n\nfunction stopPaneReporting(owner: PaneOwner, releaseRegistration: boolean): Promise<void> {\n\tif (owner.release) return owner.release;\n\tif (owners.get(owner.environment.paneId) !== owner || owner.status !== \"active\") {\n\t\tdiagnostic(owner, { kind: \"stale_owner\" });\n\t\treturn Promise.resolve();\n\t}\n\towner.status = \"releasing\";\n\towner.pending = undefined;\n\towner.release = (async () => {\n\t\tawait owner.flight;\n\t\t// A failed command may still have claimed authority before its response was lost.\n\t\tif (releaseRegistration && owner.seq > 0) {\n\t\t\tallocateSequence(owner);\n\t\t\tawait send(owner, argv(owner, \"release-agent\"));\n\t\t}\n\t\towner.status = \"retired\";\n\t\tif (releaseRegistration && owners.get(owner.environment.paneId) === owner)\n\t\t\towners.delete(owner.environment.paneId);\n\t})();\n\treturn owner.release;\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export type { ExtensionBindings } from "./core/agent-session-types.js";
|
|
|
2
2
|
export { CacheWarmer, type CacheWarmingDecisionEvent, type CacheWarmingDecisionEventResult, type CacheWarmingStatus, } from "./core/cache-warmer.ts";
|
|
3
3
|
export type { ExecuteToolOptions, ExtensionToolContext } from "./core/extensions/context-types.ts";
|
|
4
4
|
export type { HostDiagnostic, HostInput, HostInputOptions, QuestionAnswer, QuestionnaireError, QuestionnaireResult, QuestionParams, } from "./core/extensions/host-input.js";
|
|
5
|
+
export { type ExtensionContextEffectPhase, publishExtensionContextEffect, registerExtensionContextRetirementEffect, } from "./core/extensions/runner-context.ts";
|
|
5
6
|
export type { ToolAnnotations, ToolExposure, ToolLoadout, ToolLoadoutChanges, ToolNamespace, ToolRendererResolver, ToolRenderers, } from "./core/extensions/tool-types.ts";
|
|
6
7
|
export { resolveRestoredModelReference } from "./core/model-resolver-initial.ts";
|
|
7
8
|
export type { UsageEntry } from "./core/session-manager.ts";
|
|
@@ -11,6 +12,7 @@ export type { AgentIntent, OperationId, TaskId, TaskResult, WaitPolicy } from ".
|
|
|
11
12
|
export { type AdmittedAgentTask, collectAgentTasks } from "./core/tasks/execution-scope.js";
|
|
12
13
|
export { bindOwnerTaskStore, getOwnerTaskStore, OwnerTaskStore } from "./core/tasks/owner-store.js";
|
|
13
14
|
export { formatToolCallWithArgs } from "./core/tools/render-utils.ts";
|
|
15
|
+
export { createTranscript, type Transcript, type TranscriptOptions, type TranscriptPart, type TranscriptTextPart, type TranscriptThinkingPart, type TranscriptToolCallPart, type TranscriptToolResult, type TranscriptToolResultFormat, } from "./core/transcript.js";
|
|
14
16
|
export { type CodemodeExtensionOptions, createCodemodeExtension } from "./extensions/codemode/index.js";
|
|
15
17
|
export { type CodemodeToolDetails, type CodemodeToolOptions, createCodemodeDescription, createCodemodeTool, createCodemodeToolDefinition, } from "./extensions/codemode/tool.js";
|
|
16
18
|
export { createToolSearchExtension } from "./extensions/tool-search/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { CacheWarmer, } from "./core/cache-warmer.js";
|
|
2
|
+
export { publishExtensionContextEffect, registerExtensionContextRetirementEffect, } from "./core/extensions/runner-context.js";
|
|
2
3
|
export { resolveRestoredModelReference } from "./core/model-resolver-initial.js";
|
|
3
4
|
export { CACHE_WARMING_MODES } from "./core/settings-manager.js";
|
|
4
5
|
// Internal trusted-host task integration (not model authority).
|
|
@@ -6,6 +7,7 @@ export { AgentTaskHost } from "./core/tasks/agent-adapter.js";
|
|
|
6
7
|
export { collectAgentTasks } from "./core/tasks/execution-scope.js";
|
|
7
8
|
export { bindOwnerTaskStore, getOwnerTaskStore, OwnerTaskStore } from "./core/tasks/owner-store.js";
|
|
8
9
|
export { formatToolCallWithArgs } from "./core/tools/render-utils.js";
|
|
10
|
+
export { createTranscript, } from "./core/transcript.js";
|
|
9
11
|
export { createCodemodeExtension } from "./extensions/codemode/index.js";
|
|
10
12
|
export { createCodemodeDescription, createCodemodeTool, createCodemodeToolDefinition, } from "./extensions/codemode/tool.js";
|
|
11
13
|
export { createToolSearchExtension } from "./extensions/tool-search/index.js";
|