zcode-acp-server 0.52.0 → 0.53.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 +1 -1
- package/dist/code-fingerprint.json +2 -2
- package/dist/config/user-config.d.ts +14 -0
- package/dist/config/user-config.d.ts.map +1 -1
- package/dist/config/user-config.js +23 -1
- package/dist/config/user-config.js.map +1 -1
- package/dist/config/workflow-gate.d.ts +82 -13
- package/dist/config/workflow-gate.d.ts.map +1 -1
- package/dist/config/workflow-gate.js +119 -27
- package/dist/config/workflow-gate.js.map +1 -1
- package/dist/handlers/sandbox-allow.d.ts.map +1 -1
- package/dist/handlers/sandbox-allow.js +11 -0
- package/dist/handlers/sandbox-allow.js.map +1 -1
- package/dist/handlers/server-requests.d.ts.map +1 -1
- package/dist/handlers/server-requests.js +7 -0
- package/dist/handlers/server-requests.js.map +1 -1
- package/dist/handlers/session.d.ts.map +1 -1
- package/dist/handlers/session.js +30 -19
- package/dist/handlers/session.js.map +1 -1
- package/dist/handlers/slash.d.ts.map +1 -1
- package/dist/handlers/slash.js +7 -6
- package/dist/handlers/slash.js.map +1 -1
- package/dist/push/config.d.ts +10 -0
- package/dist/push/config.d.ts.map +1 -1
- package/dist/push/config.js +6 -0
- package/dist/push/config.js.map +1 -1
- package/dist/push/push.d.ts +14 -1
- package/dist/push/push.d.ts.map +1 -1
- package/dist/push/push.js +84 -16
- package/dist/push/push.js.map +1 -1
- package/dist/remote/endpoint.d.ts.map +1 -1
- package/dist/remote/endpoint.js +5 -0
- package/dist/remote/endpoint.js.map +1 -1
- package/dist/remote/hub-server.d.ts.map +1 -1
- package/dist/remote/hub-server.js +44 -7
- package/dist/remote/hub-server.js.map +1 -1
- package/dist/remote/session-delete-endpoint.d.ts +21 -0
- package/dist/remote/session-delete-endpoint.d.ts.map +1 -0
- package/dist/remote/session-delete-endpoint.js +76 -0
- package/dist/remote/session-delete-endpoint.js.map +1 -0
- package/dist/remote/session-list-endpoint.d.ts +7 -0
- package/dist/remote/session-list-endpoint.d.ts.map +1 -1
- package/dist/remote/session-list-endpoint.js +19 -10
- package/dist/remote/session-list-endpoint.js.map +1 -1
- package/dist/remote/settings-endpoint.d.ts.map +1 -1
- package/dist/remote/settings-endpoint.js +49 -1
- package/dist/remote/settings-endpoint.js.map +1 -1
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +22 -8
- package/dist/server.js.map +1 -1
- package/dist/settings/workflow.d.ts +29 -10
- package/dist/settings/workflow.d.ts.map +1 -1
- package/dist/settings/workflow.js +58 -12
- package/dist/settings/workflow.js.map +1 -1
- package/dist/tasks-index.d.ts +38 -0
- package/dist/tasks-index.d.ts.map +1 -1
- package/dist/tasks-index.js +141 -4
- package/dist/tasks-index.js.map +1 -1
- package/docs/REMOTE-CLIENTS.md +42 -0
- package/docs/REMOTE.md +17 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -285,7 +285,7 @@ Thanks to everyone who has contributed (updated automatically from the
|
|
|
285
285
|
<a href="https://github.com/william0wang/zcode-acp/graphs/contributors">
|
|
286
286
|
<!-- release-please re-stamps &v= on every release: the new URL busts the
|
|
287
287
|
contrib.rocks and GitHub camo image caches. -->
|
|
288
|
-
<img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.
|
|
288
|
+
<img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.53.0" alt="Contributors" /> <!-- x-release-please-version -->
|
|
289
289
|
</a>
|
|
290
290
|
|
|
291
291
|
## Related Projects
|
|
@@ -122,6 +122,8 @@ export interface PushNotifyUserConfig {
|
|
|
122
122
|
run?: boolean;
|
|
123
123
|
task?: boolean;
|
|
124
124
|
compact?: boolean;
|
|
125
|
+
/** Pending interaction asks (permission/question): zero-client push + unanswered watchdog. */
|
|
126
|
+
ask?: boolean;
|
|
125
127
|
}
|
|
126
128
|
/** The `push` section: offline WeCom notifications (push-backend-requirements §8). */
|
|
127
129
|
export interface PushUserConfig {
|
|
@@ -136,9 +138,20 @@ export interface PushUserConfig {
|
|
|
136
138
|
contentDetail?: "full" | "minimal";
|
|
137
139
|
/** Settled-push quiet window in ms after a user prompt/cancel (0 = always push). */
|
|
138
140
|
quietMs?: number;
|
|
141
|
+
/** Unanswered-ask watchdog delay in ms (0 = push at dispatch time; default 120s). */
|
|
142
|
+
askDelayMs?: number;
|
|
139
143
|
relay?: PushRelayUserConfig;
|
|
140
144
|
notify?: PushNotifyUserConfig;
|
|
141
145
|
}
|
|
146
|
+
/** The `workflow` section: dynamic-workflow gate override (the App settings toggle). */
|
|
147
|
+
export interface WorkflowUserConfig {
|
|
148
|
+
/**
|
|
149
|
+
* Local override of the dynamic-workflow remote gate. Domain mirrors upstream
|
|
150
|
+
* `ZCODE_DYNAMIC_WORKFLOW_MODE` (shared/dynamic-workflow-feature.ts); absent
|
|
151
|
+
* = follow the remote verdict. Written via PUT /settings/workflow-gate.
|
|
152
|
+
*/
|
|
153
|
+
mode?: "disabled" | "onDemand" | "alwaysOn";
|
|
154
|
+
}
|
|
142
155
|
export interface UserConfig {
|
|
143
156
|
remote?: RemoteUserConfig;
|
|
144
157
|
quota?: QuotaUserConfig;
|
|
@@ -153,6 +166,7 @@ export interface UserConfig {
|
|
|
153
166
|
sandbox?: SandboxUserConfig;
|
|
154
167
|
tui?: TuiUserConfig;
|
|
155
168
|
push?: PushUserConfig;
|
|
169
|
+
workflow?: WorkflowUserConfig;
|
|
156
170
|
}
|
|
157
171
|
/** Resolve the config file path: $XDG_CONFIG_HOME/zcode-acp or ~/.config/zcode-acp. */
|
|
158
172
|
export declare function userConfigPath(env?: NodeJS.ProcessEnv): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config.d.ts","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAqBH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;mFAC+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IACpC,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"user-config.d.ts","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,13 @@ function isPlainObject(v) {
|
|
|
59
59
|
}
|
|
60
60
|
/** The session modes the backend's own mode select offers (mirrors CONFIG_META). */
|
|
61
61
|
const SESSION_MODES = new Set(["plan", "build", "edit", "yolo", "auto"]);
|
|
62
|
+
/**
|
|
63
|
+
* Dynamic-workflow gate override domain — mirrors upstream DYNAMIC_WORKFLOW_MODES
|
|
64
|
+
* (config/workflow-gate.ts). Duplicated instead of imported: user-config must
|
|
65
|
+
* not import utils-adjacent modules (see the warn() note above — the import
|
|
66
|
+
* graph stays acyclic by hand).
|
|
67
|
+
*/
|
|
68
|
+
const WORKFLOW_MODES = new Set(["disabled", "onDemand", "alwaysOn"]);
|
|
62
69
|
/** Normalized language pick: "zh*"/"en*" prefixes accepted, else undefined. */
|
|
63
70
|
function parseLang(v) {
|
|
64
71
|
if (typeof v !== "string")
|
|
@@ -205,6 +212,18 @@ export function loadUserConfig(env = process.env) {
|
|
|
205
212
|
warn(`config: ${label}.stats=${JSON.stringify(stats)} is not a string — ignoring`);
|
|
206
213
|
return {};
|
|
207
214
|
});
|
|
215
|
+
result.workflow = parseSection(parsed, "workflow", file, (body, label) => {
|
|
216
|
+
const w = {};
|
|
217
|
+
const mode = body["mode"];
|
|
218
|
+
if (mode !== undefined) {
|
|
219
|
+
const m = typeof mode === "string" ? mode.trim() : "";
|
|
220
|
+
if (WORKFLOW_MODES.has(m))
|
|
221
|
+
w.mode = m;
|
|
222
|
+
else
|
|
223
|
+
warn(`config: ${label}.mode=${JSON.stringify(mode)} is not a workflow mode — ignoring`);
|
|
224
|
+
}
|
|
225
|
+
return w;
|
|
226
|
+
});
|
|
208
227
|
result.push = parseSection(parsed, "push", file, (body, label) => {
|
|
209
228
|
const p = {};
|
|
210
229
|
if (body["enabled"] === undefined) {
|
|
@@ -234,6 +253,9 @@ export function loadUserConfig(env = process.env) {
|
|
|
234
253
|
const quietMs = parseIntField(body["quietMs"], 0, `${label}.quietMs`, file);
|
|
235
254
|
if (quietMs !== undefined)
|
|
236
255
|
p.quietMs = quietMs;
|
|
256
|
+
const askDelayMs = parseIntField(body["askDelayMs"], 0, `${label}.askDelayMs`, file);
|
|
257
|
+
if (askDelayMs !== undefined)
|
|
258
|
+
p.askDelayMs = askDelayMs;
|
|
237
259
|
const relay = body["relay"];
|
|
238
260
|
if (relay !== undefined) {
|
|
239
261
|
if (!isPlainObject(relay)) {
|
|
@@ -257,7 +279,7 @@ export function loadUserConfig(env = process.env) {
|
|
|
257
279
|
}
|
|
258
280
|
else {
|
|
259
281
|
const n = {};
|
|
260
|
-
for (const key of ["turn", "goal", "run", "task", "compact"]) {
|
|
282
|
+
for (const key of ["turn", "goal", "run", "task", "compact", "ask"]) {
|
|
261
283
|
const v = notify[key];
|
|
262
284
|
if (v === undefined)
|
|
263
285
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,36 +3,75 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The desktop's Host utility process decides whether the dynamic-workflow
|
|
5
5
|
* feature (workflow tools, `/workflow` expansion) is available from an
|
|
6
|
-
* ANONYMOUS remote config endpoint
|
|
7
|
-
*
|
|
8
|
-
* on purpose). A headless app-server never resolves the gate itself
|
|
9
|
-
* (fail-closed false), so the bridge plays the Host:
|
|
6
|
+
* ANONYMOUS remote config endpoint; a headless app-server never resolves the
|
|
7
|
+
* gate itself (fail-closed false), so the bridge plays the Host:
|
|
10
8
|
*
|
|
11
9
|
* GET {origin}/api/v1/client/configs?app_version=&platform=
|
|
12
10
|
* → data.configs.dynamicWorkflow.mode ∈ disabled|onDemand|alwaysOn
|
|
13
11
|
* → enabled = mode !== "disabled"
|
|
14
12
|
*
|
|
13
|
+
* LOCAL OVERRIDE (upstream headless-host tier): upstream's shared contract
|
|
14
|
+
* (dynamic-workflow-feature.ts) defines a three-tier `ZCODE_DYNAMIC_WORKFLOW_MODE`
|
|
15
|
+
* env policy, and the tier for Hosts WITHOUT a desktop main — the bridge's
|
|
16
|
+
* exact position — reads the process env DIRECTLY as an ops/developer setting,
|
|
17
|
+
* short-circuiting before any network action. The bridge adds a config-file
|
|
18
|
+
* layer on top (workflow.mode in ~/.config/zcode-acp/config.json — the App
|
|
19
|
+
* settings toggle writes it via PUT /settings/workflow-gate) with the repo's
|
|
20
|
+
* usual precedence: config file > env > remote verdict.
|
|
21
|
+
*
|
|
15
22
|
* Fail-closed everywhere: a missing key, an unknown value, an HTTP error, a
|
|
16
23
|
* fetch throw, or the 6s timeout all read as disabled — a gray-flag read must
|
|
17
24
|
* never block ordinary chat (upstream returns the default verdict on failure
|
|
18
|
-
* for the same reason).
|
|
25
|
+
* for the same reason). "Key absent" and "fetch failed" stay distinguishable
|
|
26
|
+
* for observability (mode "disabled" vs "unknown", both source "default") —
|
|
27
|
+
* the upstream contract folds both to disabled, the split only feeds logs and
|
|
28
|
+
* the 403 error body. The REMOTE verdict is resolved ONCE per backend spawn
|
|
19
29
|
* (server.backendWorkflowGate, src/server.ts ensureBackend) and pinned to
|
|
20
|
-
* that backend's lifetime;
|
|
21
|
-
*
|
|
30
|
+
* that backend's lifetime; the override is re-read LIVE on every consumption
|
|
31
|
+
* (the user-config convention), so an App toggle flip takes effect on the
|
|
32
|
+
* next gate read without restarting the bridge.
|
|
33
|
+
*/
|
|
34
|
+
/** Remote verdict vocabulary (upstream DYNAMIC_WORKFLOW_MODES). */
|
|
35
|
+
export declare const DYNAMIC_WORKFLOW_MODES: readonly ["disabled", "onDemand", "alwaysOn"];
|
|
36
|
+
export type DynamicWorkflowMode = (typeof DYNAMIC_WORKFLOW_MODES)[number];
|
|
37
|
+
/**
|
|
38
|
+
* Upstream-parity normalization (`normalizeDynamicWorkflowMode`): trim + domain
|
|
39
|
+
* check; undefined for anything else. Invalid values are DROPPED, never fatal.
|
|
22
40
|
*/
|
|
41
|
+
export declare function normalizeWorkflowMode(value: unknown): DynamicWorkflowMode | undefined;
|
|
23
42
|
export interface WorkflowGate {
|
|
24
|
-
mode:
|
|
43
|
+
mode: DynamicWorkflowMode | "unknown";
|
|
25
44
|
/** mode !== "disabled" — the consumption-side fold (onDemand ≡ alwaysOn today). */
|
|
26
45
|
enabled: boolean;
|
|
27
|
-
/**
|
|
28
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Observability only (upstream vocabulary): "override" (local switch) vs
|
|
48
|
+
* "remote" verdict vs the fail-closed "default".
|
|
49
|
+
*/
|
|
50
|
+
source: "remote" | "override" | "default";
|
|
29
51
|
}
|
|
30
52
|
/**
|
|
31
|
-
* Resolve the
|
|
32
|
-
* every failure shape returns
|
|
33
|
-
* so tests run without network.
|
|
53
|
+
* Resolve the REMOTE verdict from the anonymous client-config endpoint. NEVER
|
|
54
|
+
* throws — every failure shape returns a disabled verdict. `fetchImpl` is
|
|
55
|
+
* injectable so tests run without network. The LOCAL override is layered on
|
|
56
|
+
* top by {@link workflowOverrideNow} / the effective-* folds, not here.
|
|
34
57
|
*/
|
|
35
58
|
export declare function resolveWorkflowGate(fetchImpl?: typeof fetch): Promise<WorkflowGate>;
|
|
59
|
+
/** The override verdict: always a CONCRETE mode (never "unknown"), source fixed. */
|
|
60
|
+
export interface WorkflowOverrideGate {
|
|
61
|
+
mode: DynamicWorkflowMode;
|
|
62
|
+
enabled: boolean;
|
|
63
|
+
source: "override";
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The LOCAL switch, re-read LIVE on every call: config-file `workflow.mode`
|
|
67
|
+
* (the App settings toggle) over the upstream env var. Live reads are the
|
|
68
|
+
* user-config convention — a flip takes effect on the next gate consumption
|
|
69
|
+
* without restarting the bridge. Returns null when no override is set (the
|
|
70
|
+
* caller falls back to the pinned remote verdict). An invalid env value is
|
|
71
|
+
* silently dropped (upstream normalize semantics); an invalid file value never
|
|
72
|
+
* reaches here (the config loader already warned and ignored it).
|
|
73
|
+
*/
|
|
74
|
+
export declare function workflowOverrideNow(env?: NodeJS.ProcessEnv): WorkflowOverrideGate | null;
|
|
36
75
|
/** The gate-bearing half of ZcodeAcpServer (structural, for tests). */
|
|
37
76
|
export interface WorkflowGateHolder {
|
|
38
77
|
backendWorkflowGate: Promise<WorkflowGate> | null;
|
|
@@ -60,6 +99,19 @@ export declare function rememberGate(promise: Promise<WorkflowGate>, value: Work
|
|
|
60
99
|
* went through it.
|
|
61
100
|
*/
|
|
62
101
|
export declare function workflowGateNow(server: WorkflowGateHolder): WorkflowGate | null;
|
|
102
|
+
/**
|
|
103
|
+
* Synchronous EFFECTIVE verdict: local override (live) first, else the pinned
|
|
104
|
+
* remote verdict. null while the remote fetch is pending and no override is
|
|
105
|
+
* set (callers treat null as disabled — fail-closed).
|
|
106
|
+
*/
|
|
107
|
+
export declare function effectiveWorkflowGateNow(server: WorkflowGateHolder): WorkflowGate | null;
|
|
108
|
+
/**
|
|
109
|
+
* Awaited EFFECTIVE verdict: a set override short-circuits WITHOUT touching
|
|
110
|
+
* the backend or the network (upstream folds the override ahead of every
|
|
111
|
+
* network action — a cold App-only bridge answers the switch alone);
|
|
112
|
+
* otherwise the pinned remote verdict (null when none was ever started).
|
|
113
|
+
*/
|
|
114
|
+
export declare function effectiveWorkflowGate(server: WorkflowGateHolder): Promise<WorkflowGate | null>;
|
|
63
115
|
/**
|
|
64
116
|
* Send-time filter for the advertised `/` menu: the workflow commands ride the
|
|
65
117
|
* static list but must only reach clients when the gate is enabled (the list is
|
|
@@ -94,4 +146,21 @@ export interface WorkflowPolicyTarget {
|
|
|
94
146
|
* an older backend.
|
|
95
147
|
*/
|
|
96
148
|
export declare function pushDynamicWorkflowPolicy(backend: WorkflowPolicyTarget, nextId: () => number, cwd: string): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* The policy-push half of the server (structural, for tests): the live backend
|
|
151
|
+
* plus the per-generation "already pushed" marker, reset at every spawn.
|
|
152
|
+
*/
|
|
153
|
+
export interface WorkflowPolicyServer extends WorkflowGateHolder {
|
|
154
|
+
readonly backend: WorkflowPolicyTarget | null;
|
|
155
|
+
workflowPolicyPushed: boolean;
|
|
156
|
+
nextId(): number;
|
|
157
|
+
projectCwd(): string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Flip-aware second enable channel: the spawn-time push only covers a backend
|
|
161
|
+
* born under an ENABLED verdict; a local override flipped on later (the App
|
|
162
|
+
* settings toggle) must still reach the backend process. Once per backend
|
|
163
|
+
* generation — the boolean check keeps the per-create/resume call site free.
|
|
164
|
+
*/
|
|
165
|
+
export declare function ensureWorkflowPolicyPushed(server: WorkflowPolicyServer): void;
|
|
97
166
|
//# sourceMappingURL=workflow-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-gate.d.ts","sourceRoot":"","sources":["../../src/config/workflow-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflow-gate.d.ts","sourceRoot":"","sources":["../../src/config/workflow-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,29 +3,64 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The desktop's Host utility process decides whether the dynamic-workflow
|
|
5
5
|
* feature (workflow tools, `/workflow` expansion) is available from an
|
|
6
|
-
* ANONYMOUS remote config endpoint
|
|
7
|
-
*
|
|
8
|
-
* on purpose). A headless app-server never resolves the gate itself
|
|
9
|
-
* (fail-closed false), so the bridge plays the Host:
|
|
6
|
+
* ANONYMOUS remote config endpoint; a headless app-server never resolves the
|
|
7
|
+
* gate itself (fail-closed false), so the bridge plays the Host:
|
|
10
8
|
*
|
|
11
9
|
* GET {origin}/api/v1/client/configs?app_version=&platform=
|
|
12
10
|
* → data.configs.dynamicWorkflow.mode ∈ disabled|onDemand|alwaysOn
|
|
13
11
|
* → enabled = mode !== "disabled"
|
|
14
12
|
*
|
|
13
|
+
* LOCAL OVERRIDE (upstream headless-host tier): upstream's shared contract
|
|
14
|
+
* (dynamic-workflow-feature.ts) defines a three-tier `ZCODE_DYNAMIC_WORKFLOW_MODE`
|
|
15
|
+
* env policy, and the tier for Hosts WITHOUT a desktop main — the bridge's
|
|
16
|
+
* exact position — reads the process env DIRECTLY as an ops/developer setting,
|
|
17
|
+
* short-circuiting before any network action. The bridge adds a config-file
|
|
18
|
+
* layer on top (workflow.mode in ~/.config/zcode-acp/config.json — the App
|
|
19
|
+
* settings toggle writes it via PUT /settings/workflow-gate) with the repo's
|
|
20
|
+
* usual precedence: config file > env > remote verdict.
|
|
21
|
+
*
|
|
15
22
|
* Fail-closed everywhere: a missing key, an unknown value, an HTTP error, a
|
|
16
23
|
* fetch throw, or the 6s timeout all read as disabled — a gray-flag read must
|
|
17
24
|
* never block ordinary chat (upstream returns the default verdict on failure
|
|
18
|
-
* for the same reason).
|
|
25
|
+
* for the same reason). "Key absent" and "fetch failed" stay distinguishable
|
|
26
|
+
* for observability (mode "disabled" vs "unknown", both source "default") —
|
|
27
|
+
* the upstream contract folds both to disabled, the split only feeds logs and
|
|
28
|
+
* the 403 error body. The REMOTE verdict is resolved ONCE per backend spawn
|
|
19
29
|
* (server.backendWorkflowGate, src/server.ts ensureBackend) and pinned to
|
|
20
|
-
* that backend's lifetime;
|
|
21
|
-
*
|
|
30
|
+
* that backend's lifetime; the override is re-read LIVE on every consumption
|
|
31
|
+
* (the user-config convention), so an App toggle flip takes effect on the
|
|
32
|
+
* next gate read without restarting the bridge.
|
|
22
33
|
*/
|
|
23
34
|
import { arch, platform } from "node:os";
|
|
35
|
+
import { loadUserConfig } from "./user-config.js";
|
|
24
36
|
import { AGENT_INFO, log } from "../utils.js";
|
|
25
37
|
/** Remote verdict vocabulary (upstream DYNAMIC_WORKFLOW_MODES). */
|
|
26
|
-
const DYNAMIC_WORKFLOW_MODES = ["disabled", "onDemand", "alwaysOn"];
|
|
27
|
-
/**
|
|
28
|
-
|
|
38
|
+
export const DYNAMIC_WORKFLOW_MODES = ["disabled", "onDemand", "alwaysOn"];
|
|
39
|
+
/**
|
|
40
|
+
* Upstream-parity normalization (`normalizeDynamicWorkflowMode`): trim + domain
|
|
41
|
+
* check; undefined for anything else. Invalid values are DROPPED, never fatal.
|
|
42
|
+
*/
|
|
43
|
+
export function normalizeWorkflowMode(value) {
|
|
44
|
+
if (typeof value !== "string")
|
|
45
|
+
return undefined;
|
|
46
|
+
const trimmed = value.trim();
|
|
47
|
+
return DYNAMIC_WORKFLOW_MODES.includes(trimmed)
|
|
48
|
+
? trimmed
|
|
49
|
+
: undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The upstream fold for "server answered but the key is absent/invalid": a
|
|
53
|
+
* plain disabled verdict — "服务端撤掉 key 等于关闭" (dynamic-workflow-feature.ts),
|
|
54
|
+
* not a failure.
|
|
55
|
+
*/
|
|
56
|
+
const GATE_KEY_ABSENT = { mode: "disabled", enabled: false, source: "default" };
|
|
57
|
+
/**
|
|
58
|
+
* Bridge-only split: a fetch that never produced a verdict (HTTP error, throw,
|
|
59
|
+
* timeout, invalid envelope) is UNRESOLVED, not "server said off" — the 403
|
|
60
|
+
* body and /settings/all can tell "the feature was pulled" from "the config
|
|
61
|
+
* fetch is broken" (bug doc 2026-09-29 §5).
|
|
62
|
+
*/
|
|
63
|
+
const GATE_UNRESOLVED = { mode: "unknown", enabled: false, source: "default" };
|
|
29
64
|
/** API origin; overridable for testing and for a self-hosted gateway. */
|
|
30
65
|
function apiOrigin(env = process.env) {
|
|
31
66
|
return env.ZCODE_ENDPOINT_ORIGIN ?? env.ZCODE_BASE_URL ?? "https://zcode.z.ai";
|
|
@@ -33,9 +68,10 @@ function apiOrigin(env = process.env) {
|
|
|
33
68
|
const CLIENT_CONFIG_PATH = "/api/v1/client/configs";
|
|
34
69
|
const GATE_TIMEOUT_MS = 6000;
|
|
35
70
|
/**
|
|
36
|
-
* Resolve the
|
|
37
|
-
* every failure shape returns
|
|
38
|
-
* so tests run without network.
|
|
71
|
+
* Resolve the REMOTE verdict from the anonymous client-config endpoint. NEVER
|
|
72
|
+
* throws — every failure shape returns a disabled verdict. `fetchImpl` is
|
|
73
|
+
* injectable so tests run without network. The LOCAL override is layered on
|
|
74
|
+
* top by {@link workflowOverrideNow} / the effective-* folds, not here.
|
|
39
75
|
*/
|
|
40
76
|
export async function resolveWorkflowGate(fetchImpl = globalThis.fetch) {
|
|
41
77
|
try {
|
|
@@ -50,22 +86,36 @@ export async function resolveWorkflowGate(fetchImpl = globalThis.fetch) {
|
|
|
50
86
|
signal: AbortSignal.timeout(GATE_TIMEOUT_MS),
|
|
51
87
|
});
|
|
52
88
|
if (!resp.ok)
|
|
53
|
-
return
|
|
89
|
+
return GATE_UNRESOLVED;
|
|
54
90
|
const body = (await resp.json());
|
|
55
|
-
const mode = body?.data?.configs?.dynamicWorkflow?.mode;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
enabled: mode !== "disabled",
|
|
62
|
-
source: "remote",
|
|
63
|
-
};
|
|
91
|
+
const mode = normalizeWorkflowMode(body?.data?.configs?.dynamicWorkflow?.mode);
|
|
92
|
+
// Absent key or an invalid value are the SAME upstream fold: the server
|
|
93
|
+
// pulled the flag, the gate is off — not a fetch failure.
|
|
94
|
+
if (!mode)
|
|
95
|
+
return GATE_KEY_ABSENT;
|
|
96
|
+
return { mode, enabled: mode !== "disabled", source: "remote" };
|
|
64
97
|
}
|
|
65
98
|
catch {
|
|
66
|
-
return
|
|
99
|
+
return GATE_UNRESOLVED;
|
|
67
100
|
}
|
|
68
101
|
}
|
|
102
|
+
/** Upstream env (headless-host tier reads process env directly). */
|
|
103
|
+
const WORKFLOW_MODE_ENV = "ZCODE_DYNAMIC_WORKFLOW_MODE";
|
|
104
|
+
/**
|
|
105
|
+
* The LOCAL switch, re-read LIVE on every call: config-file `workflow.mode`
|
|
106
|
+
* (the App settings toggle) over the upstream env var. Live reads are the
|
|
107
|
+
* user-config convention — a flip takes effect on the next gate consumption
|
|
108
|
+
* without restarting the bridge. Returns null when no override is set (the
|
|
109
|
+
* caller falls back to the pinned remote verdict). An invalid env value is
|
|
110
|
+
* silently dropped (upstream normalize semantics); an invalid file value never
|
|
111
|
+
* reaches here (the config loader already warned and ignored it).
|
|
112
|
+
*/
|
|
113
|
+
export function workflowOverrideNow(env = process.env) {
|
|
114
|
+
const mode = loadUserConfig(env).workflow?.mode ?? normalizeWorkflowMode(env[WORKFLOW_MODE_ENV]);
|
|
115
|
+
if (!mode)
|
|
116
|
+
return null;
|
|
117
|
+
return { mode, enabled: mode !== "disabled", source: "override" };
|
|
118
|
+
}
|
|
69
119
|
/**
|
|
70
120
|
* Settled-gate snapshots, keyed by the (per-backend-generation) promise stored
|
|
71
121
|
* in `server.backendWorkflowGate`. A promise exposes no sync read, so the
|
|
@@ -82,7 +132,7 @@ const settledGates = new WeakMap();
|
|
|
82
132
|
* the moment it settles.
|
|
83
133
|
*/
|
|
84
134
|
export function captureGate(promise) {
|
|
85
|
-
void promise.then((gate) => settledGates.set(promise, gate), () => settledGates.set(promise,
|
|
135
|
+
void promise.then((gate) => settledGates.set(promise, gate), () => settledGates.set(promise, GATE_UNRESOLVED));
|
|
86
136
|
return promise;
|
|
87
137
|
}
|
|
88
138
|
/**
|
|
@@ -109,9 +159,34 @@ export function workflowGateNow(server) {
|
|
|
109
159
|
const settled = settledGates.get(promise);
|
|
110
160
|
if (settled)
|
|
111
161
|
return settled;
|
|
112
|
-
void promise.then((gate) => settledGates.set(promise, gate), () => settledGates.set(promise,
|
|
162
|
+
void promise.then((gate) => settledGates.set(promise, gate), () => settledGates.set(promise, GATE_UNRESOLVED));
|
|
113
163
|
return null;
|
|
114
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Synchronous EFFECTIVE verdict: local override (live) first, else the pinned
|
|
167
|
+
* remote verdict. null while the remote fetch is pending and no override is
|
|
168
|
+
* set (callers treat null as disabled — fail-closed).
|
|
169
|
+
*/
|
|
170
|
+
export function effectiveWorkflowGateNow(server) {
|
|
171
|
+
return workflowOverrideNow() ?? workflowGateNow(server);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Awaited EFFECTIVE verdict: a set override short-circuits WITHOUT touching
|
|
175
|
+
* the backend or the network (upstream folds the override ahead of every
|
|
176
|
+
* network action — a cold App-only bridge answers the switch alone);
|
|
177
|
+
* otherwise the pinned remote verdict (null when none was ever started).
|
|
178
|
+
*/
|
|
179
|
+
export async function effectiveWorkflowGate(server) {
|
|
180
|
+
const override = workflowOverrideNow();
|
|
181
|
+
if (override)
|
|
182
|
+
return override;
|
|
183
|
+
const promise = server.backendWorkflowGate;
|
|
184
|
+
if (!promise)
|
|
185
|
+
return null;
|
|
186
|
+
const gate = await promise;
|
|
187
|
+
rememberGate(promise, gate);
|
|
188
|
+
return gate;
|
|
189
|
+
}
|
|
115
190
|
/** Slash-command names advertised only while the workflow gate is enabled. */
|
|
116
191
|
const GATED_COMMAND_NAMES = new Set(["workflow", "workflows"]);
|
|
117
192
|
/**
|
|
@@ -122,7 +197,7 @@ const GATED_COMMAND_NAMES = new Set(["workflow", "workflows"]);
|
|
|
122
197
|
* helpers deliberately take no server.
|
|
123
198
|
*/
|
|
124
199
|
export function filterWorkflowCommands(server, commands) {
|
|
125
|
-
if (
|
|
200
|
+
if (effectiveWorkflowGateNow(server)?.enabled)
|
|
126
201
|
return [...commands];
|
|
127
202
|
return commands.filter((c) => !GATED_COMMAND_NAMES.has(c.name));
|
|
128
203
|
}
|
|
@@ -156,4 +231,21 @@ export async function pushDynamicWorkflowPolicy(backend, nextId, cwd) {
|
|
|
156
231
|
log(`workflow-gate: policy push threw (${e instanceof Error ? e.message : String(e)})`);
|
|
157
232
|
}
|
|
158
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Flip-aware second enable channel: the spawn-time push only covers a backend
|
|
236
|
+
* born under an ENABLED verdict; a local override flipped on later (the App
|
|
237
|
+
* settings toggle) must still reach the backend process. Once per backend
|
|
238
|
+
* generation — the boolean check keeps the per-create/resume call site free.
|
|
239
|
+
*/
|
|
240
|
+
export function ensureWorkflowPolicyPushed(server) {
|
|
241
|
+
if (server.workflowPolicyPushed)
|
|
242
|
+
return;
|
|
243
|
+
if (!effectiveWorkflowGateNow(server)?.enabled)
|
|
244
|
+
return;
|
|
245
|
+
const backend = server.backend;
|
|
246
|
+
if (!backend)
|
|
247
|
+
return;
|
|
248
|
+
server.workflowPolicyPushed = true;
|
|
249
|
+
void pushDynamicWorkflowPolicy(backend, () => server.nextId(), server.projectCwd());
|
|
250
|
+
}
|
|
159
251
|
//# sourceMappingURL=workflow-gate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-gate.js","sourceRoot":"","sources":["../../src/config/workflow-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflow-gate.js","sourceRoot":"","sources":["../../src/config/workflow-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-allow.d.ts","sourceRoot":"","sources":["../../src/handlers/sandbox-allow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sandbox-allow.d.ts","sourceRoot":"","sources":["../../src/handlers/sandbox-allow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAarD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb;iEAC6D;IAC7D,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,aAW1B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAmBvE;AAKD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;;;;GAMG;AACH,QAAA,MAAM,oBAAoB,QAAS,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,KAAK,CAA+B;gBAGzB,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,EAC9C,OAAO,GAAE,MAAiC;IAG7D,0EAA0E;IAC1E,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;CAc/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,IAAI,IAAI,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,GAAG,CACxB,MAAM,GAAG,MAAM,EACf;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CACxF,CAAC;IACF,qEAAqE;IACrE,OAAO,EAAE;QAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CACtE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC5B,IAAI,CAuDN;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMjE;AAkBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAQ1E;AAeD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAsLf"}
|
|
@@ -16,6 +16,7 @@ import path from "node:path";
|
|
|
16
16
|
import { randomUUID } from "node:crypto";
|
|
17
17
|
import { appendSandboxAllow, appendSandboxDeny, collectSandboxWorkspaces, readSandboxConfig, resolveReal, } from "../backend/sandbox.js";
|
|
18
18
|
import { messages } from "../i18n.js";
|
|
19
|
+
import { armAskWatchdog, clearAskWatchdog } from "../push/push.js";
|
|
19
20
|
import { log, warn } from "../utils.js";
|
|
20
21
|
import { sendTextChunk } from "./io.js";
|
|
21
22
|
const EPERM = "Operation not permitted";
|
|
@@ -331,6 +332,13 @@ export async function handleSandboxDenial(server, cx, acpSid, denial, toolCallId
|
|
|
331
332
|
},
|
|
332
333
|
];
|
|
333
334
|
let decision = "deny";
|
|
335
|
+
// Same unanswered-ask watchdog as requestWithTimeout (§5.1 v1.3): this grant
|
|
336
|
+
// popup bypasses that funnel (own timeout path), but it is still a
|
|
337
|
+
// user-facing ask — it must notify when nobody answers. The derived payload
|
|
338
|
+
// only reads toolCall.title.
|
|
339
|
+
armAskWatchdog("session/request_permission", {
|
|
340
|
+
toolCall: { title: m.sandboxPopupTitle(targetReal) },
|
|
341
|
+
});
|
|
334
342
|
try {
|
|
335
343
|
// Wire name is session/request_permission (snake_case — the camelCase
|
|
336
344
|
// form is silently method-not-found on real clients). The schema has no
|
|
@@ -374,6 +382,9 @@ export async function handleSandboxDenial(server, cx, acpSid, denial, toolCallId
|
|
|
374
382
|
warn(`sandbox: allow ask for ${targetReal} failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
375
383
|
return;
|
|
376
384
|
}
|
|
385
|
+
finally {
|
|
386
|
+
clearAskWatchdog();
|
|
387
|
+
}
|
|
377
388
|
// A real outcome reached the client and came back (including an unknown
|
|
378
389
|
// optionId the user picked): the user SAW this ask — pin the debounce
|
|
379
390
|
// forever, whatever they chose.
|