@oeronteros-1/opencode-orchestra 1.0.24 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -9
- package/dashboard-dist/assets/index-BcxwxSxG.js +124 -0
- package/dashboard-dist/assets/{index-1lUDKh9b.css → index-igZBUoKO.css} +1 -1
- package/dashboard-dist/index.html +2 -2
- package/dist/agents/build.d.ts +1 -0
- package/dist/agents/build.js +4 -4
- package/dist/agents/build.js.map +1 -1
- package/dist/agents/editor.d.ts +1 -1
- package/dist/agents/editor.js +2 -2
- package/dist/agents/editor.js.map +1 -1
- package/dist/agents/integrator.d.ts +1 -1
- package/dist/agents/integrator.js +2 -2
- package/dist/agents/integrator.js.map +1 -1
- package/dist/agents/merge.d.ts +1 -1
- package/dist/agents/merge.js +2 -2
- package/dist/agents/merge.js.map +1 -1
- package/dist/agents/workers.d.ts +2 -1
- package/dist/agents/workers.js +2 -2
- package/dist/agents/workers.js.map +1 -1
- package/dist/cli.js +54 -15
- package/dist/cli.js.map +1 -1
- package/dist/config/defaults.js +17 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +5 -0
- package/dist/config/schema.js +14 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/dashboard/server.js +36 -15
- package/dist/dashboard/server.js.map +1 -1
- package/dist/diagnostics/doctor.js +41 -17
- package/dist/diagnostics/doctor.js.map +1 -1
- package/dist/index.js +182 -10
- package/dist/index.js.map +1 -1
- package/dist/orchestration/worktrees.d.ts +1 -1
- package/dist/orchestration/worktrees.js +3 -2
- package/dist/orchestration/worktrees.js.map +1 -1
- package/dist/plugin-status.js +1 -1
- package/dist/plugin-status.js.map +1 -1
- package/dist/pricing/model-match.js +2 -0
- package/dist/pricing/model-match.js.map +1 -1
- package/dist/prompts/load.d.ts +5 -2
- package/dist/prompts/load.js +25 -13
- package/dist/prompts/load.js.map +1 -1
- package/dist/routing/classifier.d.ts +2 -0
- package/dist/routing/classifier.js +1 -0
- package/dist/routing/classifier.js.map +1 -1
- package/dist/routing/escalation.js +5 -1
- package/dist/routing/escalation.js.map +1 -1
- package/dist/routing/fallback.d.ts +2 -0
- package/dist/routing/fallback.js +6 -1
- package/dist/routing/fallback.js.map +1 -1
- package/dist/routing/model-resolver.d.ts +3 -0
- package/dist/routing/model-resolver.js +6 -2
- package/dist/routing/model-resolver.js.map +1 -1
- package/dist/spawn.d.ts +25 -0
- package/dist/spawn.js +52 -0
- package/dist/spawn.js.map +1 -0
- package/dist/telemetry/analytics.d.ts +2 -1
- package/dist/telemetry/analytics.js +4 -4
- package/dist/telemetry/analytics.js.map +1 -1
- package/dist/telemetry/ledger.d.ts +8 -1
- package/dist/telemetry/ledger.js +11 -1
- package/dist/telemetry/ledger.js.map +1 -1
- package/dist/telemetry/live.d.ts +4 -1
- package/dist/telemetry/live.js +8 -5
- package/dist/telemetry/live.js.map +1 -1
- package/dist/tools.js +50 -5
- package/dist/tools.js.map +1 -1
- package/package.json +2 -2
- package/prompts/critic.md +8 -0
- package/prompts/docs.md +7 -0
- package/prompts/editor.md +7 -0
- package/prompts/integrator.md +7 -0
- package/prompts/lead.md +3 -0
- package/prompts/merge.md +10 -0
- package/prompts/repo.md +7 -0
- package/prompts/research.md +8 -0
- package/prompts/security.md +8 -0
- package/prompts/tests.md +8 -0
- package/prompts/visual-generate.md +7 -0
- package/prompts/visual-reference.md +8 -0
- package/prompts/visual-review.md +8 -0
- package/schema/opencode-orchestra.schema.json +13 -3
- package/dashboard-dist/assets/index-Dc5lp8wX.js +0 -124
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/routing/classifier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/routing/classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,11 @@ export function decideEscalation(config, input) {
|
|
|
5
5
|
if ((input.premiumCallsUsed ?? 0) >= config.orchestration.maxPremiumCallsPerTask) {
|
|
6
6
|
return { escalate: false, reason: "premium call budget exhausted" };
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
// A signal-free architecture fallback is explicitly provisional, but is not
|
|
9
|
+
// itself evidence that a premium judge is needed. Real criticality or stored
|
|
10
|
+
// worker disagreement can still escalate it.
|
|
11
|
+
const uncertain = input.classification.fallback !== true
|
|
12
|
+
&& input.classification.confidence < config.orchestration.confidenceThreshold;
|
|
9
13
|
const disagreement = input.consensus !== undefined && input.consensus < config.orchestration.confidenceThreshold;
|
|
10
14
|
if (config.budget === "ebobo") {
|
|
11
15
|
return { escalate: true, reason: "ebobo mode always requests frontier arbitration" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../src/routing/escalation.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,gBAAgB,CAC9B,MAAuB,EACvB,KAAsB;IAEtB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAA;IACnE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QACjF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAA;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../src/routing/escalation.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,gBAAgB,CAC9B,MAAuB,EACvB,KAAsB;IAEtB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAA;IACnE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QACjF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAA;IACrE,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,KAAK,IAAI;WACnD,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAA;IAC/E,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAA;IAEhH,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAA;IACtF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,IAAI,YAAY;YAClD,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,8BAA8B,EAAE;YAC5D,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAA;IACtF,CAAC;IAED,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;QAC/D,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ;gBACnC,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,YAAY;oBACZ,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,+BAA+B;SACtC,CAAA;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAA;AACtF,CAAC"}
|
|
@@ -32,6 +32,8 @@ export declare function isRetryable(kind: RetryableError["kind"]): boolean;
|
|
|
32
32
|
export declare function buildFallbackChain(pool: ModelCandidateInput[], capability: Parameters<typeof resolveModel>[0]["capability"], budget: BudgetMode, allowPaid: boolean, options?: {
|
|
33
33
|
preferredCosts?: ModelCost[];
|
|
34
34
|
preferredTiers?: Parameters<typeof resolveModel>[0]["preferredTiers"];
|
|
35
|
+
paidCallsUsed?: number;
|
|
36
|
+
maxPaidCalls?: number;
|
|
35
37
|
}): FallbackChain | undefined;
|
|
36
38
|
/**
|
|
37
39
|
* Given a chain and the id of a model that just failed, return the next
|
package/dist/routing/fallback.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { normalizeCandidate, resolveModel } from "./model-resolver.js";
|
|
2
2
|
const COST_RANK = { paid: 2, subscription: 1, free: 0 };
|
|
3
|
+
function compareCodepoints(a, b) {
|
|
4
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
5
|
+
}
|
|
3
6
|
/**
|
|
4
7
|
* Classify an error into retryable categories. A retryable failure should
|
|
5
8
|
* trigger failover to a cheaper model in the chain.
|
|
@@ -45,6 +48,8 @@ export function buildFallbackChain(pool, capability, budget, allowPaid, options
|
|
|
45
48
|
allowPaid,
|
|
46
49
|
...(options.preferredCosts ? { preferredCosts: options.preferredCosts } : {}),
|
|
47
50
|
...(options.preferredTiers ? { preferredTiers: options.preferredTiers } : {}),
|
|
51
|
+
...(options.paidCallsUsed !== undefined ? { paidCallsUsed: options.paidCallsUsed } : {}),
|
|
52
|
+
...(options.maxPaidCalls !== undefined ? { maxPaidCalls: options.maxPaidCalls } : {}),
|
|
48
53
|
});
|
|
49
54
|
const primary = winner?.id ?? normalized[0]?.id;
|
|
50
55
|
if (!primary)
|
|
@@ -53,7 +58,7 @@ export function buildFallbackChain(pool, capability, budget, allowPaid, options
|
|
|
53
58
|
const primaryEntry = toEntry(byId.get(primary));
|
|
54
59
|
const alternatives = normalized
|
|
55
60
|
.filter((candidate) => candidate.id !== primary)
|
|
56
|
-
.sort((a, b) => COST_RANK[a.cost] - COST_RANK[b.cost] || a.id
|
|
61
|
+
.sort((a, b) => COST_RANK[a.cost] - COST_RANK[b.cost] || compareCodepoints(a.id, b.id))
|
|
57
62
|
.map((candidate) => toEntry(candidate));
|
|
58
63
|
return {
|
|
59
64
|
primary,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/routing/fallback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAuB,MAAM,qBAAqB,CAAA;AAsB3F,MAAM,SAAS,GAA8B,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/routing/fallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,9 @@ export interface ResolveModelRequest {
|
|
|
19
19
|
allowPaid: boolean;
|
|
20
20
|
preferredCosts?: ModelCost[];
|
|
21
21
|
preferredTiers?: ModelTier[];
|
|
22
|
+
/** Session-level cap: paid candidates are excluded once this is reached. */
|
|
23
|
+
paidCallsUsed?: number;
|
|
24
|
+
maxPaidCalls?: number;
|
|
22
25
|
}
|
|
23
26
|
export interface ResolvedModel {
|
|
24
27
|
id: string;
|
|
@@ -23,6 +23,9 @@ export function normalizeCandidate(input) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
const COST_ORDER = { paid: 2, subscription: 1, free: 0 };
|
|
26
|
+
function compareCodepoints(a, b) {
|
|
27
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
28
|
+
}
|
|
26
29
|
function priceAdjustment(candidate) {
|
|
27
30
|
// A monetary price is a separate ranking signal from the coarse cost class:
|
|
28
31
|
// all else equal, cheaper models win. Log-scale so differences are gentle.
|
|
@@ -36,6 +39,7 @@ export function resolveModel(request) {
|
|
|
36
39
|
const ranked = request.pool
|
|
37
40
|
.map(normalizeCandidate)
|
|
38
41
|
.filter((candidate) => request.allowPaid || candidate.cost !== "paid")
|
|
42
|
+
.filter((candidate) => candidate.cost !== "paid" || request.maxPaidCalls === undefined || (request.paidCallsUsed ?? 0) < request.maxPaidCalls)
|
|
39
43
|
.map((candidate) => {
|
|
40
44
|
const explicit = candidate.scores[request.capability] ?? 0;
|
|
41
45
|
const declared = candidate.capabilities.includes(request.capability) ? 18 : 0;
|
|
@@ -65,13 +69,13 @@ export function resolveModel(request) {
|
|
|
65
69
|
];
|
|
66
70
|
return { candidate, score, reason };
|
|
67
71
|
})
|
|
68
|
-
.sort((a, b) => b.score - a.score || a.candidate.id
|
|
72
|
+
.sort((a, b) => b.score - a.score || compareCodepoints(a.candidate.id, b.candidate.id));
|
|
69
73
|
const winner = ranked[0];
|
|
70
74
|
if (!winner)
|
|
71
75
|
return undefined;
|
|
72
76
|
const fallback = ranked
|
|
73
77
|
.slice(1)
|
|
74
|
-
.sort((a, b) => COST_ORDER[a.candidate.cost] - COST_ORDER[b.candidate.cost] || a.score - b.score || a.candidate.id
|
|
78
|
+
.sort((a, b) => COST_ORDER[a.candidate.cost] - COST_ORDER[b.candidate.cost] || a.score - b.score || compareCodepoints(a.candidate.id, b.candidate.id))
|
|
75
79
|
.map((item) => item.candidate.id);
|
|
76
80
|
return {
|
|
77
81
|
id: winner.candidate.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/routing/model-resolver.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/routing/model-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/spawn.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
export type SpawnSyncOptions = NonNullable<Parameters<typeof spawnSync>[2]>;
|
|
3
|
+
/**
|
|
4
|
+
* Quote a command line for cmd.exe: parts containing spaces or cmd
|
|
5
|
+
* metacharacters are wrapped in double quotes so paths with spaces and
|
|
6
|
+
* `<>&|^` survive parsing. This is intentionally shallow — characters
|
|
7
|
+
* cmd.exe reinterprets even inside quotes (`%VAR%`, embedded `"`, CR/LF,
|
|
8
|
+
* `,`/`;`) cannot be conveyed safely this way and must be rejected
|
|
9
|
+
* upstream by {@link safeForCmdRetry}.
|
|
10
|
+
*/
|
|
11
|
+
export declare function quoteLineForCmd(parts: string[]): string;
|
|
12
|
+
export declare function safeForCmdRetry(parts: string[]): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Run a command natively, retrying through cmd.exe when Windows cannot
|
|
15
|
+
* spawn the target directly (`.cmd`/`.bat` shims and shell scripts fail
|
|
16
|
+
* with EINVAL on CVE-2024-27980-patched Node). The retry is skipped for
|
|
17
|
+
* inputs cmd.exe could reinterpret — see {@link safeForCmdRetry} — and
|
|
18
|
+
* off-Windows the native result is always returned untouched.
|
|
19
|
+
*/
|
|
20
|
+
export declare function spawnWithCmdFallback(command: string, args: string[], options?: SpawnSyncOptions): ReturnType<typeof spawnSync>;
|
|
21
|
+
/**
|
|
22
|
+
* User home for tool discovery. Windows tests override HOME to shadow the
|
|
23
|
+
* real per-user toolchain, so honor it before falling back to os.homedir().
|
|
24
|
+
*/
|
|
25
|
+
export declare function homeDirectory(): string;
|
package/dist/spawn.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
/**
|
|
4
|
+
* Quote a command line for cmd.exe: parts containing spaces or cmd
|
|
5
|
+
* metacharacters are wrapped in double quotes so paths with spaces and
|
|
6
|
+
* `<>&|^` survive parsing. This is intentionally shallow — characters
|
|
7
|
+
* cmd.exe reinterprets even inside quotes (`%VAR%`, embedded `"`, CR/LF,
|
|
8
|
+
* `,`/`;`) cannot be conveyed safely this way and must be rejected
|
|
9
|
+
* upstream by {@link safeForCmdRetry}.
|
|
10
|
+
*/
|
|
11
|
+
export function quoteLineForCmd(parts) {
|
|
12
|
+
return parts
|
|
13
|
+
.map((part) => (part.includes(" ") || /[<>&|^]/.test(part) ? `"${part}"` : part))
|
|
14
|
+
.join(" ");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Characters cmd.exe interprets even inside double quotes or across the
|
|
18
|
+
* line: an embedded `"` flips quoting state (letting a later `& cmd`
|
|
19
|
+
* escape), `%VAR%` expands within quotes, CR/LF split commands, `,`/`;`
|
|
20
|
+
* separate arguments, and `!VAR!` expands on hosts with delayed expansion
|
|
21
|
+
* enabled. A part containing any of these cannot be conveyed safely
|
|
22
|
+
* through a shell retry, so callers fail closed and keep the native-spawn
|
|
23
|
+
* failure instead of risking command breakout.
|
|
24
|
+
*/
|
|
25
|
+
const UNSAFE_FOR_CMD_RETRY = /["%\r\n;,!]/;
|
|
26
|
+
export function safeForCmdRetry(parts) {
|
|
27
|
+
return !parts.some((part) => UNSAFE_FOR_CMD_RETRY.test(part));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Run a command natively, retrying through cmd.exe when Windows cannot
|
|
31
|
+
* spawn the target directly (`.cmd`/`.bat` shims and shell scripts fail
|
|
32
|
+
* with EINVAL on CVE-2024-27980-patched Node). The retry is skipped for
|
|
33
|
+
* inputs cmd.exe could reinterpret — see {@link safeForCmdRetry} — and
|
|
34
|
+
* off-Windows the native result is always returned untouched.
|
|
35
|
+
*/
|
|
36
|
+
export function spawnWithCmdFallback(command, args, options = {}) {
|
|
37
|
+
const direct = spawnSync(command, args, options);
|
|
38
|
+
if (process.platform === "win32" && direct.error !== undefined && safeForCmdRetry([command, ...args])) {
|
|
39
|
+
const retry = spawnSync(quoteLineForCmd([command, ...args]), [], { ...options, shell: true });
|
|
40
|
+
if (retry.error === undefined)
|
|
41
|
+
return retry;
|
|
42
|
+
}
|
|
43
|
+
return direct;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* User home for tool discovery. Windows tests override HOME to shadow the
|
|
47
|
+
* real per-user toolchain, so honor it before falling back to os.homedir().
|
|
48
|
+
*/
|
|
49
|
+
export function homeDirectory() {
|
|
50
|
+
return process.env.HOME || os.homedir();
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAA;AAIxB;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe;IAC7C,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAChF,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,oBAAoB,GAAG,aAAa,CAAA;AAE1C,MAAM,UAAU,eAAe,CAAC,KAAe;IAC7C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,IAAc,EAAE,UAA4B,EAAE;IAClG,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7F,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;IAC7C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;AACzC,CAAC"}
|
|
@@ -26,6 +26,7 @@ export interface MonthProjection {
|
|
|
26
26
|
daysInMonth: number;
|
|
27
27
|
isAheadOfPace: boolean;
|
|
28
28
|
}
|
|
29
|
+
export declare const DEFAULT_ANOMALY_SIGMA = 2;
|
|
29
30
|
/**
|
|
30
31
|
* Flag days whose spend exceeds the trailing baseline (mean + SIGMA×stdev of
|
|
31
32
|
* the *prior* ordered days). A spike is only detected once enough history
|
|
@@ -39,7 +40,7 @@ export declare function detectAnomalies(daily: DailyPoint[], sigma?: number): Da
|
|
|
39
40
|
*/
|
|
40
41
|
export declare function projectMonth(daily: DailyPoint[], now?: Date): MonthProjection;
|
|
41
42
|
/** Convenience: run both analyses and expose a combined result. */
|
|
42
|
-
export declare function analyzeDaily(daily: DailyPoint[], now?: Date): {
|
|
43
|
+
export declare function analyzeDaily(daily: DailyPoint[], now?: Date, sigma?: number): {
|
|
43
44
|
anomalies: DailyAnomaly[];
|
|
44
45
|
projection: MonthProjection;
|
|
45
46
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* already aggregates. No I/O; deterministic given the same inputs so the
|
|
4
4
|
* results are straightforward to unit test.
|
|
5
5
|
*/
|
|
6
|
-
const
|
|
6
|
+
export const DEFAULT_ANOMALY_SIGMA = 2;
|
|
7
7
|
function mean(values) {
|
|
8
8
|
if (values.length === 0)
|
|
9
9
|
return 0;
|
|
@@ -22,7 +22,7 @@ function stdev(values) {
|
|
|
22
22
|
* exists to form a stable baseline; the first days are therefore never
|
|
23
23
|
* flagged, and a single outlier does not poison the baseline.
|
|
24
24
|
*/
|
|
25
|
-
export function detectAnomalies(daily, sigma =
|
|
25
|
+
export function detectAnomalies(daily, sigma = DEFAULT_ANOMALY_SIGMA) {
|
|
26
26
|
const ordered = [...daily].sort((a, b) => a.date.localeCompare(b.date));
|
|
27
27
|
const anomalies = [];
|
|
28
28
|
const history = [];
|
|
@@ -69,9 +69,9 @@ export function projectMonth(daily, now = new Date()) {
|
|
|
69
69
|
return { projected, monthToDate, elapsedDays, daysInMonth, isAheadOfPace };
|
|
70
70
|
}
|
|
71
71
|
/** Convenience: run both analyses and expose a combined result. */
|
|
72
|
-
export function analyzeDaily(daily, now = new Date()) {
|
|
72
|
+
export function analyzeDaily(daily, now = new Date(), sigma = DEFAULT_ANOMALY_SIGMA) {
|
|
73
73
|
return {
|
|
74
|
-
anomalies: detectAnomalies(daily),
|
|
74
|
+
anomalies: detectAnomalies(daily, sigma),
|
|
75
75
|
projection: projectMonth(daily, now),
|
|
76
76
|
};
|
|
77
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/telemetry/analytics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH,MAAM,
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/telemetry/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,11 @@ export interface SessionLedger {
|
|
|
31
31
|
estimatedPaidUsage: number;
|
|
32
32
|
freeWorkerCalls: number;
|
|
33
33
|
unknownPriceCalls: number;
|
|
34
|
+
/** Number of distinct assistant calls priced as paid in this session. */
|
|
35
|
+
paidCallsUsed: number;
|
|
34
36
|
consensus?: number;
|
|
37
|
+
consensusUncertainty?: number;
|
|
38
|
+
consensusNotes?: string;
|
|
35
39
|
messages: Record<string, MessageUsage>;
|
|
36
40
|
}
|
|
37
41
|
export interface LedgerState {
|
|
@@ -69,7 +73,10 @@ export declare class Ledger {
|
|
|
69
73
|
private save;
|
|
70
74
|
private mutate;
|
|
71
75
|
setProfile(sessionID: string, profile: ProfileName): Promise<void>;
|
|
72
|
-
setConsensus(sessionID: string, consensus: number
|
|
76
|
+
setConsensus(sessionID: string, consensus: number, details?: {
|
|
77
|
+
uncertainty?: number;
|
|
78
|
+
notes?: string;
|
|
79
|
+
}): Promise<void>;
|
|
73
80
|
recordAssistant(info: AssistantInfo): Promise<void>;
|
|
74
81
|
/**
|
|
75
82
|
* Opt-in debug text. No-op unless the ledger was constructed with
|
package/dist/telemetry/ledger.js
CHANGED
|
@@ -8,6 +8,7 @@ function emptySession() {
|
|
|
8
8
|
estimatedPaidUsage: 0,
|
|
9
9
|
freeWorkerCalls: 0,
|
|
10
10
|
unknownPriceCalls: 0,
|
|
11
|
+
paidCallsUsed: 0,
|
|
11
12
|
messages: {},
|
|
12
13
|
};
|
|
13
14
|
}
|
|
@@ -39,6 +40,7 @@ function upgradeState(input) {
|
|
|
39
40
|
session.estimatedPaidUsage ??= 0;
|
|
40
41
|
session.freeWorkerCalls ??= 0;
|
|
41
42
|
session.unknownPriceCalls ??= 0;
|
|
43
|
+
session.paidCallsUsed ??= 0;
|
|
42
44
|
for (const [id, message] of Object.entries(session.messages)) {
|
|
43
45
|
session.messages[id] = {
|
|
44
46
|
...message,
|
|
@@ -123,10 +125,14 @@ export class Ledger {
|
|
|
123
125
|
session.profile = profile;
|
|
124
126
|
});
|
|
125
127
|
}
|
|
126
|
-
async setConsensus(sessionID, consensus) {
|
|
128
|
+
async setConsensus(sessionID, consensus, details) {
|
|
127
129
|
await this.mutate((state) => {
|
|
128
130
|
const session = (state.sessions[sessionID] ??= emptySession());
|
|
129
131
|
session.consensus = consensus;
|
|
132
|
+
if (details?.uncertainty !== undefined)
|
|
133
|
+
session.consensusUncertainty = details.uncertainty;
|
|
134
|
+
if (details?.notes !== undefined)
|
|
135
|
+
session.consensusNotes = details.notes;
|
|
130
136
|
});
|
|
131
137
|
}
|
|
132
138
|
async recordAssistant(info) {
|
|
@@ -144,6 +150,8 @@ export class Ledger {
|
|
|
144
150
|
if (agent === "orch-judge")
|
|
145
151
|
session.premiumEscalations += 1;
|
|
146
152
|
const declared = model ? this.modelCosts.get(model) : undefined;
|
|
153
|
+
if (declared === "paid" || (declared === undefined && pricingStatus === "paid"))
|
|
154
|
+
session.paidCallsUsed += 1;
|
|
147
155
|
if (pricingStatus === "unknown") {
|
|
148
156
|
session.unknownPriceCalls += 1;
|
|
149
157
|
}
|
|
@@ -210,7 +218,9 @@ export class Ledger {
|
|
|
210
218
|
`estimated paid usage: $${session.estimatedPaidUsage.toFixed(4)}`,
|
|
211
219
|
`free worker calls: ${session.freeWorkerCalls}`,
|
|
212
220
|
`unknown price calls: ${session.unknownPriceCalls}`,
|
|
221
|
+
`paid calls used: ${session.paidCallsUsed}`,
|
|
213
222
|
`consensus: ${session.consensus === undefined ? "not recorded" : `${Math.round(session.consensus * 100)}%`}`,
|
|
223
|
+
...(session.consensusUncertainty !== undefined ? [`consensus uncertainty: ${Math.round(session.consensusUncertainty * 100)}%`] : []),
|
|
214
224
|
].join("\n");
|
|
215
225
|
}
|
|
216
226
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/telemetry/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/telemetry/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry/live.d.ts
CHANGED
|
@@ -87,10 +87,11 @@ export declare function parseLiveSnapshot(text: string): LiveSnapshot;
|
|
|
87
87
|
/** Estimate output tokens from character count (≈4 chars/token). */
|
|
88
88
|
export declare function estimateOutputTokens(chars: number): number;
|
|
89
89
|
/** Estimate live USD accrued from accumulated text + assumed input volume. */
|
|
90
|
-
export declare function estimateLiveCost(chars: number, price: LiveTokenPrice | undefined, assumedInput?: number): {
|
|
90
|
+
export declare function estimateLiveCost(chars: number, price: LiveTokenPrice | undefined, assumedInput?: number, reasoningChars?: number): {
|
|
91
91
|
cost: number;
|
|
92
92
|
input: number;
|
|
93
93
|
output: number;
|
|
94
|
+
reasoning: number;
|
|
94
95
|
};
|
|
95
96
|
export declare class LiveStream {
|
|
96
97
|
readonly liveFile: string;
|
|
@@ -127,6 +128,8 @@ export declare class LiveStream {
|
|
|
127
128
|
text: string;
|
|
128
129
|
/** Total generated characters observed for this response. */
|
|
129
130
|
chars?: number | undefined;
|
|
131
|
+
/** Total reasoning characters observed for this response. */
|
|
132
|
+
reasoningChars?: number | undefined;
|
|
130
133
|
sessionID?: string | undefined;
|
|
131
134
|
agent?: string | undefined;
|
|
132
135
|
provider?: string | undefined;
|
package/dist/telemetry/live.js
CHANGED
|
@@ -34,14 +34,15 @@ export function estimateOutputTokens(chars) {
|
|
|
34
34
|
return Math.max(0, Math.floor(chars / 4));
|
|
35
35
|
}
|
|
36
36
|
/** Estimate live USD accrued from accumulated text + assumed input volume. */
|
|
37
|
-
export function estimateLiveCost(chars, price, assumedInput = 1500) {
|
|
37
|
+
export function estimateLiveCost(chars, price, assumedInput = 1500, reasoningChars = 0) {
|
|
38
38
|
const output = estimateOutputTokens(chars);
|
|
39
|
+
const reasoning = Math.max(0, Math.floor(reasoningChars / 4));
|
|
39
40
|
const input = assumedInput;
|
|
40
41
|
let cost = 0;
|
|
41
42
|
if (price) {
|
|
42
43
|
cost = (input * price.input + output * price.output) / 1_000_000;
|
|
43
44
|
}
|
|
44
|
-
return { cost, input, output };
|
|
45
|
+
return { cost, input, output, reasoning };
|
|
45
46
|
}
|
|
46
47
|
export class LiveStream {
|
|
47
48
|
liveFile;
|
|
@@ -94,6 +95,7 @@ export class LiveStream {
|
|
|
94
95
|
tokens: { input: est.input, output: 0, reasoning: 0 },
|
|
95
96
|
lastSeq: this.seq,
|
|
96
97
|
chars: 0,
|
|
98
|
+
reasoningChars: 0,
|
|
97
99
|
});
|
|
98
100
|
this.makeEvent({
|
|
99
101
|
e: "start",
|
|
@@ -142,13 +144,14 @@ export class LiveStream {
|
|
|
142
144
|
const snippet = input.text.length > 240 ? `${input.text.slice(-240)}…` : input.text;
|
|
143
145
|
existing.text = this.storeTexts ? snippet : "";
|
|
144
146
|
existing.chars = Math.max(existing.chars, input.chars ?? input.text.length);
|
|
147
|
+
existing.reasoningChars = Math.max(existing.reasoningChars, input.reasoningChars ?? 0);
|
|
145
148
|
existing.confidence = input.confidence;
|
|
146
149
|
existing.flags = input.flags;
|
|
147
150
|
existing.lastSeq = this.seq;
|
|
148
151
|
const price = this.estimatePrice(input.provider ?? existing.provider, input.model ?? existing.model);
|
|
149
|
-
const est = estimateLiveCost(existing.chars, price);
|
|
152
|
+
const est = estimateLiveCost(existing.chars, price, 1500, existing.reasoningChars);
|
|
150
153
|
existing.cost = est.cost;
|
|
151
|
-
existing.tokens = { input: est.input, output: est.output, reasoning:
|
|
154
|
+
existing.tokens = { input: est.input, output: est.output, reasoning: est.reasoning };
|
|
152
155
|
this.record({
|
|
153
156
|
e: "delta",
|
|
154
157
|
k: input.key,
|
|
@@ -193,7 +196,7 @@ export class LiveStream {
|
|
|
193
196
|
}
|
|
194
197
|
serialize() {
|
|
195
198
|
const active = [...this.active.values()]
|
|
196
|
-
.map(({ lastSeq: _lastSeq, chars: _chars, ...rest }) => rest)
|
|
199
|
+
.map(({ lastSeq: _lastSeq, chars: _chars, reasoningChars: _reasoningChars, ...rest }) => rest)
|
|
197
200
|
.sort((a, b) => a.startedAt - b.startedAt);
|
|
198
201
|
return {
|
|
199
202
|
version: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/telemetry/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/telemetry/live.ts"],"names":[],"mappings":"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"}
|