zcode-acp-server 0.58.0 → 0.59.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 +4 -0
- package/dist/config/user-config.d.ts.map +1 -1
- package/dist/config/user-config.js +10 -1
- package/dist/config/user-config.js.map +1 -1
- package/dist/handlers/sandbox-allow.d.ts +2 -2
- package/dist/handlers/sandbox-allow.d.ts.map +1 -1
- package/dist/handlers/sandbox-allow.js +47 -65
- package/dist/handlers/sandbox-allow.js.map +1 -1
- package/dist/handlers/server-requests.d.ts +7 -0
- package/dist/handlers/server-requests.d.ts.map +1 -1
- package/dist/handlers/server-requests.js +9 -0
- package/dist/handlers/server-requests.js.map +1 -1
- package/dist/handlers/session.js +1 -1
- package/dist/handlers/session.js.map +1 -1
- package/dist/push/config.d.ts +4 -0
- package/dist/push/config.d.ts.map +1 -1
- package/dist/push/config.js +2 -0
- package/dist/push/config.js.map +1 -1
- package/dist/push/push.d.ts +14 -2
- package/dist/push/push.d.ts.map +1 -1
- package/dist/push/push.js +18 -0
- package/dist/push/push.js.map +1 -1
- package/dist/quota/index.d.ts.map +1 -1
- package/dist/quota/index.js +6 -0
- package/dist/quota/index.js.map +1 -1
- package/dist/quota/live.d.ts +4 -1
- package/dist/quota/live.d.ts.map +1 -1
- package/dist/quota/live.js +6 -2
- package/dist/quota/live.js.map +1 -1
- package/dist/quota/thresholds.d.ts +31 -0
- package/dist/quota/thresholds.d.ts.map +1 -0
- package/dist/quota/thresholds.js +128 -0
- package/dist/quota/thresholds.js.map +1 -0
- package/dist/workflow/poller.d.ts +13 -0
- package/dist/workflow/poller.d.ts.map +1 -1
- package/dist/workflow/poller.js +68 -1
- package/dist/workflow/poller.js.map +1 -1
- package/package.json +1 -1
package/dist/push/push.js
CHANGED
|
@@ -114,6 +114,24 @@ export function pushSettled(server, data) {
|
|
|
114
114
|
return;
|
|
115
115
|
dispatchPush(cfg, s, data);
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* §5.7 quota threshold warnings — WARNING class, not a settle: no client
|
|
119
|
+
* gate (an online client cannot wake the phone) and NO quiet window — a
|
|
120
|
+
* threshold crossing happens exactly while the user is burning quota, i.e.
|
|
121
|
+
* nearly always inside the quiet window, so windowing would silence the
|
|
122
|
+
* warning precisely when it matters. Gated by `push.notify.quota` (default
|
|
123
|
+
* on) and the shared ACTIVE predicate like every other kind. Takes no server
|
|
124
|
+
* handle: quota is account-level, the bracket carries the kind.
|
|
125
|
+
*/
|
|
126
|
+
export function pushQuotaWarning(data) {
|
|
127
|
+
const cfg = pushConfig();
|
|
128
|
+
if (!cfg || !cfg.notify.quota)
|
|
129
|
+
return;
|
|
130
|
+
const s = pushSender();
|
|
131
|
+
if (!s)
|
|
132
|
+
return;
|
|
133
|
+
dispatchPush(cfg, s, data);
|
|
134
|
+
}
|
|
117
135
|
/**
|
|
118
136
|
* Derive the permission/question payload from the wire method+params (§4/§5.1)
|
|
119
137
|
* — shared by the zero-clients push and the unanswered-ask watchdog. `label`
|
package/dist/push/push.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/push/push.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,oBAAoB,EACpB,+BAA+B,EAC/B,UAAU,GAEX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/push/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quota/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quota/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CAuBvD;AAGD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/quota/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { getCached, setCached } from "./cache.js";
|
|
|
10
10
|
import { fetchQuotaResponse } from "./client.js";
|
|
11
11
|
import { log } from "../utils.js";
|
|
12
12
|
import { parseQuotaEnvelope } from "./parse.js";
|
|
13
|
+
import { checkQuotaThresholds } from "./thresholds.js";
|
|
13
14
|
/**
|
|
14
15
|
* Query the GLM quota API and return a normalised {@link QuotaResult}.
|
|
15
16
|
*
|
|
@@ -33,6 +34,11 @@ export async function queryQuota() {
|
|
|
33
34
|
result = { kind: "unavailable" };
|
|
34
35
|
}
|
|
35
36
|
setCached(result);
|
|
37
|
+
// Threshold warnings ride the FRESH fetch only (a refresh "discovering" a
|
|
38
|
+
// first crossing, §5.7) and never block or fail the caller.
|
|
39
|
+
if (result.kind === "success") {
|
|
40
|
+
void checkQuotaThresholds(result).catch(() => undefined);
|
|
41
|
+
}
|
|
36
42
|
return result;
|
|
37
43
|
}
|
|
38
44
|
// Re-exports for consumers (slash handler + CLI + tests).
|
package/dist/quota/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quota/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quota/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,8BAA8B,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACxC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,MAAM,CAAC,CAAC;IAClB,0EAA0E;IAC1E,4DAA4D;IAC5D,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0DAA0D;AAC1D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/quota/live.d.ts
CHANGED
|
@@ -18,7 +18,10 @@ import type { ZcodeAcpServer } from "../server.js";
|
|
|
18
18
|
export declare const QUOTA_REFRESH_INTERVAL_MS = 60000;
|
|
19
19
|
/**
|
|
20
20
|
* Start the refresher (idempotent). No-op unless a martty client has been
|
|
21
|
-
* seen — editor-only setups never poll the quota API
|
|
21
|
+
* seen OR WeCom push is ACTIVE — editor-only setups never poll the quota API
|
|
22
|
+
* in the background, but a push-configured bridge must: quota threshold
|
|
23
|
+
* warnings (§5.7) ride the same 60s refreshes, and the dock emit itself
|
|
24
|
+
* no-ops without martty connections.
|
|
22
25
|
*/
|
|
23
26
|
export declare function startQuotaRefresher(server: ZcodeAcpServer): void;
|
|
24
27
|
/** Best-effort immediate refresh (called at every turn end). Never rejects. */
|
package/dist/quota/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/quota/live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/quota/live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAYnD,6CAA6C;AAC7C,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAahD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAUhE;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;AAED,mDAAmD;AACnD,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AA6BD,6DAA6D;AAC7D,wBAAsB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BhG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAKtE"}
|
package/dist/quota/live.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { buildConfigOptions } from "../config/options.js";
|
|
17
17
|
import { parseRemoteConfig } from "../remote/config.js";
|
|
18
|
+
import { pushActive } from "../push/config.js";
|
|
18
19
|
import { log, warn } from "../utils.js";
|
|
19
20
|
import { enqueueSessionSend } from "../handlers/io.js";
|
|
20
21
|
import { composeQuotaDock, formatGoDockSegment, formatOcDockSegment, formatQuotaDock, } from "./format.js";
|
|
@@ -28,10 +29,13 @@ const HUB_TIMEOUT_MS = 500;
|
|
|
28
29
|
let state = null;
|
|
29
30
|
/**
|
|
30
31
|
* Start the refresher (idempotent). No-op unless a martty client has been
|
|
31
|
-
* seen — editor-only setups never poll the quota API
|
|
32
|
+
* seen OR WeCom push is ACTIVE — editor-only setups never poll the quota API
|
|
33
|
+
* in the background, but a push-configured bridge must: quota threshold
|
|
34
|
+
* warnings (§5.7) ride the same 60s refreshes, and the dock emit itself
|
|
35
|
+
* no-ops without martty connections.
|
|
32
36
|
*/
|
|
33
37
|
export function startQuotaRefresher(server) {
|
|
34
|
-
if (state || !server.marttyClientSeen)
|
|
38
|
+
if (state || (!server.marttyClientSeen && !pushActive()))
|
|
35
39
|
return;
|
|
36
40
|
const entry = {
|
|
37
41
|
server,
|
package/dist/quota/live.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/quota/live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAChD,6EAA6E;AAC7E,MAAM,cAAc,GAAG,GAAG,CAAC;AAS3B,IAAI,KAAK,GAA0B,IAAI,CAAC;AAExC
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/quota/live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quota threshold push warnings (push spec §5.7, requested 2026-10-01):
|
|
3
|
+
* the 5-hour and weekly windows each notify ONCE per tier — 80% used, 90%
|
|
4
|
+
* used, exhausted — edge-triggered on a refresh DISCOVERING the first
|
|
5
|
+
* crossing (never level-triggered, precision explicitly not required).
|
|
6
|
+
*
|
|
7
|
+
* Every fresh `queryQuota()` fetch funnels through here (the martty dock
|
|
8
|
+
* refresher's 60s cadence + turn-end forceRefresh, the hub's dock cache,
|
|
9
|
+
* `/quota`, the settings REST routes), so wherever quota data materializes,
|
|
10
|
+
* thresholds are watched. A drop below 80 re-arms the tiers (new window,
|
|
11
|
+
* reset card, weekly rollover).
|
|
12
|
+
*
|
|
13
|
+
* The per-key highest-notified tier is PERSISTED next to the user config
|
|
14
|
+
* (`quota-push-state.json`): the hub idle-exits and re-spawns, and bridges
|
|
15
|
+
* restart — without persistence every rebirth while usage sits above a tier
|
|
16
|
+
* would re-push it, and a hub + bridge pair could double-push one crossing.
|
|
17
|
+
* The state advances even when the push itself is switched off or
|
|
18
|
+
* suppressed, so re-enabling never replays old crossings. Everything here is
|
|
19
|
+
* fire-and-forget from the caller's view: failures warn, never throw.
|
|
20
|
+
*/
|
|
21
|
+
import type { QuotaResult } from "./types.js";
|
|
22
|
+
/** Highest tier crossed by a used percentage (0 = below all). */
|
|
23
|
+
export declare function quotaTier(usedPercent: number): number;
|
|
24
|
+
/**
|
|
25
|
+
* Check one fresh quota result against the persisted tiers and push each
|
|
26
|
+
* newly-crossed tier once. Callers fire-and-forget this; it never throws.
|
|
27
|
+
*/
|
|
28
|
+
export declare function checkQuotaThresholds(result: QuotaResult): Promise<void>;
|
|
29
|
+
/** Test hook: forget the in-memory mirror (the disk state stays). */
|
|
30
|
+
export declare function resetQuotaThresholdsForTest(): void;
|
|
31
|
+
//# sourceMappingURL=thresholds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thresholds.d.ts","sourceRoot":"","sources":["../../src/quota/thresholds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AAazD,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIrD;AAwCD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC7E;AAED,qEAAqE;AACrE,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quota threshold push warnings (push spec §5.7, requested 2026-10-01):
|
|
3
|
+
* the 5-hour and weekly windows each notify ONCE per tier — 80% used, 90%
|
|
4
|
+
* used, exhausted — edge-triggered on a refresh DISCOVERING the first
|
|
5
|
+
* crossing (never level-triggered, precision explicitly not required).
|
|
6
|
+
*
|
|
7
|
+
* Every fresh `queryQuota()` fetch funnels through here (the martty dock
|
|
8
|
+
* refresher's 60s cadence + turn-end forceRefresh, the hub's dock cache,
|
|
9
|
+
* `/quota`, the settings REST routes), so wherever quota data materializes,
|
|
10
|
+
* thresholds are watched. A drop below 80 re-arms the tiers (new window,
|
|
11
|
+
* reset card, weekly rollover).
|
|
12
|
+
*
|
|
13
|
+
* The per-key highest-notified tier is PERSISTED next to the user config
|
|
14
|
+
* (`quota-push-state.json`): the hub idle-exits and re-spawns, and bridges
|
|
15
|
+
* restart — without persistence every rebirth while usage sits above a tier
|
|
16
|
+
* would re-push it, and a hub + bridge pair could double-push one crossing.
|
|
17
|
+
* The state advances even when the push itself is switched off or
|
|
18
|
+
* suppressed, so re-enabling never replays old crossings. Everything here is
|
|
19
|
+
* fire-and-forget from the caller's view: failures warn, never throw.
|
|
20
|
+
*/
|
|
21
|
+
import path from "node:path";
|
|
22
|
+
import { userConfigPath } from "../config/user-config.js";
|
|
23
|
+
import { pushActive } from "../push/config.js";
|
|
24
|
+
import { pushQuotaWarning } from "../push/push.js";
|
|
25
|
+
import { readJsonDocument, writeJsonAtomic } from "../settings/atomic-write.js";
|
|
26
|
+
import { warn } from "../utils.js";
|
|
27
|
+
/** Windows that count as budget alarms (keys from parse.ts). */
|
|
28
|
+
const WATCHED_KEYS = new Set(["token_5h", "token_week"]);
|
|
29
|
+
/** Notify tiers in percent: 80 / 90 / exhausted (100). */
|
|
30
|
+
const TIERS = [80, 90, 100];
|
|
31
|
+
/** Window display name for the push title. */
|
|
32
|
+
function windowName(item) {
|
|
33
|
+
return item.key === "token_week" ? "weekly" : item.label.toLowerCase();
|
|
34
|
+
}
|
|
35
|
+
/** Highest tier crossed by a used percentage (0 = below all). */
|
|
36
|
+
export function quotaTier(usedPercent) {
|
|
37
|
+
let tier = 0;
|
|
38
|
+
for (const t of TIERS)
|
|
39
|
+
if (usedPercent >= t)
|
|
40
|
+
tier = t;
|
|
41
|
+
return tier;
|
|
42
|
+
}
|
|
43
|
+
function statePath() {
|
|
44
|
+
return path.join(path.dirname(userConfigPath()), "quota-push-state.json");
|
|
45
|
+
}
|
|
46
|
+
/** In-memory mirror of the persisted tiers, loaded once per process. */
|
|
47
|
+
let state = null;
|
|
48
|
+
async function loadState() {
|
|
49
|
+
if (state)
|
|
50
|
+
return state;
|
|
51
|
+
const map = new Map();
|
|
52
|
+
try {
|
|
53
|
+
const doc = await readJsonDocument(statePath());
|
|
54
|
+
const items = (doc ?? {})["items"];
|
|
55
|
+
if (typeof items === "object" && items !== null && !Array.isArray(items)) {
|
|
56
|
+
for (const key of WATCHED_KEYS) {
|
|
57
|
+
const v = items[key];
|
|
58
|
+
if (typeof v === "number" && Number.isInteger(v) && v >= 0 && v <= 100) {
|
|
59
|
+
map.set(key, v);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Absent or unreadable — starts re-armed; never fatal.
|
|
66
|
+
}
|
|
67
|
+
state = map;
|
|
68
|
+
return map;
|
|
69
|
+
}
|
|
70
|
+
async function persist(map) {
|
|
71
|
+
try {
|
|
72
|
+
await writeJsonAtomic(statePath(), () => ({ items: Object.fromEntries(map) }), {
|
|
73
|
+
skipBackup: true,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
warn(`quota-thresholds: state persist failed (${e instanceof Error ? e.message : String(e)})`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check one fresh quota result against the persisted tiers and push each
|
|
82
|
+
* newly-crossed tier once. Callers fire-and-forget this; it never throws.
|
|
83
|
+
*/
|
|
84
|
+
export async function checkQuotaThresholds(result) {
|
|
85
|
+
// Without push there is nothing to notify and no state worth maintaining —
|
|
86
|
+
// a later activation starts re-armed instead of replaying old crossings.
|
|
87
|
+
if (!pushActive())
|
|
88
|
+
return;
|
|
89
|
+
if (result.kind !== "success")
|
|
90
|
+
return;
|
|
91
|
+
const st = await loadState();
|
|
92
|
+
let dirty = false;
|
|
93
|
+
for (const item of result.items) {
|
|
94
|
+
if (!WATCHED_KEYS.has(item.key))
|
|
95
|
+
continue;
|
|
96
|
+
const tier = quotaTier(item.usedPercent);
|
|
97
|
+
const prev = st.get(item.key) ?? 0;
|
|
98
|
+
if (tier === 0) {
|
|
99
|
+
// Usage dropped below the first tier — new window / reset card: re-arm.
|
|
100
|
+
if (prev !== 0) {
|
|
101
|
+
st.delete(item.key);
|
|
102
|
+
dirty = true;
|
|
103
|
+
}
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (tier <= prev)
|
|
107
|
+
continue;
|
|
108
|
+
st.set(item.key, tier);
|
|
109
|
+
dirty = true;
|
|
110
|
+
const name = windowName(item);
|
|
111
|
+
pushQuotaWarning({
|
|
112
|
+
kind: "quota",
|
|
113
|
+
title: tier === 100
|
|
114
|
+
? `${name} quota exhausted`
|
|
115
|
+
: `${name} quota ${Math.round(item.usedPercent)}% used`,
|
|
116
|
+
body: item.nextResetTime
|
|
117
|
+
? `resets ${new Date(item.nextResetTime).toLocaleString()}`
|
|
118
|
+
: undefined,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
if (dirty)
|
|
122
|
+
await persist(st);
|
|
123
|
+
}
|
|
124
|
+
/** Test hook: forget the in-memory mirror (the disk state stays). */
|
|
125
|
+
export function resetQuotaThresholdsForTest() {
|
|
126
|
+
state = null;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=thresholds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thresholds.js","sourceRoot":"","sources":["../../src/quota/thresholds.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,23 @@
|
|
|
23
23
|
*
|
|
24
24
|
* Everything here is best-effort: request() resolves `{error}` instead of
|
|
25
25
|
* throwing, and every failure path only logs — never into the event loop.
|
|
26
|
+
*
|
|
27
|
+
* Stage pushes (#294): phase entries and failed nodes also reach WeCom as a
|
|
28
|
+
* rate-limited DIGEST (`pushSettled` kind "workflowStage") — mid-run progress
|
|
29
|
+
* must be able to wake a phone, and the card only reaches clients already
|
|
30
|
+
* watching the session.
|
|
26
31
|
*/
|
|
27
32
|
import type { ZcodeAcpServer } from "../server.js";
|
|
28
33
|
/** Poll cadence (setTimeout chain, timers unref'd). Injectable for tests. */
|
|
29
34
|
export declare const WORKFLOW_POLL_INTERVAL_MS = 3000;
|
|
35
|
+
/**
|
|
36
|
+
* Min interval between stage-digest WeCom pushes per run (#294): a fan-out
|
|
37
|
+
* workflow with dozens of nodes must not machine-gun the phone. Stage lines
|
|
38
|
+
* landing inside the window are held and flushed as ONE digest when it opens
|
|
39
|
+
* (or at run settle, whichever comes first) — the poll cadence doubles as
|
|
40
|
+
* the digest timer, no extra timers.
|
|
41
|
+
*/
|
|
42
|
+
export declare const WORKFLOW_STAGE_PUSH_MIN_INTERVAL_MS = 60000;
|
|
30
43
|
/** One v4 journal event (transport.ts:599-646). */
|
|
31
44
|
interface WorkflowRunEvent {
|
|
32
45
|
sequence: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../src/workflow/poller.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../src/workflow/poller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAiB9C;;;;;;GAMG;AACH,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAE1D,mDAAmD;AACnD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAyCD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAqCrE;AAqOD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E,IAAI,CAyBN;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKzD;AAED,sFAAsF;AACtF,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI5D;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D"}
|
package/dist/workflow/poller.js
CHANGED
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
*
|
|
24
24
|
* Everything here is best-effort: request() resolves `{error}` instead of
|
|
25
25
|
* throwing, and every failure path only logs — never into the event loop.
|
|
26
|
+
*
|
|
27
|
+
* Stage pushes (#294): phase entries and failed nodes also reach WeCom as a
|
|
28
|
+
* rate-limited DIGEST (`pushSettled` kind "workflowStage") — mid-run progress
|
|
29
|
+
* must be able to wake a phone, and the card only reaches clients already
|
|
30
|
+
* watching the session.
|
|
26
31
|
*/
|
|
27
32
|
import { pushSettled, pushSourceLabel } from "../push/push.js";
|
|
28
33
|
import { log } from "../utils.js";
|
|
@@ -38,6 +43,14 @@ const EVENTS_PAGE_LIMIT = 100;
|
|
|
38
43
|
const MAX_PAGES_PER_TICK = 50;
|
|
39
44
|
/** Cap on accumulated progress lines (keep first/last, drop the middle). */
|
|
40
45
|
const MAX_LINES = 200;
|
|
46
|
+
/**
|
|
47
|
+
* Min interval between stage-digest WeCom pushes per run (#294): a fan-out
|
|
48
|
+
* workflow with dozens of nodes must not machine-gun the phone. Stage lines
|
|
49
|
+
* landing inside the window are held and flushed as ONE digest when it opens
|
|
50
|
+
* (or at run settle, whichever comes first) — the poll cadence doubles as
|
|
51
|
+
* the digest timer, no extra timers.
|
|
52
|
+
*/
|
|
53
|
+
export const WORKFLOW_STAGE_PUSH_MIN_INTERVAL_MS = 60_000;
|
|
41
54
|
/** Active runs keyed by runId (taskId ≡ runId upstream — one key per run). */
|
|
42
55
|
const activeRuns = new Map();
|
|
43
56
|
/**
|
|
@@ -129,11 +142,54 @@ function teardown(run) {
|
|
|
129
142
|
}
|
|
130
143
|
/** Settled-push payload for a run's terminal state (§5.2 — four convergence
|
|
131
144
|
* points, this is their shared renderer). */
|
|
145
|
+
function runLabel(run) {
|
|
146
|
+
return run.name ?? `run ${run.runId.slice(0, 8)}`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Stage transitions worth a WeCom push (#294): a phase entry (the journal has
|
|
150
|
+
* no phase-exited — entering phase N implies N-1 completed) and any FAILED
|
|
151
|
+
* node. Ok/cancelled node outcomes stay card-only (chatty at fan-out scale).
|
|
152
|
+
*/
|
|
153
|
+
function isStagePushEvent(ev) {
|
|
154
|
+
if (ev.type === "phase-entered")
|
|
155
|
+
return true;
|
|
156
|
+
return ev.type.startsWith("node-") && (ev.payload ?? {}).outcome === "failed";
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Send the held stage digest as one WeCom push. The failure marker rides the
|
|
160
|
+
* TITLE, not the body: `contentDetail: "minimal"` strips bodies, and a failed
|
|
161
|
+
* node is the one stage fact minimal mode must still carry.
|
|
162
|
+
*/
|
|
163
|
+
function flushStagePush(run) {
|
|
164
|
+
if (run.stagePending.length === 0)
|
|
165
|
+
return;
|
|
166
|
+
const lines = run.stagePending;
|
|
167
|
+
run.stagePending = [];
|
|
168
|
+
run.lastStagePushAt = Date.now();
|
|
169
|
+
const failed = lines.some((l) => l.startsWith("✗"));
|
|
170
|
+
pushSettled(run.server, {
|
|
171
|
+
kind: "workflowStage",
|
|
172
|
+
label: pushSourceLabel(run.server),
|
|
173
|
+
title: `workflow ${runLabel(run)}: stage progress${failed ? " — node failed" : ""}`,
|
|
174
|
+
body: lines.join("\n"),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/** Flush the held digest once the rate-limit window has aged open. */
|
|
178
|
+
function maybeFlushStagePush(run) {
|
|
179
|
+
if (run.stagePending.length === 0)
|
|
180
|
+
return;
|
|
181
|
+
if (Date.now() - run.lastStagePushAt < WORKFLOW_STAGE_PUSH_MIN_INTERVAL_MS)
|
|
182
|
+
return;
|
|
183
|
+
flushStagePush(run);
|
|
184
|
+
}
|
|
132
185
|
function pushRunSettled(run, status) {
|
|
186
|
+
// Terminal flush: a held digest must not die with the poller, and the phone
|
|
187
|
+
// should read stages-then-outcome in order.
|
|
188
|
+
flushStagePush(run);
|
|
133
189
|
pushSettled(run.server, {
|
|
134
190
|
kind: "run",
|
|
135
191
|
label: pushSourceLabel(run.server),
|
|
136
|
-
title: `workflow ${run
|
|
192
|
+
title: `workflow ${runLabel(run)}`,
|
|
137
193
|
body: `run settled: ${status}`,
|
|
138
194
|
});
|
|
139
195
|
}
|
|
@@ -191,6 +247,12 @@ async function pollTick(run) {
|
|
|
191
247
|
if (line) {
|
|
192
248
|
pushLine(run, line);
|
|
193
249
|
emitted = true;
|
|
250
|
+
if (isStagePushEvent(ev)) {
|
|
251
|
+
// Digest-hold: accumulate, flush ONCE at tick end — a per-event
|
|
252
|
+
// flush would spend the window on the tick's first stage line and
|
|
253
|
+
// rate-limit the rest of the same tick into a later digest.
|
|
254
|
+
run.stagePending.push(line);
|
|
255
|
+
}
|
|
194
256
|
}
|
|
195
257
|
if (ev.type === "run-settled") {
|
|
196
258
|
await emitCardUpdate(run);
|
|
@@ -209,6 +271,9 @@ async function pollTick(run) {
|
|
|
209
271
|
run.consecutiveErrors = 0;
|
|
210
272
|
if (emitted)
|
|
211
273
|
await emitCardUpdate(run);
|
|
274
|
+
// Digest-hold expiry: ticks with no new events still flush a held digest
|
|
275
|
+
// once the rate-limit window opens.
|
|
276
|
+
maybeFlushStagePush(run);
|
|
212
277
|
}
|
|
213
278
|
catch (e) {
|
|
214
279
|
// request() never throws; anything here is our own bug — count it as an
|
|
@@ -267,6 +332,8 @@ export function armWorkflowRunPoller(server, zcodeSid, opts) {
|
|
|
267
332
|
afterSequence: 0,
|
|
268
333
|
lines: [],
|
|
269
334
|
pending: [],
|
|
335
|
+
stagePending: [],
|
|
336
|
+
lastStagePushAt: 0,
|
|
270
337
|
startedAt: Date.now(),
|
|
271
338
|
intervalMs: opts.intervalMs ?? WORKFLOW_POLL_INTERVAL_MS,
|
|
272
339
|
consecutiveErrors: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../src/workflow/poller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../src/workflow/poller.ts"],"names":[],"mappings":"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"}
|