@intentic/sandbox-contract 1.246.1 → 1.248.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/batch-runs.d.ts +2 -0
- package/dist/batch-runs.d.ts.map +1 -1
- package/dist/batch-runs.js +1 -0
- package/dist/batch-runs.js.map +1 -1
- package/dist/contracts/agent.contract.d.ts +20 -0
- package/dist/contracts/agent.contract.d.ts.map +1 -1
- package/dist/contracts/personas.contract.d.ts +38 -4
- package/dist/contracts/personas.contract.d.ts.map +1 -1
- package/dist/contracts/personas.contract.js +10 -1
- package/dist/contracts/personas.contract.js.map +1 -1
- package/dist/contracts/runner.contract.d.ts +93 -93
- package/dist/contracts/settings.contract.d.ts +109 -12
- package/dist/contracts/settings.contract.d.ts.map +1 -1
- package/dist/contracts/usage.contract.d.ts +22 -0
- package/dist/contracts/usage.contract.d.ts.map +1 -1
- package/dist/contracts/usage.contract.js +19 -0
- package/dist/contracts/usage.contract.js.map +1 -1
- package/dist/definition.d.ts +20 -24
- package/dist/definition.d.ts.map +1 -1
- package/dist/fast-tier.js +1 -1
- package/dist/fast-tier.js.map +1 -1
- package/dist/index.d.ts +191 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/model-pins.d.ts +15 -0
- package/dist/model-pins.d.ts.map +1 -0
- package/dist/model-pins.js +22 -0
- package/dist/model-pins.js.map +1 -0
- package/dist/model-roles.d.ts +172 -0
- package/dist/model-roles.d.ts.map +1 -0
- package/dist/model-roles.js +167 -0
- package/dist/model-roles.js.map +1 -0
- package/dist/schemas/agent.d.ts +22 -2
- package/dist/schemas/agent.d.ts.map +1 -1
- package/dist/schemas/agent.js +4 -2
- package/dist/schemas/agent.js.map +1 -1
- package/dist/schemas/automations.d.ts.map +1 -1
- package/dist/schemas/automations.js.map +1 -1
- package/dist/schemas/personas.d.ts +48 -4
- package/dist/schemas/personas.d.ts.map +1 -1
- package/dist/schemas/personas.js +28 -5
- package/dist/schemas/personas.js.map +1 -1
- package/dist/schemas/plan-limits.d.ts +20 -0
- package/dist/schemas/plan-limits.d.ts.map +1 -1
- package/dist/schemas/plan-limits.js +21 -0
- package/dist/schemas/plan-limits.js.map +1 -1
- package/dist/schemas/settings.d.ts +88 -6
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +19 -23
- package/dist/schemas/settings.js.map +1 -1
- package/dist/schemas/usage.d.ts +5 -0
- package/dist/schemas/usage.d.ts.map +1 -1
- package/dist/schemas/usage.js +5 -0
- package/dist/schemas/usage.js.map +1 -1
- package/dist/workspace-state.d.ts +0 -5
- package/dist/workspace-state.d.ts.map +1 -1
- package/dist/workspace-state.js +0 -1
- package/dist/workspace-state.js.map +1 -1
- package/package.json +4 -4
- package/src/agent-catalog.ts +1 -1
- package/src/batch-runs.test.ts +10 -5
- package/src/batch-runs.ts +10 -3
- package/src/chores/chores.ts +1 -1
- package/src/chores/verdict.test.ts +2 -2
- package/src/chores/verdict.ts +3 -3
- package/src/contracts/personas.contract.ts +17 -0
- package/src/contracts/usage.contract.ts +31 -0
- package/src/events.ts +1 -1
- package/src/fast-tier.test.ts +1 -1
- package/src/fast-tier.ts +5 -5
- package/src/index.ts +2 -3
- package/src/model-pins.test.ts +121 -0
- package/src/model-pins.ts +132 -0
- package/src/model-roles.test.ts +52 -0
- package/src/model-roles.ts +320 -0
- package/src/plan-pools.ts +1 -1
- package/src/prompt-complexity.test.ts +1 -1
- package/src/prompt-complexity.ts +2 -2
- package/src/provider-specs.test.ts +1 -1
- package/src/schemas/agent.ts +42 -17
- package/src/schemas/agents.ts +2 -2
- package/src/schemas/automations.ts +6 -2
- package/src/schemas/personas.ts +85 -18
- package/src/schemas/plan-limits.ts +50 -0
- package/src/schemas/settings.ts +92 -98
- package/src/schemas/usage.ts +59 -0
- package/src/workspace-state.test.ts +0 -1
- package/src/workspace-state.ts +0 -6
- package/dist/agent-run-model.d.ts +0 -4
- package/dist/agent-run-model.d.ts.map +0 -1
- package/dist/agent-run-model.js +0 -13
- package/dist/agent-run-model.js.map +0 -1
- package/dist/quick-model.d.ts +0 -15
- package/dist/quick-model.d.ts.map +0 -1
- package/dist/quick-model.js +0 -39
- package/dist/quick-model.js.map +0 -1
- package/dist/schemas/context.d.ts +0 -30
- package/dist/schemas/context.d.ts.map +0 -1
- package/dist/schemas/context.js +0 -34
- package/dist/schemas/context.js.map +0 -1
- package/src/agent-run-model.test.ts +0 -76
- package/src/agent-run-model.ts +0 -65
- package/src/quick-model.test.ts +0 -158
- package/src/quick-model.ts +0 -162
- package/src/schemas/context.ts +0 -87
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-state.d.ts","sourceRoot":"","sources":["../src/workspace-state.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workspace-state.d.ts","sourceRoot":"","sources":["../src/workspace-state.ts"],"names":[],"mappings":"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"}
|
package/dist/workspace-state.js
CHANGED
|
@@ -267,7 +267,6 @@ const STATE_FILES = [
|
|
|
267
267
|
{ path: ".intentic/records/plugins/", invalidates: [], why: "Agent plugin dirs, read by the SDK's loader each turn.", portability: "carry" },
|
|
268
268
|
{ path: ".intentic/config/skills/", invalidates: ["skills"], portability: "carry", versioned: true },
|
|
269
269
|
{ path: ".intentic/config/personas/", invalidates: ["personas"], portability: "carry", versioned: true },
|
|
270
|
-
{ path: ".intentic/config/context/", invalidates: ["context"], portability: "carry", versioned: true },
|
|
271
270
|
];
|
|
272
271
|
export const WORKSPACE_STATE_FILES = STATE_FILES;
|
|
273
272
|
export const VERSIONED_STATE_PATHS = WORKSPACE_STATE_FILES.filter((file) => file.versioned).map((file) => file.path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-state.js","sourceRoot":"","sources":["../src/workspace-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace-state.js","sourceRoot":"","sources":["../src/workspace-state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/sandbox-contract",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.248.0",
|
|
4
4
|
"description": "oRPC wire contract for the intentic sandbox daemon, shared by the daemon and its browser client",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -185,9 +185,9 @@
|
|
|
185
185
|
}
|
|
186
186
|
},
|
|
187
187
|
"dependencies": {
|
|
188
|
-
"@intentic/constants": "1.
|
|
189
|
-
"@intentic/extension-manifest": "1.
|
|
190
|
-
"@intentic/registry": "1.
|
|
188
|
+
"@intentic/constants": "1.248.0",
|
|
189
|
+
"@intentic/extension-manifest": "1.248.0",
|
|
190
|
+
"@intentic/registry": "1.248.0",
|
|
191
191
|
"@orpc/contract": "1.14.13",
|
|
192
192
|
"tslib": "2.8.1",
|
|
193
193
|
"zod": "4.5.4"
|
package/src/agent-catalog.ts
CHANGED
|
@@ -58,7 +58,7 @@ export const PROVIDER_VENDOR: Record<NativeProvider, string> = Object.fromEntrie
|
|
|
58
58
|
* the prefix is what keeps it a pure function of (provider, harness) instead of a lookup against the installed
|
|
59
59
|
* manifest, which the contract cannot see and the browser would have to pass in everywhere.
|
|
60
60
|
*
|
|
61
|
-
* A SLASH, never a colon: `${provider}:${model}` is the picker's own key shape, and
|
|
61
|
+
* A SLASH, never a colon: `${provider}:${model}` is the picker's own key shape, and model-pins.ts's parsePinned
|
|
62
62
|
* splits a pinned selection on the FIRST colon. `endpoint:ollama:qwen3` would parse as provider "endpoint" with
|
|
63
63
|
* model "ollama:qwen3", a pin that silently resolves to nothing. The capability id (entryId) excludes both
|
|
64
64
|
* characters, so `endpoint/<id>` stays unambiguous in either direction. */
|
package/src/batch-runs.test.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { STATE_DIR } from "@intentic/constants";
|
|
2
2
|
import { describe, expect, it } from "vitest";
|
|
3
|
+
|
|
4
|
+
// The job a batch pack starts, which decides whose model list pays for it. Maintenance stands in for all of
|
|
5
|
+
// them: what `batchTurnBody` owes is that the role it is handed reaches the turn, not which one it was.
|
|
6
|
+
const ROLE = `maintenance-chore` as const;
|
|
3
7
|
import {
|
|
4
8
|
type BatchRunKind,
|
|
5
9
|
batchConversationId,
|
|
@@ -134,16 +138,17 @@ describe(`what the agent is told`, () => {
|
|
|
134
138
|
|
|
135
139
|
describe(`the turn a run starts`, () => {
|
|
136
140
|
it(`is always isolated and unattended, which is what registers the fleet entry`, () => {
|
|
137
|
-
const body = batchTurnBody({ prompt: `do it`, title: `t`, conversationId: `mt-r5k2a
|
|
141
|
+
const body = batchTurnBody({ prompt: `do it`, title: `t`, conversationId: `mt-r5k2a`, role: ROLE });
|
|
138
142
|
expect([body[`isolated`], body[`unattended`]]).toEqual([true, true]);
|
|
139
143
|
});
|
|
140
144
|
|
|
141
145
|
it(`caps the title at what the fleet row can show`, () => {
|
|
142
|
-
expect(String(batchTurnBody({ prompt: `p`, title: `t`.repeat(200), conversationId: `c
|
|
146
|
+
expect(String(batchTurnBody({ prompt: `p`, title: `t`.repeat(200), conversationId: `c`, role: ROLE })[`title`])).toHaveLength(80);
|
|
143
147
|
});
|
|
144
148
|
|
|
145
149
|
it(`carries a pinned model and its tier when the row's caret chose one`, () => {
|
|
146
150
|
const body = batchTurnBody({
|
|
151
|
+
role: ROLE,
|
|
147
152
|
prompt: `p`,
|
|
148
153
|
title: `t`,
|
|
149
154
|
conversationId: `c`,
|
|
@@ -153,15 +158,15 @@ describe(`the turn a run starts`, () => {
|
|
|
153
158
|
});
|
|
154
159
|
|
|
155
160
|
/* ABSENT rather than undefined: the body is serialized to JSON and the daemon's fill step reads a missing
|
|
156
|
-
* key as "the owner's
|
|
161
|
+
* key as "the owner's list for this job decides", which is not what an explicit null would say. */
|
|
157
162
|
it(`omits the keys a pick did not pin, rather than sending them empty`, () => {
|
|
158
|
-
const body = batchTurnBody({ prompt: `p`, title: `t`, conversationId: `c`, pick: { provider: `claude` } });
|
|
163
|
+
const body = batchTurnBody({ prompt: `p`, title: `t`, conversationId: `c`, role: ROLE, pick: { provider: `claude` } });
|
|
159
164
|
expect(Object.keys(body)).not.toContain(`model`);
|
|
160
165
|
expect(Object.keys(body)).not.toContain(`effort`);
|
|
161
166
|
});
|
|
162
167
|
|
|
163
168
|
it(`sends no model keys at all when nothing was pinned`, () => {
|
|
164
|
-
const keys = Object.keys(batchTurnBody({ prompt: `p`, title: `t`, conversationId: `c
|
|
169
|
+
const keys = Object.keys(batchTurnBody({ prompt: `p`, title: `t`, conversationId: `c`, role: ROLE }));
|
|
165
170
|
expect(keys.some((key) => [`agent`, `model`, `effort`].includes(key))).toBe(false);
|
|
166
171
|
});
|
|
167
172
|
});
|
package/src/batch-runs.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { STATE_DIR } from "@intentic/constants";
|
|
2
|
+
import type { ModelRole } from "./model-roles.js";
|
|
2
3
|
|
|
3
4
|
/* ONE BATCH RUN ENGINE, for every surface that fans an ISOLATED AGENT TURN out over a set of items and reads
|
|
4
5
|
* the answers back off disk.
|
|
@@ -143,9 +144,9 @@ export const batchReportingClause = (params: {
|
|
|
143
144
|
/* THE BODY OF THE `POST /agent` THAT STARTS ONE ITEM, so the flag combination that makes a run a run is decided
|
|
144
145
|
* once. `isolated: true` with a conversationId is the shape (and the only shape) that registers a fleet entry,
|
|
145
146
|
* which is why none of these packs owns session machinery; `unattended: true` is what the turn IS — started by
|
|
146
|
-
* a row rather than by a person at a composer — and
|
|
147
|
-
*
|
|
148
|
-
* the daemon's fill step leaves it alone.
|
|
147
|
+
* a row rather than by a person at a composer — and `runRole` is which of those rows, so the daemon answers
|
|
148
|
+
* with the owner's list FOR THAT JOB (model-roles.ts) unless the caller pinned a model on the row's caret, in
|
|
149
|
+
* which case the pick rides along and the daemon's fill step leaves it alone.
|
|
149
150
|
*
|
|
150
151
|
* PERMISSIONS AND ISOLATION ARE THE CALLER'S, deliberately. They are the two decisions that differ by kind and
|
|
151
152
|
* both are about safety rather than plumbing: an acceptance test that parks on a permission card is a test that
|
|
@@ -162,6 +163,11 @@ export const batchTurnBody = (params: {
|
|
|
162
163
|
readonly prompt: string;
|
|
163
164
|
readonly title: string;
|
|
164
165
|
readonly conversationId: string;
|
|
166
|
+
/* WHICH JOB THIS IS, and therefore which of the owner's model lists pays for it (model-roles.ts). Required
|
|
167
|
+
* rather than optional, because every pack that reaches this function is one of the named roles and a
|
|
168
|
+
* default here would silently hand a new one somebody else's budget — which is exactly how one "agent runs"
|
|
169
|
+
* tier came to cover a documentation sweep and a red production pipeline. */
|
|
170
|
+
readonly role: ModelRole;
|
|
165
171
|
readonly pick?: BatchTurnPick | undefined;
|
|
166
172
|
readonly extra?: Readonly<Record<string, unknown>> | undefined;
|
|
167
173
|
}): Record<string, unknown> => ({
|
|
@@ -170,6 +176,7 @@ export const batchTurnBody = (params: {
|
|
|
170
176
|
conversationId: params.conversationId,
|
|
171
177
|
isolated: true,
|
|
172
178
|
unattended: true,
|
|
179
|
+
runRole: params.role,
|
|
173
180
|
...(params.pick === undefined
|
|
174
181
|
? {}
|
|
175
182
|
: {
|
package/src/chores/chores.ts
CHANGED
|
@@ -101,7 +101,7 @@ export interface Chore {
|
|
|
101
101
|
* this asks whether the question makes sense. "Re-read the documentation against the code" in a repository
|
|
102
102
|
* with no documentation is not a chore that is currently clear, it is one that will never apply here, and
|
|
103
103
|
* showing it as clear says we checked something we cannot check. A chore that does not apply is dropped from
|
|
104
|
-
* the panel entirely; a line
|
|
104
|
+
* the panel entirely; a line under the panel's list records that it was considered.
|
|
105
105
|
*
|
|
106
106
|
* A BARE CAUSE, "no Dockerfile", never "this repository ships no Dockerfile, so there is no image to slim".
|
|
107
107
|
* Same spelling as `ProbeSpec.unavailable`, and for the same reason both surfaces need: one absent
|
|
@@ -512,8 +512,8 @@ describe(`what does not apply here`, () => {
|
|
|
512
512
|
expect(assessReport(withShape({}), NOW).filter((verdict) => verdict.state === `not-applicable`)).toEqual([]);
|
|
513
513
|
});
|
|
514
514
|
|
|
515
|
-
/* THE CAUSES HAVE TO GROUP, and that is a fact about the STRINGS rather than about the gates. The
|
|
516
|
-
* prints one line per distinct cause with the chores it costs listed beside it, so two gates that both mean
|
|
515
|
+
/* THE CAUSES HAVE TO GROUP, and that is a fact about the STRINGS rather than about the gates. The panel's
|
|
516
|
+
* scope note prints one line per distinct cause with the chores it costs listed beside it, so two gates that both mean
|
|
517
517
|
* "there is no package.json here" and say it in different words print two lines, and a workspace root, where
|
|
518
518
|
* a dozen chores are ruled out by three facts, is back to the paragraph-per-chore wall this phrasing replaced.
|
|
519
519
|
* Bounded rather than enumerated: a new gate may invent a new cause, it may not invent a new sentence. */
|
package/src/chores/verdict.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { probeSpec } from "./probes.js";
|
|
|
11
11
|
* not-applicable this chore is not a QUESTION worth asking of this repository, there is no Dockerfile to
|
|
12
12
|
* slim, no pipeline to tighten, no documentation to re-read. Dropped from the panel entirely
|
|
13
13
|
* rather than shown as clear, because "clear" claims we checked, and there was nothing to check.
|
|
14
|
-
* The reason survives in the scope
|
|
14
|
+
* The reason survives in the panel's scope note, so "why is there no Docker chore here?" has an answer.
|
|
15
15
|
* unavailable we have not measured this. knip is not a devDependency; there is no lockfile to audit. Rendered
|
|
16
16
|
* greyed, never badged, and never collapsed into `clear`, a maintenance surface reporting a green
|
|
17
17
|
* repository it has never actually measured is worse than one that says nothing.
|
|
@@ -39,7 +39,7 @@ import { probeSpec } from "./probes.js";
|
|
|
39
39
|
*
|
|
40
40
|
* Nothing here can hide a problem. Snoozing and settling change whether the rail SPEAKS; the panel still shows
|
|
41
41
|
* the chore, its evidence and its state. The one thing that removes a row entirely is `not-applicable`, and that
|
|
42
|
-
* is not hiding, it is the absence of a subject, counted in the panel's scope
|
|
42
|
+
* is not hiding, it is the absence of a subject, counted in the panel's scope note and expandable to the reason.
|
|
43
43
|
* A maintenance surface you can quietly bury findings in is a maintenance surface nobody trusts. */
|
|
44
44
|
|
|
45
45
|
export type ChoreState = "due" | "clear" | "snoozed" | "stale" | "unavailable" | "not-applicable";
|
|
@@ -110,7 +110,7 @@ export const assessChore = (chore: Chore, context: ChoreContext, ledger: ChoreLe
|
|
|
110
110
|
|
|
111
111
|
/* APPLICABILITY FIRST, before anything is measured or any evidence is read. A chore that does not apply is
|
|
112
112
|
* not "clear" and not "unmeasured", the question does not arise here, and every subsequent branch of this
|
|
113
|
-
* function would be answering it anyway. The cause is carried as the headline, because the scope
|
|
113
|
+
* function would be answering it anyway. The cause is carried as the headline, because the scope note, which
|
|
114
114
|
* groups these rows BY it, is the only place it will ever be read. */
|
|
115
115
|
const inapplicable = chore.applies?.(context.signals);
|
|
116
116
|
if (inapplicable !== undefined) {
|
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
PersonaIdParamSchema,
|
|
4
4
|
PersonaKitSchema,
|
|
5
5
|
PersonaPromptSchema,
|
|
6
|
+
PersonaRouteAskSchema,
|
|
7
|
+
PersonaRouteSchema,
|
|
6
8
|
PersonaSchema,
|
|
7
9
|
PersonaSkillBodySchema,
|
|
8
10
|
PersonaSkillNameSchema,
|
|
@@ -68,6 +70,21 @@ export const personasContract = {
|
|
|
68
70
|
.input(PersonaIdParamSchema)
|
|
69
71
|
.output(OkSchema),
|
|
70
72
|
|
|
73
|
+
/* WHICH CARD A NEW CHAT BELONGS TO, asked by the composer before the first turn and answered by the
|
|
74
|
+
* `persona-router` helper role (the sandbox's agent/persona-router.ts). A READ that spends a small model
|
|
75
|
+
* call, which is why it is a POST: it is not idempotent in cost, only in effect. Nothing is applied here; the
|
|
76
|
+
* composer applies the answer, or shows it, under the `personaRouting` setting. */
|
|
77
|
+
route: oc
|
|
78
|
+
.route({
|
|
79
|
+
method: "POST",
|
|
80
|
+
path: "/personas/route",
|
|
81
|
+
summary: "Which persona a new chat belongs to",
|
|
82
|
+
description:
|
|
83
|
+
"Reads the message a chat is about to open with, and one line per persona, and names the card it belongs to, or none. Costs one small model call on the persona-routing list. Nothing is applied: the composer shows or applies the answer according to the persona routing setting.",
|
|
84
|
+
})
|
|
85
|
+
.input(PersonaRouteAskSchema)
|
|
86
|
+
.output(PersonaRouteSchema),
|
|
87
|
+
|
|
71
88
|
// ---- the kit: what this card is told, and the skills only it reaches ----
|
|
72
89
|
|
|
73
90
|
kit: oc
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { oc } from "@orpc/contract";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { LimitResetClaimSchema, LimitResetStatusSchema } from "../schemas/plan-limits.js";
|
|
3
4
|
import { DayWindowQuerySchema, UsageRollupSchema } from "../schemas/usage.js";
|
|
4
5
|
|
|
5
6
|
// The one control over the headroom readings a person has: measure again, now, every connection. `force`
|
|
@@ -38,4 +39,34 @@ export const usageContract = {
|
|
|
38
39
|
})
|
|
39
40
|
.input(RefreshPlanLimitsSchema)
|
|
40
41
|
.output(z.object({ ok: z.literal(true) })),
|
|
42
|
+
/* THE WAY PAST A SPENT SESSION WINDOW THAT ISN'T WAITING (LimitResetStatusSchema has what it costs).
|
|
43
|
+
*
|
|
44
|
+
* ASKED, NOT POLLED, and that is the whole reason it is a route of its own rather than another field on the
|
|
45
|
+
* account list. The provider only evaluates it when told the account is at the wall, so asking is a claim
|
|
46
|
+
* about the account's state; asking on every headroom sweep, for every connection, would be that claim made
|
|
47
|
+
* continuously and falsely. It is asked at the one moment it is true — a refused turn, with its strip on
|
|
48
|
+
* screen — and the answer is worth nothing a moment later, so nothing caches it.
|
|
49
|
+
*
|
|
50
|
+
* Answers `available: false` rather than failing for an account with no such mechanism, so a caller can ask
|
|
51
|
+
* about any account it holds without first knowing which provider grants one. */
|
|
52
|
+
limitReset: oc
|
|
53
|
+
.route({
|
|
54
|
+
method: "GET",
|
|
55
|
+
path: "/usage/limit-reset/{account}",
|
|
56
|
+
summary: "Whether this account's session window can be reopened now",
|
|
57
|
+
description:
|
|
58
|
+
"Asks the provider whether it will reopen this account's spent session window immediately, which some plans grant once a week. Only worth asking about an account that has actually been refused: the answer is the provider's judgement at this moment, it is not cached, and an account with no such grant answers plainly that it has none.",
|
|
59
|
+
})
|
|
60
|
+
.input(z.object({ account: z.string().min(1).describe("Which account.") }))
|
|
61
|
+
.output(LimitResetStatusSchema),
|
|
62
|
+
claimLimitReset: oc
|
|
63
|
+
.route({
|
|
64
|
+
method: "POST",
|
|
65
|
+
path: "/usage/limit-reset/{account}/claim",
|
|
66
|
+
summary: "Reopen this account's session window now",
|
|
67
|
+
description:
|
|
68
|
+
"Spends one of the account's weekly resets to reopen its session window immediately. The weekly allowance is untouched and still binds. Answers with what the provider actually did: only `reset` changed anything, and it is the cue to send the refused turn again.",
|
|
69
|
+
})
|
|
70
|
+
.input(z.object({ account: z.string().min(1).describe("Which account.") }))
|
|
71
|
+
.output(LimitResetClaimSchema),
|
|
41
72
|
};
|
package/src/events.ts
CHANGED
|
@@ -1279,7 +1279,7 @@ export const AgentEventSchema = z.discriminatedUnion("kind", [
|
|
|
1279
1279
|
// was stopped, or died under the card), which is not a decision and must not replay as one.
|
|
1280
1280
|
z.object({ kind: z.literal("resolved"), requestId: z.string(), reply: AgentReplySchema.optional() }),
|
|
1281
1281
|
/* There was a `permission_note` frame here: a late sentence raced onto a command card that had already gone
|
|
1282
|
-
* out, because the explanation was optional and the card must not wait for a
|
|
1282
|
+
* out, because the explanation was optional and the card must not wait for a one-shot helper rung that might
|
|
1283
1283
|
* take tens of seconds. It is gone with the setting that made it optional. The judge now decides the
|
|
1284
1284
|
* verdict, so the sentence is not a decoration arriving afterwards — it is the REASON THE CARD EXISTS, and
|
|
1285
1285
|
* a card cannot be raised before it is known. Nothing races, and `PermissionAsk.explain` is populated at
|
package/src/fast-tier.test.ts
CHANGED
|
@@ -61,7 +61,7 @@ test("a pin on this provider wins over the catalog's own cheap end", () => {
|
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
test("takes a pinned id verbatim, so a model the static catalog has not caught up with is still pinnable", () => {
|
|
64
|
-
// The same call
|
|
64
|
+
// The same call readyChain makes, and for the same reason: the picker offers a custom-id escape
|
|
65
65
|
// hatch, and second-guessing the id here would run a different model than the settings row names.
|
|
66
66
|
expect(fastFor(`claude-opus-5`, { pinned: [`claude:claude-haiku-9`] })).toBe(`claude-haiku-9`);
|
|
67
67
|
});
|
package/src/fast-tier.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compareCheapestFirst, isCheaperRung } from "./model-order.js";
|
|
2
|
-
import { parsePinned } from "./
|
|
2
|
+
import { parsePinned } from "./model-pins.js";
|
|
3
3
|
import type { AgentProvider } from "./schemas/agent.js";
|
|
4
4
|
|
|
5
5
|
/* WHICH MODEL A DOWNGRADED TURN ACTUALLY RUNS ON, the second half of automatic tier selection.
|
|
@@ -21,7 +21,7 @@ import type { AgentProvider } from "./schemas/agent.js";
|
|
|
21
21
|
* follow-up cheap to answer. So a cross-provider pin here is dropped rather than honoured: saving a fraction of
|
|
22
22
|
* a cent by starting the conversation over is not a saving.
|
|
23
23
|
*
|
|
24
|
-
* THE ORDER IS A LADDER, for the reason
|
|
24
|
+
* THE ORDER IS A LADDER, for the reason model-pins.ts is one, but a shorter one: the caller spends the head
|
|
25
25
|
* and falls back to the user's own pick, rather than walking rungs. A downgrade that cannot be started is not
|
|
26
26
|
* worth a second attempt when the honest answer (their model) is sitting right there. */
|
|
27
27
|
|
|
@@ -34,14 +34,14 @@ export interface FastTierInput {
|
|
|
34
34
|
// That provider's catalog as the caller can see it. Empty is a real state (a catalog that has not loaded),
|
|
35
35
|
// and it resolves to no downgrade rather than to a guess.
|
|
36
36
|
readonly models: readonly string[];
|
|
37
|
-
// settings.autoFastModels: an ordered list of `${provider}:${modelId}` keys (
|
|
37
|
+
// settings.autoFastModels: an ordered list of `${provider}:${modelId}` keys (modelPinKey), or empty for
|
|
38
38
|
// Auto. Entries naming another provider are dropped, not honoured.
|
|
39
39
|
readonly pinned: readonly string[];
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
/* THE CHEAPER MODEL TO RUN THIS TURN ON, or undefined for "there isn't one, use their pick".
|
|
43
43
|
*
|
|
44
|
-
* A PIN IS TAKEN VERBATIM against the catalog, the same call
|
|
44
|
+
* A PIN IS TAKEN VERBATIM against the catalog, the same call readyChain makes and for the same reason:
|
|
45
45
|
* the model picker offers a custom-id escape hatch for a model the static catalog has not caught up with, and
|
|
46
46
|
* second-guessing the id here would run a different model than the settings row names. It is still checked for
|
|
47
47
|
* being CHEAPER, because that is not a fact about the catalog, it is a fact about the id, and a pin that is not
|
|
@@ -49,7 +49,7 @@ export interface FastTierInput {
|
|
|
49
49
|
*
|
|
50
50
|
* AUTO IS THE CHEAPEST ROW THE PROVIDER PUBLISHES, read through the same cheap-end order the quick model uses,
|
|
51
51
|
* so the two features cannot disagree about which rung is the cheap one. Derived, never stored: connect an
|
|
52
|
-
* account tomorrow and the answer improves by itself, exactly as
|
|
52
|
+
* account tomorrow and the answer improves by itself, exactly as a one-shot role's empty list does.
|
|
53
53
|
*
|
|
54
54
|
* NOTHING CHEAPER THAN THE PICK ⇒ UNDEFINED, and that is the common case worth being exact about rather than
|
|
55
55
|
* the edge case: a user already working on the cheap rung has nowhere to be sent, and a user on a model whose
|
package/src/index.ts
CHANGED
|
@@ -113,7 +113,6 @@ export * from "./history-state.js";
|
|
|
113
113
|
export * from "./agent-runtimes.js";
|
|
114
114
|
export * from "./provider-specs.js";
|
|
115
115
|
export * from "./agent-catalog.js";
|
|
116
|
-
export * from "./agent-run-model.js";
|
|
117
116
|
export * from "./capability-env.js";
|
|
118
117
|
export * from "./command-classes.js";
|
|
119
118
|
export * from "./command-run.js";
|
|
@@ -131,10 +130,11 @@ export * from "./listener-protocol.js";
|
|
|
131
130
|
export * from "./hostnames.js";
|
|
132
131
|
export * from "./overlay-lint.js";
|
|
133
132
|
export * from "./model-order.js";
|
|
133
|
+
export * from "./model-pins.js";
|
|
134
|
+
export * from "./model-roles.js";
|
|
134
135
|
export * from "./plan-pools.js";
|
|
135
136
|
export * from "./path-refs.js";
|
|
136
137
|
export * from "./prompt-complexity.js";
|
|
137
|
-
export * from "./quick-model.js";
|
|
138
138
|
export * from "./output-fields.js";
|
|
139
139
|
export * from "./approvals-execution.js";
|
|
140
140
|
/* The wire shapes, one module per subject area, mirroring `contracts/` above: every request and response the
|
|
@@ -153,7 +153,6 @@ export * from "./schemas/capabilities.js";
|
|
|
153
153
|
export * from "./schemas/ci.js";
|
|
154
154
|
export * from "./schemas/claude-gate.js";
|
|
155
155
|
export * from "./schemas/codebase-health.js";
|
|
156
|
-
export * from "./schemas/context.js";
|
|
157
156
|
export * from "./schemas/devices.js";
|
|
158
157
|
export * from "./schemas/engines.js";
|
|
159
158
|
export * from "./schemas/environment.js";
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { expect, test } from "vitest";
|
|
2
|
+
import { type ModelSource, modelPinKey, parsePinned, readyChain } from "./model-pins.js";
|
|
3
|
+
import type { ModelPin } from "./schemas/agent.js";
|
|
4
|
+
|
|
5
|
+
/* Which models a job spends, and in which order. The rule answers two surfaces at once: the daemon walks it,
|
|
6
|
+
* the browser names its head in that job's settings row, so what these tests pin is that the OWNER'S OWN LIST
|
|
7
|
+
* decides it and nothing else, and that there is a rung underneath the first one whenever they wrote one.
|
|
8
|
+
*
|
|
9
|
+
* NOTHING IS DERIVED FOR AN EMPTY LIST, and that is the property most of this file used to be about. A `helper`
|
|
10
|
+
* role with no models used to fall to an "Auto ladder" — every connected provider's cheapest row, best-first —
|
|
11
|
+
* so a sandbox nobody had configured still spent an account on commit messages and safety verdicts, on a
|
|
12
|
+
* ranking this package invented and re-ranked whenever an account was connected. Not set now means not set,
|
|
13
|
+
* for every role, and what the caller does with an empty answer is the caller's business: a one-shot does not
|
|
14
|
+
* run, a whole session opens on the owner's own composer pick. */
|
|
15
|
+
|
|
16
|
+
// A pin as the settings rows store one. The tests are about ORDER, so most of them name only the pair; the
|
|
17
|
+
// knobs an entry can carry ride through untouched and are asserted where that matters.
|
|
18
|
+
const pin = (key: string): ModelPin => {
|
|
19
|
+
const at = key.indexOf(`:`);
|
|
20
|
+
return { provider: key.slice(0, at), model: key.slice(at + 1) };
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// Catalogs as their providers actually publish them. The resolver reads none of them — a pin is taken verbatim
|
|
24
|
+
// — but a ModelSource carries one, and a fixture that lied about it would hide a resolver that started looking.
|
|
25
|
+
const CLAUDE: ModelSource = { provider: `claude`, ready: true, models: [`claude-opus-5`, `claude-sonnet-5`, `claude-haiku-4-5-20251001`] };
|
|
26
|
+
const GOOGLE: ModelSource = { provider: `gemini`, ready: true, models: [`gemini-3-flash`, `gemini-3-flash-lite`, `gemini-3-pro`] };
|
|
27
|
+
const CODEX: ModelSource = { provider: `codex`, ready: true, models: [`gpt-5.4-mini`, `gpt-5.6`] };
|
|
28
|
+
const KIMI: ModelSource = { provider: `kimi`, ready: true, models: [`kimi-k2.6`, `kimi-k2.7-code`, `kimi-k3`] };
|
|
29
|
+
|
|
30
|
+
const offline = (source: ModelSource): ModelSource => ({ ...source, ready: false });
|
|
31
|
+
|
|
32
|
+
// The model that answers when nothing goes wrong: the head of the chain, which is what every surface naming
|
|
33
|
+
// the spend up front reads.
|
|
34
|
+
const head = (sources: readonly ModelSource[], pinned: readonly string[]): ModelPin | undefined => readyChain(sources, pinned.map(pin))[0];
|
|
35
|
+
|
|
36
|
+
test("honours a pinned model verbatim, including an id no catalog lists yet", () => {
|
|
37
|
+
expect(head([CLAUDE, GOOGLE], [`claude:claude-opus-5`])).toEqual({ provider: `claude`, model: `claude-opus-5` });
|
|
38
|
+
// The picker's custom-id escape hatch reaches here too: a catalog can lag a release, and running something
|
|
39
|
+
// other than what the settings row names would be the worse failure.
|
|
40
|
+
expect(head([CLAUDE], [`claude:claude-haiku-9`])).toEqual({ provider: `claude`, model: `claude-haiku-9` });
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
/* A MALFORMED KEY IS REFUSED WHERE KEYS STILL EXIST. A role's list holds PINS, whose two halves are separate
|
|
44
|
+
* fields the schema requires (ModelPinSchema), so "claude with an empty model" is no longer a shape the
|
|
45
|
+
* resolver can be handed — it is rejected at the settings boundary instead. What still travels as a key is
|
|
46
|
+
* `autoFastModels`, so the rule lives with the parser that reads one, and this is where it is pinned. */
|
|
47
|
+
test("refuses a malformed key rather than reading half a pin out of it", () => {
|
|
48
|
+
for (const key of [`claude`, `claude:`, `:claude-haiku-4-5`, ` `]) {
|
|
49
|
+
expect(parsePinned(key)).toBeUndefined();
|
|
50
|
+
}
|
|
51
|
+
expect(parsePinned(`claude:claude-haiku-4-5`)).toEqual({ provider: `claude`, model: `claude-haiku-4-5` });
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
/* THE CLAIM THIS FILE EXISTS FOR NOW. An unset job resolves to NOTHING however much is connected, and it does
|
|
55
|
+
* so for both kinds of role: a resolver that reached for the cheapest rung here is the whole feature that was
|
|
56
|
+
* removed, and it would come back invisibly — the daemon would simply start spending again and the settings
|
|
57
|
+
* row would look unchanged. */
|
|
58
|
+
test("resolves an unset job to nothing, however many accounts are connected", () => {
|
|
59
|
+
expect(readyChain([CLAUDE, GOOGLE, KIMI], [])).toEqual([]);
|
|
60
|
+
expect(head([CLAUDE, GOOGLE], [])).toBeUndefined();
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test("carries an entry's run settings through untouched", () => {
|
|
64
|
+
// The resolver picks WHICH entry; how that entry runs is the entry's own business and rides along whole,
|
|
65
|
+
// because the turn (or the one-shot) is composed from all of it.
|
|
66
|
+
const configured: ModelPin = { provider: `claude`, model: `claude-opus-5`, effort: `max`, thinking: true, harness: `claude-code` };
|
|
67
|
+
|
|
68
|
+
expect(readyChain([CLAUDE], [configured])).toEqual([configured]);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
test("reports nothing when the accounts a job named have all gone", () => {
|
|
72
|
+
// A live button that fails on click is the failure this prevents: the caller renders the state instead.
|
|
73
|
+
expect(head([offline(CLAUDE), GOOGLE], [`claude:claude-haiku-4-5-20251001`])).toBeUndefined();
|
|
74
|
+
expect(head([], [`claude:claude-haiku-4-5`])).toBeUndefined();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
/* THE CHAIN: what the daemon walks when the model at the top of it refuses. A spent allowance is the ordinary
|
|
78
|
+
* case, not the exotic one: the account a helper shares with the chat runs out mid-afternoon, and the whole
|
|
79
|
+
* point of the list is that the click still lands on the next rung down. */
|
|
80
|
+
|
|
81
|
+
test("keeps the pinned models in the order they were written", () => {
|
|
82
|
+
expect(readyChain([CLAUDE, GOOGLE, CODEX], [`codex:gpt-5.6`, `gemini:gemini-3-flash`, `claude:claude-haiku-4-5-20251001`].map(pin))).toEqual([
|
|
83
|
+
{ provider: `codex`, model: `gpt-5.6` },
|
|
84
|
+
{ provider: `gemini`, model: `gemini-3-flash` },
|
|
85
|
+
{ provider: `claude`, model: `claude-haiku-4-5-20251001` },
|
|
86
|
+
]);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test("drops a pin whose provider went away and keeps the rest of the order intact", () => {
|
|
90
|
+
expect(readyChain([CLAUDE, offline(GOOGLE), CODEX], [`codex:gpt-5.6`, `gemini:gemini-3-flash`, `claude:claude-haiku-4-5`].map(pin))).toEqual([
|
|
91
|
+
{ provider: `codex`, model: `gpt-5.6` },
|
|
92
|
+
{ provider: `claude`, model: `claude-haiku-4-5` },
|
|
93
|
+
]);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
test("stops at the end of a pinned list rather than reaching for an account the user left out", () => {
|
|
97
|
+
// Google and Kimi are connected and cheaper. The user wrote down one model, so one model is what this may
|
|
98
|
+
// spend: a pin exists precisely to keep a helper off the accounts it does not name.
|
|
99
|
+
expect(readyChain([CLAUDE, GOOGLE, KIMI], [`claude:claude-haiku-4-5`].map(pin))).toEqual([{ provider: `claude`, model: `claude-haiku-4-5` }]);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
test("names each model once, however many times the list repeats it", () => {
|
|
103
|
+
// The list is hand-edited and the settings page can write one pin across many jobs, so a duplicate is a
|
|
104
|
+
// real state; unchecked it would spend a second attempt proving the same account is out.
|
|
105
|
+
expect(readyChain([CLAUDE], [`claude:claude-haiku-4-5`, `claude:claude-haiku-4-5`].map(pin))).toEqual([
|
|
106
|
+
{ provider: `claude`, model: `claude-haiku-4-5` },
|
|
107
|
+
]);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
/* A MODEL ENDPOINT the user configured is a provider like any other here, and the reason it has to be is the
|
|
111
|
+
* settings row: its options are built from the same picker catalog, so a pin naming one that this resolver
|
|
112
|
+
* dropped would print one model's name in the settings row and spend a different account entirely. */
|
|
113
|
+
const OLLAMA: ModelSource = { provider: `endpoint/ollama`, ready: true, models: [`qwen3-coder`, `gemma3-27b`] };
|
|
114
|
+
|
|
115
|
+
test("honours a pin on a configured endpoint: the whole id, not the half before its slash", () => {
|
|
116
|
+
expect(head([CLAUDE, OLLAMA], [`endpoint/ollama:qwen3-coder`])).toEqual({ provider: `endpoint/ollama`, model: `qwen3-coder` });
|
|
117
|
+
// And it round-trips through the key shape the picker mints, which is where the slash-not-colon rule earns
|
|
118
|
+
// itself: parsePinned splits on the FIRST colon, so an `endpoint:ollama` id would have parsed the provider
|
|
119
|
+
// as "endpoint" and the model as "ollama:qwen3-coder": a pin that silently resolves to nothing.
|
|
120
|
+
expect(modelPinKey({ provider: `endpoint/ollama`, model: `qwen3-coder` })).toBe(`endpoint/ollama:qwen3-coder`);
|
|
121
|
+
});
|