@tokenfactory/acc-runner 0.2.5-internal → 0.3.4-internal
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/dist/cli.js +9 -5
- package/dist/cli.js.map +1 -1
- package/dist/cost-pricing.d.ts +81 -0
- package/dist/cost-pricing.d.ts.map +1 -0
- package/dist/cost-pricing.js +146 -0
- package/dist/cost-pricing.js.map +1 -0
- package/dist/git.d.ts +2 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +7 -0
- package/dist/git.js.map +1 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +3 -1
- package/dist/login.js.map +1 -1
- package/dist/pkg-version.d.ts +2 -0
- package/dist/pkg-version.d.ts.map +1 -0
- package/dist/pkg-version.js +12 -0
- package/dist/pkg-version.js.map +1 -0
- package/dist/task-runner.d.ts +26 -4
- package/dist/task-runner.d.ts.map +1 -1
- package/dist/task-runner.js +58 -7
- package/dist/task-runner.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/watch.d.ts +7 -0
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +100 -6
- package/dist/watch.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -5,19 +5,19 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from "commander";
|
|
7
7
|
import chalk from "chalk";
|
|
8
|
-
import {
|
|
8
|
+
import { loadConfig } from "./config.js";
|
|
9
|
+
import { fetchPricing } from "./cost-pricing.js";
|
|
9
10
|
import { loginCommand } from "./login.js";
|
|
10
11
|
import { logoutCommand } from "./logout.js";
|
|
11
12
|
import { watchCommand } from "./watch.js";
|
|
12
13
|
import { doctorCommand } from "./doctor.js";
|
|
13
14
|
import { PROTOCOL_VERSION } from "./types.js";
|
|
14
|
-
|
|
15
|
-
const pkg = require("../package.json");
|
|
15
|
+
import { PACKAGE_VERSION } from "./pkg-version.js";
|
|
16
16
|
const program = new Command();
|
|
17
17
|
program
|
|
18
18
|
.name("acc-runner")
|
|
19
19
|
.description("Agent Control Center local runner. Subscribes to ACC, spawns Claude Code on assignment, and opens a PR when done.")
|
|
20
|
-
.version(`${
|
|
20
|
+
.version(`${PACKAGE_VERSION} (protocol v${PROTOCOL_VERSION})`);
|
|
21
21
|
program
|
|
22
22
|
.command("login")
|
|
23
23
|
.description("Sign in via device-code OAuth and register this machine.")
|
|
@@ -47,6 +47,10 @@ program
|
|
|
47
47
|
.description("Long-running. Receive task assignments and execute them.")
|
|
48
48
|
.action(async () => {
|
|
49
49
|
try {
|
|
50
|
+
// Warm the cost-pricing cache before the realtime loop opens.
|
|
51
|
+
// fetchPricing handles its own logging; embedded fallback governs
|
|
52
|
+
// if the endpoint is unreachable.
|
|
53
|
+
await fetchPricing(loadConfig().publicUrl);
|
|
50
54
|
await watchCommand();
|
|
51
55
|
// Keep the process alive — stop() runs in the SIGINT handler.
|
|
52
56
|
await new Promise(() => { });
|
|
@@ -67,7 +71,7 @@ program
|
|
|
67
71
|
.command("version")
|
|
68
72
|
.description("Print CLI + protocol versions.")
|
|
69
73
|
.action(() => {
|
|
70
|
-
console.log(`acc-runner ${
|
|
74
|
+
console.log(`acc-runner ${PACKAGE_VERSION}`);
|
|
71
75
|
console.log(`protocol ${PROTOCOL_VERSION}`);
|
|
72
76
|
});
|
|
73
77
|
program.parseAsync(process.argv).catch((err) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-model token pricing plus a helper that turns a Claude Code
|
|
3
|
+
* `--output-format=json` usage block into integer USD cents.
|
|
4
|
+
*
|
|
5
|
+
* v0.4 sources the live table from `GET /api/llm/pricing` at runner
|
|
6
|
+
* startup (`fetchPricing` below) and caches it in module state for
|
|
7
|
+
* the process lifetime. If the fetch fails — network down, endpoint
|
|
8
|
+
* 5xx, malformed body — the runner stays on the embedded snapshot
|
|
9
|
+
* below and writes a single warning to stderr. The cost-cap surface
|
|
10
|
+
* keeps receiving events with reasonable values rather than zeros.
|
|
11
|
+
*
|
|
12
|
+
* The price math (`priceUsdCents`, `pricingFor`, `normalizeUsage`) is
|
|
13
|
+
* sync, so `task-runner.ts` doesn't have to know a network fetch
|
|
14
|
+
* happens once at boot.
|
|
15
|
+
*
|
|
16
|
+
* The embedded table is intentionally a copy of the server table. The
|
|
17
|
+
* two MUST stay in sync until v0.5 centralises them; the duplication
|
|
18
|
+
* is the price of an always-functional offline fallback.
|
|
19
|
+
*/
|
|
20
|
+
export interface ModelPricing {
|
|
21
|
+
inputPer1M: number;
|
|
22
|
+
outputPer1M: number;
|
|
23
|
+
cacheWritePer1M: number;
|
|
24
|
+
cacheReadPer1M: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ClaudeUsage {
|
|
27
|
+
input_tokens?: number;
|
|
28
|
+
output_tokens?: number;
|
|
29
|
+
cache_creation_input_tokens?: number;
|
|
30
|
+
cache_read_input_tokens?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface NormalizedUsage {
|
|
33
|
+
input_tokens: number;
|
|
34
|
+
output_tokens: number;
|
|
35
|
+
cache_read_tokens: number;
|
|
36
|
+
cache_write_tokens: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Embedded last-known-good snapshot, used as the cache's initial value
|
|
40
|
+
* and as the permanent fallback when `fetchPricing` can't reach the
|
|
41
|
+
* server. Kept in sync with `api/llm/pricing.ts` by hand.
|
|
42
|
+
*/
|
|
43
|
+
export declare const MODEL_PRICING: Record<string, ModelPricing>;
|
|
44
|
+
export interface FetchPricingResult {
|
|
45
|
+
ok: boolean;
|
|
46
|
+
version: string;
|
|
47
|
+
/** Populated when `ok` is false; opaque diagnostic for the operator. */
|
|
48
|
+
reason?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Fetch the server pricing table and atomically replace the in-memory
|
|
52
|
+
* cache. Subsequent `priceUsdCents` calls in this process use the
|
|
53
|
+
* fetched values. On failure leaves the existing cache untouched and
|
|
54
|
+
* logs one stderr line; the runner stays usable on the fallback.
|
|
55
|
+
*
|
|
56
|
+
* Intentionally NOT deduped across calls — operators can rewarm the
|
|
57
|
+
* cache mid-process by calling this again if pricing rolls over.
|
|
58
|
+
*/
|
|
59
|
+
export declare function fetchPricing(baseUrl: string): Promise<FetchPricingResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the pricing version currently in the cache. Useful for
|
|
62
|
+
* logging at task boundaries; not used in cost arithmetic.
|
|
63
|
+
*/
|
|
64
|
+
export declare function currentPricingVersion(): string;
|
|
65
|
+
/** Test hook: resets cache + version to the embedded fallback. */
|
|
66
|
+
export declare function _resetPricingForTests(): void;
|
|
67
|
+
export declare function pricingFor(model: string): ModelPricing;
|
|
68
|
+
export declare function normalizeUsage(raw: ClaudeUsage | null | undefined): NormalizedUsage;
|
|
69
|
+
export declare function priceUsdCents(model: string, usage: NormalizedUsage): number;
|
|
70
|
+
/**
|
|
71
|
+
* Parse the JSON block Claude Code emits with `--output-format=json`.
|
|
72
|
+
* Returns null on parse failure so the caller can fall back to plain
|
|
73
|
+
* markdown extraction.
|
|
74
|
+
*/
|
|
75
|
+
export interface ClaudeJsonOutput {
|
|
76
|
+
result?: string;
|
|
77
|
+
model?: string;
|
|
78
|
+
usage?: ClaudeUsage;
|
|
79
|
+
}
|
|
80
|
+
export declare function parseClaudeJson(stdout: string): ClaudeJsonOutput | null;
|
|
81
|
+
//# sourceMappingURL=cost-pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-pricing.d.ts","sourceRoot":"","sources":["../src/cost-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAO,MAAM,CAAC;IACxB,WAAW,EAAM,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAiB,MAAM,CAAC;IACrC,aAAa,CAAC,EAAgB,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,uBAAuB,CAAC,EAAM,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAQ,MAAM,CAAC;IAC3B,aAAa,EAAO,MAAM,CAAC;IAC3B,iBAAiB,EAAG,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAuBD;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAStD,CAAC;AAoBF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAQ,OAAO,CAAC;IAClB,OAAO,EAAG,MAAM,CAAC;IACjB,wEAAwE;IACxE,MAAM,CAAC,EAAG,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0B/E;AAuBD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAStD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,CAOnF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAQ3E;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAG,MAAM,CAAC;IAChB,KAAK,CAAC,EAAG,WAAW,CAAC;CACtB;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAYvE"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
const SONNET = {
|
|
2
|
+
inputPer1M: 3,
|
|
3
|
+
outputPer1M: 15,
|
|
4
|
+
cacheWritePer1M: 3.75,
|
|
5
|
+
cacheReadPer1M: 0.3,
|
|
6
|
+
};
|
|
7
|
+
const OPUS = {
|
|
8
|
+
inputPer1M: 15,
|
|
9
|
+
outputPer1M: 75,
|
|
10
|
+
cacheWritePer1M: 18.75,
|
|
11
|
+
cacheReadPer1M: 1.5,
|
|
12
|
+
};
|
|
13
|
+
const HAIKU = {
|
|
14
|
+
inputPer1M: 1,
|
|
15
|
+
outputPer1M: 5,
|
|
16
|
+
cacheWritePer1M: 1.25,
|
|
17
|
+
cacheReadPer1M: 0.1,
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Embedded last-known-good snapshot, used as the cache's initial value
|
|
21
|
+
* and as the permanent fallback when `fetchPricing` can't reach the
|
|
22
|
+
* server. Kept in sync with `api/llm/pricing.ts` by hand.
|
|
23
|
+
*/
|
|
24
|
+
export const MODEL_PRICING = {
|
|
25
|
+
"claude-opus-4-7": OPUS,
|
|
26
|
+
"claude-opus-4-6": OPUS,
|
|
27
|
+
"claude-opus-4": OPUS,
|
|
28
|
+
"claude-sonnet-4-7": SONNET,
|
|
29
|
+
"claude-sonnet-4-6": SONNET,
|
|
30
|
+
"claude-sonnet-4": SONNET,
|
|
31
|
+
"claude-haiku-4-5": HAIKU,
|
|
32
|
+
"claude-haiku-4": HAIKU,
|
|
33
|
+
};
|
|
34
|
+
const FALLBACK_VERSION = "fallback-2026-02-01";
|
|
35
|
+
let currentPricing = MODEL_PRICING;
|
|
36
|
+
let currentVersion = FALLBACK_VERSION;
|
|
37
|
+
/**
|
|
38
|
+
* Fetch the server pricing table and atomically replace the in-memory
|
|
39
|
+
* cache. Subsequent `priceUsdCents` calls in this process use the
|
|
40
|
+
* fetched values. On failure leaves the existing cache untouched and
|
|
41
|
+
* logs one stderr line; the runner stays usable on the fallback.
|
|
42
|
+
*
|
|
43
|
+
* Intentionally NOT deduped across calls — operators can rewarm the
|
|
44
|
+
* cache mid-process by calling this again if pricing rolls over.
|
|
45
|
+
*/
|
|
46
|
+
export async function fetchPricing(baseUrl) {
|
|
47
|
+
const url = `${baseUrl.replace(/\/+$/, "")}/api/llm/pricing`;
|
|
48
|
+
try {
|
|
49
|
+
const res = await fetch(url, {
|
|
50
|
+
headers: { Accept: "application/json", "User-Agent": "acc-runner" },
|
|
51
|
+
});
|
|
52
|
+
if (!res.ok)
|
|
53
|
+
throw new Error(`status ${res.status}`);
|
|
54
|
+
const body = (await res.json());
|
|
55
|
+
const anthropic = body?.providers?.anthropic;
|
|
56
|
+
if (!anthropic || typeof anthropic !== "object") {
|
|
57
|
+
throw new Error("missing providers.anthropic");
|
|
58
|
+
}
|
|
59
|
+
const table = parseAnthropicTable(anthropic);
|
|
60
|
+
if (Object.keys(table).length === 0) {
|
|
61
|
+
throw new Error("empty providers.anthropic");
|
|
62
|
+
}
|
|
63
|
+
currentPricing = table;
|
|
64
|
+
currentVersion = typeof body.version === "string" ? body.version : "unknown";
|
|
65
|
+
return { ok: true, version: currentVersion };
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
const reason = err.message;
|
|
69
|
+
process.stderr.write(`acc-runner: pricing fetch failed (${reason}); using embedded fallback\n`);
|
|
70
|
+
return { ok: false, version: currentVersion, reason };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function parseAnthropicTable(wire) {
|
|
74
|
+
const out = {};
|
|
75
|
+
for (const [model, p] of Object.entries(wire)) {
|
|
76
|
+
if (typeof p?.input !== "number" ||
|
|
77
|
+
typeof p?.output !== "number" ||
|
|
78
|
+
typeof p?.cache_read !== "number" ||
|
|
79
|
+
typeof p?.cache_write !== "number")
|
|
80
|
+
continue;
|
|
81
|
+
out[model] = {
|
|
82
|
+
inputPer1M: p.input / 100,
|
|
83
|
+
outputPer1M: p.output / 100,
|
|
84
|
+
cacheReadPer1M: p.cache_read / 100,
|
|
85
|
+
cacheWritePer1M: p.cache_write / 100,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Returns the pricing version currently in the cache. Useful for
|
|
92
|
+
* logging at task boundaries; not used in cost arithmetic.
|
|
93
|
+
*/
|
|
94
|
+
export function currentPricingVersion() {
|
|
95
|
+
return currentVersion;
|
|
96
|
+
}
|
|
97
|
+
/** Test hook: resets cache + version to the embedded fallback. */
|
|
98
|
+
export function _resetPricingForTests() {
|
|
99
|
+
currentPricing = MODEL_PRICING;
|
|
100
|
+
currentVersion = FALLBACK_VERSION;
|
|
101
|
+
}
|
|
102
|
+
export function pricingFor(model) {
|
|
103
|
+
// Exact match wins; otherwise pick the family by substring so a model
|
|
104
|
+
// string like "claude-sonnet-4-6-20251001" still routes to Sonnet.
|
|
105
|
+
// Substring fallback reads from `currentPricing` so a freshly fetched
|
|
106
|
+
// table immediately governs unknown model ids too.
|
|
107
|
+
if (currentPricing[model])
|
|
108
|
+
return currentPricing[model];
|
|
109
|
+
if (model.includes("opus"))
|
|
110
|
+
return currentPricing["claude-opus-4-7"] ?? OPUS;
|
|
111
|
+
if (model.includes("haiku"))
|
|
112
|
+
return currentPricing["claude-haiku-4-5"] ?? HAIKU;
|
|
113
|
+
return currentPricing["claude-sonnet-4-6"] ?? SONNET;
|
|
114
|
+
}
|
|
115
|
+
export function normalizeUsage(raw) {
|
|
116
|
+
return {
|
|
117
|
+
input_tokens: Math.max(0, Math.floor(raw?.input_tokens ?? 0)),
|
|
118
|
+
output_tokens: Math.max(0, Math.floor(raw?.output_tokens ?? 0)),
|
|
119
|
+
cache_read_tokens: Math.max(0, Math.floor(raw?.cache_read_input_tokens ?? 0)),
|
|
120
|
+
cache_write_tokens: Math.max(0, Math.floor(raw?.cache_creation_input_tokens ?? 0)),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export function priceUsdCents(model, usage) {
|
|
124
|
+
const p = pricingFor(model);
|
|
125
|
+
const usd = (usage.input_tokens * p.inputPer1M +
|
|
126
|
+
usage.output_tokens * p.outputPer1M +
|
|
127
|
+
usage.cache_read_tokens * p.cacheReadPer1M +
|
|
128
|
+
usage.cache_write_tokens * p.cacheWritePer1M) / 1_000_000;
|
|
129
|
+
return Math.round(usd * 100);
|
|
130
|
+
}
|
|
131
|
+
export function parseClaudeJson(stdout) {
|
|
132
|
+
const trimmed = stdout.trim();
|
|
133
|
+
if (!trimmed.startsWith("{"))
|
|
134
|
+
return null;
|
|
135
|
+
try {
|
|
136
|
+
const parsed = JSON.parse(trimmed);
|
|
137
|
+
if (typeof parsed === "object" && parsed !== null) {
|
|
138
|
+
return parsed;
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=cost-pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-pricing.js","sourceRoot":"","sources":["../src/cost-pricing.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
CHANGED
package/dist/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,QAAsC,CAAC;AAEtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEpE;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C;AAMD,eAAO,MAAM,GAAG,EAAE,SAejB,CAAC"}
|
package/dist/git.js
CHANGED
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
* config — it relies on whatever credentials they already have set up.
|
|
4
4
|
*/
|
|
5
5
|
import { execa } from "execa";
|
|
6
|
+
// Matches branches the runner should treat as ACC-owned, including the
|
|
7
|
+
// `chore/acc-…` and `feat/acc-…` conventional-commit forms that the CLI
|
|
8
|
+
// agent opens in some flows. The original `acc/…` form is preserved.
|
|
9
|
+
export const ACC_BRANCH_PATTERN = /^(?:acc\/|chore\/acc-|feat\/acc-)/;
|
|
10
|
+
export function isAccBranch(name) {
|
|
11
|
+
return typeof name === "string" && ACC_BRANCH_PATTERN.test(name);
|
|
12
|
+
}
|
|
6
13
|
async function run(repoPath, args) {
|
|
7
14
|
return execa("git", args, { cwd: repoPath, env: process.env });
|
|
8
15
|
}
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAA0B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAA0B,MAAM,OAAO,CAAC;AAEtD,uEAAuE;AACvE,wEAAwE;AACxE,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAEtE,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAUD,KAAK,UAAU,GAAG,CAAC,QAAgB,EAAE,IAAc;IACjD,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAc;IAC5B,KAAK,CAAC,KAAK,CAAC,QAAQ;QAClB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM;QAC7B,qEAAqE;QACrE,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM;QACzB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,QAAQ;QACpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IACpC,CAAC;CACF,CAAC"}
|
package/dist/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAiCA,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAkCD,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF5E"}
|
package/dist/login.js
CHANGED
|
@@ -15,6 +15,7 @@ import { loadConfig } from "./config.js";
|
|
|
15
15
|
import { saveSession } from "./keychain.js";
|
|
16
16
|
import { createRunnerClient } from "./supabase.js";
|
|
17
17
|
import { PROTOCOL_VERSION } from "./types.js";
|
|
18
|
+
import { PACKAGE_VERSION } from "./pkg-version.js";
|
|
18
19
|
const RUNNER_CAPS = {
|
|
19
20
|
branch: true,
|
|
20
21
|
push: true,
|
|
@@ -61,7 +62,7 @@ async function postJson(url, body) {
|
|
|
61
62
|
export async function loginCommand(options = {}) {
|
|
62
63
|
const cfg = loadConfig();
|
|
63
64
|
// 1. Request a device code.
|
|
64
|
-
const start = await postJson(`${cfg.publicUrl.replace(/\/+$/, "")}/api/runner/device-code`, {});
|
|
65
|
+
const start = await postJson(`${cfg.publicUrl.replace(/\/+$/, "")}/api/runner/device-code/create`, {});
|
|
65
66
|
console.log("");
|
|
66
67
|
console.log(chalk.bold("To continue, sign in with your ACC account:"));
|
|
67
68
|
console.log("");
|
|
@@ -117,6 +118,7 @@ export async function loginCommand(options = {}) {
|
|
|
117
118
|
p_machine: machine,
|
|
118
119
|
p_models: models,
|
|
119
120
|
p_caps: RUNNER_CAPS,
|
|
121
|
+
p_version: PACKAGE_VERSION,
|
|
120
122
|
});
|
|
121
123
|
if (error) {
|
|
122
124
|
throw new Error(`register_runner failed: ${error.message}`);
|
package/dist/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAMnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkg-version.d.ts","sourceRoot":"","sources":["../src/pkg-version.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,eAAe,QAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's own package.json version. We use the package version (not
|
|
3
|
+
* the protocol version) because that's what an operator actually
|
|
4
|
+
* upgrades via `npm install -g @tokenfactory/acc-runner@latest`; the
|
|
5
|
+
* server stores it on each heartbeat so fleet operators can spot stale
|
|
6
|
+
* runners in the UI.
|
|
7
|
+
*/
|
|
8
|
+
import { createRequire } from "node:module";
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
const pkg = require("../package.json");
|
|
11
|
+
export const PACKAGE_VERSION = pkg.version;
|
|
12
|
+
//# sourceMappingURL=pkg-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkg-version.js","sourceRoot":"","sources":["../src/pkg-version.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC"}
|
package/dist/task-runner.d.ts
CHANGED
|
@@ -15,17 +15,32 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { type ExecaChildProcess } from "execa";
|
|
17
17
|
import type { RunnerConfig } from "./config.js";
|
|
18
|
+
import { type NormalizedUsage } from "./cost-pricing.js";
|
|
18
19
|
import { type GitRunner } from "./git.js";
|
|
19
20
|
import { type GhRunner } from "./gh.js";
|
|
20
21
|
import type { RunnerSupabaseClient } from "./supabase.js";
|
|
22
|
+
export interface CostEventPayload extends NormalizedUsage {
|
|
23
|
+
task_id: string;
|
|
24
|
+
model: string;
|
|
25
|
+
usd_cents: number;
|
|
26
|
+
runner_id?: string | null;
|
|
27
|
+
}
|
|
21
28
|
export interface RunTaskDeps {
|
|
22
29
|
supabase: RunnerSupabaseClient;
|
|
23
30
|
cfg: RunnerConfig;
|
|
24
31
|
git?: GitRunner;
|
|
25
32
|
gh?: GhRunner;
|
|
26
33
|
/** Override for tests — defaults to
|
|
27
|
-
* execa('claude', ['--print', '--dangerously-skip-permissions'
|
|
34
|
+
* execa('claude', ['--print', '--dangerously-skip-permissions',
|
|
35
|
+
* '--output-format=json']). */
|
|
28
36
|
spawnClaude?: (cwd: string) => ExecaChildProcess;
|
|
37
|
+
/**
|
|
38
|
+
* Cost-event sink. Defaults to a direct `acc.record_cost_event` RPC
|
|
39
|
+
* on the runner's already-authenticated supabase client. Tests
|
|
40
|
+
* override; production callers (watch.ts) can override too if they
|
|
41
|
+
* prefer to route through /api/runner/cost-event.
|
|
42
|
+
*/
|
|
43
|
+
postCostEvent?: (event: CostEventPayload) => Promise<void>;
|
|
29
44
|
}
|
|
30
45
|
export interface RunTaskController {
|
|
31
46
|
taskId: string;
|
|
@@ -40,10 +55,17 @@ export interface RunTaskOutcome {
|
|
|
40
55
|
error?: string;
|
|
41
56
|
}
|
|
42
57
|
/**
|
|
43
|
-
* Pull the structured report block from claude's stdout.
|
|
44
|
-
*
|
|
45
|
-
*
|
|
58
|
+
* Pull the structured report block from claude's stdout. Recognises
|
|
59
|
+
* both `--output-format=json` (extracts .result) and plain text. Falls
|
|
60
|
+
* back to the entire stdout (capped) if no `## Summary` heading is
|
|
61
|
+
* present — that way the PR body still tells the reviewer what happened.
|
|
46
62
|
*/
|
|
47
63
|
export declare function extractReportFromOutput(stdout: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Build a cost event from claude's stdout. Always returns a payload
|
|
66
|
+
* (zero-cost when usage isn't parseable) so the cap-tracking surface
|
|
67
|
+
* stays consistent: one cost_events row per attempt.
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildCostEvent(taskId: string, stdout: string, fallbackModel: string | null | undefined, runnerId: string | null | undefined): CostEventPayload;
|
|
48
70
|
export declare function runTask(taskId: string, deps: RunTaskDeps): RunTaskController;
|
|
49
71
|
//# sourceMappingURL=task-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAS,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd;
|
|
1
|
+
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAS,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG1D,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,OAAO,EAAK,MAAM,CAAC;IACnB,KAAK,EAAO,MAAM,CAAC;IACnB,SAAS,EAAG,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd;;oCAEgC;IAChC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACjD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,gBAAgB,CAWlB;AAmBD,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,GAChB,iBAAiB,CA6KnB"}
|
package/dist/task-runner.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* returned controller and SIGTERMs it on task_cancelled.
|
|
15
15
|
*/
|
|
16
16
|
import { execa } from "execa";
|
|
17
|
+
import { normalizeUsage, parseClaudeJson, priceUsdCents, } from "./cost-pricing.js";
|
|
17
18
|
import { git as defaultGit } from "./git.js";
|
|
18
19
|
import { gh as defaultGh } from "./gh.js";
|
|
19
20
|
import { branchForTask, prTitleForTask, renderTaskPrompt, } from "./prompt.js";
|
|
@@ -23,7 +24,10 @@ function defaultSpawnClaude(cwd) {
|
|
|
23
24
|
// prompts. The runner is non-interactive (no TTY for human approval)
|
|
24
25
|
// and the permission boundary is enforced one level up — see the
|
|
25
26
|
// "Runner sandbox" section in packages/acc-runner/README.md.
|
|
26
|
-
|
|
27
|
+
// --output-format=json: emit a structured object so we can parse the
|
|
28
|
+
// usage block for cost tracking. parseClaudeJson falls back to plain
|
|
29
|
+
// text when older claude versions emit markdown directly.
|
|
30
|
+
return execa("claude", ["--print", "--dangerously-skip-permissions", "--output-format=json"], {
|
|
27
31
|
cwd,
|
|
28
32
|
stdin: "pipe",
|
|
29
33
|
stdout: "pipe",
|
|
@@ -64,24 +68,59 @@ async function streamToEvents(stream, supabase, taskId, streamName) {
|
|
|
64
68
|
return captured;
|
|
65
69
|
}
|
|
66
70
|
/**
|
|
67
|
-
* Pull the structured report block from claude's stdout.
|
|
68
|
-
*
|
|
69
|
-
*
|
|
71
|
+
* Pull the structured report block from claude's stdout. Recognises
|
|
72
|
+
* both `--output-format=json` (extracts .result) and plain text. Falls
|
|
73
|
+
* back to the entire stdout (capped) if no `## Summary` heading is
|
|
74
|
+
* present — that way the PR body still tells the reviewer what happened.
|
|
70
75
|
*/
|
|
71
76
|
export function extractReportFromOutput(stdout) {
|
|
72
|
-
const
|
|
77
|
+
const parsed = parseClaudeJson(stdout);
|
|
78
|
+
const text = parsed?.result ?? stdout;
|
|
79
|
+
const idx = text.indexOf("## Summary");
|
|
73
80
|
if (idx === -1) {
|
|
74
|
-
const trimmed =
|
|
81
|
+
const trimmed = text.trim();
|
|
75
82
|
if (!trimmed)
|
|
76
83
|
return "_(no report emitted)_";
|
|
77
84
|
return trimmed.slice(-8000);
|
|
78
85
|
}
|
|
79
|
-
return
|
|
86
|
+
return text.slice(idx).trim().slice(0, 16000);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Build a cost event from claude's stdout. Always returns a payload
|
|
90
|
+
* (zero-cost when usage isn't parseable) so the cap-tracking surface
|
|
91
|
+
* stays consistent: one cost_events row per attempt.
|
|
92
|
+
*/
|
|
93
|
+
export function buildCostEvent(taskId, stdout, fallbackModel, runnerId) {
|
|
94
|
+
const parsed = parseClaudeJson(stdout);
|
|
95
|
+
const model = parsed?.model ?? fallbackModel ?? "unknown";
|
|
96
|
+
const usage = normalizeUsage(parsed?.usage);
|
|
97
|
+
return {
|
|
98
|
+
task_id: taskId,
|
|
99
|
+
model,
|
|
100
|
+
usd_cents: priceUsdCents(model, usage),
|
|
101
|
+
runner_id: runnerId ?? null,
|
|
102
|
+
...usage,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
async function defaultPostCostEvent(supabase, event) {
|
|
106
|
+
const { error } = await supabase.rpc("record_cost_event", {
|
|
107
|
+
p_task_id: event.task_id,
|
|
108
|
+
p_model: event.model,
|
|
109
|
+
p_input_tokens: event.input_tokens,
|
|
110
|
+
p_output_tokens: event.output_tokens,
|
|
111
|
+
p_cache_read_tokens: event.cache_read_tokens,
|
|
112
|
+
p_cache_write_tokens: event.cache_write_tokens,
|
|
113
|
+
p_usd_cents: event.usd_cents,
|
|
114
|
+
p_runner_id: event.runner_id ?? null,
|
|
115
|
+
});
|
|
116
|
+
if (error)
|
|
117
|
+
throw new Error(error.message);
|
|
80
118
|
}
|
|
81
119
|
export function runTask(taskId, deps) {
|
|
82
120
|
const git = deps.git ?? defaultGit;
|
|
83
121
|
const gh = deps.gh ?? defaultGh;
|
|
84
122
|
const spawnClaude = deps.spawnClaude ?? defaultSpawnClaude;
|
|
123
|
+
const postCostEvent = deps.postCostEvent ?? ((event) => defaultPostCostEvent(deps.supabase, event));
|
|
85
124
|
let child = null;
|
|
86
125
|
let cancelled = false;
|
|
87
126
|
const promise = (async () => {
|
|
@@ -157,6 +196,18 @@ export function runTask(taskId, deps) {
|
|
|
157
196
|
stdoutPromise,
|
|
158
197
|
stderrPromise,
|
|
159
198
|
]);
|
|
199
|
+
// Post the cost event before any later branch returns so cap tracking
|
|
200
|
+
// captures success, cancellation, and non-zero exit alike. Best-effort:
|
|
201
|
+
// a failed POST logs to stderr but never bubbles past the runner.
|
|
202
|
+
{
|
|
203
|
+
const event = buildCostEvent(taskId, capturedStdout, result.model?.id, result.runner?.id);
|
|
204
|
+
try {
|
|
205
|
+
await postCostEvent(event);
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
process.stderr.write(`[acc-runner] cost-event post failed: ${err.message}\n`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
160
211
|
if (cancelled) {
|
|
161
212
|
await appendEvent(deps.supabase, taskId, "cancelled", {
|
|
162
213
|
exit_code: outcome.exitCode,
|
package/dist/task-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-runner.js","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,EAA0B,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,GAAG,IAAI,UAAU,EAAkB,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,EAAE,IAAI,SAAS,EAAiB,MAAM,SAAS,CAAC;AACzD,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"task-runner.js","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -32,9 +32,14 @@ export interface DeviceCodeSuccess {
|
|
|
32
32
|
export interface RefreshSuccess {
|
|
33
33
|
access_token: string;
|
|
34
34
|
expires_at: number;
|
|
35
|
+
/** v0.4-E rotated refresh token. The CLI persists this in keychain. */
|
|
36
|
+
refresh_token: string;
|
|
37
|
+
/** ISO-8601 timestamp at which `refresh_token` expires. */
|
|
38
|
+
refresh_expires_at: string;
|
|
35
39
|
}
|
|
40
|
+
export type RefreshFailureCode = "refresh_expired" | "refresh_reuse_detected";
|
|
36
41
|
export interface RefreshFailure {
|
|
37
|
-
error:
|
|
42
|
+
error: RefreshFailureCode;
|
|
38
43
|
hint?: string;
|
|
39
44
|
}
|
|
40
45
|
export interface DeviceCodeExpired {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AACjD,eAAO,MAAM,uBAAuB,EAAG,YAAqB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AACjD,eAAO,MAAM,uBAAuB,EAAG,YAAqB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,wBAAwB,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,MAAM,0BAA0B,GAClC,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/watch.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { runTask } from "./task-runner.js";
|
|
2
|
+
export declare class RefreshReuseDetectedError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
2
5
|
export interface WatchOptions {
|
|
3
6
|
/** Override heartbeat interval (ms). Defaults to 4000. */
|
|
4
7
|
heartbeatMs?: number;
|
|
8
|
+
/** Override polling interval (ms). Defaults to 30000. */
|
|
9
|
+
pollMs?: number;
|
|
5
10
|
/** Returns a controller for tests; production wiring uses the default. */
|
|
6
11
|
taskRunnerFactory?: typeof runTask;
|
|
7
12
|
}
|
|
8
13
|
export interface WatchHandle {
|
|
9
14
|
stop(): Promise<void>;
|
|
15
|
+
/** Test hook: forces one polling pass and resolves when it finishes. */
|
|
16
|
+
pollOnce(): Promise<void>;
|
|
10
17
|
}
|
|
11
18
|
export declare function watchCommand(options?: WatchOptions): Promise<WatchHandle>;
|
|
12
19
|
//# sourceMappingURL=watch.d.ts.map
|
package/dist/watch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAA0B,MAAM,kBAAkB,CAAC;AAMnE,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAQD,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,OAAO,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,wEAAwE;IACxE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAkMD,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CA+HnF"}
|
package/dist/watch.js
CHANGED
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
* tasks, runs them serially, heartbeats every 4s. v0.2.5 refreshes the
|
|
4
4
|
* access token on startup + every 30 min, and exits loudly after 5
|
|
5
5
|
* consecutive heartbeat failures instead of silent-zombie-ing.
|
|
6
|
+
*
|
|
7
|
+
* v0.3 adds a 30s polling fallback: if a Realtime broadcast is dropped
|
|
8
|
+
* during a reconnect, the next poll pass picks the task up via the
|
|
9
|
+
* `acc.list_assigned_queued_tasks` RPC. A `seen` set keeps the poll
|
|
10
|
+
* and the broadcast from fighting over the same task_id.
|
|
6
11
|
*/
|
|
7
12
|
import chalk from "chalk";
|
|
8
13
|
import { loadConfig } from "./config.js";
|
|
@@ -11,10 +16,18 @@ import { createRunnerClient } from "./supabase.js";
|
|
|
11
16
|
import { runTask } from "./task-runner.js";
|
|
12
17
|
import { checkVersion } from "./version-check.js";
|
|
13
18
|
import { PROTOCOL_VERSION } from "./types.js";
|
|
19
|
+
import { PACKAGE_VERSION } from "./pkg-version.js";
|
|
20
|
+
export class RefreshReuseDetectedError extends Error {
|
|
21
|
+
constructor(message) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.name = "RefreshReuseDetectedError";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
14
26
|
const ONE_HOUR_MS = 60 * 60 * 1000;
|
|
15
27
|
const REFRESH_CHECK_MS = 30 * 60 * 1000;
|
|
16
28
|
const HEARTBEAT_REFRESH_AFTER = 3;
|
|
17
29
|
const HEARTBEAT_EXIT_AFTER = 5;
|
|
30
|
+
const POLL_INTERVAL_MS = 30_000;
|
|
18
31
|
function expiresSoon(session, leadMs = ONE_HOUR_MS) {
|
|
19
32
|
const expires = Date.parse(session.access_expires_at);
|
|
20
33
|
if (!Number.isFinite(expires))
|
|
@@ -32,6 +45,10 @@ async function refreshAccessToken(cfg, session) {
|
|
|
32
45
|
});
|
|
33
46
|
if (res.status === 401) {
|
|
34
47
|
const body = (await res.json().catch(() => ({})));
|
|
48
|
+
if (body.error === "refresh_reuse_detected") {
|
|
49
|
+
throw new RefreshReuseDetectedError(body.hint ??
|
|
50
|
+
"refresh token reuse detected; keychain may be compromised. Run `acc-runner login` from a trusted machine.");
|
|
51
|
+
}
|
|
35
52
|
throw new Error(body.hint ?? "refresh token expired; run `acc-runner login`");
|
|
36
53
|
}
|
|
37
54
|
if (!res.ok) {
|
|
@@ -42,8 +59,36 @@ async function refreshAccessToken(cfg, session) {
|
|
|
42
59
|
...session,
|
|
43
60
|
access_token: body.access_token,
|
|
44
61
|
access_expires_at: new Date(body.expires_at * 1000).toISOString(),
|
|
62
|
+
// v0.4-E: server rotates on every refresh. Persist the new refresh token
|
|
63
|
+
// so the next call doesn't replay the old one (which would now look like
|
|
64
|
+
// reuse and trip the chain-revocation path).
|
|
65
|
+
refresh_token: body.refresh_token ?? session.refresh_token,
|
|
45
66
|
};
|
|
46
67
|
}
|
|
68
|
+
// Centralised handler for the reuse-detected case. Loud red banner so the
|
|
69
|
+
// operator notices immediately, then exit(1) — there's no safe recovery
|
|
70
|
+
// from the watch loop, the keychain has to be reset by `acc-runner login`.
|
|
71
|
+
function failOnReuse(err) {
|
|
72
|
+
process.stderr.write(chalk.red.bold("\n[acc-runner] CRITICAL: refresh-token reuse detected.\n"));
|
|
73
|
+
process.stderr.write(chalk.red(`${err.message}\n`));
|
|
74
|
+
process.stderr.write(chalk.red("If this machine is the legitimate owner, an attacker may have rotated your tokens.\n" +
|
|
75
|
+
"Rotate any other credentials that were on this box and run `acc-runner login` from a trusted machine.\n"));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
// Single source of truth for "this task is new — push it into the runner
|
|
79
|
+
// queue". Both the Realtime listener and the polling loop go through here.
|
|
80
|
+
function enqueue(state, taskId, factory) {
|
|
81
|
+
if (state.seen.has(taskId))
|
|
82
|
+
return false;
|
|
83
|
+
if (state.current && state.current.taskId === taskId) {
|
|
84
|
+
state.seen.add(taskId);
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
state.seen.add(taskId);
|
|
88
|
+
state.queue.push(taskId);
|
|
89
|
+
void pump(state, factory);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
47
92
|
function subscribeChannel(state, taskRunnerFactory) {
|
|
48
93
|
state.channel = state.supabase
|
|
49
94
|
.channel(`runner:${state.session.runner_id}`, {
|
|
@@ -51,10 +96,8 @@ function subscribeChannel(state, taskRunnerFactory) {
|
|
|
51
96
|
})
|
|
52
97
|
.on("broadcast", { event: "task_assigned" }, ({ payload }) => {
|
|
53
98
|
const taskId = payload?.task_id;
|
|
54
|
-
if (taskId)
|
|
55
|
-
state
|
|
56
|
-
void pump(state, taskRunnerFactory);
|
|
57
|
-
}
|
|
99
|
+
if (taskId)
|
|
100
|
+
enqueue(state, taskId, taskRunnerFactory);
|
|
58
101
|
})
|
|
59
102
|
.on("broadcast", { event: "task_cancelled" }, ({ payload }) => {
|
|
60
103
|
const taskId = payload?.task_id;
|
|
@@ -66,6 +109,9 @@ function subscribeChannel(state, taskRunnerFactory) {
|
|
|
66
109
|
else {
|
|
67
110
|
state.queue = state.queue.filter((t) => t !== taskId);
|
|
68
111
|
}
|
|
112
|
+
// Drop from seen so a re-queue (cancel → re-start) is honored on
|
|
113
|
+
// the next broadcast or poll.
|
|
114
|
+
state.seen.delete(taskId);
|
|
69
115
|
})
|
|
70
116
|
.subscribe((status) => {
|
|
71
117
|
if (status === "SUBSCRIBED") {
|
|
@@ -73,6 +119,36 @@ function subscribeChannel(state, taskRunnerFactory) {
|
|
|
73
119
|
}
|
|
74
120
|
});
|
|
75
121
|
}
|
|
122
|
+
// Single-flight poll. The watermark advances only after a clean response so
|
|
123
|
+
// a transient error doesn't permanently skip rows.
|
|
124
|
+
async function pollOnce(state, factory) {
|
|
125
|
+
if (state.stopped || state.polling)
|
|
126
|
+
return;
|
|
127
|
+
state.polling = true;
|
|
128
|
+
try {
|
|
129
|
+
const { data, error } = await state.supabase.rpc("list_assigned_queued_tasks", {
|
|
130
|
+
p_runner_id: state.session.runner_id,
|
|
131
|
+
p_since: state.pollSince,
|
|
132
|
+
});
|
|
133
|
+
if (error) {
|
|
134
|
+
process.stderr.write(`[acc-runner] poll failed: ${error.message}\n`);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const rows = (data ?? []);
|
|
138
|
+
let maxSeen = state.pollSince;
|
|
139
|
+
for (const row of rows) {
|
|
140
|
+
if (!row?.id)
|
|
141
|
+
continue;
|
|
142
|
+
enqueue(state, row.id, factory);
|
|
143
|
+
if (row.updated_at && row.updated_at > maxSeen)
|
|
144
|
+
maxSeen = row.updated_at;
|
|
145
|
+
}
|
|
146
|
+
state.pollSince = maxSeen;
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
state.polling = false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
76
152
|
// Single-flight refresh. Recreates the Supabase client (so future RPC +
|
|
77
153
|
// channel auth use the new JWT) and resubscribes the broadcast channel.
|
|
78
154
|
async function doRefresh(state, taskRunnerFactory) {
|
|
@@ -94,6 +170,8 @@ async function doRefresh(state, taskRunnerFactory) {
|
|
|
94
170
|
return true;
|
|
95
171
|
}
|
|
96
172
|
catch (err) {
|
|
173
|
+
if (err instanceof RefreshReuseDetectedError)
|
|
174
|
+
failOnReuse(err);
|
|
97
175
|
process.stderr.write(`[acc-runner] refresh failed: ${err.message}\n`);
|
|
98
176
|
return false;
|
|
99
177
|
}
|
|
@@ -122,12 +200,15 @@ export async function watchCommand(options = {}) {
|
|
|
122
200
|
await saveSession(session);
|
|
123
201
|
}
|
|
124
202
|
catch (err) {
|
|
203
|
+
if (err instanceof RefreshReuseDetectedError)
|
|
204
|
+
failOnReuse(err);
|
|
125
205
|
process.stderr.write(`Refresh failed; run \`acc-runner login\`. (${err.message})\n`);
|
|
126
206
|
process.exit(1);
|
|
127
207
|
}
|
|
128
208
|
}
|
|
129
209
|
const taskRunnerFactory = options.taskRunnerFactory ?? runTask;
|
|
130
210
|
const heartbeatMs = options.heartbeatMs ?? 4_000;
|
|
211
|
+
const pollMs = options.pollMs ?? POLL_INTERVAL_MS;
|
|
131
212
|
const state = {
|
|
132
213
|
cfg,
|
|
133
214
|
session,
|
|
@@ -135,18 +216,23 @@ export async function watchCommand(options = {}) {
|
|
|
135
216
|
channel: undefined,
|
|
136
217
|
heartbeatTimer: undefined,
|
|
137
218
|
refreshTimer: undefined,
|
|
219
|
+
pollTimer: undefined,
|
|
138
220
|
current: null,
|
|
139
221
|
queue: [],
|
|
222
|
+
seen: new Set(),
|
|
140
223
|
pumping: false,
|
|
141
224
|
stopped: false,
|
|
142
225
|
heartbeatFailures: 0,
|
|
143
226
|
refreshing: null,
|
|
227
|
+
pollSince: new Date(Date.now() - pollMs).toISOString(),
|
|
228
|
+
polling: false,
|
|
144
229
|
};
|
|
145
230
|
subscribeChannel(state, taskRunnerFactory);
|
|
146
231
|
state.heartbeatTimer = setInterval(() => {
|
|
147
232
|
void (async () => {
|
|
148
233
|
const { error } = await state.supabase.rpc("heartbeat_runner", {
|
|
149
234
|
p_id: state.session.runner_id,
|
|
235
|
+
p_version: PACKAGE_VERSION,
|
|
150
236
|
});
|
|
151
237
|
if (!error) {
|
|
152
238
|
state.heartbeatFailures = 0;
|
|
@@ -162,6 +248,7 @@ export async function watchCommand(options = {}) {
|
|
|
162
248
|
process.stderr.write("[acc-runner] heartbeat dead, exiting\n");
|
|
163
249
|
clearInterval(state.heartbeatTimer);
|
|
164
250
|
clearInterval(state.refreshTimer);
|
|
251
|
+
clearInterval(state.pollTimer);
|
|
165
252
|
process.exit(1);
|
|
166
253
|
}
|
|
167
254
|
})();
|
|
@@ -171,8 +258,14 @@ export async function watchCommand(options = {}) {
|
|
|
171
258
|
void doRefresh(state, taskRunnerFactory);
|
|
172
259
|
}
|
|
173
260
|
}, REFRESH_CHECK_MS);
|
|
261
|
+
state.pollTimer = setInterval(() => {
|
|
262
|
+
void pollOnce(state, taskRunnerFactory);
|
|
263
|
+
}, pollMs);
|
|
174
264
|
// Initial heartbeat fires immediately so the runner page reflects "online".
|
|
175
|
-
await state.supabase.rpc("heartbeat_runner", {
|
|
265
|
+
await state.supabase.rpc("heartbeat_runner", {
|
|
266
|
+
p_id: state.session.runner_id,
|
|
267
|
+
p_version: PACKAGE_VERSION,
|
|
268
|
+
});
|
|
176
269
|
console.log(chalk.gray(`Runner ${state.session.runner_id} is online. Ctrl-C to stop.`));
|
|
177
270
|
const stop = async () => {
|
|
178
271
|
if (state.stopped)
|
|
@@ -180,6 +273,7 @@ export async function watchCommand(options = {}) {
|
|
|
180
273
|
state.stopped = true;
|
|
181
274
|
clearInterval(state.heartbeatTimer);
|
|
182
275
|
clearInterval(state.refreshTimer);
|
|
276
|
+
clearInterval(state.pollTimer);
|
|
183
277
|
if (state.current)
|
|
184
278
|
state.current.cancel();
|
|
185
279
|
try {
|
|
@@ -201,7 +295,7 @@ export async function watchCommand(options = {}) {
|
|
|
201
295
|
process.once("SIGINT", onSignal);
|
|
202
296
|
process.once("SIGTERM", onSignal);
|
|
203
297
|
}
|
|
204
|
-
return { stop };
|
|
298
|
+
return { stop, pollOnce: () => pollOnce(state, taskRunnerFactory) };
|
|
205
299
|
}
|
|
206
300
|
async function pump(state, factory) {
|
|
207
301
|
if (state.pumping)
|
package/dist/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAA6B,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,OAAO,EAA0B,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AA4B/B,SAAS,WAAW,CAAC,OAAsB,EAAE,MAAM,GAAG,WAAW;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAiB,EACjB,OAAsB;IAEtB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,EAAE;QACjF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,cAAc,gBAAgB,EAAE;SAC/C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;KAC/D,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,+CAA+C,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;IAClD,OAAO;QACL,GAAG,OAAO;QACV,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB,EAAE,iBAAiC;IAC5E,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ;SAC3B,OAAO,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE;QAC5C,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;KACnD,CAAC;SACD,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAI,OAAgC,EAAE,OAAO,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,KAAK,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;SACD,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAI,OAAgC,EAAE,OAAO,CAAC;QAC1D,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACrD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;QACpB,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,wEAAwE;AACxE,wEAAwE;AACxE,KAAK,UAAU,SAAS,CACtB,KAAiB,EACjB,iBAAiC;IAEjC,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC;IAC9C,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACnE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;YACD,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC3E,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gCAAiC,GAAa,CAAC,OAAO,IAAI,CAC3D,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,KAAK,CAAC,UAAU,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAwB,EAAE;IAC3D,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,qDAAqD,CAAC,CAAC,SAAS,yDAAyD,CAC1H,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,2DAA2D;IAC3D,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8CAA+C,GAAa,CAAC,OAAO,KAAK,CAC1E,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;IAEjD,MAAM,KAAK,GAAe;QACxB,GAAG;QACH,OAAO;QACP,QAAQ,EAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC;QACvD,OAAO,EAAE,SAAuC;QAChD,cAAc,EAAE,SAAsC;QACtD,YAAY,EAAE,SAAsC;QACpD,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,IAAI;KACjB,CAAC;IACF,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAE3C,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE;gBAC7D,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kCAAkC,KAAK,CAAC,OAAO,IAAI,CACpD,CAAC;YACF,IAAI,KAAK,CAAC,iBAAiB,KAAK,uBAAuB,EAAE,CAAC;gBACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBAC9E,KAAK,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,KAAK,CAAC,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;gBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC/D,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACpC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,WAAW,CAAC,CAAC;IAEhB,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,KAAK,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAErB,4EAA4E;IAC5E,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEhF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC;IAExF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO;QAC1B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE;gBAC5C,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;gBAC7B,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,IAAI,CACjB,KAAiB,EACjB,OAAuB;IAEvB,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO;IAC1B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,IAAI,aAAc,GAAa,CAAC,OAAO,IAAI,CACjE,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED