@intentic/sandbox-contract 1.347.0 → 1.349.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/contracts/agent.contract.d.ts +9 -0
- package/dist/contracts/agent.contract.d.ts.map +1 -1
- package/dist/contracts/agents.contract.d.ts +2 -0
- package/dist/contracts/agents.contract.d.ts.map +1 -1
- package/dist/contracts/device.contract.d.ts +7 -0
- package/dist/contracts/device.contract.d.ts.map +1 -1
- package/dist/contracts/runner.contract.d.ts +3 -0
- package/dist/contracts/runner.contract.d.ts.map +1 -1
- package/dist/contracts/sessions.contract.d.ts +1 -0
- package/dist/contracts/sessions.contract.d.ts.map +1 -1
- package/dist/contracts/system.contract.d.ts +7 -0
- package/dist/contracts/system.contract.d.ts.map +1 -1
- package/dist/events/agent-events.d.ts +4 -0
- package/dist/events/agent-events.d.ts.map +1 -1
- package/dist/events/agent-transcript.d.ts +1 -0
- package/dist/events/agent-transcript.d.ts.map +1 -1
- package/dist/events/agent-ui.d.ts +3 -0
- package/dist/events/agent-ui.d.ts.map +1 -1
- package/dist/events/agent-ui.js +5 -0
- package/dist/events/agent-ui.js.map +1 -1
- package/dist/events/transcript.d.ts +5 -0
- package/dist/events/transcript.d.ts.map +1 -1
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/protocol/raw/raw-json-routes.d.ts +7 -0
- package/dist/protocol/raw/raw-json-routes.d.ts.map +1 -1
- package/dist/schemas/device-folder.d.ts +8 -0
- package/dist/schemas/device-folder.d.ts.map +1 -1
- package/dist/schemas/device-folder.js +7 -0
- package/dist/schemas/device-folder.js.map +1 -1
- package/dist/schemas/devices.d.ts +35 -0
- package/dist/schemas/devices.d.ts.map +1 -1
- package/dist/schemas/devices.js +2 -1
- package/dist/schemas/devices.js.map +1 -1
- package/dist/text/transcript-fold.js +1 -1
- package/dist/text/transcript-fold.js.map +1 -1
- package/package.json +5 -5
- package/src/events/agent-ui.ts +8 -0
- package/src/schemas/device-folder.ts +14 -0
- package/src/schemas/devices.ts +4 -4
- package/src/text/transcript-fold.test.ts +2 -0
- package/src/text/transcript-fold.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/sandbox-contract",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.349.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",
|
|
@@ -362,10 +362,10 @@
|
|
|
362
362
|
}
|
|
363
363
|
},
|
|
364
364
|
"dependencies": {
|
|
365
|
-
"@intentic/base": "1.
|
|
366
|
-
"@intentic/constants": "1.
|
|
367
|
-
"@intentic/extension-manifest": "1.
|
|
368
|
-
"@intentic/registry": "1.
|
|
365
|
+
"@intentic/base": "1.349.0",
|
|
366
|
+
"@intentic/constants": "1.349.0",
|
|
367
|
+
"@intentic/extension-manifest": "1.349.0",
|
|
368
|
+
"@intentic/registry": "1.349.0",
|
|
369
369
|
"@orpc/contract": "1.15.4",
|
|
370
370
|
"tslib": "2.8.1",
|
|
371
371
|
"zod": "4.6.5"
|
package/src/events/agent-ui.ts
CHANGED
|
@@ -19,9 +19,17 @@ export const TranscriptAgentNoticeSchema = z.object({
|
|
|
19
19
|
.string()
|
|
20
20
|
.optional()
|
|
21
21
|
.describe("Who said it, when the runtime named one: the extension or plugin, as the runtime spells it. Absent when the runtime's loop said it itself."),
|
|
22
|
+
sent: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("What the model was told along with this notice, where that differs from the line itself: disclosed under the row."),
|
|
22
26
|
});
|
|
23
27
|
export type TranscriptAgentNotice = z.infer<typeof TranscriptAgentNoticeSchema>;
|
|
24
28
|
|
|
29
|
+
// Who said the notice a turn's transcript carries where the repositories' end-of-turn checks were said back to the model
|
|
30
|
+
// (the sandbox's agent/run/turn-checks.ts): a reader draws that row as the checks' own, its findings behind it.
|
|
31
|
+
export const TURN_CHECKS_SOURCE = "turn checks";
|
|
32
|
+
|
|
25
33
|
// The two frames, as members of AgentEventSchema.
|
|
26
34
|
export const agentStatusEvent = {
|
|
27
35
|
kind: z.literal("agent_status"),
|
|
@@ -42,6 +42,20 @@ export const clearableOnDevice = (conflict: DeviceConflict): boolean =>
|
|
|
42
42
|
export const DeviceSyncHoldSchema = z.enum(["owner", "gone", "container-missing", "container-trashed", "swap", "unreachable", "low-disk", "transfer"]);
|
|
43
43
|
export type DeviceSyncHold = z.infer<typeof DeviceSyncHoldSchema>;
|
|
44
44
|
|
|
45
|
+
// HOW FAR A FOLDER'S COPY IS (2026-10-21), in Mutagen's own counts, so nothing walks the folder a second time to say
|
|
46
|
+
// it: what the sending side's last scan holds (`files`, `bytes`, ignored paths left out as the sync leaves them), and
|
|
47
|
+
// while the receiving side stages a pass, how many of that pass's files it has (`stagedFiles` of `stagingFiles`) and
|
|
48
|
+
// how many bytes have crossed (`stagedBytes`). A folder's first copy is one such pass over everything. Each is absent
|
|
49
|
+
// until Mutagen has said it; the whole is absent from an agent older than it, and from a pairing with no session.
|
|
50
|
+
export const DeviceCopySchema = z.object({
|
|
51
|
+
files: z.number().int().nonnegative().optional(),
|
|
52
|
+
bytes: z.number().nonnegative().optional(),
|
|
53
|
+
stagedFiles: z.number().int().nonnegative().optional(),
|
|
54
|
+
stagingFiles: z.number().int().nonnegative().optional(),
|
|
55
|
+
stagedBytes: z.number().nonnegative().optional(),
|
|
56
|
+
});
|
|
57
|
+
export type DeviceCopy = z.infer<typeof DeviceCopySchema>;
|
|
58
|
+
|
|
45
59
|
// The drive reading that paused a pairing for want of room: when (epoch ms), and how much was free of how much.
|
|
46
60
|
export const DeviceLowDiskSchema = z.object({
|
|
47
61
|
since: z.number(),
|
package/src/schemas/devices.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// What one of the user's own machines is running.
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { PortNumberSchema } from "./device-commands.js";
|
|
4
|
-
import { DeviceBridgeHoldSchema, DeviceConflictSchema, DeviceLowDiskSchema } from "./device-folder.js";
|
|
4
|
+
import { DeviceBridgeHoldSchema, DeviceConflictSchema, DeviceCopySchema, DeviceLowDiskSchema } from "./device-folder.js";
|
|
5
5
|
import { parseHostConnection, type DeviceFacts, DeviceFactsSchema, MachineIdentitySchema, MachineIdSchema, userDistrosOf, WslEnvironmentSchema } from "./hosts.js";
|
|
6
6
|
import { RollbackTargetSchema, UpdateOutcomeSchema } from "./updates.js";
|
|
7
7
|
import { DEV_VERSION } from "../state/versions.js";
|
|
@@ -249,15 +249,15 @@ export const DevicePairingSchema = z.object({
|
|
|
249
249
|
remoteDir: z.string().optional(),
|
|
250
250
|
// Whether landed work in this project folder is delivered to `localDir` by itself (`deliverProject`). A project
|
|
251
251
|
// sandbox's folder says "auto"; absent means Bring back by hand, as before. (2026-10-21) The folderless
|
|
252
|
-
// `projectsHost` pairing of the
|
|
253
|
-
// that still carries it parses, the key dropped.
|
|
252
|
+
// `projectsHost` pairing of the one sandbox per computer went with it; an older report carrying it parses, key dropped.
|
|
254
253
|
deliver: z.enum(["auto", "off"]).optional(),
|
|
255
254
|
// (2026-10-20) The slug this machine's ic knows the sandbox by: how the desktop app starts or forgets a folder's sandbox.
|
|
256
255
|
slug: z.string().optional(),
|
|
257
256
|
// Machine-owned switch (agent's own `sync mirror off`); absent reads as "on", not merely unknown.
|
|
258
257
|
mirroring: z.enum(["on", "off"]).optional(),
|
|
259
|
-
// Mutagen's own status word, kept verbatim rather than reduced to a traffic light.
|
|
258
|
+
// Mutagen's own status word, kept verbatim rather than reduced to a traffic light, and how far its copy is.
|
|
260
259
|
mutagenStatus: z.string().optional(),
|
|
260
|
+
copy: DeviceCopySchema.optional(),
|
|
261
261
|
// Whole conflict count, including any Mutagen's own state truncates (`excludedConflicts`).
|
|
262
262
|
conflicts: z.number().int().nonnegative().optional(),
|
|
263
263
|
// Conflicted paths, capped at `CONFLICT_PATHS_MAX`; `conflicts` above is the true, uncapped count.
|
|
@@ -437,10 +437,12 @@ describe("foldTurn", () => {
|
|
|
437
437
|
{ kind: "agent_notice", level: "warning", text: "Command blocked by user", source: "guard-ext" },
|
|
438
438
|
{ kind: "agent_notice", level: "info", text: "Compacting soon" },
|
|
439
439
|
{ kind: "agent_notice", level: "error", text: " " },
|
|
440
|
+
{ kind: "agent_notice", level: "warning", text: "Checks found problems", source: "turn checks", sent: "lint: a.ts:1 unused" },
|
|
440
441
|
]);
|
|
441
442
|
expect(rows.slice(1)).toEqual([
|
|
442
443
|
{ role: "notice", text: "Command blocked by user", agentNotice: { level: "warning", source: "guard-ext" } },
|
|
443
444
|
{ role: "notice", text: "Compacting soon", agentNotice: { level: "info" } },
|
|
445
|
+
{ role: "notice", text: "Checks found problems", agentNotice: { level: "warning", source: "turn checks", sent: "lint: a.ts:1 unused" } },
|
|
444
446
|
]);
|
|
445
447
|
expect(rows.slice(1).map((row) => TranscriptRowSchema.parse(row))).toEqual(rows.slice(1));
|
|
446
448
|
});
|
|
@@ -268,7 +268,7 @@ export class TranscriptFold {
|
|
|
268
268
|
: this.pushRow({
|
|
269
269
|
role: "notice",
|
|
270
270
|
text: event.text,
|
|
271
|
-
agentNotice: { level: event.level, ...(
|
|
271
|
+
agentNotice: { level: event.level, ...defined({ source: event.source, sent: event.sent }) },
|
|
272
272
|
});
|
|
273
273
|
case "error":
|
|
274
274
|
// Keeps a refusal (no prose from the provider) from reading as a session that ended mid-question.
|