@agent-phonon/protocol 0.2.10 → 0.3.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":"workflow.d.ts","sourceRoot":"","sources":["../../src/schemas/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { z } from "zod";
2
+ import { AgentId, ProjectId, SessionId, Timestamp } from "./common.js";
3
+ const ModelId = z.string().min(1);
4
+ const TurnId = z.string().min(1);
5
+ const ClientRequestId = z.string().min(1);
6
+ export const WorkflowId = z.string().min(1);
7
+ export const WorkflowNodeId = z.string().min(1);
8
+ export const WorkflowEdgeId = z.string().min(1);
9
+ export const WorkflowRoleId = z.string().min(1);
10
+ export const WorkflowNode = z.object({
11
+ nodeId: WorkflowNodeId,
12
+ agent: AgentId,
13
+ model: ModelId,
14
+ role: WorkflowRoleId.optional(),
15
+ input: z.string().optional(),
16
+ systemPrompt: z.string().optional(),
17
+ dependsOn: z.array(WorkflowNodeId).optional(),
18
+ sessionId: SessionId.optional(),
19
+ agentConfig: z.record(z.unknown()).optional(),
20
+ metadata: z.record(z.unknown()).optional(),
21
+ });
22
+ export const WorkflowEdge = z.object({
23
+ edgeId: WorkflowEdgeId.optional(),
24
+ from: WorkflowNodeId,
25
+ to: WorkflowNodeId,
26
+ label: z.string().optional(),
27
+ condition: z.string().optional(),
28
+ metadata: z.record(z.unknown()).optional(),
29
+ });
30
+ export const WorkflowDagPlan = z.object({
31
+ mode: z.literal("dag"),
32
+ nodes: z.array(WorkflowNode).min(1),
33
+ edges: z.array(WorkflowEdge).optional(),
34
+ finalNodeId: WorkflowNodeId.optional(),
35
+ });
36
+ export const WorkflowCommunicationGraph = z.object({
37
+ edges: z.array(WorkflowEdge).default([]),
38
+ allowSelfLoop: z.boolean().default(false),
39
+ maxIterations: z.number().int().positive().default(12),
40
+ });
41
+ export const WorkflowGraphPlan = z.object({
42
+ mode: z.literal("graph"),
43
+ executor: z.object({
44
+ nodeId: WorkflowNodeId,
45
+ agent: AgentId,
46
+ model: ModelId,
47
+ role: z.literal("executor").default("executor"),
48
+ systemPrompt: z.string().optional(),
49
+ agentConfig: z.record(z.unknown()).optional(),
50
+ }),
51
+ workers: z.array(WorkflowNode).min(1),
52
+ communicationGraph: WorkflowCommunicationGraph,
53
+ });
54
+ export const WorkflowPlan = z.discriminatedUnion("mode", [WorkflowDagPlan, WorkflowGraphPlan]);
55
+ export const WorkflowStatus = z.enum(["queued", "running", "completed", "failed", "cancelled", "timeout"]);
56
+ export const WorkflowNodeStatus = z.enum(["pending", "ready", "running", "completed", "failed", "skipped", "cancelled"]);
57
+ export const WorkflowRunParams = z.object({
58
+ project: ProjectId,
59
+ worktreeId: z.string().optional(),
60
+ plan: WorkflowPlan,
61
+ input: z.string().optional(),
62
+ clientRequestId: ClientRequestId.optional(),
63
+ metadata: z.record(z.unknown()).optional(),
64
+ });
65
+ export const WorkflowRunResult = z.object({
66
+ workflowId: WorkflowId,
67
+ status: WorkflowStatus,
68
+ createdAt: Timestamp,
69
+ });
70
+ export const WorkflowStatusParams = z.object({ workflowId: WorkflowId });
71
+ export const WorkflowNodeRuntime = z.object({
72
+ nodeId: WorkflowNodeId,
73
+ status: WorkflowNodeStatus,
74
+ agent: AgentId,
75
+ model: ModelId,
76
+ role: WorkflowRoleId.optional(),
77
+ sessionId: SessionId.optional(),
78
+ turnId: TurnId.optional(),
79
+ startedAt: Timestamp.optional(),
80
+ completedAt: Timestamp.optional(),
81
+ error: z.string().optional(),
82
+ });
83
+ export const WorkflowStatusResult = z.object({
84
+ workflowId: WorkflowId,
85
+ status: WorkflowStatus,
86
+ project: ProjectId,
87
+ mode: z.enum(["dag", "graph"]),
88
+ nodes: z.array(WorkflowNodeRuntime),
89
+ createdAt: Timestamp,
90
+ updatedAt: Timestamp,
91
+ completedAt: Timestamp.optional(),
92
+ error: z.string().optional(),
93
+ });
94
+ export const WorkflowCancelParams = z.object({ workflowId: WorkflowId, reason: z.string().optional() });
95
+ export const WorkflowCancelResult = z.object({ workflowId: WorkflowId, status: z.literal("cancelled") });
96
+ export const WorkflowListParams = z.object({
97
+ status: WorkflowStatus.optional(),
98
+ limit: z.number().int().positive().max(100).default(50).optional(),
99
+ cursor: z.string().optional(),
100
+ });
101
+ export const WorkflowListResult = z.object({ workflows: z.array(WorkflowStatusResult), nextCursor: z.string().optional() });
102
+ export const WorkflowEvent = z.object({
103
+ workflowId: WorkflowId,
104
+ seq: z.number().int().nonnegative(),
105
+ type: z.enum(["workflow.status", "node.status", "node.stream", "edge.route", "executor.decision"]),
106
+ nodeId: WorkflowNodeId.optional(),
107
+ sessionId: SessionId.optional(),
108
+ turnId: TurnId.optional(),
109
+ agent: AgentId.optional(),
110
+ model: ModelId.optional(),
111
+ role: WorkflowRoleId.optional(),
112
+ status: z.union([WorkflowStatus, WorkflowNodeStatus]).optional(),
113
+ payload: z.record(z.unknown()).optional(),
114
+ timestamp: Timestamp,
115
+ });
116
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/schemas/workflow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-phonon/protocol",
3
- "version": "0.2.10",
3
+ "version": "0.3.0",
4
4
  "description": "Wire protocol (zod schemas + types) for agent-phonon — the single source of truth contract between phonon devices and servers.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -20,5 +20,6 @@ export * from "./schemas/connect.js";
20
20
  export * from "./schemas/device.js";
21
21
  export * from "./schemas/file.js";
22
22
  export * from "./schemas/env.js";
23
+ export * from "./schemas/workflow.js";
23
24
  export * from "./schemas/jsonrpc.js";
24
25
  export * from "./schemas/methods.js";
@@ -68,6 +68,8 @@ import {
68
68
  SkillUninstallResult,
69
69
  SkillListParams,
70
70
  SkillListResult,
71
+ SkillDirsParams,
72
+ SkillDirsResult,
71
73
  } from "./skill.js";
72
74
  import { DeviceInfoParams, DeviceInfoResult, DeviceResourcesParams, DeviceResourcesResult } from "./device.js";
73
75
  import {
@@ -83,6 +85,17 @@ import {
83
85
  FileMkdirResult,
84
86
  } from "./file.js";
85
87
  import { EnvSetParams, EnvSetResult, EnvListParams, EnvListResult, EnvDeleteParams, EnvDeleteResult } from "./env.js";
88
+ import {
89
+ WorkflowRunParams,
90
+ WorkflowRunResult,
91
+ WorkflowStatusParams,
92
+ WorkflowStatusResult,
93
+ WorkflowCancelParams,
94
+ WorkflowCancelResult,
95
+ WorkflowListParams,
96
+ WorkflowListResult,
97
+ WorkflowEvent,
98
+ } from "./workflow.js";
86
99
 
87
100
  /**
88
101
  * 方法注册表(design 全协议的单一事实来源)。
@@ -384,6 +397,44 @@ export const METHODS = {
384
397
  params: SkillListParams,
385
398
  result: SkillListResult,
386
399
  },
400
+ "skill.dirs": {
401
+ direction: "s2p",
402
+ kind: "request",
403
+ params: SkillDirsParams,
404
+ result: SkillDirsResult,
405
+ },
406
+
407
+ // --- L3 workflow orchestration (DAG / executor graph) ---
408
+ "workflow.run": {
409
+ direction: "s2p",
410
+ kind: "request",
411
+ params: WorkflowRunParams,
412
+ result: WorkflowRunResult,
413
+ },
414
+ "workflow.status": {
415
+ direction: "s2p",
416
+ kind: "request",
417
+ params: WorkflowStatusParams,
418
+ result: WorkflowStatusResult,
419
+ },
420
+ "workflow.cancel": {
421
+ direction: "s2p",
422
+ kind: "request",
423
+ params: WorkflowCancelParams,
424
+ result: WorkflowCancelResult,
425
+ },
426
+ "workflow.list": {
427
+ direction: "s2p",
428
+ kind: "request",
429
+ params: WorkflowListParams,
430
+ result: WorkflowListResult,
431
+ },
432
+ "workflow.event": {
433
+ direction: "p2s",
434
+ kind: "notification",
435
+ params: WorkflowEvent,
436
+ result: z_void,
437
+ },
387
438
  } as const;
388
439
 
389
440
  export type MethodName = keyof typeof METHODS;
@@ -119,3 +119,33 @@ export const SkillListResult = z.object({
119
119
  skills: z.array(SkillDescriptor),
120
120
  });
121
121
  export type SkillListResult = z.infer<typeof SkillListResult>;
122
+
123
+ // --- skill.dirs ---
124
+ export const SkillDirsParams = z.object({
125
+ /** 可选:global scope 的目标 agent。 */
126
+ agent: AgentId.optional(),
127
+ /** 可选:project scope 的目标项目。 */
128
+ projectId: ProjectId.optional(),
129
+ /** 可选:只查 global 或 project;不传时按 agent/projectId 返回可查范围。 */
130
+ scope: SkillScope.optional(),
131
+ });
132
+ export type SkillDirsParams = z.infer<typeof SkillDirsParams>;
133
+
134
+ export const SkillDirectoryDescriptor = z.object({
135
+ /** skill 目录名。 */
136
+ name: z.string().min(1),
137
+ scope: SkillScope,
138
+ agent: AgentId.optional(),
139
+ projectId: ProjectId.optional(),
140
+ /** scope 根目录(global skill root 或 <project>/.agent/skills)。 */
141
+ rootPath: z.string().min(1),
142
+ /** skill 目录真实本机路径。 */
143
+ path: z.string().min(1),
144
+ exists: z.boolean(),
145
+ });
146
+ export type SkillDirectoryDescriptor = z.infer<typeof SkillDirectoryDescriptor>;
147
+
148
+ export const SkillDirsResult = z.object({
149
+ directories: z.array(SkillDirectoryDescriptor),
150
+ });
151
+ export type SkillDirsResult = z.infer<typeof SkillDirsResult>;
@@ -0,0 +1,151 @@
1
+ import { z } from "zod";
2
+ import { AgentId, ProjectId, SessionId, Timestamp } from "./common.js";
3
+
4
+ const ModelId = z.string().min(1);
5
+ const TurnId = z.string().min(1);
6
+ const ClientRequestId = z.string().min(1);
7
+
8
+ export const WorkflowId = z.string().min(1);
9
+ export const WorkflowNodeId = z.string().min(1);
10
+ export const WorkflowEdgeId = z.string().min(1);
11
+ export const WorkflowRoleId = z.string().min(1);
12
+
13
+ export const WorkflowNode = z.object({
14
+ nodeId: WorkflowNodeId,
15
+ agent: AgentId,
16
+ model: ModelId,
17
+ role: WorkflowRoleId.optional(),
18
+ input: z.string().optional(),
19
+ systemPrompt: z.string().optional(),
20
+ dependsOn: z.array(WorkflowNodeId).optional(),
21
+ sessionId: SessionId.optional(),
22
+ agentConfig: z.record(z.unknown()).optional(),
23
+ metadata: z.record(z.unknown()).optional(),
24
+ });
25
+ export type WorkflowNode = z.infer<typeof WorkflowNode>;
26
+
27
+ export const WorkflowEdge = z.object({
28
+ edgeId: WorkflowEdgeId.optional(),
29
+ from: WorkflowNodeId,
30
+ to: WorkflowNodeId,
31
+ label: z.string().optional(),
32
+ condition: z.string().optional(),
33
+ metadata: z.record(z.unknown()).optional(),
34
+ });
35
+ export type WorkflowEdge = z.infer<typeof WorkflowEdge>;
36
+
37
+ export const WorkflowDagPlan = z.object({
38
+ mode: z.literal("dag"),
39
+ nodes: z.array(WorkflowNode).min(1),
40
+ edges: z.array(WorkflowEdge).optional(),
41
+ finalNodeId: WorkflowNodeId.optional(),
42
+ });
43
+ export type WorkflowDagPlan = z.infer<typeof WorkflowDagPlan>;
44
+
45
+ export const WorkflowCommunicationGraph = z.object({
46
+ edges: z.array(WorkflowEdge).default([]),
47
+ allowSelfLoop: z.boolean().default(false),
48
+ maxIterations: z.number().int().positive().default(12),
49
+ });
50
+ export type WorkflowCommunicationGraph = z.infer<typeof WorkflowCommunicationGraph>;
51
+
52
+ export const WorkflowGraphPlan = z.object({
53
+ mode: z.literal("graph"),
54
+ executor: z.object({
55
+ nodeId: WorkflowNodeId,
56
+ agent: AgentId,
57
+ model: ModelId,
58
+ role: z.literal("executor").default("executor"),
59
+ systemPrompt: z.string().optional(),
60
+ agentConfig: z.record(z.unknown()).optional(),
61
+ }),
62
+ workers: z.array(WorkflowNode).min(1),
63
+ communicationGraph: WorkflowCommunicationGraph,
64
+ });
65
+ export type WorkflowGraphPlan = z.infer<typeof WorkflowGraphPlan>;
66
+
67
+ export const WorkflowPlan = z.discriminatedUnion("mode", [WorkflowDagPlan, WorkflowGraphPlan]);
68
+ export type WorkflowPlan = z.infer<typeof WorkflowPlan>;
69
+
70
+ export const WorkflowStatus = z.enum(["queued", "running", "completed", "failed", "cancelled", "timeout"]);
71
+ export type WorkflowStatus = z.infer<typeof WorkflowStatus>;
72
+
73
+ export const WorkflowNodeStatus = z.enum(["pending", "ready", "running", "completed", "failed", "skipped", "cancelled"]);
74
+ export type WorkflowNodeStatus = z.infer<typeof WorkflowNodeStatus>;
75
+
76
+ export const WorkflowRunParams = z.object({
77
+ project: ProjectId,
78
+ worktreeId: z.string().optional(),
79
+ plan: WorkflowPlan,
80
+ input: z.string().optional(),
81
+ clientRequestId: ClientRequestId.optional(),
82
+ metadata: z.record(z.unknown()).optional(),
83
+ });
84
+ export type WorkflowRunParams = z.infer<typeof WorkflowRunParams>;
85
+
86
+ export const WorkflowRunResult = z.object({
87
+ workflowId: WorkflowId,
88
+ status: WorkflowStatus,
89
+ createdAt: Timestamp,
90
+ });
91
+ export type WorkflowRunResult = z.infer<typeof WorkflowRunResult>;
92
+
93
+ export const WorkflowStatusParams = z.object({ workflowId: WorkflowId });
94
+ export type WorkflowStatusParams = z.infer<typeof WorkflowStatusParams>;
95
+
96
+ export const WorkflowNodeRuntime = z.object({
97
+ nodeId: WorkflowNodeId,
98
+ status: WorkflowNodeStatus,
99
+ agent: AgentId,
100
+ model: ModelId,
101
+ role: WorkflowRoleId.optional(),
102
+ sessionId: SessionId.optional(),
103
+ turnId: TurnId.optional(),
104
+ startedAt: Timestamp.optional(),
105
+ completedAt: Timestamp.optional(),
106
+ error: z.string().optional(),
107
+ });
108
+ export type WorkflowNodeRuntime = z.infer<typeof WorkflowNodeRuntime>;
109
+
110
+ export const WorkflowStatusResult = z.object({
111
+ workflowId: WorkflowId,
112
+ status: WorkflowStatus,
113
+ project: ProjectId,
114
+ mode: z.enum(["dag", "graph"]),
115
+ nodes: z.array(WorkflowNodeRuntime),
116
+ createdAt: Timestamp,
117
+ updatedAt: Timestamp,
118
+ completedAt: Timestamp.optional(),
119
+ error: z.string().optional(),
120
+ });
121
+ export type WorkflowStatusResult = z.infer<typeof WorkflowStatusResult>;
122
+
123
+ export const WorkflowCancelParams = z.object({ workflowId: WorkflowId, reason: z.string().optional() });
124
+ export type WorkflowCancelParams = z.infer<typeof WorkflowCancelParams>;
125
+ export const WorkflowCancelResult = z.object({ workflowId: WorkflowId, status: z.literal("cancelled") });
126
+ export type WorkflowCancelResult = z.infer<typeof WorkflowCancelResult>;
127
+
128
+ export const WorkflowListParams = z.object({
129
+ status: WorkflowStatus.optional(),
130
+ limit: z.number().int().positive().max(100).default(50).optional(),
131
+ cursor: z.string().optional(),
132
+ });
133
+ export type WorkflowListParams = z.infer<typeof WorkflowListParams>;
134
+ export const WorkflowListResult = z.object({ workflows: z.array(WorkflowStatusResult), nextCursor: z.string().optional() });
135
+ export type WorkflowListResult = z.infer<typeof WorkflowListResult>;
136
+
137
+ export const WorkflowEvent = z.object({
138
+ workflowId: WorkflowId,
139
+ seq: z.number().int().nonnegative(),
140
+ type: z.enum(["workflow.status", "node.status", "node.stream", "edge.route", "executor.decision"]),
141
+ nodeId: WorkflowNodeId.optional(),
142
+ sessionId: SessionId.optional(),
143
+ turnId: TurnId.optional(),
144
+ agent: AgentId.optional(),
145
+ model: ModelId.optional(),
146
+ role: WorkflowRoleId.optional(),
147
+ status: z.union([WorkflowStatus, WorkflowNodeStatus]).optional(),
148
+ payload: z.record(z.unknown()).optional(),
149
+ timestamp: Timestamp,
150
+ });
151
+ export type WorkflowEvent = z.infer<typeof WorkflowEvent>;