@tokenfactory/acc-runner 0.44.1 → 0.44.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -1
- package/dist/bin-resolve.d.ts +39 -3
- package/dist/bin-resolve.d.ts.map +1 -1
- package/dist/bin-resolve.js +176 -12
- package/dist/bin-resolve.js.map +1 -1
- package/dist/build-fingerprint.d.ts +66 -0
- package/dist/build-fingerprint.d.ts.map +1 -0
- package/dist/build-fingerprint.js +70 -0
- package/dist/build-fingerprint.js.map +1 -0
- package/dist/build-info.generated.d.ts +3 -0
- package/dist/build-info.generated.d.ts.map +1 -0
- package/dist/build-info.generated.js +3 -0
- package/dist/build-info.generated.js.map +1 -0
- package/dist/capacity/resume-controller.d.ts +5 -3
- package/dist/capacity/resume-controller.d.ts.map +1 -1
- package/dist/capacity/resume-controller.js +9 -0
- package/dist/capacity/resume-controller.js.map +1 -1
- package/dist/chat-delegation-guard.d.ts +23 -0
- package/dist/chat-delegation-guard.d.ts.map +1 -0
- package/dist/chat-delegation-guard.js +62 -0
- package/dist/chat-delegation-guard.js.map +1 -0
- package/dist/chat-lane.d.ts +17 -6
- package/dist/chat-lane.d.ts.map +1 -1
- package/dist/chat-lane.js +29 -8
- package/dist/chat-lane.js.map +1 -1
- package/dist/companion-identity.d.ts +37 -0
- package/dist/companion-identity.d.ts.map +1 -1
- package/dist/companion-identity.js +98 -29
- package/dist/companion-identity.js.map +1 -1
- package/dist/companion-run.d.ts +1 -50
- package/dist/companion-run.d.ts.map +1 -1
- package/dist/companion-run.js +48 -105
- package/dist/companion-run.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -3
- package/dist/config.js.map +1 -1
- package/dist/conformance.d.ts +49 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +121 -0
- package/dist/conformance.js.map +1 -0
- package/dist/cost-pricing.d.ts +46 -0
- package/dist/cost-pricing.d.ts.map +1 -1
- package/dist/cost-pricing.js +58 -1
- package/dist/cost-pricing.js.map +1 -1
- package/dist/credential-identity.d.ts +70 -0
- package/dist/credential-identity.d.ts.map +1 -0
- package/dist/credential-identity.js +128 -0
- package/dist/credential-identity.js.map +1 -0
- package/dist/doctor.d.ts +33 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +284 -44
- package/dist/doctor.js.map +1 -1
- package/dist/engines/chat-stream.d.ts +71 -1
- package/dist/engines/chat-stream.d.ts.map +1 -1
- package/dist/engines/chat-stream.js +126 -8
- package/dist/engines/chat-stream.js.map +1 -1
- package/dist/engines/claude-code-chat.d.ts +11 -1
- package/dist/engines/claude-code-chat.d.ts.map +1 -1
- package/dist/engines/claude-code-chat.js +69 -5
- package/dist/engines/claude-code-chat.js.map +1 -1
- package/dist/engines/claude-code.d.ts.map +1 -1
- package/dist/engines/claude-code.js +30 -6
- package/dist/engines/claude-code.js.map +1 -1
- package/dist/engines/codex.d.ts.map +1 -1
- package/dist/engines/codex.js +18 -5
- package/dist/engines/codex.js.map +1 -1
- package/dist/engines/registry.d.ts +26 -0
- package/dist/engines/registry.d.ts.map +1 -1
- package/dist/engines/registry.js +37 -0
- package/dist/engines/registry.js.map +1 -1
- package/dist/engines/types.d.ts +5 -0
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/failure-classifier.d.ts +1 -1
- package/dist/failure-classifier.d.ts.map +1 -1
- package/dist/failure-classifier.js +65 -12
- package/dist/failure-classifier.js.map +1 -1
- package/dist/gh.d.ts +15 -0
- package/dist/gh.d.ts.map +1 -1
- package/dist/gh.js +18 -0
- package/dist/gh.js.map +1 -1
- package/dist/git.d.ts +6 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +27 -1
- package/dist/git.js.map +1 -1
- package/dist/keychain.d.ts +17 -0
- package/dist/keychain.d.ts.map +1 -1
- package/dist/keychain.js +30 -0
- package/dist/keychain.js.map +1 -1
- package/dist/loc-advisory.d.ts +70 -0
- package/dist/loc-advisory.d.ts.map +1 -0
- package/dist/loc-advisory.js +196 -0
- package/dist/loc-advisory.js.map +1 -0
- package/dist/locks/claim-lock-policy.d.ts +67 -0
- package/dist/locks/claim-lock-policy.d.ts.map +1 -0
- package/dist/locks/claim-lock-policy.js +132 -0
- package/dist/locks/claim-lock-policy.js.map +1 -0
- package/dist/login.d.ts +59 -2
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +87 -7
- package/dist/login.js.map +1 -1
- package/dist/mcp-spawn.d.ts +54 -0
- package/dist/mcp-spawn.d.ts.map +1 -1
- package/dist/mcp-spawn.js +88 -4
- package/dist/mcp-spawn.js.map +1 -1
- package/dist/migration-seq-guard.d.ts +28 -1
- package/dist/migration-seq-guard.d.ts.map +1 -1
- package/dist/migration-seq-guard.js +111 -6
- package/dist/migration-seq-guard.js.map +1 -1
- package/dist/output-diagnostics.d.ts +15 -0
- package/dist/output-diagnostics.d.ts.map +1 -0
- package/dist/output-diagnostics.js +95 -0
- package/dist/output-diagnostics.js.map +1 -0
- package/dist/pr-open-guard.d.ts +67 -0
- package/dist/pr-open-guard.d.ts.map +1 -0
- package/dist/pr-open-guard.js +79 -0
- package/dist/pr-open-guard.js.map +1 -0
- package/dist/prepr-gate.d.ts +229 -1
- package/dist/prepr-gate.d.ts.map +1 -1
- package/dist/prepr-gate.js +406 -3
- package/dist/prepr-gate.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +30 -5
- package/dist/program.js.map +1 -1
- package/dist/provider-auth.d.ts +8 -0
- package/dist/provider-auth.d.ts.map +1 -1
- package/dist/provider-auth.js +10 -0
- package/dist/provider-auth.js.map +1 -1
- package/dist/runtime/quarantine.d.ts +11 -0
- package/dist/runtime/quarantine.d.ts.map +1 -1
- package/dist/runtime/quarantine.js +16 -1
- package/dist/runtime/quarantine.js.map +1 -1
- package/dist/runtime/reviewer.d.ts +90 -2
- package/dist/runtime/reviewer.d.ts.map +1 -1
- package/dist/runtime/reviewer.js +547 -46
- package/dist/runtime/reviewer.js.map +1 -1
- package/dist/runtime/running-build.d.ts +24 -0
- package/dist/runtime/running-build.d.ts.map +1 -0
- package/dist/runtime/running-build.js +62 -0
- package/dist/runtime/running-build.js.map +1 -0
- package/dist/runtime/worktree.d.ts +45 -0
- package/dist/runtime/worktree.d.ts.map +1 -1
- package/dist/runtime/worktree.js +174 -5
- package/dist/runtime/worktree.js.map +1 -1
- package/dist/task-runner.d.ts +126 -5
- package/dist/task-runner.d.ts.map +1 -1
- package/dist/task-runner.js +1219 -127
- package/dist/task-runner.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/watch-chat/wire.d.ts +80 -0
- package/dist/watch-chat/wire.d.ts.map +1 -1
- package/dist/watch-chat/wire.js +203 -43
- package/dist/watch-chat/wire.js.map +1 -1
- package/dist/watch.d.ts +70 -16
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +501 -89
- package/dist/watch.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -149,7 +149,7 @@ location, or declare capabilities.
|
|
|
149
149
|
|
|
150
150
|
| Variable | Default | Notes |
|
|
151
151
|
| ------------------------- | ---------------------------------------- | --------------------------------------------------------------------- |
|
|
152
|
-
| `ACC_PUBLIC_URL` | production
|
|
152
|
+
| `ACC_PUBLIC_URL` | canonical production origin (`https://acc.getset.live`) | Used for cost-pricing fetches and OAuth callback links. |
|
|
153
153
|
| `ACC_SUPABASE_URL` | production project URL | Supabase project the runner talks to. |
|
|
154
154
|
| `ACC_SUPABASE_ANON_KEY` | production anon key | Public; RLS does the gating. |
|
|
155
155
|
| `ACC_REPO_PATH` | `~/work/TechArch` | Local clone of the target repo. See "Repo path resolution" below. |
|
|
@@ -211,6 +211,25 @@ config.json was silently ignored, and a runner launched by `launchd`
|
|
|
211
211
|
Set either `ACC_REPO_PATH` or `repo-path` in config.json and verify
|
|
212
212
|
with `acc-runner doctor`.
|
|
213
213
|
|
|
214
|
+
### Recovering stranded worktrees
|
|
215
|
+
|
|
216
|
+
If a task fails at `pr_open`, inspect the task event payload for
|
|
217
|
+
`worktree_path`. To recover completed work deliberately:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
cd <worktree_path>
|
|
221
|
+
git status --short
|
|
222
|
+
git add -A
|
|
223
|
+
git commit -m "chore(acc): recover stranded runner work for <task_id>"
|
|
224
|
+
git push -u origin HEAD
|
|
225
|
+
gh pr create --base <integration_branch> --head "$(git branch --show-current)"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Use the files named in the `pr_open` event as the audit list before committing.
|
|
229
|
+
If the branch has no commits and the worktree is dirty, the runner normally
|
|
230
|
+
auto-commits before opening the PR; this procedure is for manual recovery after
|
|
231
|
+
a hard process exit or an operator-aborted run.
|
|
232
|
+
|
|
214
233
|
### Capabilities
|
|
215
234
|
|
|
216
235
|
Tags declare what kinds of tasks this runner is willing to pick up. The
|
package/dist/bin-resolve.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export declare function
|
|
1
|
+
/** Read the PATH value from env, resolving the key case-insensitively on Windows. */
|
|
2
|
+
export declare function pathValueFrom(env: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string | undefined;
|
|
3
|
+
/** Prepend the extra bin dirs not already present to a given PATH string. */
|
|
4
|
+
export declare function augmentedPathFrom(pathValue: string | undefined, options?: Pick<ResolveExecutableOptions, "env" | "platform" | "homedir">): string;
|
|
3
5
|
/**
|
|
4
6
|
* Returns process.env with PATH augmented to include the extra bin dirs.
|
|
5
7
|
*
|
|
@@ -11,5 +13,39 @@ export declare function buildEnv(): NodeJS.ProcessEnv;
|
|
|
11
13
|
* every other var). Use when a caller already composed an env — e.g. the claude
|
|
12
14
|
* engine's withAnthropicAuth(...) — and just needs its PATH made launchd-safe.
|
|
13
15
|
*/
|
|
14
|
-
export declare function withAugmentedPath(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
16
|
+
export declare function withAugmentedPath(env: NodeJS.ProcessEnv, platform?: NodeJS.Platform): NodeJS.ProcessEnv;
|
|
17
|
+
export interface ResolveExecutableOptions {
|
|
18
|
+
env?: NodeJS.ProcessEnv;
|
|
19
|
+
platform?: NodeJS.Platform;
|
|
20
|
+
homedir?: string;
|
|
21
|
+
exists?: (file: string) => boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ExecutableResolution {
|
|
24
|
+
command: string;
|
|
25
|
+
searched: string[];
|
|
26
|
+
}
|
|
27
|
+
export declare function executableSearchPaths(bin: string, options?: ResolveExecutableOptions): string[];
|
|
28
|
+
export declare function resolveExecutable(bin: string, options?: ResolveExecutableOptions): ExecutableResolution | null;
|
|
29
|
+
export declare function unresolvedExecutableDetail(bin: string, searched: string[]): string;
|
|
30
|
+
export declare function requireExecutable(bin: string, options?: ResolveExecutableOptions): ExecutableResolution;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the `command` string handed to execa when SPAWNING `bin`.
|
|
33
|
+
*
|
|
34
|
+
* Windows: we must resolve a concrete on-disk file. The installed entry is a
|
|
35
|
+
* PATHEXT shim — `claude.cmd` (npm's global shim) or `claude.exe` — never bare
|
|
36
|
+
* `claude`, and execa does not probe PATHEXT itself. We hand execa the resolved
|
|
37
|
+
* `.cmd`/`.bat` path; execa's cross-spawn layer detects the `.cmd`/`.bat`
|
|
38
|
+
* extension and dispatches it through `%ComSpec% /d /s /c "<shim>"` (cmd.exe),
|
|
39
|
+
* which is exactly how a Windows batch shim is meant to run. So a resolved shim
|
|
40
|
+
* path executes correctly — no separate `shell: true` is needed or wanted
|
|
41
|
+
* (`shell: true` would re-introduce argument-quoting hazards). If nothing
|
|
42
|
+
* resolves we throw the same detailed "not found" error as requireExecutable.
|
|
43
|
+
*
|
|
44
|
+
* POSIX (linux/darwin): we return `bin` UNCHANGED and let execa resolve it
|
|
45
|
+
* against the (already PATH-augmented) `env` we pass, byte-for-byte as before
|
|
46
|
+
* this change. This deliberately avoids introducing any fs.existsSync gate on
|
|
47
|
+
* the non-Windows spawn path — POSIX has no PATHEXT/shim ambiguity to resolve,
|
|
48
|
+
* so bare-name dispatch stays identical to the pre-existing behavior.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveSpawnCommand(bin: string, options?: ResolveExecutableOptions): string;
|
|
15
51
|
//# sourceMappingURL=bin-resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin-resolve.d.ts","sourceRoot":"","sources":["../src/bin-resolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bin-resolve.d.ts","sourceRoot":"","sources":["../src/bin-resolve.ts"],"names":[],"mappings":"AAkDA,qFAAqF;AACrF,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,SAAS,CAEpB;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,GAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CAAM,GAC3E,MAAM,CAiBR;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAAC,UAAU,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAAC,UAAU,CAYnB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAyCD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,wBAA6B,GACrC,MAAM,EAAE,CAyBV;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,wBAA6B,GACrC,oBAAoB,GAAG,IAAI,CAW7B;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAElF;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,wBAA6B,GACrC,oBAAoB,CAKtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAIR"}
|
package/dist/bin-resolve.js
CHANGED
|
@@ -12,21 +12,64 @@
|
|
|
12
12
|
* latched a sticky env_broken quarantine.
|
|
13
13
|
*/
|
|
14
14
|
import os from "node:os";
|
|
15
|
+
import fs from "node:fs";
|
|
15
16
|
import path from "node:path";
|
|
16
|
-
/**
|
|
17
|
-
const
|
|
17
|
+
/** Non-home directories prepended when not already in PATH. */
|
|
18
|
+
const EXTRA_PATHS_BASE = [
|
|
18
19
|
"/opt/homebrew/bin", // Apple Silicon Homebrew
|
|
19
20
|
"/opt/homebrew/sbin",
|
|
20
21
|
"/usr/local/bin", // Intel Homebrew / MacPorts
|
|
21
22
|
"/usr/local/sbin",
|
|
22
|
-
path.join(os.homedir(), ".local", "bin"), // native `claude` install
|
|
23
23
|
];
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the env key that actually holds PATH.
|
|
26
|
+
*
|
|
27
|
+
* Windows env vars are case-insensitive, so a live Windows process exposes PATH
|
|
28
|
+
* under whatever casing the OS chose — commonly `Path`. `process.env` honours
|
|
29
|
+
* any casing, but the moment it is spread into a plain object (`{ ...env }`) the
|
|
30
|
+
* result is an ordinary case-SENSITIVE object where `Path` and `PATH` are
|
|
31
|
+
* distinct keys, so a naive `env.PATH` read silently misses a real `Path`. We
|
|
32
|
+
* inspect the env's OWN keys — exactly what a spread copies — and match
|
|
33
|
+
* case-insensitively on win32. When both spellings are present the canonical
|
|
34
|
+
* uppercase `PATH` wins: it is the explicitly-authored spelling (e.g. one we
|
|
35
|
+
* just augmented), whereas a lowercase `Path` beside it is the stale inherited
|
|
36
|
+
* copy. Off win32, PATH is genuinely case-sensitive, so only exact `PATH`
|
|
37
|
+
* counts.
|
|
38
|
+
*/
|
|
39
|
+
function pathKeyOf(env, platform) {
|
|
40
|
+
if (platform === "win32") {
|
|
41
|
+
const keys = Object.keys(env);
|
|
42
|
+
if (keys.includes("PATH"))
|
|
43
|
+
return "PATH";
|
|
44
|
+
const match = keys.find((k) => k.toLowerCase() === "path");
|
|
45
|
+
if (match)
|
|
46
|
+
return match;
|
|
47
|
+
}
|
|
48
|
+
return "PATH";
|
|
49
|
+
}
|
|
50
|
+
/** Read the PATH value from env, resolving the key case-insensitively on Windows. */
|
|
51
|
+
export function pathValueFrom(env, platform = process.platform) {
|
|
52
|
+
return env[pathKeyOf(env, platform)];
|
|
53
|
+
}
|
|
54
|
+
/** Prepend the extra bin dirs not already present to a given PATH string. */
|
|
55
|
+
export function augmentedPathFrom(pathValue, options = {}) {
|
|
56
|
+
const platform = options.platform ?? process.platform;
|
|
57
|
+
const env = options.env ?? process.env;
|
|
58
|
+
const delimiter = delimiterFor(platform);
|
|
59
|
+
// Fall back to a case-insensitive read of env's PATH when no explicit value
|
|
60
|
+
// was passed — a spread env may expose it as `Path` on Windows.
|
|
61
|
+
const resolvedValue = pathValue ?? pathValueFrom(env, platform);
|
|
62
|
+
const existing = resolvedValue ?? (platform === "win32" ? "" : "/usr/bin:/bin:/usr/sbin:/sbin");
|
|
63
|
+
const parts = existing ? existing.split(delimiter) : [];
|
|
64
|
+
const normalized = new Set(parts.map((p) => (platform === "win32" ? p.toLowerCase() : p)));
|
|
65
|
+
const homedir = options.homedir ?? os.homedir();
|
|
66
|
+
const extras = extraExecutableDirs(env, platform, homedir).filter((p) => {
|
|
67
|
+
const key = platform === "win32" ? p.toLowerCase() : p;
|
|
68
|
+
return !normalized.has(key);
|
|
69
|
+
});
|
|
70
|
+
if (extras.length === 0)
|
|
71
|
+
return existing;
|
|
72
|
+
return existing ? `${extras.join(delimiter)}${delimiter}${existing}` : extras.join(delimiter);
|
|
30
73
|
}
|
|
31
74
|
/**
|
|
32
75
|
* Returns process.env with PATH augmented to include the extra bin dirs.
|
|
@@ -34,14 +77,135 @@ export function augmentedPathFrom(pathValue) {
|
|
|
34
77
|
* execa("git", args, { cwd, env: buildEnv() })
|
|
35
78
|
*/
|
|
36
79
|
export function buildEnv() {
|
|
37
|
-
return
|
|
80
|
+
return withAugmentedPath(process.env);
|
|
38
81
|
}
|
|
39
82
|
/**
|
|
40
83
|
* Like buildEnv(), but augments the PATH of an ARBITRARY base env (preserving
|
|
41
84
|
* every other var). Use when a caller already composed an env — e.g. the claude
|
|
42
85
|
* engine's withAnthropicAuth(...) — and just needs its PATH made launchd-safe.
|
|
43
86
|
*/
|
|
44
|
-
export function withAugmentedPath(env) {
|
|
45
|
-
|
|
87
|
+
export function withAugmentedPath(env, platform = process.platform) {
|
|
88
|
+
// Read AND write PATH under its real key (Windows may carry it as `Path`); a
|
|
89
|
+
// fresh `PATH` written alongside would let the stale key shadow our value.
|
|
90
|
+
const key = pathKeyOf(env, platform);
|
|
91
|
+
const next = { ...env, [key]: augmentedPathFrom(env[key], { env, platform }) };
|
|
92
|
+
// Windows is case-insensitive: strip any other-cased PATH key (no stale shadow).
|
|
93
|
+
if (platform === "win32") {
|
|
94
|
+
for (const k of Object.keys(next)) {
|
|
95
|
+
if (k !== key && k.toLowerCase() === "path")
|
|
96
|
+
delete next[k];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return next;
|
|
100
|
+
}
|
|
101
|
+
function delimiterFor(platform) {
|
|
102
|
+
return platform === "win32" ? ";" : ":";
|
|
103
|
+
}
|
|
104
|
+
function pathApiFor(platform) {
|
|
105
|
+
return platform === "win32" ? path.win32 : path.posix;
|
|
106
|
+
}
|
|
107
|
+
function candidateNames(bin, env, platform) {
|
|
108
|
+
if (platform !== "win32" || /\.[^\\/]+$/.test(bin))
|
|
109
|
+
return [bin];
|
|
110
|
+
const pathext = (env.PATHEXT || ".COM;.EXE;.BAT;.CMD")
|
|
111
|
+
.split(";")
|
|
112
|
+
.map((ext) => ext.trim())
|
|
113
|
+
.filter(Boolean);
|
|
114
|
+
// win32: return ONLY the PATHEXT variants, never the bare `bin`. npm's cmd-shim
|
|
115
|
+
// writes `claude` (a sh script), `claude.cmd` and `claude.ps1` side by side; the
|
|
116
|
+
// extensionless `claude` is not executable by CreateProcess, so preferring — or
|
|
117
|
+
// even offering — it re-creates the "claude is not recognised" failure. This is
|
|
118
|
+
// the "never bare `claude`" contract resolveSpawnCommand documents.
|
|
119
|
+
return pathext.map((ext) => `${bin}${ext.startsWith(".") ? ext : `.${ext}`}`);
|
|
120
|
+
}
|
|
121
|
+
function extraExecutableDirs(env, platform, homedir) {
|
|
122
|
+
if (platform !== "win32") {
|
|
123
|
+
return [
|
|
124
|
+
...EXTRA_PATHS_BASE,
|
|
125
|
+
path.join(homedir, ".local", "bin"),
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
const p = path.win32;
|
|
129
|
+
return [
|
|
130
|
+
env.npm_config_prefix,
|
|
131
|
+
env.APPDATA ? p.join(env.APPDATA, "npm") : undefined,
|
|
132
|
+
env.LOCALAPPDATA ? p.join(env.LOCALAPPDATA, "npm") : undefined,
|
|
133
|
+
env.ProgramFiles ? p.join(env.ProgramFiles, "nodejs") : undefined,
|
|
134
|
+
p.join(homedir, ".local", "bin"),
|
|
135
|
+
].filter((dir) => !!dir && dir.trim().length > 0);
|
|
136
|
+
}
|
|
137
|
+
export function executableSearchPaths(bin, options = {}) {
|
|
138
|
+
const platform = options.platform ?? process.platform;
|
|
139
|
+
const env = options.env ?? process.env;
|
|
140
|
+
const pathApi = pathApiFor(platform);
|
|
141
|
+
const delimiter = delimiterFor(platform);
|
|
142
|
+
const homedir = options.homedir ?? os.homedir();
|
|
143
|
+
const pathDirs = (pathValueFrom(env, platform) ?? "")
|
|
144
|
+
.split(delimiter)
|
|
145
|
+
.map((dir) => dir.trim())
|
|
146
|
+
.filter(Boolean);
|
|
147
|
+
const dirs = [...pathDirs, ...extraExecutableDirs(env, platform, homedir)];
|
|
148
|
+
const names = candidateNames(bin, env, platform);
|
|
149
|
+
const out = [];
|
|
150
|
+
const seen = new Set();
|
|
151
|
+
for (const dir of dirs) {
|
|
152
|
+
for (const name of names) {
|
|
153
|
+
const candidate = pathApi.join(dir, name);
|
|
154
|
+
const key = platform === "win32" ? candidate.toLowerCase() : candidate;
|
|
155
|
+
if (!seen.has(key)) {
|
|
156
|
+
seen.add(key);
|
|
157
|
+
out.push(candidate);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return out;
|
|
162
|
+
}
|
|
163
|
+
export function resolveExecutable(bin, options = {}) {
|
|
164
|
+
const platform = options.platform ?? process.platform;
|
|
165
|
+
const exists = options.exists ?? ((file) => fs.existsSync(file));
|
|
166
|
+
const searched = executableSearchPaths(bin, options);
|
|
167
|
+
for (const file of searched) {
|
|
168
|
+
if (exists(file))
|
|
169
|
+
return { command: file, searched };
|
|
170
|
+
}
|
|
171
|
+
if (platform !== "win32" && bin.includes("/")) {
|
|
172
|
+
return exists(bin) ? { command: bin, searched: [bin] } : null;
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
export function unresolvedExecutableDetail(bin, searched) {
|
|
177
|
+
return `${bin} executable not found. Searched: ${searched.length ? searched.join(", ") : "<empty PATH>"}`;
|
|
178
|
+
}
|
|
179
|
+
export function requireExecutable(bin, options = {}) {
|
|
180
|
+
const searched = executableSearchPaths(bin, options);
|
|
181
|
+
const resolved = resolveExecutable(bin, { ...options, exists: options.exists });
|
|
182
|
+
if (resolved)
|
|
183
|
+
return resolved;
|
|
184
|
+
throw new Error(unresolvedExecutableDetail(bin, searched));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Resolve the `command` string handed to execa when SPAWNING `bin`.
|
|
188
|
+
*
|
|
189
|
+
* Windows: we must resolve a concrete on-disk file. The installed entry is a
|
|
190
|
+
* PATHEXT shim — `claude.cmd` (npm's global shim) or `claude.exe` — never bare
|
|
191
|
+
* `claude`, and execa does not probe PATHEXT itself. We hand execa the resolved
|
|
192
|
+
* `.cmd`/`.bat` path; execa's cross-spawn layer detects the `.cmd`/`.bat`
|
|
193
|
+
* extension and dispatches it through `%ComSpec% /d /s /c "<shim>"` (cmd.exe),
|
|
194
|
+
* which is exactly how a Windows batch shim is meant to run. So a resolved shim
|
|
195
|
+
* path executes correctly — no separate `shell: true` is needed or wanted
|
|
196
|
+
* (`shell: true` would re-introduce argument-quoting hazards). If nothing
|
|
197
|
+
* resolves we throw the same detailed "not found" error as requireExecutable.
|
|
198
|
+
*
|
|
199
|
+
* POSIX (linux/darwin): we return `bin` UNCHANGED and let execa resolve it
|
|
200
|
+
* against the (already PATH-augmented) `env` we pass, byte-for-byte as before
|
|
201
|
+
* this change. This deliberately avoids introducing any fs.existsSync gate on
|
|
202
|
+
* the non-Windows spawn path — POSIX has no PATHEXT/shim ambiguity to resolve,
|
|
203
|
+
* so bare-name dispatch stays identical to the pre-existing behavior.
|
|
204
|
+
*/
|
|
205
|
+
export function resolveSpawnCommand(bin, options = {}) {
|
|
206
|
+
const platform = options.platform ?? process.platform;
|
|
207
|
+
if (platform !== "win32")
|
|
208
|
+
return bin;
|
|
209
|
+
return requireExecutable(bin, options).command;
|
|
46
210
|
}
|
|
47
211
|
//# sourceMappingURL=bin-resolve.js.map
|
package/dist/bin-resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin-resolve.js","sourceRoot":"","sources":["../src/bin-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"bin-resolve.js","sourceRoot":"","sources":["../src/bin-resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface RunnerBuildFingerprint {
|
|
2
|
+
commit_sha: string;
|
|
3
|
+
dist_sha256: string;
|
|
4
|
+
package_version: string;
|
|
5
|
+
}
|
|
6
|
+
export interface RunnerBuildCaps {
|
|
7
|
+
loaded: RunnerBuildFingerprint;
|
|
8
|
+
installed: RunnerBuildFingerprint | null;
|
|
9
|
+
}
|
|
10
|
+
export declare const LOADED_BUILD_FINGERPRINT: RunnerBuildFingerprint;
|
|
11
|
+
export declare function parseGeneratedBuildInfo(text: string): RunnerBuildFingerprint | null;
|
|
12
|
+
export declare function readInstalledBuildFingerprint(readText?: (path: string) => Promise<string>): Promise<RunnerBuildFingerprint | null>;
|
|
13
|
+
/** True when two fingerprints refer to a different build (commit OR dist). */
|
|
14
|
+
export declare function buildFingerprintsDiffer(a: RunnerBuildFingerprint, b: RunnerBuildFingerprint): boolean;
|
|
15
|
+
export declare function buildFingerprintCaps(readText?: (path: string) => Promise<string>): Promise<RunnerBuildCaps>;
|
|
16
|
+
/**
|
|
17
|
+
* BUILD-FINGERPRINT-RUNNING-1: verdict for the host-side check "is the running
|
|
18
|
+
* runner on the installed build?". `running` is what the long-running
|
|
19
|
+
* watch/companion process recorded at boot (runtime/running-build.ts);
|
|
20
|
+
* `installed` is what this fresh process loaded off disk. Differ → the launchd
|
|
21
|
+
* process is executing an older build than npm already wrote to disk; restart
|
|
22
|
+
* required. Pure, so unit-testable without a live launchd process.
|
|
23
|
+
*/
|
|
24
|
+
export interface RunningBuildStatus {
|
|
25
|
+
running: RunnerBuildFingerprint | null;
|
|
26
|
+
installed: RunnerBuildFingerprint;
|
|
27
|
+
/** No record found — the runner has not booted since this feature shipped. */
|
|
28
|
+
noRunningRecord: boolean;
|
|
29
|
+
restart_required: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare function runningBuildStatus(running: RunnerBuildFingerprint | null, installed?: RunnerBuildFingerprint): RunningBuildStatus;
|
|
32
|
+
/** Minimal Supabase surface `publishBuildFingerprintCaps` needs (a supabase-js client satisfies it). */
|
|
33
|
+
export interface RunnerCapsStore {
|
|
34
|
+
from(table: "runners"): {
|
|
35
|
+
select(columns: "caps"): {
|
|
36
|
+
eq(column: "id", value: string): {
|
|
37
|
+
maybeSingle(): Promise<{
|
|
38
|
+
data: {
|
|
39
|
+
caps?: unknown;
|
|
40
|
+
} | null;
|
|
41
|
+
error: {
|
|
42
|
+
message: string;
|
|
43
|
+
} | null;
|
|
44
|
+
}>;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
update(values: {
|
|
48
|
+
caps: Record<string, unknown>;
|
|
49
|
+
}): {
|
|
50
|
+
eq(column: "id", value: string): Promise<{
|
|
51
|
+
error: {
|
|
52
|
+
message: string;
|
|
53
|
+
} | null;
|
|
54
|
+
}>;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* BUILD-FINGERPRINT-ON-CAPS: publish the fingerprint into `acc.runners.caps.build`
|
|
60
|
+
* — the same caps contract the register RPC populates — via an id-scoped
|
|
61
|
+
* self-update (never register_runner, whose dedup could re-home a named-instance
|
|
62
|
+
* keychain runner onto a sibling's row). Read-merge-write so the other caps keys
|
|
63
|
+
* (repos/engines/concurrency) survive.
|
|
64
|
+
*/
|
|
65
|
+
export declare function publishBuildFingerprintCaps(supabase: RunnerCapsStore, runnerId: string, build?: RunnerBuildCaps): Promise<void>;
|
|
66
|
+
//# sourceMappingURL=build-fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-fingerprint.d.ts","sourceRoot":"","sources":["../src/build-fingerprint.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAI1C;AAED,eAAO,MAAM,wBAAwB,EAAE,sBAItC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CASnF;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAA8B,GACvE,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAQxC;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,sBAAsB,EACzB,CAAC,EAAE,sBAAsB,GACxB,OAAO,CAET;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC3C,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACvC,SAAS,EAAE,sBAAsB,CAAC;IAClC,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,GAAG,IAAI,EACtC,SAAS,GAAE,sBAAiD,GAC3D,kBAAkB,CAOpB;AAED,wGAAwG;AACxG,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG;QACtB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG;YACvB,EAAE,CACA,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,MAAM,GACZ;gBACD,WAAW,IAAI,OAAO,CAAC;oBACrB,IAAI,EAAE;wBAAE,IAAI,CAAC,EAAE,OAAO,CAAA;qBAAE,GAAG,IAAI,CAAC;oBAChC,KAAK,EAAE;wBAAE,OAAO,EAAE,MAAM,CAAA;qBAAE,GAAG,IAAI,CAAC;iBACnC,CAAC,CAAC;aACJ,CAAC;SACH,CAAC;QACF,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,GAAG;YACjD,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;gBAAE,KAAK,EAAE;oBAAE,OAAO,EAAE,MAAM,CAAA;iBAAE,GAAG,IAAI,CAAA;aAAE,CAAC,CAAC;SACjF,CAAC;KACH,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { PACKAGE_VERSION } from "./pkg-version.js";
|
|
4
|
+
import { BUILD_COMMIT_SHA, BUILD_DIST_SHA256, } from "./build-info.generated.js";
|
|
5
|
+
export const LOADED_BUILD_FINGERPRINT = {
|
|
6
|
+
commit_sha: BUILD_COMMIT_SHA,
|
|
7
|
+
dist_sha256: BUILD_DIST_SHA256,
|
|
8
|
+
package_version: PACKAGE_VERSION,
|
|
9
|
+
};
|
|
10
|
+
export function parseGeneratedBuildInfo(text) {
|
|
11
|
+
const read = (name) => {
|
|
12
|
+
const m = text.match(new RegExp(`BUILD_${name} = "([^"]+)"`));
|
|
13
|
+
return m?.[1] ?? null;
|
|
14
|
+
};
|
|
15
|
+
const commit_sha = read("COMMIT_SHA");
|
|
16
|
+
const dist_sha256 = read("DIST_SHA256");
|
|
17
|
+
if (!commit_sha || !dist_sha256)
|
|
18
|
+
return null;
|
|
19
|
+
return { commit_sha, dist_sha256, package_version: PACKAGE_VERSION };
|
|
20
|
+
}
|
|
21
|
+
export async function readInstalledBuildFingerprint(readText = (p) => readFile(p, "utf8")) {
|
|
22
|
+
try {
|
|
23
|
+
return parseGeneratedBuildInfo(await readText(fileURLToPath(new URL("./build-info.generated.js", import.meta.url))));
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/** True when two fingerprints refer to a different build (commit OR dist). */
|
|
30
|
+
export function buildFingerprintsDiffer(a, b) {
|
|
31
|
+
return a.commit_sha !== b.commit_sha || a.dist_sha256 !== b.dist_sha256;
|
|
32
|
+
}
|
|
33
|
+
export async function buildFingerprintCaps(readText) {
|
|
34
|
+
const installed = await readInstalledBuildFingerprint(readText);
|
|
35
|
+
return {
|
|
36
|
+
loaded: LOADED_BUILD_FINGERPRINT,
|
|
37
|
+
installed,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function runningBuildStatus(running, installed = LOADED_BUILD_FINGERPRINT) {
|
|
41
|
+
return {
|
|
42
|
+
running,
|
|
43
|
+
installed,
|
|
44
|
+
noRunningRecord: running === null,
|
|
45
|
+
restart_required: running !== null && buildFingerprintsDiffer(running, installed),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* BUILD-FINGERPRINT-ON-CAPS: publish the fingerprint into `acc.runners.caps.build`
|
|
50
|
+
* — the same caps contract the register RPC populates — via an id-scoped
|
|
51
|
+
* self-update (never register_runner, whose dedup could re-home a named-instance
|
|
52
|
+
* keychain runner onto a sibling's row). Read-merge-write so the other caps keys
|
|
53
|
+
* (repos/engines/concurrency) survive.
|
|
54
|
+
*/
|
|
55
|
+
export async function publishBuildFingerprintCaps(supabase, runnerId, build) {
|
|
56
|
+
const value = build ?? (await buildFingerprintCaps());
|
|
57
|
+
const read = await supabase.from("runners").select("caps").eq("id", runnerId).maybeSingle();
|
|
58
|
+
if (read.error)
|
|
59
|
+
throw new Error(read.error.message);
|
|
60
|
+
const current = read.data?.caps && typeof read.data.caps === "object" && !Array.isArray(read.data.caps)
|
|
61
|
+
? { ...read.data.caps }
|
|
62
|
+
: {};
|
|
63
|
+
const write = await supabase
|
|
64
|
+
.from("runners")
|
|
65
|
+
.update({ caps: { ...current, build: value } })
|
|
66
|
+
.eq("id", runnerId);
|
|
67
|
+
if (write.error)
|
|
68
|
+
throw new Error(write.error.message);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=build-fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-fingerprint.js","sourceRoot":"","sources":["../src/build-fingerprint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-info.generated.d.ts","sourceRoot":"","sources":["../src/build-info.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,6CAA6C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-info.generated.js","sourceRoot":"","sources":["../src/build-info.generated.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,0CAA0C,CAAC;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC"}
|
|
@@ -36,11 +36,11 @@ export interface ResumeTransition {
|
|
|
36
36
|
from: CapacityMode;
|
|
37
37
|
to: CapacityMode;
|
|
38
38
|
/** Why the transition fired. */
|
|
39
|
-
reason: ResumeReason | "cap-hit" | "returning-capped-account";
|
|
39
|
+
reason: ResumeReason | "operator-clear" | "cap-hit" | "returning-capped-account";
|
|
40
40
|
/** The account the runner is anchored to after the transition. */
|
|
41
41
|
account: string | null;
|
|
42
42
|
/** Which driver produced it. */
|
|
43
|
-
trigger: "cap-report" | "observe-account" | "poll";
|
|
43
|
+
trigger: "cap-report" | "observe-account" | "poll" | "operator";
|
|
44
44
|
at: number;
|
|
45
45
|
}
|
|
46
46
|
export interface ResumeControllerDeps {
|
|
@@ -67,7 +67,7 @@ export interface ResumeControllerDeps {
|
|
|
67
67
|
}) => void | Promise<void>;
|
|
68
68
|
/** Restart task + review claim scans (watch.ts: pollOnce + pump + pumpReviews). */
|
|
69
69
|
restartClaims: () => void | Promise<void>;
|
|
70
|
-
/** Stop
|
|
70
|
+
/** Stop claims for the current capacity scope. Optional. */
|
|
71
71
|
stopClaims?: () => void | Promise<void>;
|
|
72
72
|
/** Kick the companion turn loop so queued chat turns drain. Optional. */
|
|
73
73
|
kickCompanion?: () => void | Promise<void>;
|
|
@@ -128,6 +128,8 @@ export declare class ResumeController {
|
|
|
128
128
|
* cycle. A same-account observation is a cheap no-op re-check.
|
|
129
129
|
*/
|
|
130
130
|
observeAccount(accountKey: string | null): void;
|
|
131
|
+
/** Explicitly release the current capacity pause after an operator repair. */
|
|
132
|
+
resumeByOperator(): void;
|
|
131
133
|
/** Cancel the poll timer; in-flight actions still settle. */
|
|
132
134
|
stop(): void;
|
|
133
135
|
/** Resolve once every queued action has settled (test seam). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume-controller.d.ts","sourceRoot":"","sources":["../../src/capacity/resume-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAU5B,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,YAAY,CAAC;IACjB,gCAAgC;IAChC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"resume-controller.d.ts","sourceRoot":"","sources":["../../src/capacity/resume-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,15 @@ export class ResumeController {
|
|
|
92
92
|
this.observedAccountKey = accountKey;
|
|
93
93
|
this.enqueue(() => this.evaluate("observe-account"));
|
|
94
94
|
}
|
|
95
|
+
/** Explicitly release the current capacity pause after an operator repair. */
|
|
96
|
+
resumeByOperator() {
|
|
97
|
+
if (this.stopped || this.mode !== "paused")
|
|
98
|
+
return;
|
|
99
|
+
const account = this.observedAccountKey ?? this.anchorAccountKey;
|
|
100
|
+
if (!account)
|
|
101
|
+
return;
|
|
102
|
+
this.enqueue(() => this.doResume("operator-clear", account, "operator"));
|
|
103
|
+
}
|
|
95
104
|
/** Cancel the poll timer; in-flight actions still settle. */
|
|
96
105
|
stop() {
|
|
97
106
|
this.stopped = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume-controller.js","sourceRoot":"","sources":["../../src/capacity/resume-controller.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"resume-controller.js","sourceRoot":"","sources":["../../src/capacity/resume-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ChatLaneTransport, ClaimedChatTurn } from "./chat-lane.js";
|
|
2
|
+
/** Pause claims briefly after a delegation mint failure to avoid a retry storm. */
|
|
3
|
+
export declare const DELEGATION_MINT_COOLDOWN_MS = 15000;
|
|
4
|
+
export interface ChatDelegationGuardDeps {
|
|
5
|
+
transport: ChatLaneTransport;
|
|
6
|
+
/** MUST throw when no narrow token was issued. */
|
|
7
|
+
mint: (turn: ClaimedChatTurn) => Promise<string>;
|
|
8
|
+
cooldownMs?: number;
|
|
9
|
+
now?: () => number;
|
|
10
|
+
onLog?: (line: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export interface ChatDelegationGuard {
|
|
13
|
+
transport: ChatLaneTransport;
|
|
14
|
+
mintDelegation: (turn: ClaimedChatTurn) => Promise<string>;
|
|
15
|
+
}
|
|
16
|
+
/** Keep queued turns untouched until the local MCP tool bus is ready. */
|
|
17
|
+
export declare function guardChatTransportReadiness(transport: ChatLaneTransport, ready: () => boolean): ChatLaneTransport;
|
|
18
|
+
/**
|
|
19
|
+
* Gate claim on a narrow per-turn delegation. A failed mint requeues the turn
|
|
20
|
+
* and pauses claims; it can never fall through to the broader runner token.
|
|
21
|
+
*/
|
|
22
|
+
export declare function guardChatDelegation(deps: ChatDelegationGuardDeps): ChatDelegationGuard;
|
|
23
|
+
//# sourceMappingURL=chat-delegation-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-delegation-guard.d.ts","sourceRoot":"","sources":["../src/chat-delegation-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEzE,mFAAmF;AACnF,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,kDAAkD;IAClD,IAAI,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D;AAED,yEAAyE;AACzE,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,OAAO,GACnB,iBAAiB,CAKnB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,mBAAmB,CAiDtF"}
|