pi-agent-flow 1.8.39 → 2.0.0
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/README.md +33 -37
- package/agents/audit.md +18 -22
- package/agents/build.md +20 -22
- package/agents/craft.md +20 -27
- package/agents/debug.md +21 -28
- package/agents/ideas.md +18 -101
- package/agents/scout.md +15 -19
- package/dist/batch/batch-bash.d.ts +2 -2
- package/dist/batch/batch-bash.d.ts.map +1 -1
- package/dist/batch/batch-bash.js +3 -3
- package/dist/batch/batch-bash.js.map +1 -1
- package/dist/batch/constants.d.ts +19 -5
- package/dist/batch/constants.d.ts.map +1 -1
- package/dist/batch/constants.js +4 -3
- package/dist/batch/constants.js.map +1 -1
- package/dist/batch/execute.d.ts +0 -1
- package/dist/batch/execute.d.ts.map +1 -1
- package/dist/batch/execute.js +101 -10
- package/dist/batch/execute.js.map +1 -1
- package/dist/batch/fuzzy-edit.d.ts +0 -6
- package/dist/batch/fuzzy-edit.d.ts.map +1 -1
- package/dist/batch/fuzzy-edit.js +1 -1
- package/dist/batch/fuzzy-edit.js.map +1 -1
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +87 -16
- package/dist/batch/index.js.map +1 -1
- package/dist/batch/render.d.ts +0 -1
- package/dist/batch/render.d.ts.map +1 -1
- package/dist/batch/render.js +7 -101
- package/dist/batch/render.js.map +1 -1
- package/dist/batch/summary.d.ts +5 -0
- package/dist/batch/summary.d.ts.map +1 -0
- package/dist/batch/summary.js +101 -0
- package/dist/batch/summary.js.map +1 -0
- package/dist/{config.d.ts → config/config.d.ts} +34 -2
- package/dist/config/config.d.ts.map +1 -0
- package/dist/{config.js → config/config.js} +157 -9
- package/dist/config/config.js.map +1 -0
- package/dist/config/log.d.ts +27 -0
- package/dist/config/log.d.ts.map +1 -0
- package/dist/config/log.js +104 -0
- package/dist/config/log.js.map +1 -0
- package/dist/{settings-resolver.d.ts → config/settings-resolver.d.ts} +9 -2
- package/dist/config/settings-resolver.d.ts.map +1 -0
- package/dist/config/settings-resolver.js +275 -0
- package/dist/config/settings-resolver.js.map +1 -0
- package/dist/core/agents.d.ts.map +1 -0
- package/dist/{agents.js → core/agents.js} +11 -10
- package/dist/core/agents.js.map +1 -0
- package/dist/core/delegation.d.ts +24 -0
- package/dist/core/delegation.d.ts.map +1 -0
- package/dist/core/delegation.js +55 -0
- package/dist/core/delegation.js.map +1 -0
- package/dist/core/depth.d.ts.map +1 -0
- package/dist/{depth.js → core/depth.js} +9 -8
- package/dist/core/depth.js.map +1 -0
- package/dist/{executor.d.ts → core/executor.d.ts} +13 -3
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/{executor.js → core/executor.js} +79 -15
- package/dist/core/executor.js.map +1 -0
- package/dist/{flow.d.ts → core/flow.d.ts} +4 -1
- package/dist/core/flow.d.ts.map +1 -0
- package/dist/{flow.js → core/flow.js} +179 -25
- package/dist/core/flow.js.map +1 -0
- package/dist/{session-mode.d.ts → core/session-mode.d.ts} +2 -1
- package/dist/core/session-mode.d.ts.map +1 -0
- package/dist/{session-mode.js → core/session-mode.js} +1 -1
- package/dist/core/session-mode.js.map +1 -0
- package/dist/core/session-registry.d.ts +16 -0
- package/dist/core/session-registry.d.ts.map +1 -0
- package/dist/core/session-registry.js +30 -0
- package/dist/core/session-registry.js.map +1 -0
- package/dist/core/transitions.d.ts.map +1 -0
- package/dist/{transitions.js → core/transitions.js} +1 -1
- package/dist/core/transitions.js.map +1 -0
- package/dist/flow/command.d.ts +8 -0
- package/dist/flow/command.d.ts.map +1 -0
- package/dist/flow/command.js +189 -0
- package/dist/flow/command.js.map +1 -0
- package/dist/flow/continuation.d.ts +16 -0
- package/dist/flow/continuation.d.ts.map +1 -0
- package/dist/flow/continuation.js +151 -0
- package/dist/flow/continuation.js.map +1 -0
- package/dist/flow/index.d.ts +15 -0
- package/dist/flow/index.d.ts.map +1 -0
- package/dist/flow/index.js +22 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/settings-command.d.ts +51 -0
- package/dist/flow/settings-command.d.ts.map +1 -0
- package/dist/flow/settings-command.js +851 -0
- package/dist/flow/settings-command.js.map +1 -0
- package/dist/flow/store.d.ts +26 -0
- package/dist/flow/store.d.ts.map +1 -0
- package/dist/flow/store.js +158 -0
- package/dist/flow/store.js.map +1 -0
- package/dist/flow/template-strings.d.ts +8 -0
- package/dist/flow/template-strings.d.ts.map +1 -0
- package/dist/flow/template-strings.js +39 -0
- package/dist/flow/template-strings.js.map +1 -0
- package/dist/flow/types.d.ts +55 -0
- package/dist/flow/types.d.ts.map +1 -0
- package/dist/flow/types.js +5 -0
- package/dist/flow/types.js.map +1 -0
- package/dist/flow/warp-command.d.ts +9 -0
- package/dist/flow/warp-command.d.ts.map +1 -0
- package/dist/flow/warp-command.js +405 -0
- package/dist/flow/warp-command.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +115 -32
- package/dist/index.js.map +1 -1
- package/dist/{notify-state.d.ts → notify/notify-state.d.ts} +2 -1
- package/dist/notify/notify-state.d.ts.map +1 -0
- package/dist/notify/notify-state.js.map +1 -0
- package/dist/notify/notify.d.ts.map +1 -0
- package/dist/{notify.js → notify/notify.js} +3 -2
- package/dist/notify/notify.js.map +1 -0
- package/dist/{cli-args.d.ts → snapshot/cli-args.d.ts} +4 -2
- package/dist/snapshot/cli-args.d.ts.map +1 -0
- package/dist/{cli-args.js → snapshot/cli-args.js} +10 -1
- package/dist/snapshot/cli-args.js.map +1 -0
- package/dist/snapshot/index.d.ts +2 -0
- package/dist/snapshot/index.d.ts.map +1 -0
- package/dist/snapshot/index.js +2 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/{reasoning-strip.d.ts → snapshot/reasoning-strip.d.ts} +0 -4
- package/dist/snapshot/reasoning-strip.d.ts.map +1 -0
- package/dist/{reasoning-strip.js → snapshot/reasoning-strip.js} +2 -2
- package/dist/snapshot/reasoning-strip.js.map +1 -0
- package/dist/{runner-events.d.ts → snapshot/runner-events.d.ts} +13 -1
- package/dist/snapshot/runner-events.d.ts.map +1 -0
- package/dist/{runner-events.js → snapshot/runner-events.js} +16 -4
- package/dist/snapshot/runner-events.js.map +1 -0
- package/dist/{snapshot.d.ts → snapshot/snapshot.d.ts} +29 -3
- package/dist/snapshot/snapshot.d.ts.map +1 -0
- package/dist/{snapshot.js → snapshot/snapshot.js} +347 -39
- package/dist/snapshot/snapshot.js.map +1 -0
- package/dist/{structured-output.d.ts → snapshot/structured-output.d.ts} +1 -1
- package/dist/snapshot/structured-output.d.ts.map +1 -0
- package/dist/{structured-output.js → snapshot/structured-output.js} +13 -0
- package/dist/snapshot/structured-output.js.map +1 -0
- package/dist/{flow-prompt.d.ts → steering/flow-prompt.d.ts} +2 -2
- package/dist/steering/flow-prompt.d.ts.map +1 -0
- package/dist/{flow-prompt.js → steering/flow-prompt.js} +3 -3
- package/dist/steering/flow-prompt.js.map +1 -0
- package/dist/{sliding-prompt.d.ts → steering/sliding-prompt.d.ts} +8 -7
- package/dist/steering/sliding-prompt.d.ts.map +1 -0
- package/dist/{sliding-prompt.js → steering/sliding-prompt.js} +15 -64
- package/dist/steering/sliding-prompt.js.map +1 -0
- package/dist/{tool-utils.d.ts → steering/tool-utils.d.ts} +1 -0
- package/dist/steering/tool-utils.d.ts.map +1 -0
- package/dist/{tool-utils.js → steering/tool-utils.js} +10 -3
- package/dist/steering/tool-utils.js.map +1 -0
- package/dist/{ask-user.d.ts → tools/ask-user.d.ts} +3 -15
- package/dist/tools/ask-user.d.ts.map +1 -0
- package/dist/tools/ask-user.js +778 -0
- package/dist/tools/ask-user.js.map +1 -0
- package/dist/{timed-bash.d.ts → tools/timed-bash.d.ts} +2 -7
- package/dist/tools/timed-bash.d.ts.map +1 -0
- package/dist/{timed-bash.js → tools/timed-bash.js} +2 -2
- package/dist/tools/timed-bash.js.map +1 -0
- package/dist/{web-tool.d.ts → tools/web-tool.d.ts} +1 -1
- package/dist/tools/web-tool.d.ts.map +1 -0
- package/dist/{web-tool.js → tools/web-tool.js} +8 -7
- package/dist/tools/web-tool.js.map +1 -0
- package/dist/tui/flow-colors.d.ts +55 -0
- package/dist/tui/flow-colors.d.ts.map +1 -0
- package/dist/tui/flow-colors.js +22 -0
- package/dist/tui/flow-colors.js.map +1 -0
- package/dist/{render-utils.d.ts → tui/render-utils.d.ts} +1 -1
- package/dist/tui/render-utils.d.ts.map +1 -0
- package/dist/{render-utils.js → tui/render-utils.js} +3 -3
- package/dist/tui/render-utils.js.map +1 -0
- package/dist/tui/render.d.ts +21 -0
- package/dist/tui/render.d.ts.map +1 -0
- package/dist/tui/render.js +813 -0
- package/dist/tui/render.js.map +1 -0
- package/dist/tui/scramble/algorithm.d.ts +7 -0
- package/dist/tui/scramble/algorithm.d.ts.map +1 -0
- package/dist/tui/scramble/algorithm.js +227 -0
- package/dist/tui/scramble/algorithm.js.map +1 -0
- package/dist/tui/scramble/constants.d.ts +99 -0
- package/dist/tui/scramble/constants.d.ts.map +1 -0
- package/dist/tui/scramble/constants.js +101 -0
- package/dist/tui/scramble/constants.js.map +1 -0
- package/dist/tui/scramble/index.d.ts +6 -0
- package/dist/tui/scramble/index.d.ts.map +1 -0
- package/dist/tui/scramble/index.js +6 -0
- package/dist/tui/scramble/index.js.map +1 -0
- package/dist/tui/scramble/manager.d.ts +48 -0
- package/dist/tui/scramble/manager.d.ts.map +1 -0
- package/dist/tui/scramble/manager.js +959 -0
- package/dist/tui/scramble/manager.js.map +1 -0
- package/dist/tui/scramble/utils.d.ts +18 -0
- package/dist/tui/scramble/utils.d.ts.map +1 -0
- package/dist/tui/scramble/utils.js +145 -0
- package/dist/tui/scramble/utils.js.map +1 -0
- package/dist/tui/single-select-layout.d.ts +17 -0
- package/dist/tui/single-select-layout.d.ts.map +1 -0
- package/dist/{single-select-layout.js → tui/single-select-layout.js} +8 -25
- package/dist/tui/single-select-layout.js.map +1 -0
- package/dist/types/flow.d.ts +110 -0
- package/dist/types/flow.d.ts.map +1 -0
- package/dist/{types.js → types/flow.js} +3 -54
- package/dist/types/flow.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/output.d.ts +104 -0
- package/dist/types/output.d.ts.map +1 -0
- package/dist/types/output.js +5 -0
- package/dist/types/output.js.map +1 -0
- package/dist/types/ui.d.ts +24 -0
- package/dist/types/ui.d.ts.map +1 -0
- package/dist/types/ui.js +55 -0
- package/dist/types/ui.js.map +1 -0
- package/package.json +7 -4
- package/dist/agents.d.ts.map +0 -1
- package/dist/agents.js.map +0 -1
- package/dist/ask-user.d.ts.map +0 -1
- package/dist/ask-user.js +0 -1405
- package/dist/ask-user.js.map +0 -1
- package/dist/batch.d.ts +0 -12
- package/dist/batch.d.ts.map +0 -1
- package/dist/batch.js +0 -11
- package/dist/batch.js.map +0 -1
- package/dist/cli-args.d.ts.map +0 -1
- package/dist/cli-args.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/depth.d.ts.map +0 -1
- package/dist/depth.js.map +0 -1
- package/dist/executor.d.ts.map +0 -1
- package/dist/executor.js.map +0 -1
- package/dist/flow-prompt.d.ts.map +0 -1
- package/dist/flow-prompt.js.map +0 -1
- package/dist/flow.d.ts.map +0 -1
- package/dist/flow.js.map +0 -1
- package/dist/notify-state.d.ts.map +0 -1
- package/dist/notify-state.js.map +0 -1
- package/dist/notify.d.ts.map +0 -1
- package/dist/notify.js.map +0 -1
- package/dist/reasoning-strip.d.ts.map +0 -1
- package/dist/reasoning-strip.js.map +0 -1
- package/dist/render-utils.d.ts.map +0 -1
- package/dist/render-utils.js.map +0 -1
- package/dist/render.d.ts +0 -24
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -592
- package/dist/render.js.map +0 -1
- package/dist/runner-events.d.ts.map +0 -1
- package/dist/runner-events.js.map +0 -1
- package/dist/scramble.d.ts +0 -171
- package/dist/scramble.d.ts.map +0 -1
- package/dist/scramble.js +0 -2261
- package/dist/scramble.js.map +0 -1
- package/dist/session-mode.d.ts.map +0 -1
- package/dist/session-mode.js.map +0 -1
- package/dist/settings-resolver.d.ts.map +0 -1
- package/dist/settings-resolver.js +0 -148
- package/dist/settings-resolver.js.map +0 -1
- package/dist/single-select-layout.d.ts +0 -20
- package/dist/single-select-layout.d.ts.map +0 -1
- package/dist/single-select-layout.js.map +0 -1
- package/dist/sliding-prompt.d.ts.map +0 -1
- package/dist/sliding-prompt.js.map +0 -1
- package/dist/snapshot.d.ts.map +0 -1
- package/dist/snapshot.js.map +0 -1
- package/dist/spec-mode.d.ts +0 -13
- package/dist/spec-mode.d.ts.map +0 -1
- package/dist/spec-mode.js +0 -90
- package/dist/spec-mode.js.map +0 -1
- package/dist/structured-output.d.ts.map +0 -1
- package/dist/structured-output.js.map +0 -1
- package/dist/timed-bash.d.ts.map +0 -1
- package/dist/timed-bash.js.map +0 -1
- package/dist/tool-utils.d.ts.map +0 -1
- package/dist/tool-utils.js.map +0 -1
- package/dist/transitions.d.ts.map +0 -1
- package/dist/transitions.js.map +0 -1
- package/dist/types.d.ts +0 -208
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/web-tool.d.ts.map +0 -1
- package/dist/web-tool.js.map +0 -1
- /package/dist/{agents.d.ts → core/agents.d.ts} +0 -0
- /package/dist/{depth.d.ts → core/depth.d.ts} +0 -0
- /package/dist/{transitions.d.ts → core/transitions.d.ts} +0 -0
- /package/dist/{notify-state.js → notify/notify-state.js} +0 -0
- /package/dist/{notify.d.ts → notify/notify.d.ts} +0 -0
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
import * as fs from "node:fs";
|
|
8
8
|
import * as os from "node:os";
|
|
9
9
|
import * as path from "node:path";
|
|
10
|
-
import { parseAgentSessionMode } from "
|
|
10
|
+
import { parseAgentSessionMode } from "../core/session-mode.js";
|
|
11
|
+
import { logWarn } from "./log.js";
|
|
11
12
|
const BUILTIN_FLOW_MODEL_CONFIGS = {
|
|
12
13
|
default: {},
|
|
13
14
|
};
|
|
@@ -81,13 +82,13 @@ function normalizeFailoverList(value, sourceLabel, strategyName, tier) {
|
|
|
81
82
|
if (value === undefined)
|
|
82
83
|
return undefined;
|
|
83
84
|
if (!Array.isArray(value)) {
|
|
84
|
-
|
|
85
|
+
logWarn(`[pi-agent-flow] Ignoring invalid ${sourceLabel}.flowModelConfigs.${strategyName}.${tier}.failover. Expected an array of strings.`);
|
|
85
86
|
return undefined;
|
|
86
87
|
}
|
|
87
88
|
const result = [];
|
|
88
89
|
for (const item of value) {
|
|
89
90
|
if (typeof item !== "string") {
|
|
90
|
-
|
|
91
|
+
logWarn(`[pi-agent-flow] Ignoring invalid failover entry in ${sourceLabel}.flowModelConfigs.${strategyName}.${tier}. Expected a string.`);
|
|
91
92
|
continue;
|
|
92
93
|
}
|
|
93
94
|
const normalized = item.trim();
|
|
@@ -104,18 +105,18 @@ function extractFlowModelConfigs(settings, sourceLabel) {
|
|
|
104
105
|
if (rawConfigs === undefined)
|
|
105
106
|
return {};
|
|
106
107
|
if (!isPlainObject(rawConfigs)) {
|
|
107
|
-
|
|
108
|
+
logWarn(`[pi-agent-flow] Ignoring invalid ${sourceLabel}.flowModelConfigs. Expected an object map of strategy names.`);
|
|
108
109
|
return {};
|
|
109
110
|
}
|
|
110
111
|
const result = {};
|
|
111
112
|
for (const [rawName, rawStrategy] of Object.entries(rawConfigs)) {
|
|
112
113
|
const name = rawName.trim();
|
|
113
114
|
if (!name) {
|
|
114
|
-
|
|
115
|
+
logWarn(`[pi-agent-flow] Ignoring empty strategy name in ${sourceLabel}.flowModelConfigs.`);
|
|
115
116
|
continue;
|
|
116
117
|
}
|
|
117
118
|
if (!isPlainObject(rawStrategy)) {
|
|
118
|
-
|
|
119
|
+
logWarn(`[pi-agent-flow] Ignoring invalid ${sourceLabel}.flowModelConfigs.${name}. Expected an object with lite/flash/full tiers.`);
|
|
119
120
|
continue;
|
|
120
121
|
}
|
|
121
122
|
const strategy = {};
|
|
@@ -124,7 +125,7 @@ function extractFlowModelConfigs(settings, sourceLabel) {
|
|
|
124
125
|
if (rawTier === undefined)
|
|
125
126
|
continue;
|
|
126
127
|
if (!isPlainObject(rawTier)) {
|
|
127
|
-
|
|
128
|
+
logWarn(`[pi-agent-flow] Ignoring invalid ${sourceLabel}.flowModelConfigs.${name}.${tier}. Expected { primary?: string, failover?: string[] }.`);
|
|
128
129
|
continue;
|
|
129
130
|
}
|
|
130
131
|
const tierConfig = {};
|
|
@@ -134,7 +135,7 @@ function extractFlowModelConfigs(settings, sourceLabel) {
|
|
|
134
135
|
tierConfig.primary = primary;
|
|
135
136
|
}
|
|
136
137
|
else if (rawTier.primary !== undefined) {
|
|
137
|
-
|
|
138
|
+
logWarn(`[pi-agent-flow] Ignoring invalid ${sourceLabel}.flowModelConfigs.${name}.${tier}.primary. Expected a string.`);
|
|
138
139
|
}
|
|
139
140
|
const failover = normalizeFailoverList(rawTier.failover, sourceLabel, name, tier);
|
|
140
141
|
if (failover !== undefined) {
|
|
@@ -171,6 +172,42 @@ function extractFlowSettings(settings) {
|
|
|
171
172
|
if (sessionMode !== undefined) {
|
|
172
173
|
result.sessionMode = sessionMode;
|
|
173
174
|
}
|
|
175
|
+
// Parse nested steering settings
|
|
176
|
+
if (isPlainObject(obj.steering)) {
|
|
177
|
+
const steering = {};
|
|
178
|
+
if (typeof obj.steering.enabled === "boolean") {
|
|
179
|
+
steering.enabled = obj.steering.enabled;
|
|
180
|
+
}
|
|
181
|
+
if (typeof obj.steering.customPrompt === "string") {
|
|
182
|
+
steering.customPrompt = obj.steering.customPrompt;
|
|
183
|
+
}
|
|
184
|
+
if (typeof obj.steering.strategicHint === "boolean") {
|
|
185
|
+
steering.strategicHint = obj.steering.strategicHint;
|
|
186
|
+
}
|
|
187
|
+
result.steering = steering;
|
|
188
|
+
}
|
|
189
|
+
// Parse nested animation settings
|
|
190
|
+
if (isPlainObject(obj.animation)) {
|
|
191
|
+
const animation = {};
|
|
192
|
+
if (typeof obj.animation.enabled === "boolean") {
|
|
193
|
+
animation.enabled = obj.animation.enabled;
|
|
194
|
+
}
|
|
195
|
+
if (typeof obj.animation.glitch === "boolean") {
|
|
196
|
+
animation.glitch = obj.animation.glitch;
|
|
197
|
+
}
|
|
198
|
+
result.animation = animation;
|
|
199
|
+
}
|
|
200
|
+
// Parse nested askUser settings
|
|
201
|
+
if (isPlainObject(obj.askUser)) {
|
|
202
|
+
const askUser = {};
|
|
203
|
+
if (typeof obj.askUser.enabled === "boolean") {
|
|
204
|
+
askUser.enabled = obj.askUser.enabled;
|
|
205
|
+
}
|
|
206
|
+
if (typeof obj.askUser.timeout === "number" && Number.isSafeInteger(obj.askUser.timeout) && obj.askUser.timeout >= 1) {
|
|
207
|
+
askUser.timeout = obj.askUser.timeout;
|
|
208
|
+
}
|
|
209
|
+
result.askUser = askUser;
|
|
210
|
+
}
|
|
174
211
|
return result;
|
|
175
212
|
}
|
|
176
213
|
function mergeFlowModelTierConfigs(base, override) {
|
|
@@ -215,6 +252,60 @@ export function loadFlowSettings(cwd) {
|
|
|
215
252
|
...projectFlowSettings,
|
|
216
253
|
};
|
|
217
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Atomically write a single flow setting to the project .pi/settings.json.
|
|
257
|
+
* Supports dot-notation keyPath like "steering.enabled" or "animation.glitch".
|
|
258
|
+
*/
|
|
259
|
+
export function writeFlowSetting(cwd, keyPath, value) {
|
|
260
|
+
const filePath = getProjectSettingsPath(cwd);
|
|
261
|
+
let settings = {};
|
|
262
|
+
if (fs.existsSync(filePath)) {
|
|
263
|
+
let parsed;
|
|
264
|
+
try {
|
|
265
|
+
parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
throw new Error(`Cannot update flow setting because ${filePath} contains invalid JSON.`);
|
|
269
|
+
}
|
|
270
|
+
if (!isPlainObject(parsed)) {
|
|
271
|
+
throw new Error(`Cannot update flow setting because ${filePath} must contain a JSON object.`);
|
|
272
|
+
}
|
|
273
|
+
settings = { ...parsed };
|
|
274
|
+
}
|
|
275
|
+
if (!settings.flowSettings || !isPlainObject(settings.flowSettings)) {
|
|
276
|
+
settings.flowSettings = {};
|
|
277
|
+
}
|
|
278
|
+
const flowSettings = settings.flowSettings;
|
|
279
|
+
if (!keyPath) {
|
|
280
|
+
// Reset the entire flowSettings object when keyPath is empty
|
|
281
|
+
const previous = { ...flowSettings };
|
|
282
|
+
settings.flowSettings = value;
|
|
283
|
+
const dir = path.dirname(filePath);
|
|
284
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
285
|
+
const tmpPath = path.join(dir, `.settings.json.${process.pid}.${Date.now()}.tmp`);
|
|
286
|
+
fs.writeFileSync(tmpPath, `${JSON.stringify(settings, null, 2)}\n`, "utf-8");
|
|
287
|
+
fs.renameSync(tmpPath, filePath);
|
|
288
|
+
return { path: filePath, previous };
|
|
289
|
+
}
|
|
290
|
+
const keys = keyPath.split(".");
|
|
291
|
+
let target = flowSettings;
|
|
292
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
293
|
+
const k = keys[i];
|
|
294
|
+
if (!target[k] || !isPlainObject(target[k])) {
|
|
295
|
+
target[k] = {};
|
|
296
|
+
}
|
|
297
|
+
target = target[k];
|
|
298
|
+
}
|
|
299
|
+
const leafKey = keys[keys.length - 1];
|
|
300
|
+
const previous = target[leafKey];
|
|
301
|
+
target[leafKey] = value;
|
|
302
|
+
const dir = path.dirname(filePath);
|
|
303
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
304
|
+
const tmpPath = path.join(dir, `.settings.json.${process.pid}.${Date.now()}.tmp`);
|
|
305
|
+
fs.writeFileSync(tmpPath, `${JSON.stringify(settings, null, 2)}\n`, "utf-8");
|
|
306
|
+
fs.renameSync(tmpPath, filePath);
|
|
307
|
+
return { path: filePath, previous };
|
|
308
|
+
}
|
|
218
309
|
export function selectFlowModelStrategy(configs, requestedName) {
|
|
219
310
|
const normalizedRequested = normalizeFlowModeName(requestedName) ?? "default";
|
|
220
311
|
const strategy = configs[normalizedRequested];
|
|
@@ -222,7 +313,7 @@ export function selectFlowModelStrategy(configs, requestedName) {
|
|
|
222
313
|
return { selectedName: normalizedRequested, configs, strategy };
|
|
223
314
|
}
|
|
224
315
|
if (normalizedRequested !== "default") {
|
|
225
|
-
|
|
316
|
+
logWarn(`[pi-agent-flow] Flow model config "${normalizedRequested}" not found. Falling back to "default".`);
|
|
226
317
|
}
|
|
227
318
|
return {
|
|
228
319
|
selectedName: "default",
|
|
@@ -293,4 +384,61 @@ export function formatFlowModelStrategy(modeName, strategy) {
|
|
|
293
384
|
}
|
|
294
385
|
return `mode: ${modeName} | ${parts.join(" - ")}`;
|
|
295
386
|
}
|
|
387
|
+
export function writeFlowModelConfig(cwd, strategyName, tier, updates) {
|
|
388
|
+
const filePath = getProjectSettingsPath(cwd);
|
|
389
|
+
let settings = {};
|
|
390
|
+
if (fs.existsSync(filePath)) {
|
|
391
|
+
let parsed;
|
|
392
|
+
try {
|
|
393
|
+
parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
394
|
+
}
|
|
395
|
+
catch (error) {
|
|
396
|
+
throw new Error(`Cannot update flow model config because ${filePath} contains invalid JSON.`);
|
|
397
|
+
}
|
|
398
|
+
if (!isPlainObject(parsed)) {
|
|
399
|
+
throw new Error(`Cannot update flow model config because ${filePath} must contain a JSON object.`);
|
|
400
|
+
}
|
|
401
|
+
settings = { ...parsed };
|
|
402
|
+
}
|
|
403
|
+
if (!settings.flowModelConfigs || !isPlainObject(settings.flowModelConfigs)) {
|
|
404
|
+
settings.flowModelConfigs = {};
|
|
405
|
+
}
|
|
406
|
+
const configs = settings.flowModelConfigs;
|
|
407
|
+
if (!configs[strategyName] || !isPlainObject(configs[strategyName])) {
|
|
408
|
+
configs[strategyName] = {};
|
|
409
|
+
}
|
|
410
|
+
const strategy = configs[strategyName];
|
|
411
|
+
if (!strategy[tier] || !isPlainObject(strategy[tier])) {
|
|
412
|
+
strategy[tier] = {};
|
|
413
|
+
}
|
|
414
|
+
const tierConfig = strategy[tier];
|
|
415
|
+
if (updates.primary !== undefined) {
|
|
416
|
+
if (updates.primary === null) {
|
|
417
|
+
delete tierConfig.primary;
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
tierConfig.primary = updates.primary;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
if (updates.failover !== undefined) {
|
|
424
|
+
if (updates.failover === null) {
|
|
425
|
+
delete tierConfig.failover;
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
tierConfig.failover = updates.failover;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
if (Object.keys(tierConfig).length === 0) {
|
|
432
|
+
delete strategy[tier];
|
|
433
|
+
}
|
|
434
|
+
if (Object.keys(strategy).length === 0) {
|
|
435
|
+
delete configs[strategyName];
|
|
436
|
+
}
|
|
437
|
+
const dir = path.dirname(filePath);
|
|
438
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
439
|
+
const tmpPath = path.join(dir, `.settings.json.${process.pid}.${Date.now()}.tmp`);
|
|
440
|
+
fs.writeFileSync(tmpPath, `${JSON.stringify(settings, null, 2)}
|
|
441
|
+
`, "utf-8");
|
|
442
|
+
fs.renameSync(tmpPath, filePath);
|
|
443
|
+
}
|
|
296
444
|
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI-safe logging for pi-agent-flow.
|
|
3
|
+
*
|
|
4
|
+
* During flow execution, the TUI redraws the entire screen on every frame.
|
|
5
|
+
* Any console.warn/console.error output to stderr briefly flashes on-screen
|
|
6
|
+
* before being overwritten, causing the "text appears then disappears" glitch.
|
|
7
|
+
*
|
|
8
|
+
* This module provides a `logWarn` / `logError` pair that:
|
|
9
|
+
* - Writes to a file when the TUI is active (env PI_TUI_MODE=1 or when
|
|
10
|
+
* the process is a child flow at depth > 0).
|
|
11
|
+
* - Falls back to console.warn/console.error when not in a TUI context
|
|
12
|
+
* (e.g. test runners, direct CLI invocations).
|
|
13
|
+
*
|
|
14
|
+
* The log file path is `PI_FLOW_LOG_FILE` or `${TMPDIR}/pi-agent-flow.log`
|
|
15
|
+
* by default. Set `PI_FLOW_LOG_FILE=/dev/null` to suppress entirely.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Log a warning message. When TUI is active, writes to the log file
|
|
19
|
+
* instead of stderr to avoid on-screen flashing.
|
|
20
|
+
*/
|
|
21
|
+
export declare function logWarn(message: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Log an error message. When TUI is active, writes to the log file
|
|
24
|
+
* instead of stderr to avoid on-screen flashing.
|
|
25
|
+
*/
|
|
26
|
+
export declare function logError(message: string): void;
|
|
27
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/config/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAuDH;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAO7C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAO9C"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI-safe logging for pi-agent-flow.
|
|
3
|
+
*
|
|
4
|
+
* During flow execution, the TUI redraws the entire screen on every frame.
|
|
5
|
+
* Any console.warn/console.error output to stderr briefly flashes on-screen
|
|
6
|
+
* before being overwritten, causing the "text appears then disappears" glitch.
|
|
7
|
+
*
|
|
8
|
+
* This module provides a `logWarn` / `logError` pair that:
|
|
9
|
+
* - Writes to a file when the TUI is active (env PI_TUI_MODE=1 or when
|
|
10
|
+
* the process is a child flow at depth > 0).
|
|
11
|
+
* - Falls back to console.warn/console.error when not in a TUI context
|
|
12
|
+
* (e.g. test runners, direct CLI invocations).
|
|
13
|
+
*
|
|
14
|
+
* The log file path is `PI_FLOW_LOG_FILE` or `${TMPDIR}/pi-agent-flow.log`
|
|
15
|
+
* by default. Set `PI_FLOW_LOG_FILE=/dev/null` to suppress entirely.
|
|
16
|
+
*/
|
|
17
|
+
import * as fs from "node:fs";
|
|
18
|
+
import * as os from "node:os";
|
|
19
|
+
import * as path from "node:path";
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Config
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
const TUI_MODE_ENV = "PI_TUI_MODE";
|
|
24
|
+
const LOG_FILE_ENV = "PI_FLOW_LOG_FILE";
|
|
25
|
+
function getLogFilePath() {
|
|
26
|
+
const env = process.env[LOG_FILE_ENV];
|
|
27
|
+
if (env)
|
|
28
|
+
return env;
|
|
29
|
+
return path.join(os.tmpdir(), "pi-agent-flow.log");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Determine whether the process is running inside a TUI that would be
|
|
33
|
+
* disrupted by stderr output. We consider it TUI-active when:
|
|
34
|
+
* 1. The PI_TUI_MODE env var is set to "1"
|
|
35
|
+
* 2. OR the process is a child flow (depth > 0) — child flows always run
|
|
36
|
+
* under the parent's TUI, so stderr would flash.
|
|
37
|
+
* 3. OR stdout is a TTY (heuristic — terminal apps usually are TUIs).
|
|
38
|
+
*/
|
|
39
|
+
function isTuiActive() {
|
|
40
|
+
const envMode = process.env[TUI_MODE_ENV];
|
|
41
|
+
if (envMode === "1" || envMode === "true")
|
|
42
|
+
return true;
|
|
43
|
+
const flowDepth = process.env.PI_FLOW_DEPTH;
|
|
44
|
+
if (flowDepth && parseInt(flowDepth, 10) > 0)
|
|
45
|
+
return true;
|
|
46
|
+
if (process.stdout.isTTY)
|
|
47
|
+
return true;
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
// Cache the TUI check and log path for the process lifetime
|
|
51
|
+
let _isTui;
|
|
52
|
+
let _logPath;
|
|
53
|
+
function initLogging() {
|
|
54
|
+
_isTui = isTuiActive();
|
|
55
|
+
if (_logPath === undefined) {
|
|
56
|
+
_logPath = getLogFilePath();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Public API
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
/**
|
|
63
|
+
* Log a warning message. When TUI is active, writes to the log file
|
|
64
|
+
* instead of stderr to avoid on-screen flashing.
|
|
65
|
+
*/
|
|
66
|
+
export function logWarn(message) {
|
|
67
|
+
initLogging();
|
|
68
|
+
if (_isTui) {
|
|
69
|
+
writeToLogFile("WARN", message);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.warn(message);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Log an error message. When TUI is active, writes to the log file
|
|
77
|
+
* instead of stderr to avoid on-screen flashing.
|
|
78
|
+
*/
|
|
79
|
+
export function logError(message) {
|
|
80
|
+
initLogging();
|
|
81
|
+
if (_isTui) {
|
|
82
|
+
writeToLogFile("ERROR", message);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.error(message);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// File writer
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
function writeToLogFile(level, message) {
|
|
92
|
+
if (!_logPath || _logPath === "/dev/null")
|
|
93
|
+
return;
|
|
94
|
+
try {
|
|
95
|
+
const ts = new Date().toISOString();
|
|
96
|
+
const line = `[${ts}] [${level}] ${message}\n`;
|
|
97
|
+
fs.appendFileSync(_logPath, line, { encoding: "utf-8" });
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Best-effort: if we can't write to the log, silently drop it.
|
|
101
|
+
// Do NOT fall back to console.error — that would re-introduce the flash.
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/config/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAGxC,SAAS,cAAc;IACtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC5C,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1D,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,KAAK,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,IAAI,MAA2B,CAAC;AAChC,IAAI,QAA4B,CAAC;AAEjC,SAAS,WAAW;IACnB,MAAM,GAAG,WAAW,EAAE,CAAC;IACvB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,GAAG,cAAc,EAAE,CAAC;IAC7B,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe;IACtC,WAAW,EAAE,CAAC;IACd,IAAI,MAAM,EAAE,CAAC;QACZ,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACvC,WAAW,EAAE,CAAC;IACd,IAAI,MAAM,EAAE,CAAC;QACZ,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,SAAS,cAAc,CAAC,KAAa,EAAE,OAAe;IACrD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO;IAClD,IAAI,CAAC;QACJ,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,EAAE,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC;QAC/C,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACR,+DAA+D;QAC/D,yEAAyE;IAC1E,CAAC;AACF,CAAC"}
|
|
@@ -4,14 +4,21 @@
|
|
|
4
4
|
* Extracted from index.ts for single-responsibility and testability.
|
|
5
5
|
*/
|
|
6
6
|
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
7
|
-
import { type FlowConfig } from "
|
|
7
|
+
import { type FlowConfig } from "../core/agents.js";
|
|
8
8
|
import { type LoadedFlowModelConfigs } from "./config.js";
|
|
9
|
-
import { type AgentSessionMode } from "
|
|
9
|
+
import { type AgentSessionMode } from "../core/session-mode.js";
|
|
10
10
|
export interface ResolvedSettings {
|
|
11
11
|
toolOptimize: boolean;
|
|
12
12
|
structuredOutput: boolean;
|
|
13
13
|
maxConcurrency: number;
|
|
14
14
|
defaultSessionMode: AgentSessionMode;
|
|
15
|
+
steeringEnabled: boolean;
|
|
16
|
+
steeringCustomPrompt: string | undefined;
|
|
17
|
+
steeringStrategicHint: boolean;
|
|
18
|
+
animationEnabled: boolean;
|
|
19
|
+
animationGlitch: boolean;
|
|
20
|
+
askUserEnabled: boolean;
|
|
21
|
+
askUserTimeout: number;
|
|
15
22
|
discoveredFlows: FlowConfig[];
|
|
16
23
|
loadedFlowModelConfigs: LoadedFlowModelConfigs;
|
|
17
24
|
activeRuntimeFlowMode: string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-resolver.d.ts","sourceRoot":"","sources":["../../src/config/settings-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAQN,KAAK,sBAAsB,EAC3B,MAAM,aAAa,CAAC;AAIrB,OAAO,EAIN,KAAK,gBAAgB,EACrB,MAAM,yBAAyB,CAAC;AAYjC,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC9B,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,MAAM,GACT,gBAAgB,GAAG;IAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAiPvD"}
|