@intentic/sandbox-contract 1.249.0 → 1.251.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/README.md +7 -0
- package/dist/contracts/ci.contract.d.ts +4 -0
- package/dist/contracts/ci.contract.d.ts.map +1 -1
- package/dist/contracts/skills.contract.d.ts +6 -0
- package/dist/contracts/skills.contract.d.ts.map +1 -1
- package/dist/contracts/skills.contract.js +13 -4
- package/dist/contracts/skills.contract.js.map +1 -1
- package/dist/ids/conversation-ids.d.ts +15 -0
- package/dist/ids/conversation-ids.d.ts.map +1 -1
- package/dist/ids/conversation-ids.js +30 -0
- package/dist/ids/conversation-ids.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/models/model-order.d.ts.map +1 -1
- package/dist/models/model-order.js +2 -0
- package/dist/models/model-order.js.map +1 -1
- package/dist/schemas/ci.d.ts +4 -0
- package/dist/schemas/ci.d.ts.map +1 -1
- package/dist/schemas/ci.js +4 -0
- package/dist/schemas/ci.js.map +1 -1
- package/dist/schemas/devices.d.ts +2 -0
- package/dist/schemas/devices.d.ts.map +1 -1
- package/dist/schemas/devices.js +2 -0
- package/dist/schemas/devices.js.map +1 -1
- package/dist/schemas/settings.d.ts +5 -0
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +6 -2
- package/dist/schemas/settings.js.map +1 -1
- package/dist/state/fix-attempt-plan.d.ts +24 -0
- package/dist/state/fix-attempt-plan.d.ts.map +1 -0
- package/dist/state/fix-attempt-plan.js +22 -0
- package/dist/state/fix-attempt-plan.js.map +1 -0
- package/dist/state/fix-stance.d.ts +11 -0
- package/dist/state/fix-stance.d.ts.map +1 -0
- package/dist/state/fix-stance.js +79 -0
- package/dist/state/fix-stance.js.map +1 -0
- package/dist/state/runtime-state.d.ts.map +1 -1
- package/dist/state/runtime-state.js.map +1 -1
- package/package.json +4 -4
- package/src/contracts/skills.contract.ts +21 -8
- package/src/ids/conversation-ids.test.ts +61 -1
- package/src/ids/conversation-ids.ts +58 -1
- package/src/index.ts +2 -0
- package/src/models/model-order.test.ts +35 -0
- package/src/models/model-order.ts +10 -2
- package/src/schemas/ci.ts +8 -0
- package/src/schemas/devices.ts +5 -0
- package/src/schemas/settings.ts +9 -4
- package/src/state/arrival.ts +1 -1
- package/src/state/fix-attempt-plan.test.ts +64 -0
- package/src/state/fix-attempt-plan.ts +54 -0
- package/src/state/fix-stance.test.ts +99 -0
- package/src/state/fix-stance.ts +140 -0
- package/src/state/runtime-state.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/schemas/settings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/schemas/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentSummary } from "../schemas/agents.js";
|
|
2
|
+
import { type FixStance } from "./fix-stance.js";
|
|
3
|
+
export type FixResume = "continue" | "start-over";
|
|
4
|
+
export type FixAttemptPlan = {
|
|
5
|
+
readonly kind: "new";
|
|
6
|
+
readonly conversationId: string;
|
|
7
|
+
readonly attempt: number;
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: "continue";
|
|
10
|
+
readonly conversationId: string;
|
|
11
|
+
readonly attempt: number;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: "start-over";
|
|
14
|
+
readonly retire: string;
|
|
15
|
+
readonly stopFirst: boolean;
|
|
16
|
+
readonly conversationId: string;
|
|
17
|
+
readonly attempt: number;
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: "busy";
|
|
20
|
+
readonly conversationId: string;
|
|
21
|
+
readonly stance: FixStance;
|
|
22
|
+
};
|
|
23
|
+
export declare const planFixAttempt: (base: string, roster: readonly AgentSummary[], knownIds: Iterable<string>, resume?: FixResume) => FixAttemptPlan;
|
|
24
|
+
//# sourceMappingURL=fix-attempt-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-attempt-plan.d.ts","sourceRoot":"","sources":["../../src/state/fix-attempt-plan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,iBAAiB,CAAC;AAa5D,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAElD,MAAM,MAAM,cAAc,GAEpB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAEnF;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAExF;IACI,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B,GAED;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAI7F,eAAO,MAAM,cAAc,SAAU,MAAM,UAAU,SAAS,YAAY,EAAE,YAAY,QAAQ,CAAC,MAAM,CAAC,WAAW,SAAS,KAAG,cAkB9H,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { fixAttemptOf, latestFixAttempt, nextFixAttemptId } from "../ids/conversation-ids.js";
|
|
2
|
+
import { fixStance } from "./fix-stance.js";
|
|
3
|
+
export const planFixAttempt = (base, roster, knownIds, resume) => {
|
|
4
|
+
const latest = latestFixAttempt(base, roster);
|
|
5
|
+
const stance = latest === undefined ? undefined : fixStance(latest.agent);
|
|
6
|
+
const known = [...knownIds, ...(latest === undefined ? [] : [latest.agent.id])];
|
|
7
|
+
const next = () => {
|
|
8
|
+
const conversationId = nextFixAttemptId(base, known);
|
|
9
|
+
return { conversationId, attempt: fixAttemptOf(base, conversationId) ?? 1 };
|
|
10
|
+
};
|
|
11
|
+
if (latest === undefined || stance === undefined || stance.kind === "landed") {
|
|
12
|
+
return { kind: "new", ...next() };
|
|
13
|
+
}
|
|
14
|
+
if (resume === "start-over") {
|
|
15
|
+
return { kind: "start-over", retire: latest.agent.id, stopFirst: stance.kind === "working", ...next() };
|
|
16
|
+
}
|
|
17
|
+
if (stance.retry) {
|
|
18
|
+
return { kind: "continue", conversationId: latest.agent.id, attempt: latest.attempt };
|
|
19
|
+
}
|
|
20
|
+
return { kind: "busy", conversationId: latest.agent.id, stance };
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=fix-attempt-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-attempt-plan.js","sourceRoot":"","sources":["../../src/state/fix-attempt-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,EAAkB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiC5D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,MAA+B,EAAE,QAA0B,EAAE,MAAkB,EAAkB,EAAE;IAC5I,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,GAAgD,EAAE;QAC3D,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAChF,CAAC,CAAC;IACF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IAC5G,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AACrE,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AgentSummary } from "../schemas/agents.js";
|
|
2
|
+
export type FixStanceKind = "working" | "needs-you" | "ready" | "landed" | "waiting" | "ended";
|
|
3
|
+
export interface FixStance {
|
|
4
|
+
readonly kind: FixStanceKind;
|
|
5
|
+
readonly ongoing: boolean;
|
|
6
|
+
readonly retry: boolean;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
readonly hint: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const fixStance: (agent: AgentSummary) => FixStance;
|
|
11
|
+
//# sourceMappingURL=fix-stance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-stance.d.ts","sourceRoot":"","sources":["../../src/state/fix-stance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYzD,MAAM,MAAM,aAAa,GAEnB,SAAS,GAET,WAAW,GAEX,OAAO,GAEP,QAAQ,GAER,SAAS,GAET,OAAO,CAAC;AAEd,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAgGD,eAAO,MAAM,SAAS,UAAW,YAAY,KAAG,SAQ/C,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const needsYou = (label, hint) => ({ kind: "needs-you", ongoing: true, retry: false, label, hint });
|
|
2
|
+
const ATTENTION = [
|
|
3
|
+
{ flag: "plan", label: "Approval needed", why: "it has proposed a plan and is waiting for a yes" },
|
|
4
|
+
{ flag: "capability", label: "Setup needed", why: "it needs something connected that is not connected yet" },
|
|
5
|
+
{ flag: "question", label: "Question for you", why: "it has asked you something" },
|
|
6
|
+
{ flag: "permission", label: "Permission needed", why: "it wants to use a tool it needs permission for" },
|
|
7
|
+
{ flag: "conflict", label: "Land conflict", why: "its work cannot be merged until somebody resolves a clash" },
|
|
8
|
+
];
|
|
9
|
+
const IN_FLIGHT = new Set(["running", "resuming", "stopping", "dismissing"]);
|
|
10
|
+
const WORKING = {
|
|
11
|
+
kind: "working",
|
|
12
|
+
ongoing: true,
|
|
13
|
+
retry: false,
|
|
14
|
+
label: "Agent working",
|
|
15
|
+
hint: "An agent is already working on this failure. Open the conversation to watch it.",
|
|
16
|
+
};
|
|
17
|
+
const READY = {
|
|
18
|
+
kind: "ready",
|
|
19
|
+
ongoing: true,
|
|
20
|
+
retry: false,
|
|
21
|
+
label: "Fix ready",
|
|
22
|
+
hint: "The fix is written and held on the agent's branch. Open it to review the diff and land it.",
|
|
23
|
+
};
|
|
24
|
+
const LANDED = {
|
|
25
|
+
kind: "landed",
|
|
26
|
+
ongoing: false,
|
|
27
|
+
retry: false,
|
|
28
|
+
label: "Fix landed",
|
|
29
|
+
hint: "The fix is in your workspace. Running the check again is what proves it.",
|
|
30
|
+
};
|
|
31
|
+
const WAITING = {
|
|
32
|
+
kind: "waiting",
|
|
33
|
+
ongoing: true,
|
|
34
|
+
retry: false,
|
|
35
|
+
label: "Waiting",
|
|
36
|
+
hint: "The fix agent's allowance is spent. Nothing is owed: the turn goes again when the provider's window reopens.",
|
|
37
|
+
};
|
|
38
|
+
const holdingWork = (agent) => agent.status === "ready" || (agent.status === "idle" && agent.diff !== undefined && agent.diff.files > 0);
|
|
39
|
+
const ENDINGS = {
|
|
40
|
+
error: { label: "Agent failed", why: "The fix agent's turn failed" },
|
|
41
|
+
interrupted: { label: "Interrupted", why: "The fix agent's turn was cut off when the sandbox went away" },
|
|
42
|
+
stopped: { label: "Stopped", why: "The fix agent was stopped before it finished" },
|
|
43
|
+
idle: { label: "Nothing changed", why: "The fix agent finished without changing any files" },
|
|
44
|
+
};
|
|
45
|
+
const ended = (agent) => {
|
|
46
|
+
const ending = ENDINGS[agent.status] ?? { label: "Agent stopped", why: "The fix agent's turn ended" };
|
|
47
|
+
const files = agent.diff?.files ?? 0;
|
|
48
|
+
const partial = files === 0 ? "" : ` It left ${files} changed file${files === 1 ? "" : "s"} on its branch.`;
|
|
49
|
+
return {
|
|
50
|
+
kind: "ended",
|
|
51
|
+
ongoing: false,
|
|
52
|
+
retry: true,
|
|
53
|
+
label: ending.label,
|
|
54
|
+
hint: `${ending.why}${agent.failure === undefined ? "" : `: ${agent.failure}`}.${partial} Continuing carries on in the same conversation; starting over opens a fresh one.`,
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const RULES = [
|
|
58
|
+
(agent) => (agent.status === "error" && agent.failureCode === "rate_limit" ? WAITING : undefined),
|
|
59
|
+
(agent) => {
|
|
60
|
+
const parked = ATTENTION.find((entry) => agent.attention[entry.flag]);
|
|
61
|
+
return parked === undefined ? undefined : needsYou(parked.label, `The fix agent is waiting on you: ${parked.why}.`);
|
|
62
|
+
},
|
|
63
|
+
(agent) => agent.status === "awaiting" || agent.status === "conflict"
|
|
64
|
+
? needsYou("Needs you", "The fix agent has stopped and is waiting on you.")
|
|
65
|
+
: undefined,
|
|
66
|
+
(agent) => (IN_FLIGHT.has(agent.status) ? WORKING : undefined),
|
|
67
|
+
(agent) => (holdingWork(agent) ? READY : undefined),
|
|
68
|
+
(agent) => (agent.status === "landed" ? LANDED : undefined),
|
|
69
|
+
];
|
|
70
|
+
export const fixStance = (agent) => {
|
|
71
|
+
for (const rule of RULES) {
|
|
72
|
+
const stance = rule(agent);
|
|
73
|
+
if (stance !== undefined) {
|
|
74
|
+
return stance;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return ended(agent);
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=fix-stance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-stance.js","sourceRoot":"","sources":["../../src/state/fix-stance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../src/state/runtime-state.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;CACjD;AAGD,QAAA,MAAM,eAAe;qBAEP,WAAW;;;qBAGX,QAAQ;;;qBAGR,OAAO;;;qBAGP,UAAU;;;qBAGV,WAAW;;;
|
|
1
|
+
{"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../src/state/runtime-state.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;CACjD;AAGD,QAAA,MAAM,eAAe;qBAEP,WAAW;;;qBAGX,QAAQ;;;qBAGR,OAAO;;;qBAGP,UAAU;;;qBAGV,WAAW;;;qBAKX,OAAO;;;qBACP,QAAQ;;;qBACR,SAAS;;;qBAGT,WAAW;;;qBAGX,UAAU;;EAC4B,CAAC;AAErD,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAAoB,CAAC;AAGxF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;AAQvE,eAAO,MAAM,qBAAqB,YAAa,SAAS,MAAM,EAAE,KAAG,SAAS,YAAY,EAC2C,CAAC;AAIpI,eAAO,MAAM,qBAAqB,QAAO,SAAS,YAAY,EAA+E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/state/runtime-state.ts"],"names":[],"mappings":"AAgBA,MAAM,eAAe,GAAG;IAEpB,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;IAGrD,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;IAGzD,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;IAG7C,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;IAGnD,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/state/runtime-state.ts"],"names":[],"mappings":"AAgBA,MAAM,eAAe,GAAG;IAEpB,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;IAGrD,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;IAGzD,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;IAG7C,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;IAGnD,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;IAKrD,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;IACjE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE;IACrD,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;IAGjD,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;IAGrD,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE;CACT,CAAC;AAErD,MAAM,CAAC,MAAM,uBAAuB,GAAoC,eAAe,CAAC;AAOxF,MAAM,MAAM,GAAG,CAAC,IAA6B,EAA2B,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAI1I,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAA0B,EAA2B,EAAE,CACzF,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AAIpI,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAA4B,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/sandbox-contract",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.251.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.251.0",
|
|
189
|
+
"@intentic/extension-manifest": "1.251.0",
|
|
190
|
+
"@intentic/registry": "1.251.0",
|
|
191
191
|
"@orpc/contract": "1.14.13",
|
|
192
192
|
"tslib": "2.8.1",
|
|
193
193
|
"zod": "4.5.4"
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { oc } from "@orpc/contract";
|
|
2
|
-
import { SkillBodySchema, SkillDraftSchema, SkillIdSchema, SkillRemoveSchema, SkillsListSchema } from "../schemas/settings.js";
|
|
2
|
+
import { SkillBodySchema, SkillDraftSchema, SkillIdSchema, SkillRemoveSchema, SkillsListSchema, SkillSwitchSchema } from "../schemas/settings.js";
|
|
3
3
|
import { OkSchema } from "../schemas/shared.js";
|
|
4
4
|
|
|
5
|
-
// What the agent knows and which half the owner controls; `list` joins
|
|
6
|
-
// checkouts, extension folders).
|
|
7
|
-
// array
|
|
5
|
+
// What the agent knows and which half the owner controls; `list` joins every source (the owner's own, the settings,
|
|
6
|
+
// connections, plugin checkouts, extension folders, persona kits). A baked tool's switch rides settings' `skills`
|
|
7
|
+
// array; an own skill is on while the agent's copy of it exists, which `switch` moves and `save`/`remove` write
|
|
8
|
+
// together with the text. `read` takes the id in the query, since an id can name an owner and won't fit a path
|
|
9
|
+
// template.
|
|
8
10
|
export const skillsContract = {
|
|
9
11
|
list: oc
|
|
10
12
|
.route({
|
|
@@ -12,7 +14,7 @@ export const skillsContract = {
|
|
|
12
14
|
path: "/skills",
|
|
13
15
|
summary: "What the agent knows how to do",
|
|
14
16
|
description:
|
|
15
|
-
"Every skill available here and whether it is switched on, joined from all
|
|
17
|
+
"Every skill available here and whether it is switched on, joined from all the places they come from: the owner's own, the settings, plugins a connection installed, folders inside extensions, and persona kits.",
|
|
16
18
|
})
|
|
17
19
|
.output(SkillsListSchema),
|
|
18
20
|
read: oc
|
|
@@ -25,24 +27,35 @@ export const skillsContract = {
|
|
|
25
27
|
})
|
|
26
28
|
.input(SkillIdSchema)
|
|
27
29
|
.output(SkillBodySchema),
|
|
28
|
-
// Upsert by name; renaming saves under a new name and deletes the old.
|
|
30
|
+
// Upsert by name; renaming saves under a new name and deletes the old. A new skill starts on; rewriting keeps its
|
|
31
|
+
// switch as it was.
|
|
29
32
|
save: oc
|
|
30
33
|
.route({
|
|
31
34
|
method: "POST",
|
|
32
35
|
path: "/skills",
|
|
33
36
|
summary: "Write a skill",
|
|
34
37
|
description:
|
|
35
|
-
"Creates or rewrites a skill by name
|
|
38
|
+
"Creates or rewrites a skill by name. A new one starts switched on, because you wrote it in order to use it; rewriting one you switched off leaves it off. Renaming is saving under the new name and deleting the old.",
|
|
36
39
|
})
|
|
37
40
|
.input(SkillDraftSchema)
|
|
38
41
|
.output(OkSchema),
|
|
42
|
+
switch: oc
|
|
43
|
+
.route({
|
|
44
|
+
method: "POST",
|
|
45
|
+
path: "/skills/switch",
|
|
46
|
+
summary: "Switch one of your own skills on or off",
|
|
47
|
+
description:
|
|
48
|
+
"Off takes the agent's copy away and keeps your text; on writes the copy back from it. Built-in tools are switched in the agent settings instead, and nothing else has a switch.",
|
|
49
|
+
})
|
|
50
|
+
.input(SkillSwitchSchema)
|
|
51
|
+
.output(OkSchema),
|
|
39
52
|
remove: oc
|
|
40
53
|
.route({
|
|
41
54
|
method: "POST",
|
|
42
55
|
path: "/skills/remove",
|
|
43
56
|
summary: "Delete a skill",
|
|
44
57
|
description:
|
|
45
|
-
"Removes the text and
|
|
58
|
+
"Removes the text and the agent's copy in one step, so a screen never has to sequence two calls and never leaves one half done.",
|
|
46
59
|
})
|
|
47
60
|
.input(SkillRemoveSchema)
|
|
48
61
|
.output(OkSchema),
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { afterEach, expect, test, vi } from "vitest";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
CI_FIX_PREFIX,
|
|
4
|
+
ciFixConversationId,
|
|
5
|
+
fixAttemptId,
|
|
6
|
+
fixAttemptOf,
|
|
7
|
+
fixAttemptsOf,
|
|
8
|
+
latestFixAttempt,
|
|
9
|
+
newConversationId,
|
|
10
|
+
nextFixAttemptId,
|
|
11
|
+
PUSH_FIX_PREFIX,
|
|
12
|
+
pushFixConversationId,
|
|
13
|
+
} from "./conversation-ids.js";
|
|
3
14
|
import { ConversationIdSchema } from "../schemas/agent.js";
|
|
4
15
|
|
|
5
16
|
const mockRandomValues = (values: readonly number[]) => {
|
|
@@ -101,3 +112,52 @@ test("every derived push fix id passes the conversation-id guard", () => {
|
|
|
101
112
|
}
|
|
102
113
|
}
|
|
103
114
|
});
|
|
115
|
+
|
|
116
|
+
// Attempt 1 is the bare derived id, so every fix conversation minted before attempts existed reads as attempt 1.
|
|
117
|
+
test("the first attempt wears the failure's own id, later ones carry their number", () => {
|
|
118
|
+
const base = ciFixConversationId(`web`, 41);
|
|
119
|
+
expect(fixAttemptId(base, 1)).toBe(base);
|
|
120
|
+
expect(fixAttemptId(base, 2)).toBe(`ci-fix-web-41-attempt2`);
|
|
121
|
+
expect(fixAttemptOf(base, base)).toBe(1);
|
|
122
|
+
expect(fixAttemptOf(base, `ci-fix-web-41-attempt2`)).toBe(2);
|
|
123
|
+
expect(fixAttemptOf(base, `ci-fix-web-41-attempt12`)).toBe(12);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Read base-relative on purpose: a base ends in a run id, so a neighbouring failure's id can start with this one.
|
|
127
|
+
test("another failure's id is not an attempt at this one", () => {
|
|
128
|
+
const base = ciFixConversationId(`web`, 41);
|
|
129
|
+
// Repo `web-41`, run 2: starts with the base and a dash, and is nobody's attempt.
|
|
130
|
+
expect(fixAttemptOf(base, ciFixConversationId(`web-41`, 2))).toBeUndefined();
|
|
131
|
+
expect(fixAttemptOf(base, ciFixConversationId(`web`, 412))).toBeUndefined();
|
|
132
|
+
expect(fixAttemptOf(base, `swift-otter-k9m2`)).toBeUndefined();
|
|
133
|
+
// One spelling per attempt.
|
|
134
|
+
expect(fixAttemptOf(base, `ci-fix-web-41-attempt1`)).toBeUndefined();
|
|
135
|
+
expect(fixAttemptOf(base, `ci-fix-web-41-attempt02`)).toBeUndefined();
|
|
136
|
+
expect(fixAttemptOf(base, `ci-fix-web-41-attempt`)).toBeUndefined();
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
test("attempts are read off the roster, earliest first, and the newest is the live answer", () => {
|
|
140
|
+
const base = pushFixConversationId(`intentic`, `lint`);
|
|
141
|
+
const roster = [{ id: `swift-otter-k9m2` }, { id: fixAttemptId(base, 3) }, { id: base }, { id: pushFixConversationId(`intentic`, `typecheck`) }];
|
|
142
|
+
expect(fixAttemptsOf(base, roster).map((entry) => entry.attempt)).toEqual([1, 3]);
|
|
143
|
+
expect(latestFixAttempt(base, roster)?.agent.id).toBe(fixAttemptId(base, 3));
|
|
144
|
+
expect(latestFixAttempt(base, [])).toBeUndefined();
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// The archive counts: a start-over files the last attempt away, and re-minting its number would un-archive it.
|
|
148
|
+
test("the next attempt is numbered past every known one, archived included", () => {
|
|
149
|
+
const base = ciFixConversationId(`web`, 41);
|
|
150
|
+
expect(nextFixAttemptId(base, [])).toBe(base);
|
|
151
|
+
expect(nextFixAttemptId(base, [base])).toBe(`ci-fix-web-41-attempt2`);
|
|
152
|
+
expect(nextFixAttemptId(base, [`ci-fix-web-41-attempt3`, `swift-otter-k9m2`])).toBe(`ci-fix-web-41-attempt4`);
|
|
153
|
+
expect(nextFixAttemptId(base, [ciFixConversationId(`web-41`, 2)])).toBe(base);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
test("an attempt id passes the guard and fits, even for the widest run id a forge mints", () => {
|
|
157
|
+
const widest = ciFixConversationId(`a-repository-name-of-thirty-two-chars-or-more`, 99_999_999_999);
|
|
158
|
+
for (const attempt of [1, 2, 99]) {
|
|
159
|
+
const id = fixAttemptId(widest, attempt);
|
|
160
|
+
expect(ConversationIdSchema.safeParse(id).success).toBe(true);
|
|
161
|
+
expect(id.length).toBeLessThanOrEqual(64);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
@@ -149,7 +149,8 @@ export const newConversationId = (): string => `${pick(ADJECTIVES)}-${pick(NOUNS
|
|
|
149
149
|
// Derived, not drawn, so a re-computed id says whether an agent is already on this failure and a second press continues
|
|
150
150
|
// it. The repo is included (one run id per project) and slugified, not hashed, since people read it.
|
|
151
151
|
export const CI_FIX_PREFIX = "ci-fix-";
|
|
152
|
-
// Leaves ~24 characters for the run id within the 64-char id limit
|
|
152
|
+
// Leaves ~24 characters for the run id and an attempt suffix within the 64-char id limit; the widest run id either
|
|
153
|
+
// forge mints is eleven digits.
|
|
153
154
|
const REPO_SLUG_MAX = 32;
|
|
154
155
|
const repoSlug = (repo: string): string =>
|
|
155
156
|
repo
|
|
@@ -176,3 +177,59 @@ const digest = (text: string): string => {
|
|
|
176
177
|
};
|
|
177
178
|
|
|
178
179
|
export const pushFixConversationId = (scope: string, signature: string): string => `${PUSH_FIX_PREFIX}${repoSlug(scope)}-${digest(signature)}`;
|
|
180
|
+
|
|
181
|
+
// ONE FAILURE, MANY ATTEMPTS, ONE LIVE ANSWER. The derived id above names the FAILURE; an attempt at it is a
|
|
182
|
+
// conversation of its own, so starting over (another model, a clean worktree) never rewrites a record some other window
|
|
183
|
+
// is showing, and every attempt keeps its own transcript, cost and URL. Attempt 1 wears the bare id, so every id minted
|
|
184
|
+
// before attempts existed is attempt 1 of its failure.
|
|
185
|
+
const ATTEMPT_MARK = "-attempt";
|
|
186
|
+
|
|
187
|
+
export const fixAttemptId = (base: string, attempt: number): string => (attempt <= 1 ? base : `${base}${ATTEMPT_MARK}${attempt}`);
|
|
188
|
+
|
|
189
|
+
// Which attempt at `base` this id is, or undefined for an id that is none of them. Read base-relative, never the other
|
|
190
|
+
// way round: a base ends in a run id or a digest, so nothing about an id on its own says where an attempt marker would
|
|
191
|
+
// begin, and `ci-fix-web-41-2` is repo `web-41`'s run 2, not a second go at run 41.
|
|
192
|
+
export const fixAttemptOf = (base: string, id: string): number | undefined => {
|
|
193
|
+
if (id === base) {
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
if (!id.startsWith(`${base}${ATTEMPT_MARK}`)) {
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
const rest = id.slice(base.length + ATTEMPT_MARK.length);
|
|
200
|
+
// One spelling per attempt: the first is the bare id, so `-attempt1` and a zero-padded number are nobody's.
|
|
201
|
+
return /^[2-9]\d*$|^[1-9]\d+$/.test(rest) ? Number(rest) : undefined;
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
export interface FixAttempt<T extends { readonly id: string }> {
|
|
205
|
+
readonly attempt: number;
|
|
206
|
+
readonly agent: T;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Every attempt at `base` among `agents`, earliest first. The roster is the record: nothing else files which
|
|
210
|
+
// conversations answered a failure, and none is needed, since the ids say so.
|
|
211
|
+
export const fixAttemptsOf = <T extends { readonly id: string }>(base: string, agents: Iterable<T>): FixAttempt<T>[] => {
|
|
212
|
+
const attempts: FixAttempt<T>[] = [];
|
|
213
|
+
for (const agent of agents) {
|
|
214
|
+
const attempt = fixAttemptOf(base, agent.id);
|
|
215
|
+
if (attempt !== undefined) {
|
|
216
|
+
attempts.push({ attempt, agent });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return attempts.toSorted((left, right) => left.attempt - right.attempt);
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
// The failure's live answer: its newest attempt, since an older one was set aside by the very act of starting a newer.
|
|
223
|
+
export const latestFixAttempt = <T extends { readonly id: string }>(base: string, agents: Iterable<T>): FixAttempt<T> | undefined =>
|
|
224
|
+
fixAttemptsOf(base, agents).at(-1);
|
|
225
|
+
|
|
226
|
+
// The id the next attempt takes: one past every attempt KNOWN, archived ones included. A start-over files the last
|
|
227
|
+
// attempt away rather than deleting it, and a message to an archived conversation un-archives it, so minting a number
|
|
228
|
+
// the archive holds would quietly resurrect the attempt the reader just set aside.
|
|
229
|
+
export const nextFixAttemptId = (base: string, knownIds: Iterable<string>): string => {
|
|
230
|
+
let highest = 0;
|
|
231
|
+
for (const id of knownIds) {
|
|
232
|
+
highest = Math.max(highest, fixAttemptOf(base, id) ?? 0);
|
|
233
|
+
}
|
|
234
|
+
return fixAttemptId(base, highest + 1);
|
|
235
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -100,6 +100,8 @@ export * from "./state/workspace-state.js";
|
|
|
100
100
|
export * from "./state/runtime-state.js";
|
|
101
101
|
export * from "./state/state-portability.js";
|
|
102
102
|
export * from "./state/history-state.js";
|
|
103
|
+
export * from "./state/fix-stance.js";
|
|
104
|
+
export * from "./state/fix-attempt-plan.js";
|
|
103
105
|
// Provider vocabulary bottom-up: agent-runtimes, provider-specs, agent-catalog; three modules since the dependency
|
|
104
106
|
// points one way.
|
|
105
107
|
export * from "./models/agent-runtimes.js";
|
|
@@ -96,6 +96,41 @@ test("files a re-served open-weights model on the cheap rung, not at the head of
|
|
|
96
96
|
]);
|
|
97
97
|
});
|
|
98
98
|
|
|
99
|
+
// The Google channel as CLIProxyAPI publishes it: one row per thinking level, ids that agree on nothing. The catalog's
|
|
100
|
+
// head is the default a turn with no pin receives and the row an open chat is repointed to when its own pin goes
|
|
101
|
+
// missing, so which of these leads is a routing decision, not a cosmetic one.
|
|
102
|
+
const ANTIGRAVITY = [
|
|
103
|
+
"gemini-3.8-flash-high",
|
|
104
|
+
"gemini-3.6-flash-high",
|
|
105
|
+
"gemini-3.1-pro-low",
|
|
106
|
+
"gemini-3-flash",
|
|
107
|
+
"claude-sonnet-4-6",
|
|
108
|
+
"gpt-oss-120b-medium",
|
|
109
|
+
"gemini-3.1-flash-lite",
|
|
110
|
+
"claude-opus-4-6-thinking",
|
|
111
|
+
"gemini-3.7-flash-high",
|
|
112
|
+
"gemini-pro-agent",
|
|
113
|
+
];
|
|
114
|
+
|
|
115
|
+
test("seats a quiet rung under its own tier's ordinary rows, whatever version its id claims", () => {
|
|
116
|
+
// Both are Gemini 3.1 Pro; only the quiet one says which level, and only the loud one omits the version. On release
|
|
117
|
+
// alone the Low row leads the tier and every unpinned Google turn opens on it.
|
|
118
|
+
expect(["gemini-3.1-pro-low", "gemini-pro-agent"].toSorted(compareUnrankedModelIds)).toEqual(["gemini-pro-agent", "gemini-3.1-pro-low"]);
|
|
119
|
+
expect(["claude-sonnet-4-6-minimal", "claude-sonnet-4-6"].toSorted(compareModelIds)).toEqual(["claude-sonnet-4-6", "claude-sonnet-4-6-minimal"]);
|
|
120
|
+
// Only BELOW the default is quiet: a loud row keeps its release, so the newer model still leads its tier.
|
|
121
|
+
expect(["claude-opus-4-6-thinking", "claude-opus-5"].toSorted(compareModelIds)).toEqual(["claude-opus-5", "claude-opus-4-6-thinking"]);
|
|
122
|
+
expect(["gpt-oss-120b-medium", "gpt-oss-120b-low"].toSorted(compareModelIds)).toEqual(["gpt-oss-120b-medium", "gpt-oss-120b-low"]);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
test("hands the Google channel a default that is a frontier row, before and after its Opus row goes missing", () => {
|
|
126
|
+
expect(ANTIGRAVITY.toSorted(compareUnrankedModelIds)[0]).toBe("claude-opus-4-6-thinking");
|
|
127
|
+
// What the picker and every unpinned turn fall to while the channel is out of Opus capacity: Pro at its own level,
|
|
128
|
+
// not the same model's Low row.
|
|
129
|
+
expect(ANTIGRAVITY.filter((id) => id !== "claude-opus-4-6-thinking").toSorted(compareUnrankedModelIds)[0]).toBe("gemini-pro-agent");
|
|
130
|
+
// The quiet row still sorts above every lesser tier: demoted within Pro, not out of it.
|
|
131
|
+
expect(ANTIGRAVITY.toSorted(compareUnrankedModelIds).slice(0, 3)).toEqual(["claude-opus-4-6-thinking", "gemini-pro-agent", "gemini-3.1-pro-low"]);
|
|
132
|
+
});
|
|
133
|
+
|
|
99
134
|
test("keeps the arrival order between ids the rule cannot separate: Anthropic's catalog IS ranked", () => {
|
|
100
135
|
expect(["claude-opus-5", "claude-fable-5"].toSorted(compareModelIds)).toEqual(["claude-opus-5", "claude-fable-5"]);
|
|
101
136
|
expect(["claude-fable-5", "claude-opus-5"].toSorted(compareModelIds)).toEqual(["claude-fable-5", "claude-opus-5"]);
|
|
@@ -120,13 +120,21 @@ const thinkingRankOf = (family: string): number => {
|
|
|
120
120
|
// The last recognized word wins: gemini-flash-lite is Flash's cheap end, gpt-codex-max is Codex's frontier end.
|
|
121
121
|
export const tierRankOf = (family: string): number => lastRankOf(family, TIER_RANK);
|
|
122
122
|
|
|
123
|
-
//
|
|
124
|
-
//
|
|
123
|
+
// A row naming a level BELOW the provider's default is a quieter rung of its tier, not a model of its own, so it sorts
|
|
124
|
+
// under that tier's ordinary rows before any release is read. Read here and not just from the cheap end because a
|
|
125
|
+
// routed channel vends one row per level with inconsistent ids: `gemini-3.1-pro-low` carries version digits and
|
|
126
|
+
// `gemini-pro-agent` (the same model, loud) carries none, so on release alone the quiet row leads its tier and becomes
|
|
127
|
+
// the catalog default.
|
|
128
|
+
const quietRankOf = (family: string): number => (thinkingRankOf(family) < UNSTATED_THINKING ? 1 : 0);
|
|
129
|
+
|
|
130
|
+
// The canonical order of two ids: tier first, then the quiet rung, then release, then a release-local tier. Stable
|
|
131
|
+
// under Array#toSorted, so ids this rule cannot separate keep their arrival order.
|
|
125
132
|
export const compareModelIds = (left: string, right: string): number => {
|
|
126
133
|
const leftFamily = familyOf(left);
|
|
127
134
|
const rightFamily = familyOf(right);
|
|
128
135
|
return (
|
|
129
136
|
tierRankOf(leftFamily) - tierRankOf(rightFamily) ||
|
|
137
|
+
quietRankOf(leftFamily) - quietRankOf(rightFamily) ||
|
|
130
138
|
compareRelease(releaseOf(left), releaseOf(right)) ||
|
|
131
139
|
releaseTierRankOf(leftFamily) - releaseTierRankOf(rightFamily)
|
|
132
140
|
);
|
package/src/schemas/ci.ts
CHANGED
|
@@ -130,6 +130,14 @@ export const CiFixParamSchema = CiRunParamSchema.extend({
|
|
|
130
130
|
pick: AgentRunPickSchema.describe(
|
|
131
131
|
"Which model to open the conversation on, when somebody chose one. Leave it out for the sandbox's own choice, which is the ordinary path.",
|
|
132
132
|
),
|
|
133
|
+
// The verb the picker's bar was ended with, when an attempt already exists (state/fix-attempt-plan.ts). Left out,
|
|
134
|
+
// an ended attempt is continued and a fresh press opens attempt 1; one still in play answers CONFLICT.
|
|
135
|
+
mode: z
|
|
136
|
+
.enum(["continue", "start-over"])
|
|
137
|
+
.optional()
|
|
138
|
+
.describe(
|
|
139
|
+
"What to do about the attempt already made at this run, when there is one. `continue` carries on in that conversation; `start-over` stops it if running, files it away, and opens the next attempt on a clean worktree. Leave it out for the plain press: an attempt that ended is continued, a fresh failure gets attempt 1, and one still in play answers CONFLICT with why.",
|
|
140
|
+
),
|
|
133
141
|
force: z
|
|
134
142
|
.boolean()
|
|
135
143
|
.optional()
|
package/src/schemas/devices.ts
CHANGED
|
@@ -224,6 +224,11 @@ export const DeviceReportSchema = z.object({
|
|
|
224
224
|
});
|
|
225
225
|
export type DeviceReport = z.infer<typeof DeviceReportSchema>;
|
|
226
226
|
|
|
227
|
+
// Past this, a reading stops speaking for the machine and only says when it was taken. Read against the moment the
|
|
228
|
+
// reading was received, never the wall clock: a copy nobody has re-read is old, not evidence the machine went quiet.
|
|
229
|
+
export const REPORT_QUIET_AFTER_MS = 60_000;
|
|
230
|
+
export const reportQuiet = (report: DeviceReport, receivedAt: number): boolean => receivedAt - report.capturedAt > REPORT_QUIET_AFTER_MS;
|
|
231
|
+
|
|
227
232
|
// Compares running build against installed; silent when the loop is stopped, nothing installed, or installed is a dev
|
|
228
233
|
// build. An unstamped `running` still counts as skew.
|
|
229
234
|
export const agentBuildSkew = (agent: DeviceAgent): { readonly running: string | undefined; readonly installed: string } | undefined => {
|
package/src/schemas/settings.ts
CHANGED
|
@@ -99,7 +99,7 @@ export const RuleFiringsSchema = z.record(z.string(), z.number());
|
|
|
99
99
|
export type RuleFirings = z.infer<typeof RuleFiringsSchema>;
|
|
100
100
|
// Where a skill came from, the fact that decides everything else about its row.
|
|
101
101
|
// builtin: this image ships it.
|
|
102
|
-
// own: the owner wrote it (.intentic/config/skills/); only these are editable here.
|
|
102
|
+
// own: the owner wrote it (.intentic/config/skills/); on while its loaded copy exists; only these are editable here.
|
|
103
103
|
// capability: something connected brought it (a CLI tool, a machine, a browser account, a VPN).
|
|
104
104
|
// extension: an installed extension ships it inside its checkout.
|
|
105
105
|
// plugin: a plugin capability cloned a repo that holds it.
|
|
@@ -128,7 +128,7 @@ export const SkillSummarySchema = z.object({
|
|
|
128
128
|
// e.g. an extension's title, a plugin capability's id, a setting's name.
|
|
129
129
|
owner: z.string().optional().describe("Who ships it, as the row would name them."),
|
|
130
130
|
enabled: z.boolean().describe("Whether the agent can reach it."),
|
|
131
|
-
// True
|
|
131
|
+
// True for a baked tool (switched through the settings `skills` list) and the owner's own (through `skills.switch`).
|
|
132
132
|
switchable: z
|
|
133
133
|
.boolean()
|
|
134
134
|
.describe(
|
|
@@ -171,8 +171,13 @@ export const SkillDraftSchema = z.object({
|
|
|
171
171
|
});
|
|
172
172
|
export type SkillDraft = z.infer<typeof SkillDraftSchema>;
|
|
173
173
|
export const SkillRemoveSchema = z.object({
|
|
174
|
-
name: SkillNameSchema.describe("Which skill to delete. The text and the
|
|
174
|
+
name: SkillNameSchema.describe("Which skill to delete. The stored text and the agent's copy go together, so nothing is left half done."),
|
|
175
175
|
});
|
|
176
|
+
export const SkillSwitchSchema = z.object({
|
|
177
|
+
name: SkillNameSchema.describe("Which skill of your own to switch."),
|
|
178
|
+
on: z.boolean().describe("On writes the agent's copy from the stored text; off removes that copy and keeps the text."),
|
|
179
|
+
});
|
|
180
|
+
export type SkillSwitch = z.infer<typeof SkillSwitchSchema>;
|
|
176
181
|
// Opt-in settings the /settings routes edit and streamAgent reads, defaulting off so each can be A/B tested (`skills`
|
|
177
182
|
// defaults on for the baked tools worth having, since a skill file is the only thing that tells the agent a baked
|
|
178
183
|
// binary exists). Every default lives in the schema, so an older settings file still parses and keeps the owner's other
|
|
@@ -185,7 +190,7 @@ export const SandboxSettingsSchema = z.object({
|
|
|
185
190
|
.describe(
|
|
186
191
|
"Keep the instructions identical between turns so the provider can cache them, moving anything that varies into the message instead. Cheaper, at the cost of some flexibility.",
|
|
187
192
|
),
|
|
188
|
-
skills: z.array(z.string()).default(["lsp", "fileq"]).describe("Which
|
|
193
|
+
skills: z.array(z.string()).default(["lsp", "fileq"]).describe("Which built-in tools are switched on. A skill of your own is not listed here: it is on while the agent's copy of it exists."),
|
|
189
194
|
// Router reads the sent message and one line per card, once per chat, between send and the first turn
|
|
190
195
|
// (persona-router.ts / model-roles.ts). Never asked of a draft: only a sent message is a finished one.
|
|
191
196
|
// Attended chats only: routing onto a card would grant an unwatched wake accounts nobody named for it.
|