@tokenfactory/acc-runner 0.2.4-internal → 0.3.0-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/cost-pricing.d.ts +47 -0
- package/dist/cost-pricing.d.ts.map +1 -0
- package/dist/cost-pricing.js +71 -0
- package/dist/cost-pricing.js.map +1 -0
- package/dist/doctor.js +1 -1
- package/dist/doctor.js.map +1 -1
- 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 +1 -0
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +25 -29
- package/dist/login.js.map +1 -1
- package/dist/logout.js +1 -1
- package/dist/logout.js.map +1 -1
- 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 +17 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/watch.d.ts +4 -0
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +232 -74
- package/dist/watch.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-model token pricing and a tiny helper that turns a Claude Code
|
|
3
|
+
* `--output-format=json` usage block into integer USD cents.
|
|
4
|
+
*
|
|
5
|
+
* Prices are USD per 1M tokens, snapshotted 2026-02-01 against the
|
|
6
|
+
* Anthropic public pricing page. Cache write/read columns follow
|
|
7
|
+
* Anthropic's "5-minute" cache tier (1.25× input / 0.1× input). When
|
|
8
|
+
* the runner bumps to v0.4.x, re-check the page and update the table.
|
|
9
|
+
*
|
|
10
|
+
* Unknown model strings fall back to Sonnet pricing — neither generous
|
|
11
|
+
* nor punitive, and the cost will still be posted so the cap-check
|
|
12
|
+
* surface stays accurate.
|
|
13
|
+
*/
|
|
14
|
+
export interface ModelPricing {
|
|
15
|
+
inputPer1M: number;
|
|
16
|
+
outputPer1M: number;
|
|
17
|
+
cacheWritePer1M: number;
|
|
18
|
+
cacheReadPer1M: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ClaudeUsage {
|
|
21
|
+
input_tokens?: number;
|
|
22
|
+
output_tokens?: number;
|
|
23
|
+
cache_creation_input_tokens?: number;
|
|
24
|
+
cache_read_input_tokens?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface NormalizedUsage {
|
|
27
|
+
input_tokens: number;
|
|
28
|
+
output_tokens: number;
|
|
29
|
+
cache_read_tokens: number;
|
|
30
|
+
cache_write_tokens: number;
|
|
31
|
+
}
|
|
32
|
+
export declare const MODEL_PRICING: Record<string, ModelPricing>;
|
|
33
|
+
export declare function pricingFor(model: string): ModelPricing;
|
|
34
|
+
export declare function normalizeUsage(raw: ClaudeUsage | null | undefined): NormalizedUsage;
|
|
35
|
+
export declare function priceUsdCents(model: string, usage: NormalizedUsage): number;
|
|
36
|
+
/**
|
|
37
|
+
* Parse the JSON block Claude Code emits with `--output-format=json`.
|
|
38
|
+
* Returns null on parse failure so the caller can fall back to plain
|
|
39
|
+
* markdown extraction.
|
|
40
|
+
*/
|
|
41
|
+
export interface ClaudeJsonOutput {
|
|
42
|
+
result?: string;
|
|
43
|
+
model?: string;
|
|
44
|
+
usage?: ClaudeUsage;
|
|
45
|
+
}
|
|
46
|
+
export declare function parseClaudeJson(stdout: string): ClaudeJsonOutput | null;
|
|
47
|
+
//# 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;;;;;;;;;;;;GAYG;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,EAAgB,MAAM,CAAC;IACpC,aAAa,CAAC,EAAe,MAAM,CAAC;IACpC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,uBAAuB,CAAC,EAAK,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAS,MAAM,CAAC;IAC5B,aAAa,EAAQ,MAAM,CAAC;IAC5B,iBAAiB,EAAI,MAAM,CAAC;IAC5B,kBAAkB,EAAG,MAAM,CAAC;CAC7B;AAuBD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAStD,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAOtD;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,71 @@
|
|
|
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
|
+
export const MODEL_PRICING = {
|
|
20
|
+
"claude-opus-4-7": OPUS,
|
|
21
|
+
"claude-opus-4-6": OPUS,
|
|
22
|
+
"claude-opus-4": OPUS,
|
|
23
|
+
"claude-sonnet-4-7": SONNET,
|
|
24
|
+
"claude-sonnet-4-6": SONNET,
|
|
25
|
+
"claude-sonnet-4": SONNET,
|
|
26
|
+
"claude-haiku-4-5": HAIKU,
|
|
27
|
+
"claude-haiku-4": HAIKU,
|
|
28
|
+
};
|
|
29
|
+
export function pricingFor(model) {
|
|
30
|
+
// Exact match wins; otherwise pick the family by substring so a model
|
|
31
|
+
// string like "claude-sonnet-4-6-20251001" still routes to Sonnet.
|
|
32
|
+
if (MODEL_PRICING[model])
|
|
33
|
+
return MODEL_PRICING[model];
|
|
34
|
+
if (model.includes("opus"))
|
|
35
|
+
return OPUS;
|
|
36
|
+
if (model.includes("haiku"))
|
|
37
|
+
return HAIKU;
|
|
38
|
+
return SONNET;
|
|
39
|
+
}
|
|
40
|
+
export function normalizeUsage(raw) {
|
|
41
|
+
return {
|
|
42
|
+
input_tokens: Math.max(0, Math.floor(raw?.input_tokens ?? 0)),
|
|
43
|
+
output_tokens: Math.max(0, Math.floor(raw?.output_tokens ?? 0)),
|
|
44
|
+
cache_read_tokens: Math.max(0, Math.floor(raw?.cache_read_input_tokens ?? 0)),
|
|
45
|
+
cache_write_tokens: Math.max(0, Math.floor(raw?.cache_creation_input_tokens ?? 0)),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function priceUsdCents(model, usage) {
|
|
49
|
+
const p = pricingFor(model);
|
|
50
|
+
const usd = (usage.input_tokens * p.inputPer1M +
|
|
51
|
+
usage.output_tokens * p.outputPer1M +
|
|
52
|
+
usage.cache_read_tokens * p.cacheReadPer1M +
|
|
53
|
+
usage.cache_write_tokens * p.cacheWritePer1M) / 1_000_000;
|
|
54
|
+
return Math.round(usd * 100);
|
|
55
|
+
}
|
|
56
|
+
export function parseClaudeJson(stdout) {
|
|
57
|
+
const trimmed = stdout.trim();
|
|
58
|
+
if (!trimmed.startsWith("{"))
|
|
59
|
+
return null;
|
|
60
|
+
try {
|
|
61
|
+
const parsed = JSON.parse(trimmed);
|
|
62
|
+
if (typeof parsed === "object" && parsed !== null) {
|
|
63
|
+
return parsed;
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# 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/doctor.js
CHANGED
|
@@ -212,7 +212,7 @@ async function checkRegistration() {
|
|
|
212
212
|
};
|
|
213
213
|
}
|
|
214
214
|
try {
|
|
215
|
-
const supabase = createRunnerClient(cfg, session.
|
|
215
|
+
const supabase = createRunnerClient(cfg, session.access_token);
|
|
216
216
|
const { data, error } = await supabase
|
|
217
217
|
.from("runners")
|
|
218
218
|
.select("id,bound_user_id,status")
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,SAAS,GAAuC;IACpD,SAAS,EAAE,gBAAgB;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,eAAe,EAAE,uBAAuB;IACxC,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,iBAAiB;IAC7B,iBAAiB,EAAE,wBAAwB;CAC5C,CAAC;AAEF,MAAM,aAAa,GAAuC;IACxD,SAAS,EAAE,iBAAiB;IAC5B,WAAW,EAAE,eAAe;IAC5B,eAAe,EAAE,oBAAoB;IACrC,QAAQ,EAAE,gBAAgB;IAC1B,UAAU,EAAE,cAAc;IAC1B,iBAAiB,EAAE,qBAAqB;CACzC,CAAC;AAEF,SAAS,OAAO,CAAC,CAAS;IACxB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,GAAiB;IACrC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAA+B,CAAC,GAAG,CACzE,CAAC,CAAC,EAAE,EAAE;QACJ,MAAM,KAAK,GAAG,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,GACP,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK;YACd,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;YACtC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9B,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC;IAChE,CAAC,CACF,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AASD,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,IAAc;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAG,GAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,KAAK,IAAI,EAAE;QACf,MAAM,EAAE,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;QACvC,GAAG,EAAE,0CAA0C;KAChD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,EAAE,kEAAkE;KACxE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,8CAA8C;SACpD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,oCAAoC;YAC5C,GAAG,EAAE,sBAAsB;SAC5B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,EAAE,oCAAoC;SAC1C,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,8BAA8B;YACpC,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,2BAA2B;YACnC,GAAG,EAAE,yDAAyD;SAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CASrC,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;QACnC,MAAM,CAAC,CAAC,WAAW,CAAC,mBAAmB,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,CAAC,CAAC,cAAc,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACxD,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,EAAE,EAAE,CAAC,KAAK,IAAI;YACd,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,CAAC,CAAC,EAAE;SACvD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,EAAE,EAAE,KAAK;YACT,MAAM,EAAG,GAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,GAAG,EAAE,yFAAyF;SAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,EAAE;YACrE,OAAO,EAAE,EAAE,YAAY,EAAE,cAAc,gBAAgB,EAAE,EAAE;SAC5D,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,uBAAuB;gBAC7B,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE;gBAC5B,GAAG,EAAE,yDAAyD;aAC/D,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,EAAE,EAAE,KAAK;YACT,MAAM,EAAG,GAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,GAAG,EAAE,mDAAmD;SACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,SAAiB;IACnD,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACT,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,eAAe,CAAC,CAAC,SAAS,eAAe,gBAAgB,EAAE;SACpE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,eAAe,CAAC,CAAC,SAAS,eAAe,gBAAgB,EAAE;YACnE,GAAG,EAAE,oDAAoD;SAC1D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,aAAa;QACjC,GAAG,EAAE,wCAAwC;KAC9C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,gEAAgE;QAChE,8DAA8D;QAC9D,4CAA4C;QAC5C,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,4BAA4B;YACpC,GAAG,EAAE,6DAA6D;SACnE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,wBAAwB;YAChC,GAAG,EAAE,yBAAyB;SAC/B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;aACnC,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,yBAAyB,CAAC;aACjC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC;aAC3B,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,IAAI,EAAE,mBAAmB;gBACzB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,KAAK,CAAC,OAAO;gBACrB,GAAG,EAAE,4BAA4B;aAClC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,IAAI,EAAE,mBAAmB;gBACzB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,cAAc,OAAO,CAAC,SAAS,YAAY;gBACnD,GAAG,EAAE,4BAA4B;aAClC,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,mBAAmB;gBACzB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,kCAAkC;gBAC1C,GAAG,EAAE,wDAAwD;aAC9D,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,YAAY,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACzG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,EAAE,EAAE,KAAK;YACT,MAAM,EAAG,GAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,GAAG,EAAE,4BAA4B;SAClC,CAAC;IACJ,CAAC;AACH,CAAC;AAOD,SAAS,MAAM,CAAC,OAAqB;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,OAAO,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAyB,EAAE;IAC7D,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,IAAI;QAChB,SAAS;QACT,WAAW;QACX,OAAO;QACP,QAAQ;QACR,aAAa;QACb,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,iBAAiB;KAClB,CAAC;IAEJ,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC"}
|
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
CHANGED
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":"AAgCA,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,CAgF5E"}
|
package/dist/login.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `acc-runner login` — device-code OAuth flow.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* 5. Register a runner row in acc.runners via the existing register_runner
|
|
9
|
-
* RPC so the user sees this machine in the Runners page.
|
|
2
|
+
* `acc-runner login` — device-code OAuth flow. v0.2.5: passes the
|
|
3
|
+
* machine identity to /exchange so the server can reuse an existing
|
|
4
|
+
* acc.runners row keyed by (bound_user_id, machine) and return both
|
|
5
|
+
* access_token (8h) and refresh_token (30d) in one shot. The CLI's
|
|
6
|
+
* subsequent register_runner call (migration 0029 variant) fills in
|
|
7
|
+
* caps/models/name on the row the server resolved.
|
|
10
8
|
*/
|
|
11
9
|
import os from "node:os";
|
|
12
10
|
import { setTimeout as sleep } from "node:timers/promises";
|
|
@@ -25,12 +23,8 @@ const RUNNER_CAPS = {
|
|
|
25
23
|
readFiles: true,
|
|
26
24
|
executeQueue: true,
|
|
27
25
|
};
|
|
28
|
-
function
|
|
29
|
-
|
|
30
|
-
let out = "";
|
|
31
|
-
for (let i = 0; i < n; i++)
|
|
32
|
-
out += alphabet[Math.floor(Math.random() * alphabet.length)];
|
|
33
|
-
return out;
|
|
26
|
+
export function machineIdentity() {
|
|
27
|
+
return `${process.platform}-${process.arch}-${os.hostname()}`;
|
|
34
28
|
}
|
|
35
29
|
async function detectInstalledModels() {
|
|
36
30
|
const out = [];
|
|
@@ -75,20 +69,18 @@ export async function loginCommand(options = {}) {
|
|
|
75
69
|
console.log(` ${chalk.cyan("2.")} Enter code: ${chalk.bold.green(start.user_code)}`);
|
|
76
70
|
console.log("");
|
|
77
71
|
console.log(chalk.gray("Waiting for confirmation…"));
|
|
78
|
-
// Best-effort browser launch. On headless boxes (CI, SSH session
|
|
79
|
-
// without an X server, locked-down corp setup) this rejects; the
|
|
80
|
-
// copy/paste URL above still works. We don't await — polling should
|
|
81
|
-
// start immediately while the browser is loading.
|
|
82
72
|
open(start.verification_url).catch(() => {
|
|
83
73
|
/* no browser available; user falls back to the printed URL */
|
|
84
74
|
});
|
|
75
|
+
const machine = machineIdentity();
|
|
76
|
+
const hostname = os.hostname();
|
|
85
77
|
// 2. Poll the exchange endpoint.
|
|
86
78
|
const interval = (options.intervalSeconds ?? start.interval) * 1000;
|
|
87
79
|
const deadline = Date.now() + (options.timeoutSeconds ?? start.expires_in) * 1000;
|
|
88
80
|
let exchanged = null;
|
|
89
81
|
while (Date.now() < deadline) {
|
|
90
82
|
await sleep(interval);
|
|
91
|
-
const exchange = await postJson(`${cfg.publicUrl.replace(/\/+$/, "")}/api/runner/device-code/exchange`, { device_code: start.device_code });
|
|
83
|
+
const exchange = await postJson(`${cfg.publicUrl.replace(/\/+$/, "")}/api/runner/device-code/exchange`, { device_code: start.device_code, machine, hostname });
|
|
92
84
|
if (exchange.status === "expired") {
|
|
93
85
|
throw new Error("Device code expired before sign-in completed. Run `acc-runner login` again.");
|
|
94
86
|
}
|
|
@@ -101,31 +93,35 @@ export async function loginCommand(options = {}) {
|
|
|
101
93
|
throw new Error("Device code timed out before sign-in completed.");
|
|
102
94
|
}
|
|
103
95
|
console.log(chalk.green(`✓ Logged in as ${exchanged.email ?? exchanged.user_id}`));
|
|
104
|
-
// 3.
|
|
105
|
-
|
|
106
|
-
|
|
96
|
+
// 3. Persist the session. Server resolved runner_id (reused if a row
|
|
97
|
+
// already exists for this user+machine pair) so ACC_TEST_RUNNER_ID
|
|
98
|
+
// is stable across re-logins.
|
|
107
99
|
await saveSession({
|
|
108
|
-
|
|
100
|
+
access_token: exchanged.access_token,
|
|
101
|
+
refresh_token: exchanged.refresh_token,
|
|
102
|
+
access_expires_at: new Date(exchanged.expires_at * 1000).toISOString(),
|
|
109
103
|
email: exchanged.email,
|
|
110
104
|
user_id: exchanged.user_id,
|
|
111
|
-
runner_id:
|
|
105
|
+
runner_id: exchanged.runner_id,
|
|
112
106
|
});
|
|
113
107
|
console.log(chalk.green(`✓ Stored token in OS keychain (acc-runner)`));
|
|
114
|
-
// 4.
|
|
115
|
-
|
|
108
|
+
// 4. Fill in caps/models/name on the (server-resolved) runner row.
|
|
109
|
+
// The 0029 register_runner variant upserts by id, so this updates
|
|
110
|
+
// the stub row /exchange created (or refreshes an existing one).
|
|
111
|
+
const supabase = createRunnerClient(cfg, exchanged.access_token);
|
|
116
112
|
const models = await detectInstalledModels();
|
|
117
113
|
const { error } = await supabase.rpc("register_runner", {
|
|
118
|
-
p_id:
|
|
114
|
+
p_id: exchanged.runner_id,
|
|
119
115
|
p_name: `${exchanged.email ?? exchanged.user_id}'s ${os.hostname()}`,
|
|
120
116
|
p_owner: exchanged.email ?? exchanged.user_id,
|
|
121
|
-
p_machine:
|
|
117
|
+
p_machine: machine,
|
|
122
118
|
p_models: models,
|
|
123
119
|
p_caps: RUNNER_CAPS,
|
|
124
120
|
});
|
|
125
121
|
if (error) {
|
|
126
122
|
throw new Error(`register_runner failed: ${error.message}`);
|
|
127
123
|
}
|
|
128
|
-
console.log(chalk.green(`✓ Registered runner: ${
|
|
124
|
+
console.log(chalk.green(`✓ Registered runner: ${exchanged.runner_id}`));
|
|
129
125
|
console.log("");
|
|
130
126
|
console.log(`Run ${chalk.bold("acc-runner watch")} to start receiving tasks.`);
|
|
131
127
|
}
|
package/dist/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
|
package/dist/logout.js
CHANGED
|
@@ -15,7 +15,7 @@ export async function logoutCommand() {
|
|
|
15
15
|
// server is unreachable.
|
|
16
16
|
try {
|
|
17
17
|
const cfg = loadConfig();
|
|
18
|
-
const supabase = createRunnerClient(cfg, session.
|
|
18
|
+
const supabase = createRunnerClient(cfg, session.access_token);
|
|
19
19
|
await supabase.rpc("set_runner_status", {
|
|
20
20
|
p_id: session.runner_id,
|
|
21
21
|
p_status: "offline",
|
package/dist/logout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE;YACtC,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,oCAAqC,GAAa,CAAC,OAAO,mCAAmC,CAC9F,CACF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC;AAC5E,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
|
@@ -21,10 +21,22 @@ export interface DeviceCodePending {
|
|
|
21
21
|
}
|
|
22
22
|
export interface DeviceCodeSuccess {
|
|
23
23
|
status: "ok";
|
|
24
|
-
|
|
24
|
+
access_token: string;
|
|
25
|
+
/** Unix-seconds expiry of access_token. */
|
|
26
|
+
expires_at: number;
|
|
27
|
+
refresh_token: string;
|
|
28
|
+
runner_id: string;
|
|
25
29
|
user_id: string;
|
|
26
30
|
email: string | null;
|
|
27
31
|
}
|
|
32
|
+
export interface RefreshSuccess {
|
|
33
|
+
access_token: string;
|
|
34
|
+
expires_at: number;
|
|
35
|
+
}
|
|
36
|
+
export interface RefreshFailure {
|
|
37
|
+
error: "refresh_expired";
|
|
38
|
+
hint?: string;
|
|
39
|
+
}
|
|
28
40
|
export interface DeviceCodeExpired {
|
|
29
41
|
status: "expired";
|
|
30
42
|
}
|
|
@@ -69,7 +81,10 @@ export interface RunnerCaps {
|
|
|
69
81
|
executeQueue: boolean;
|
|
70
82
|
}
|
|
71
83
|
export interface StoredSession {
|
|
72
|
-
|
|
84
|
+
access_token: string;
|
|
85
|
+
refresh_token: string;
|
|
86
|
+
/** ISO-8601 timestamp at which access_token expires. */
|
|
87
|
+
access_expires_at: string;
|
|
73
88
|
email: string | null;
|
|
74
89
|
user_id: string;
|
|
75
90
|
runner_id: string;
|
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,
|
|
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;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,CAAC;IACzB,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
|
@@ -2,11 +2,15 @@ import { runTask } from "./task-runner.js";
|
|
|
2
2
|
export interface WatchOptions {
|
|
3
3
|
/** Override heartbeat interval (ms). Defaults to 4000. */
|
|
4
4
|
heartbeatMs?: number;
|
|
5
|
+
/** Override polling interval (ms). Defaults to 30000. */
|
|
6
|
+
pollMs?: number;
|
|
5
7
|
/** Returns a controller for tests; production wiring uses the default. */
|
|
6
8
|
taskRunnerFactory?: typeof runTask;
|
|
7
9
|
}
|
|
8
10
|
export interface WatchHandle {
|
|
9
11
|
stop(): Promise<void>;
|
|
12
|
+
/** Test hook: forces one polling pass and resolves when it finishes. */
|
|
13
|
+
pollOnce(): Promise<void>;
|
|
10
14
|
}
|
|
11
15
|
export declare function watchCommand(options?: WatchOptions): Promise<WatchHandle>;
|
|
12
16
|
//# 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;AAWnE,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;AAsKD,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0HnF"}
|
package/dist/watch.js
CHANGED
|
@@ -1,102 +1,260 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `acc-runner watch` — long-running command. Subscribes to
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* `acc-runner watch` — long-running command. Subscribes to broadcast
|
|
3
|
+
* tasks, runs them serially, heartbeats every 4s. v0.2.5 refreshes the
|
|
4
|
+
* access token on startup + every 30 min, and exits loudly after 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.
|
|
5
11
|
*/
|
|
6
12
|
import chalk from "chalk";
|
|
7
13
|
import { loadConfig } from "./config.js";
|
|
8
|
-
import { loadSession } from "./keychain.js";
|
|
14
|
+
import { loadSession, saveSession } from "./keychain.js";
|
|
9
15
|
import { createRunnerClient } from "./supabase.js";
|
|
10
16
|
import { runTask } from "./task-runner.js";
|
|
11
17
|
import { checkVersion } from "./version-check.js";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
import { PROTOCOL_VERSION } from "./types.js";
|
|
19
|
+
const ONE_HOUR_MS = 60 * 60 * 1000;
|
|
20
|
+
const REFRESH_CHECK_MS = 30 * 60 * 1000;
|
|
21
|
+
const HEARTBEAT_REFRESH_AFTER = 3;
|
|
22
|
+
const HEARTBEAT_EXIT_AFTER = 5;
|
|
23
|
+
const POLL_INTERVAL_MS = 30_000;
|
|
24
|
+
function expiresSoon(session, leadMs = ONE_HOUR_MS) {
|
|
25
|
+
const expires = Date.parse(session.access_expires_at);
|
|
26
|
+
if (!Number.isFinite(expires))
|
|
27
|
+
return true;
|
|
28
|
+
return expires < Date.now() + leadMs;
|
|
29
|
+
}
|
|
30
|
+
async function refreshAccessToken(cfg, session) {
|
|
31
|
+
const res = await fetch(`${cfg.publicUrl.replace(/\/+$/, "")}/api/runner/refresh`, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: {
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
"User-Agent": `acc-runner/${PROTOCOL_VERSION}`,
|
|
36
|
+
},
|
|
37
|
+
body: JSON.stringify({ refresh_token: session.refresh_token }),
|
|
38
|
+
});
|
|
39
|
+
if (res.status === 401) {
|
|
40
|
+
const body = (await res.json().catch(() => ({})));
|
|
41
|
+
throw new Error(body.hint ?? "refresh token expired; run `acc-runner login`");
|
|
17
42
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (!v.ok && v.reason === "outdated") {
|
|
21
|
-
throw new Error(`acc-runner is below the server's minimum version (${v.serverMin}). Run \`pnpm add -g @tokenfactory/acc-runner@latest\`.`);
|
|
43
|
+
if (!res.ok) {
|
|
44
|
+
throw new Error(`refresh failed: ${res.status} ${await res.text()}`);
|
|
22
45
|
}
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// earlier P2-A.2.c carried over from the realtime take-3 fix is gone:
|
|
29
|
-
// that fix was about `.on('postgres_changes', …)` colliding with a
|
|
30
|
-
// cached channel after rapid React-StrictMode remounts. This is a
|
|
31
|
-
// long-lived CLI process subscribing only to broadcast events, which
|
|
32
|
-
// don't trip the same supabase-realtime guard.
|
|
33
|
-
const channelName = `runner:${session.runner_id}`;
|
|
34
|
-
const ctx = {
|
|
35
|
-
cfg,
|
|
36
|
-
supabase,
|
|
37
|
-
session,
|
|
38
|
-
channel: supabase.channel(channelName, {
|
|
39
|
-
config: { broadcast: { ack: false, self: false } },
|
|
40
|
-
}),
|
|
41
|
-
heartbeat: setInterval(() => {
|
|
42
|
-
void supabase.rpc("heartbeat_runner", { p_id: session.runner_id });
|
|
43
|
-
}, heartbeatMs),
|
|
44
|
-
current: null,
|
|
45
|
-
queue: [],
|
|
46
|
-
pumping: false,
|
|
47
|
-
stopped: false,
|
|
46
|
+
const body = (await res.json());
|
|
47
|
+
return {
|
|
48
|
+
...session,
|
|
49
|
+
access_token: body.access_token,
|
|
50
|
+
access_expires_at: new Date(body.expires_at * 1000).toISOString(),
|
|
48
51
|
};
|
|
49
|
-
|
|
52
|
+
}
|
|
53
|
+
// Single source of truth for "this task is new — push it into the runner
|
|
54
|
+
// queue". Both the Realtime listener and the polling loop go through here.
|
|
55
|
+
function enqueue(state, taskId, factory) {
|
|
56
|
+
if (state.seen.has(taskId))
|
|
57
|
+
return false;
|
|
58
|
+
if (state.current && state.current.taskId === taskId) {
|
|
59
|
+
state.seen.add(taskId);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
state.seen.add(taskId);
|
|
63
|
+
state.queue.push(taskId);
|
|
64
|
+
void pump(state, factory);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
function subscribeChannel(state, taskRunnerFactory) {
|
|
68
|
+
state.channel = state.supabase
|
|
69
|
+
.channel(`runner:${state.session.runner_id}`, {
|
|
70
|
+
config: { broadcast: { ack: false, self: false } },
|
|
71
|
+
})
|
|
50
72
|
.on("broadcast", { event: "task_assigned" }, ({ payload }) => {
|
|
51
73
|
const taskId = payload?.task_id;
|
|
52
|
-
if (taskId)
|
|
53
|
-
|
|
54
|
-
void pump(ctx, taskRunnerFactory);
|
|
55
|
-
}
|
|
74
|
+
if (taskId)
|
|
75
|
+
enqueue(state, taskId, taskRunnerFactory);
|
|
56
76
|
})
|
|
57
77
|
.on("broadcast", { event: "task_cancelled" }, ({ payload }) => {
|
|
58
78
|
const taskId = payload?.task_id;
|
|
59
79
|
if (!taskId)
|
|
60
80
|
return;
|
|
61
|
-
if (
|
|
62
|
-
|
|
81
|
+
if (state.current && state.current.taskId === taskId) {
|
|
82
|
+
state.current.cancel();
|
|
63
83
|
}
|
|
64
84
|
else {
|
|
65
|
-
|
|
85
|
+
state.queue = state.queue.filter((t) => t !== taskId);
|
|
66
86
|
}
|
|
87
|
+
// Drop from seen so a re-queue (cancel → re-start) is honored on
|
|
88
|
+
// the next broadcast or poll.
|
|
89
|
+
state.seen.delete(taskId);
|
|
67
90
|
})
|
|
68
91
|
.subscribe((status) => {
|
|
69
92
|
if (status === "SUBSCRIBED") {
|
|
70
|
-
console.log(chalk.green(`✓ Listening on
|
|
93
|
+
console.log(chalk.green(`✓ Listening on runner:${state.session.runner_id}`));
|
|
71
94
|
}
|
|
72
95
|
});
|
|
96
|
+
}
|
|
97
|
+
// Single-flight poll. The watermark advances only after a clean response so
|
|
98
|
+
// a transient error doesn't permanently skip rows.
|
|
99
|
+
async function pollOnce(state, factory) {
|
|
100
|
+
if (state.stopped || state.polling)
|
|
101
|
+
return;
|
|
102
|
+
state.polling = true;
|
|
103
|
+
try {
|
|
104
|
+
const { data, error } = await state.supabase.rpc("list_assigned_queued_tasks", {
|
|
105
|
+
p_runner_id: state.session.runner_id,
|
|
106
|
+
p_since: state.pollSince,
|
|
107
|
+
});
|
|
108
|
+
if (error) {
|
|
109
|
+
process.stderr.write(`[acc-runner] poll failed: ${error.message}\n`);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const rows = (data ?? []);
|
|
113
|
+
let maxSeen = state.pollSince;
|
|
114
|
+
for (const row of rows) {
|
|
115
|
+
if (!row?.id)
|
|
116
|
+
continue;
|
|
117
|
+
enqueue(state, row.id, factory);
|
|
118
|
+
if (row.updated_at && row.updated_at > maxSeen)
|
|
119
|
+
maxSeen = row.updated_at;
|
|
120
|
+
}
|
|
121
|
+
state.pollSince = maxSeen;
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
state.polling = false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Single-flight refresh. Recreates the Supabase client (so future RPC +
|
|
128
|
+
// channel auth use the new JWT) and resubscribes the broadcast channel.
|
|
129
|
+
async function doRefresh(state, taskRunnerFactory) {
|
|
130
|
+
if (state.refreshing)
|
|
131
|
+
return state.refreshing;
|
|
132
|
+
state.refreshing = (async () => {
|
|
133
|
+
try {
|
|
134
|
+
const updated = await refreshAccessToken(state.cfg, state.session);
|
|
135
|
+
state.session = updated;
|
|
136
|
+
await saveSession(updated);
|
|
137
|
+
try {
|
|
138
|
+
await state.supabase.removeChannel(state.channel);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
/* channel may already be torn down */
|
|
142
|
+
}
|
|
143
|
+
state.supabase = createRunnerClient(state.cfg, state.session.access_token);
|
|
144
|
+
subscribeChannel(state, taskRunnerFactory);
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
process.stderr.write(`[acc-runner] refresh failed: ${err.message}\n`);
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
state.refreshing = null;
|
|
153
|
+
}
|
|
154
|
+
})();
|
|
155
|
+
return state.refreshing;
|
|
156
|
+
}
|
|
157
|
+
export async function watchCommand(options = {}) {
|
|
158
|
+
const cfg = loadConfig();
|
|
159
|
+
let session = await loadSession();
|
|
160
|
+
if (!session) {
|
|
161
|
+
process.stderr.write("Not logged in. Run `acc-runner login`.\n");
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
const v = await checkVersion(cfg.publicUrl);
|
|
165
|
+
if (!v.ok && v.reason === "outdated") {
|
|
166
|
+
throw new Error(`acc-runner is below the server's minimum version (${v.serverMin}). Run \`pnpm add -g @tokenfactory/acc-runner@latest\`.`);
|
|
167
|
+
}
|
|
168
|
+
// Startup refresh: if the access token expires in less than an hour,
|
|
169
|
+
// grab a fresh one before opening the realtime connection.
|
|
170
|
+
if (expiresSoon(session)) {
|
|
171
|
+
try {
|
|
172
|
+
session = await refreshAccessToken(cfg, session);
|
|
173
|
+
await saveSession(session);
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
process.stderr.write(`Refresh failed; run \`acc-runner login\`. (${err.message})\n`);
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const taskRunnerFactory = options.taskRunnerFactory ?? runTask;
|
|
181
|
+
const heartbeatMs = options.heartbeatMs ?? 4_000;
|
|
182
|
+
const pollMs = options.pollMs ?? POLL_INTERVAL_MS;
|
|
183
|
+
const state = {
|
|
184
|
+
cfg,
|
|
185
|
+
session,
|
|
186
|
+
supabase: createRunnerClient(cfg, session.access_token),
|
|
187
|
+
channel: undefined,
|
|
188
|
+
heartbeatTimer: undefined,
|
|
189
|
+
refreshTimer: undefined,
|
|
190
|
+
pollTimer: undefined,
|
|
191
|
+
current: null,
|
|
192
|
+
queue: [],
|
|
193
|
+
seen: new Set(),
|
|
194
|
+
pumping: false,
|
|
195
|
+
stopped: false,
|
|
196
|
+
heartbeatFailures: 0,
|
|
197
|
+
refreshing: null,
|
|
198
|
+
pollSince: new Date(Date.now() - pollMs).toISOString(),
|
|
199
|
+
polling: false,
|
|
200
|
+
};
|
|
201
|
+
subscribeChannel(state, taskRunnerFactory);
|
|
202
|
+
state.heartbeatTimer = setInterval(() => {
|
|
203
|
+
void (async () => {
|
|
204
|
+
const { error } = await state.supabase.rpc("heartbeat_runner", {
|
|
205
|
+
p_id: state.session.runner_id,
|
|
206
|
+
});
|
|
207
|
+
if (!error) {
|
|
208
|
+
state.heartbeatFailures = 0;
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
state.heartbeatFailures += 1;
|
|
212
|
+
process.stderr.write(`[acc-runner] heartbeat failed: ${error.message}\n`);
|
|
213
|
+
if (state.heartbeatFailures === HEARTBEAT_REFRESH_AFTER) {
|
|
214
|
+
process.stderr.write("[acc-runner] JWT may be expired, attempting refresh\n");
|
|
215
|
+
void doRefresh(state, taskRunnerFactory);
|
|
216
|
+
}
|
|
217
|
+
if (state.heartbeatFailures >= HEARTBEAT_EXIT_AFTER) {
|
|
218
|
+
process.stderr.write("[acc-runner] heartbeat dead, exiting\n");
|
|
219
|
+
clearInterval(state.heartbeatTimer);
|
|
220
|
+
clearInterval(state.refreshTimer);
|
|
221
|
+
clearInterval(state.pollTimer);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
})();
|
|
225
|
+
}, heartbeatMs);
|
|
226
|
+
state.refreshTimer = setInterval(() => {
|
|
227
|
+
if (expiresSoon(state.session)) {
|
|
228
|
+
void doRefresh(state, taskRunnerFactory);
|
|
229
|
+
}
|
|
230
|
+
}, REFRESH_CHECK_MS);
|
|
231
|
+
state.pollTimer = setInterval(() => {
|
|
232
|
+
void pollOnce(state, taskRunnerFactory);
|
|
233
|
+
}, pollMs);
|
|
73
234
|
// Initial heartbeat fires immediately so the runner page reflects "online".
|
|
74
|
-
await supabase.rpc("heartbeat_runner", { p_id: session.runner_id });
|
|
75
|
-
console.log(chalk.gray(`Runner ${session.runner_id} is online. Ctrl-C to stop.`));
|
|
235
|
+
await state.supabase.rpc("heartbeat_runner", { p_id: state.session.runner_id });
|
|
236
|
+
console.log(chalk.gray(`Runner ${state.session.runner_id} is online. Ctrl-C to stop.`));
|
|
76
237
|
const stop = async () => {
|
|
77
|
-
if (
|
|
238
|
+
if (state.stopped)
|
|
78
239
|
return;
|
|
79
|
-
|
|
80
|
-
clearInterval(
|
|
81
|
-
|
|
82
|
-
|
|
240
|
+
state.stopped = true;
|
|
241
|
+
clearInterval(state.heartbeatTimer);
|
|
242
|
+
clearInterval(state.refreshTimer);
|
|
243
|
+
clearInterval(state.pollTimer);
|
|
244
|
+
if (state.current)
|
|
245
|
+
state.current.cancel();
|
|
83
246
|
try {
|
|
84
|
-
await supabase.removeChannel(
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
/* ignore */
|
|
247
|
+
await state.supabase.removeChannel(state.channel);
|
|
88
248
|
}
|
|
249
|
+
catch { /* ignore */ }
|
|
89
250
|
try {
|
|
90
|
-
await supabase.rpc("set_runner_status", {
|
|
91
|
-
p_id: session.runner_id,
|
|
251
|
+
await state.supabase.rpc("set_runner_status", {
|
|
252
|
+
p_id: state.session.runner_id,
|
|
92
253
|
p_status: "offline",
|
|
93
254
|
});
|
|
94
255
|
}
|
|
95
|
-
catch {
|
|
96
|
-
/* network may already be gone */
|
|
97
|
-
}
|
|
256
|
+
catch { /* network may already be gone */ }
|
|
98
257
|
};
|
|
99
|
-
// Wire SIGINT/SIGTERM in production; tests skip this by listening once.
|
|
100
258
|
if (!options.taskRunnerFactory) {
|
|
101
259
|
const onSignal = () => {
|
|
102
260
|
void stop().then(() => process.exit(0));
|
|
@@ -104,31 +262,31 @@ export async function watchCommand(options = {}) {
|
|
|
104
262
|
process.once("SIGINT", onSignal);
|
|
105
263
|
process.once("SIGTERM", onSignal);
|
|
106
264
|
}
|
|
107
|
-
return { stop };
|
|
265
|
+
return { stop, pollOnce: () => pollOnce(state, taskRunnerFactory) };
|
|
108
266
|
}
|
|
109
|
-
async function pump(
|
|
110
|
-
if (
|
|
267
|
+
async function pump(state, factory) {
|
|
268
|
+
if (state.pumping)
|
|
111
269
|
return;
|
|
112
|
-
|
|
270
|
+
state.pumping = true;
|
|
113
271
|
try {
|
|
114
|
-
while (!
|
|
115
|
-
const next =
|
|
272
|
+
while (!state.stopped && state.queue.length > 0) {
|
|
273
|
+
const next = state.queue.shift();
|
|
116
274
|
if (!next)
|
|
117
275
|
continue;
|
|
118
|
-
|
|
276
|
+
state.current = factory(next, { supabase: state.supabase, cfg: state.cfg });
|
|
119
277
|
try {
|
|
120
|
-
await
|
|
278
|
+
await state.current.promise;
|
|
121
279
|
}
|
|
122
280
|
catch (err) {
|
|
123
281
|
process.stderr.write(`[acc-runner] task ${next} crashed: ${err.message}\n`);
|
|
124
282
|
}
|
|
125
283
|
finally {
|
|
126
|
-
|
|
284
|
+
state.current = null;
|
|
127
285
|
}
|
|
128
286
|
}
|
|
129
287
|
}
|
|
130
288
|
finally {
|
|
131
|
-
|
|
289
|
+
state.pumping = false;
|
|
132
290
|
}
|
|
133
291
|
}
|
|
134
292
|
//# sourceMappingURL=watch.js.map
|
package/dist/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED