@ericsanchezok/meta-protocol 1.1.6 → 1.1.8

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@ericsanchezok/meta-protocol",
4
- "version": "1.1.6",
4
+ "version": "1.1.8",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "types": "./src/index.ts",
package/src/bash.ts CHANGED
@@ -37,12 +37,15 @@ export namespace MetaProtocolBash {
37
37
  export const ExecuteRequest = MetaProtocolEnvelope.RequestBase.extend({
38
38
  tool: z.literal("bash"),
39
39
  action: z.literal("execute"),
40
+ sessionID: MetaProtocolEnv.SessionID,
40
41
  payload: ExecutePayload,
41
42
  })
42
43
  export type ExecuteRequest = z.infer<typeof ExecuteRequest>
43
44
 
44
- export const ExecuteResult = MetaProtocolEnvelope.ResultBase.extend({
45
+ export const ExecuteResult = MetaProtocolEnvelope.TypedResultBase.extend({
45
46
  ok: z.literal(true),
47
+ tool: z.literal("bash"),
48
+ action: z.literal("execute"),
46
49
  result: Result,
47
50
  })
48
51
  export type ExecuteResult = z.infer<typeof ExecuteResult>
package/src/bridge.ts ADDED
@@ -0,0 +1,4 @@
1
+ export namespace MetaProtocolBridge {
2
+ export const RequestEvent = "meta.execution.request"
3
+ export const ResponseEvent = "meta.execution.response"
4
+ }
package/src/client.ts CHANGED
@@ -1,13 +1,29 @@
1
1
  import type { MetaProtocolBash } from "./bash"
2
2
  import type { MetaProtocolEnv } from "./env"
3
3
  import type { MetaProtocolProcess } from "./process"
4
+ import type { MetaProtocolSession } from "./session"
4
5
 
5
6
  export namespace MetaProtocolClient {
7
+ export interface RemoteExecutionOptions {
8
+ sessionID?: MetaProtocolEnv.SessionID
9
+ targetAgentID?: string
10
+ }
11
+
6
12
  export interface ExecutionClient {
7
- executeBash(envID: MetaProtocolEnv.EnvID, input: MetaProtocolBash.ExecutePayload): Promise<MetaProtocolBash.Result>
13
+ executeBash(
14
+ envID: MetaProtocolEnv.EnvID,
15
+ input: MetaProtocolBash.ExecutePayload,
16
+ options?: RemoteExecutionOptions,
17
+ ): Promise<MetaProtocolBash.Result>
8
18
  executeProcess(
9
19
  envID: MetaProtocolEnv.EnvID,
10
20
  input: MetaProtocolProcess.ExecutePayload,
21
+ options?: RemoteExecutionOptions,
11
22
  ): Promise<MetaProtocolProcess.Result>
23
+ executeSession(
24
+ envID: MetaProtocolEnv.EnvID,
25
+ input: MetaProtocolSession.ExecutePayload,
26
+ options?: RemoteExecutionOptions,
27
+ ): Promise<MetaProtocolSession.Result>
12
28
  }
13
29
  }
package/src/env.ts CHANGED
@@ -4,6 +4,9 @@ export namespace MetaProtocolEnv {
4
4
  export const EnvID = z.string().min(1).describe("Execution environment ID")
5
5
  export type EnvID = z.infer<typeof EnvID>
6
6
 
7
+ export const SessionID = z.string().min(1).describe("Remote collaboration session identifier")
8
+ export type SessionID = z.infer<typeof SessionID>
9
+
7
10
  export const ProcessID = z.string().min(1).describe("Opaque process identifier")
8
11
  export type ProcessID = z.infer<typeof ProcessID>
9
12
 
package/src/envelope.ts CHANGED
@@ -3,7 +3,7 @@ import { MetaProtocolEnv } from "./env"
3
3
  import { MetaProtocolError } from "./error"
4
4
 
5
5
  export namespace MetaProtocolEnvelope {
6
- export const Tool = z.enum(["bash", "process"])
6
+ export const Tool = z.enum(["bash", "process", "session"])
7
7
  export type Tool = z.infer<typeof Tool>
8
8
 
9
9
  export const RequestBase = z.object({
@@ -22,8 +22,16 @@ export namespace MetaProtocolEnvelope {
22
22
  })
23
23
  export type ResultBase = z.infer<typeof ResultBase>
24
24
 
25
+ export const TypedResultBase = ResultBase.extend({
26
+ tool: Tool,
27
+ action: z.string().min(1),
28
+ })
29
+ export type TypedResultBase = z.infer<typeof TypedResultBase>
30
+
25
31
  export const ErrorResult = ResultBase.extend({
26
32
  ok: z.literal(false),
33
+ tool: Tool.optional(),
34
+ action: z.string().min(1).optional(),
27
35
  error: MetaProtocolError.Shape,
28
36
  })
29
37
  export type ErrorResult = z.infer<typeof ErrorResult>
package/src/error.ts CHANGED
@@ -15,6 +15,11 @@ export namespace MetaProtocolError {
15
15
  "host_internal_error",
16
16
  "stale_process_handle",
17
17
  "stdin_unavailable",
18
+ "session_required",
19
+ "session_invalid",
20
+ "session_busy",
21
+ "session_refused",
22
+ "session_caller_mismatch",
18
23
  ])
19
24
  export type Code = z.infer<typeof Code>
20
25
 
package/src/index.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export * from "./env"
2
2
  export * from "./error"
3
3
  export * from "./envelope"
4
+ export * from "./bridge"
4
5
  export * from "./bash"
5
6
  export * from "./process"
7
+ export * from "./session"
6
8
  export * from "./client"
7
9
  export * from "./host"
package/src/process.ts CHANGED
@@ -94,12 +94,15 @@ export namespace MetaProtocolProcess {
94
94
  export const ExecuteRequest = MetaProtocolEnvelope.RequestBase.extend({
95
95
  tool: z.literal("process"),
96
96
  action: Action,
97
+ sessionID: MetaProtocolEnv.SessionID,
97
98
  payload: ExecutePayload,
98
99
  })
99
100
  export type ExecuteRequest = z.infer<typeof ExecuteRequest>
100
101
 
101
- export const ExecuteResult = MetaProtocolEnvelope.ResultBase.extend({
102
+ export const ExecuteResult = MetaProtocolEnvelope.TypedResultBase.extend({
102
103
  ok: z.literal(true),
104
+ tool: z.literal("process"),
105
+ action: Action,
103
106
  result: Result,
104
107
  })
105
108
  export type ExecuteResult = z.infer<typeof ExecuteResult>
package/src/session.ts ADDED
@@ -0,0 +1,62 @@
1
+ import z from "zod"
2
+ import { MetaProtocolEnvelope } from "./envelope"
3
+ import { MetaProtocolEnv } from "./env"
4
+
5
+ export namespace MetaProtocolSession {
6
+ export const Action = z.enum(["open", "close", "heartbeat"])
7
+ export type Action = z.infer<typeof Action>
8
+
9
+ export const Status = z.enum(["opened", "closed", "alive", "refused", "busy"])
10
+ export type Status = z.infer<typeof Status>
11
+
12
+ export const ExecutePayload = z.discriminatedUnion("action", [
13
+ z.object({
14
+ action: z.literal("open"),
15
+ label: z.string().optional(),
16
+ }),
17
+ z.object({
18
+ action: z.literal("close"),
19
+ sessionID: MetaProtocolEnv.SessionID,
20
+ }),
21
+ z.object({
22
+ action: z.literal("heartbeat"),
23
+ sessionID: MetaProtocolEnv.SessionID,
24
+ }),
25
+ ])
26
+ export type ExecutePayload = z.infer<typeof ExecutePayload>
27
+
28
+ export const ResultMetadata = z.object({
29
+ action: Action,
30
+ status: Status,
31
+ sessionID: MetaProtocolEnv.SessionID.optional(),
32
+ remoteAgentID: z.string().optional(),
33
+ remoteOwnerUserID: z.number().optional(),
34
+ label: z.string().optional(),
35
+ hostSessionID: MetaProtocolEnv.HostSessionID.optional(),
36
+ envID: MetaProtocolEnv.EnvID.optional(),
37
+ backend: z.enum(["local", "remote"]).optional(),
38
+ })
39
+ export type ResultMetadata = z.infer<typeof ResultMetadata>
40
+
41
+ export const Result = z.object({
42
+ title: z.string(),
43
+ metadata: ResultMetadata,
44
+ output: z.string(),
45
+ })
46
+ export type Result = z.infer<typeof Result>
47
+
48
+ export const ExecuteRequest = MetaProtocolEnvelope.RequestBase.extend({
49
+ tool: z.literal("session"),
50
+ action: Action,
51
+ payload: ExecutePayload,
52
+ })
53
+ export type ExecuteRequest = z.infer<typeof ExecuteRequest>
54
+
55
+ export const ExecuteResult = MetaProtocolEnvelope.TypedResultBase.extend({
56
+ ok: z.literal(true),
57
+ tool: z.literal("session"),
58
+ action: Action,
59
+ result: Result,
60
+ })
61
+ export type ExecuteResult = z.infer<typeof ExecuteResult>
62
+ }