@termlink/protocol 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { z } from "zod";
2
+ import { AutoApprove, PROTOCOL_VERSION, ProviderId, TerminalSize } from "./common.js";
3
+ import { AgentEvent } from "./events.js";
4
+ const command = (type, payload) => z.object({
5
+ v: z.literal(PROTOCOL_VERSION),
6
+ kind: z.literal("cmd"),
7
+ reqId: z.string().min(1).max(64),
8
+ type: z.literal(type),
9
+ payload,
10
+ });
11
+ const id = z.string().min(1).max(64);
12
+ const SessionRef = z.object({ sessionId: id });
13
+ export const UserInput = z.object({
14
+ text: z.string().min(1).max(100_000),
15
+ });
16
+ export const HostInfoCommand = command("host.info", z.object({}));
17
+ export const SessionListCommand = command("session.list", z.object({}));
18
+ export const SessionCreateCommand = command("session.create", z.object({
19
+ provider: ProviderId,
20
+ cwd: z.string().min(1).max(4096),
21
+ title: z.string().max(200).optional(),
22
+ /** Agent sessions: defaults to the host's setting (off unless the host was started otherwise). */
23
+ autoApprove: AutoApprove.optional(),
24
+ /** Terminal sessions: initial size. Defaults to 80x24. */
25
+ cols: TerminalSize.shape.cols.optional(),
26
+ rows: TerminalSize.shape.rows.optional(),
27
+ /**
28
+ * Terminal sessions: names this client for flow control (see terminal.ack).
29
+ * The creating connection is attached as this client.
30
+ */
31
+ clientId: id.optional(),
32
+ }));
33
+ export const SessionAttachCommand = command("session.attach", SessionRef.extend({
34
+ /** Agent sessions: replay durable events after this seq. */
35
+ afterSeq: z.number().int().min(0).optional(),
36
+ /** Terminal sessions: names this client for flow control (see terminal.ack). */
37
+ clientId: id.optional(),
38
+ }));
39
+ export const SessionDetachCommand = command("session.detach", SessionRef.extend({ clientId: id.optional() }));
40
+ export const SessionSendCommand = command("session.send", SessionRef.extend({ input: UserInput }));
41
+ export const SessionInterruptCommand = command("session.interrupt", SessionRef);
42
+ export const SessionCloseCommand = command("session.close", SessionRef);
43
+ /** Changes agent session settings. Changing autoApprove also applies to approvals already waiting. */
44
+ export const SessionConfigureCommand = command("session.configure", SessionRef.extend({ autoApprove: AutoApprove.optional() }));
45
+ export const InputRespondCommand = command("input.respond", SessionRef.extend({
46
+ requestId: id,
47
+ decisionId: id,
48
+ /** Answers to question-kind requests, keyed by question id. */
49
+ answers: z.record(z.string(), z.string()).optional(),
50
+ }));
51
+ // Terminal sessions. Bytes travel in binary frames (see frames.ts); these are the controls.
52
+ /** Sets the PTY size. The last client to ask wins; everyone hears terminal.size. */
53
+ export const TerminalResizeCommand = command("terminal.resize", SessionRef.extend(TerminalSize.shape));
54
+ /**
55
+ * Flow control. `bytes` is how much terminal output this client has written to its
56
+ * terminal since it attached (cumulative). The host pauses the shell when the slowest
57
+ * client falls too far behind, so a phone on a slow link is not dropped by the relay.
58
+ */
59
+ export const TerminalAckCommand = command("terminal.ack", SessionRef.extend({ clientId: id, bytes: z.number().int().min(0) }));
60
+ /** Ends the shell process. Ctrl+C is not a command: it is the byte 0x03 written to the terminal. */
61
+ export const TerminalKillCommand = command("terminal.kill", SessionRef);
62
+ export const Command = z.discriminatedUnion("type", [
63
+ HostInfoCommand,
64
+ SessionListCommand,
65
+ SessionCreateCommand,
66
+ SessionAttachCommand,
67
+ SessionDetachCommand,
68
+ SessionSendCommand,
69
+ SessionInterruptCommand,
70
+ SessionCloseCommand,
71
+ SessionConfigureCommand,
72
+ InputRespondCommand,
73
+ TerminalResizeCommand,
74
+ TerminalAckCommand,
75
+ TerminalKillCommand,
76
+ ]);
77
+ export const ErrorCode = z.enum(["bad_request", "forbidden", "not_found", "conflict", "unsupported", "internal"]);
78
+ export const Response = z.union([
79
+ z.object({
80
+ v: z.literal(PROTOCOL_VERSION),
81
+ kind: z.literal("res"),
82
+ reqId: z.string(),
83
+ ok: z.literal(true),
84
+ result: z.unknown(),
85
+ }),
86
+ z.object({
87
+ v: z.literal(PROTOCOL_VERSION),
88
+ kind: z.literal("res"),
89
+ reqId: z.string(),
90
+ ok: z.literal(false),
91
+ error: z.object({ code: ErrorCode, message: z.string() }),
92
+ }),
93
+ ]);
94
+ /** Everything a host sends to a client as JSON. Terminal bytes travel as binary frames. */
95
+ export const HostMessage = z.union([AgentEvent, Response]);
96
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { z } from "zod";
2
+ export declare const PROTOCOL_VERSION: 1;
3
+ /**
4
+ * What a session carries. A terminal is a byte stream to a shell; an agent session is
5
+ * turns, items and approval requests in JSON.
6
+ */
7
+ export declare const SessionKind: z.ZodEnum<{
8
+ agent: "agent";
9
+ terminal: "terminal";
10
+ }>;
11
+ export type SessionKind = z.infer<typeof SessionKind>;
12
+ /**
13
+ * Provider ids are open strings: a host lists the ones it has in host.ready, with a
14
+ * kind and a label, so clients need not know them ahead of time.
15
+ */
16
+ export declare const ProviderId: z.ZodString;
17
+ export type ProviderId = z.infer<typeof ProviderId>;
18
+ export declare const TERMINAL_PROVIDER: "terminal";
19
+ export declare const SessionStatus: z.ZodEnum<{
20
+ closed: "closed";
21
+ idle: "idle";
22
+ running: "running";
23
+ starting: "starting";
24
+ waiting_input: "waiting_input";
25
+ }>;
26
+ export type SessionStatus = z.infer<typeof SessionStatus>;
27
+ /**
28
+ * How an agent session answers approvals by itself. A convenience, not a security boundary:
29
+ * the boundary stays the OS account and the agent's own sandbox.
30
+ * off ask for everything
31
+ * edits allow file changes
32
+ * all allow commands, file changes and other tools
33
+ * Questions and plan approvals always wait for a person.
34
+ */
35
+ export declare const AutoApprove: z.ZodEnum<{
36
+ all: "all";
37
+ edits: "edits";
38
+ off: "off";
39
+ }>;
40
+ export type AutoApprove = z.infer<typeof AutoApprove>;
41
+ export declare const TerminalSize: z.ZodObject<{
42
+ cols: z.ZodNumber;
43
+ rows: z.ZodNumber;
44
+ }, z.core.$strip>;
45
+ export type TerminalSize = z.infer<typeof TerminalSize>;
46
+ export declare const SessionInfo: z.ZodObject<{
47
+ id: z.ZodString;
48
+ kind: z.ZodEnum<{
49
+ agent: "agent";
50
+ terminal: "terminal";
51
+ }>;
52
+ provider: z.ZodString;
53
+ providerSessionId: z.ZodNullable<z.ZodString>;
54
+ cwd: z.ZodString;
55
+ title: z.ZodNullable<z.ZodString>;
56
+ status: z.ZodEnum<{
57
+ closed: "closed";
58
+ idle: "idle";
59
+ running: "running";
60
+ starting: "starting";
61
+ waiting_input: "waiting_input";
62
+ }>;
63
+ createdAt: z.ZodNumber;
64
+ updatedAt: z.ZodNumber;
65
+ lastSeq: z.ZodNumber;
66
+ autoApprove: z.ZodOptional<z.ZodEnum<{
67
+ all: "all";
68
+ edits: "edits";
69
+ off: "off";
70
+ }>>;
71
+ cols: z.ZodOptional<z.ZodNumber>;
72
+ rows: z.ZodOptional<z.ZodNumber>;
73
+ pid: z.ZodOptional<z.ZodNumber>;
74
+ exitCode: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
75
+ }, z.core.$strip>;
76
+ export type SessionInfo = z.infer<typeof SessionInfo>;
77
+ export declare const ProviderStatus: z.ZodObject<{
78
+ id: z.ZodString;
79
+ kind: z.ZodEnum<{
80
+ agent: "agent";
81
+ terminal: "terminal";
82
+ }>;
83
+ label: z.ZodString;
84
+ available: z.ZodBoolean;
85
+ version: z.ZodNullable<z.ZodString>;
86
+ detail: z.ZodNullable<z.ZodString>;
87
+ }, z.core.$strip>;
88
+ export type ProviderStatus = z.infer<typeof ProviderStatus>;
89
+ export declare const HostInfo: z.ZodObject<{
90
+ hostId: z.ZodString;
91
+ name: z.ZodString;
92
+ version: z.ZodString;
93
+ protocol: z.ZodLiteral<1>;
94
+ os: z.ZodString;
95
+ providers: z.ZodArray<z.ZodObject<{
96
+ id: z.ZodString;
97
+ kind: z.ZodEnum<{
98
+ agent: "agent";
99
+ terminal: "terminal";
100
+ }>;
101
+ label: z.ZodString;
102
+ available: z.ZodBoolean;
103
+ version: z.ZodNullable<z.ZodString>;
104
+ detail: z.ZodNullable<z.ZodString>;
105
+ }, z.core.$strip>>;
106
+ roots: z.ZodOptional<z.ZodArray<z.ZodString>>;
107
+ }, z.core.$strip>;
108
+ export type HostInfo = z.infer<typeof HostInfo>;
109
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,WAAW;;;EAAgC,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,UAAU,aAI8D,CAAC;AACtF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,iBAAiB,EAAG,UAAmB,CAAC;AAErD,eAAO,MAAM,aAAa;;;;;;EAAqE,CAAC;AAChG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;;;;EAAkC,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,YAAY;;;iBAGvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc;;;;;;;;;;iBAQzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;iBAYnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC"}
package/dist/common.js ADDED
@@ -0,0 +1,76 @@
1
+ import { z } from "zod";
2
+ export const PROTOCOL_VERSION = 1;
3
+ /**
4
+ * What a session carries. A terminal is a byte stream to a shell; an agent session is
5
+ * turns, items and approval requests in JSON.
6
+ */
7
+ export const SessionKind = z.enum(["terminal", "agent"]);
8
+ /**
9
+ * Provider ids are open strings: a host lists the ones it has in host.ready, with a
10
+ * kind and a label, so clients need not know them ahead of time.
11
+ */
12
+ export const ProviderId = z
13
+ .string()
14
+ .min(1)
15
+ .max(32)
16
+ .regex(/^[a-z][a-z0-9_-]*$/, "provider ids are lowercase letters, digits, _ and -");
17
+ export const TERMINAL_PROVIDER = "terminal";
18
+ export const SessionStatus = z.enum(["starting", "idle", "running", "waiting_input", "closed"]);
19
+ /**
20
+ * How an agent session answers approvals by itself. A convenience, not a security boundary:
21
+ * the boundary stays the OS account and the agent's own sandbox.
22
+ * off ask for everything
23
+ * edits allow file changes
24
+ * all allow commands, file changes and other tools
25
+ * Questions and plan approvals always wait for a person.
26
+ */
27
+ export const AutoApprove = z.enum(["off", "edits", "all"]);
28
+ export const TerminalSize = z.object({
29
+ cols: z.number().int().min(1).max(1000),
30
+ rows: z.number().int().min(1).max(1000),
31
+ });
32
+ export const SessionInfo = z.object({
33
+ id: z.string(),
34
+ kind: SessionKind,
35
+ provider: ProviderId,
36
+ /** Claude session id or Codex thread id, once the provider has assigned one. Null for terminals. */
37
+ providerSessionId: z.string().nullable(),
38
+ cwd: z.string(),
39
+ title: z.string().nullable(),
40
+ status: SessionStatus,
41
+ createdAt: z.number(),
42
+ updatedAt: z.number(),
43
+ /** Highest seq emitted on this session so far. Always 0 for terminals, which have no replay log. */
44
+ lastSeq: z.number().int(),
45
+ /** Agent sessions only. */
46
+ autoApprove: AutoApprove.optional(),
47
+ /** Terminal sessions only. */
48
+ cols: z.number().int().optional(),
49
+ rows: z.number().int().optional(),
50
+ pid: z.number().int().optional(),
51
+ /** Terminal sessions only, once the shell has exited. */
52
+ exitCode: z.number().int().nullable().optional(),
53
+ });
54
+ export const ProviderStatus = z.object({
55
+ id: ProviderId,
56
+ kind: SessionKind,
57
+ /** What to call it on screen: "Terminal", "Claude", "Codex". */
58
+ label: z.string(),
59
+ available: z.boolean(),
60
+ version: z.string().nullable(),
61
+ detail: z.string().nullable(),
62
+ });
63
+ export const HostInfo = z.object({
64
+ hostId: z.string(),
65
+ name: z.string(),
66
+ version: z.string(),
67
+ protocol: z.literal(PROTOCOL_VERSION),
68
+ os: z.string(),
69
+ providers: z.array(ProviderStatus),
70
+ /**
71
+ * Folders sessions may be opened in. A relative session.create cwd resolves
72
+ * against the first one. Absent means the host does not restrict cwd.
73
+ */
74
+ roots: z.array(z.string()).optional(),
75
+ });
76
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}