macro-agent 0.1.8 → 0.1.10

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.
Files changed (258) hide show
  1. package/CLAUDE.md +166 -33
  2. package/README.md +781 -131
  3. package/dist/acp/claude-code-replay.d.ts +11 -0
  4. package/dist/acp/claude-code-replay.d.ts.map +1 -0
  5. package/dist/acp/claude-code-replay.js +190 -0
  6. package/dist/acp/claude-code-replay.js.map +1 -0
  7. package/dist/acp/macro-agent.d.ts.map +1 -1
  8. package/dist/acp/macro-agent.js +155 -6
  9. package/dist/acp/macro-agent.js.map +1 -1
  10. package/dist/acp/types.d.ts +9 -0
  11. package/dist/acp/types.d.ts.map +1 -1
  12. package/dist/acp/types.js.map +1 -1
  13. package/dist/agent/agent-manager-v2.d.ts +21 -0
  14. package/dist/agent/agent-manager-v2.d.ts.map +1 -1
  15. package/dist/agent/agent-manager-v2.js +234 -43
  16. package/dist/agent/agent-manager-v2.js.map +1 -1
  17. package/dist/agent/agent-manager.d.ts +12 -0
  18. package/dist/agent/agent-manager.d.ts.map +1 -1
  19. package/dist/agent/agent-manager.js.map +1 -1
  20. package/dist/agent/types.d.ts +15 -2
  21. package/dist/agent/types.d.ts.map +1 -1
  22. package/dist/agent/types.js.map +1 -1
  23. package/dist/boot-v2.d.ts +41 -0
  24. package/dist/boot-v2.d.ts.map +1 -1
  25. package/dist/boot-v2.js +16 -1
  26. package/dist/boot-v2.js.map +1 -1
  27. package/dist/cli/index.js +56 -0
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cognitive/macro-agent-backend.d.ts.map +1 -1
  30. package/dist/cognitive/macro-agent-backend.js +40 -22
  31. package/dist/cognitive/macro-agent-backend.js.map +1 -1
  32. package/dist/integrations/skilltree.d.ts.map +1 -1
  33. package/dist/integrations/skilltree.js +1 -0
  34. package/dist/integrations/skilltree.js.map +1 -1
  35. package/dist/lifecycle/cleanup.d.ts +33 -2
  36. package/dist/lifecycle/cleanup.d.ts.map +1 -1
  37. package/dist/lifecycle/cleanup.js +28 -6
  38. package/dist/lifecycle/cleanup.js.map +1 -1
  39. package/dist/lifecycle/handlers-v2.d.ts +7 -0
  40. package/dist/lifecycle/handlers-v2.d.ts.map +1 -1
  41. package/dist/lifecycle/handlers-v2.js +28 -2
  42. package/dist/lifecycle/handlers-v2.js.map +1 -1
  43. package/dist/lifecycle/types.d.ts +11 -0
  44. package/dist/lifecycle/types.d.ts.map +1 -1
  45. package/dist/lifecycle/types.js.map +1 -1
  46. package/dist/map/acp-bridge.d.ts +9 -0
  47. package/dist/map/acp-bridge.d.ts.map +1 -1
  48. package/dist/map/acp-bridge.js +15 -2
  49. package/dist/map/acp-bridge.js.map +1 -1
  50. package/dist/map/cascade-bridge.d.ts +44 -0
  51. package/dist/map/cascade-bridge.d.ts.map +1 -0
  52. package/dist/map/cascade-bridge.js +257 -0
  53. package/dist/map/cascade-bridge.js.map +1 -0
  54. package/dist/map/lifecycle-bridge.d.ts +1 -1
  55. package/dist/map/lifecycle-bridge.d.ts.map +1 -1
  56. package/dist/map/lifecycle-bridge.js +58 -23
  57. package/dist/map/lifecycle-bridge.js.map +1 -1
  58. package/dist/map/server.d.ts.map +1 -1
  59. package/dist/map/server.js +47 -6
  60. package/dist/map/server.js.map +1 -1
  61. package/dist/map/sidecar.d.ts.map +1 -1
  62. package/dist/map/sidecar.js +33 -2
  63. package/dist/map/sidecar.js.map +1 -1
  64. package/dist/map/types.d.ts +20 -0
  65. package/dist/map/types.d.ts.map +1 -1
  66. package/dist/mcp/tools/done-v2.d.ts.map +1 -1
  67. package/dist/mcp/tools/done-v2.js +8 -0
  68. package/dist/mcp/tools/done-v2.js.map +1 -1
  69. package/dist/teams/team-manager-v2.d.ts.map +1 -1
  70. package/dist/teams/team-manager-v2.js +26 -0
  71. package/dist/teams/team-manager-v2.js.map +1 -1
  72. package/dist/teams/team-runtime-v2.d.ts.map +1 -1
  73. package/dist/teams/team-runtime-v2.js +16 -3
  74. package/dist/teams/team-runtime-v2.js.map +1 -1
  75. package/dist/workspace/config.d.ts +10 -10
  76. package/dist/workspace/config.d.ts.map +1 -1
  77. package/dist/workspace/config.js +4 -4
  78. package/dist/workspace/config.js.map +1 -1
  79. package/dist/workspace/git-cascade-adapter.d.ts +510 -0
  80. package/dist/workspace/git-cascade-adapter.d.ts.map +1 -0
  81. package/dist/workspace/git-cascade-adapter.js +908 -0
  82. package/dist/workspace/git-cascade-adapter.js.map +1 -0
  83. package/dist/workspace/index.d.ts +3 -3
  84. package/dist/workspace/index.d.ts.map +1 -1
  85. package/dist/workspace/index.js +4 -4
  86. package/dist/workspace/index.js.map +1 -1
  87. package/dist/workspace/landing/direct-push.d.ts +20 -0
  88. package/dist/workspace/landing/direct-push.d.ts.map +1 -0
  89. package/dist/workspace/landing/direct-push.js +74 -0
  90. package/dist/workspace/landing/direct-push.js.map +1 -0
  91. package/dist/workspace/landing/index.d.ts +29 -0
  92. package/dist/workspace/landing/index.d.ts.map +1 -0
  93. package/dist/workspace/landing/index.js +37 -0
  94. package/dist/workspace/landing/index.js.map +1 -0
  95. package/dist/workspace/landing/merge-to-parent.d.ts +41 -0
  96. package/dist/workspace/landing/merge-to-parent.d.ts.map +1 -0
  97. package/dist/workspace/landing/merge-to-parent.js +185 -0
  98. package/dist/workspace/landing/merge-to-parent.js.map +1 -0
  99. package/dist/workspace/landing/optimistic-push.d.ts +16 -0
  100. package/dist/workspace/landing/optimistic-push.d.ts.map +1 -0
  101. package/dist/workspace/landing/optimistic-push.js +27 -0
  102. package/dist/workspace/landing/optimistic-push.js.map +1 -0
  103. package/dist/workspace/landing/queue-to-branch.d.ts +24 -0
  104. package/dist/workspace/landing/queue-to-branch.d.ts.map +1 -0
  105. package/dist/workspace/landing/queue-to-branch.js +79 -0
  106. package/dist/workspace/landing/queue-to-branch.js.map +1 -0
  107. package/dist/workspace/merge-queue/merge-queue.d.ts +10 -0
  108. package/dist/workspace/merge-queue/merge-queue.d.ts.map +1 -1
  109. package/dist/workspace/merge-queue/merge-queue.js +10 -0
  110. package/dist/workspace/merge-queue/merge-queue.js.map +1 -1
  111. package/dist/workspace/merge-queue/types.d.ts +16 -2
  112. package/dist/workspace/merge-queue/types.d.ts.map +1 -1
  113. package/dist/workspace/merge-queue/types.js +9 -0
  114. package/dist/workspace/merge-queue/types.js.map +1 -1
  115. package/dist/workspace/pool/types.d.ts +1 -0
  116. package/dist/workspace/pool/types.d.ts.map +1 -1
  117. package/dist/workspace/pool/worktree-pool.d.ts.map +1 -1
  118. package/dist/workspace/pool/worktree-pool.js +1 -0
  119. package/dist/workspace/pool/worktree-pool.js.map +1 -1
  120. package/dist/workspace/recovery/abandon.d.ts +15 -0
  121. package/dist/workspace/recovery/abandon.d.ts.map +1 -0
  122. package/dist/workspace/recovery/abandon.js +45 -0
  123. package/dist/workspace/recovery/abandon.js.map +1 -0
  124. package/dist/workspace/recovery/auto-resolve.d.ts +27 -0
  125. package/dist/workspace/recovery/auto-resolve.d.ts.map +1 -0
  126. package/dist/workspace/recovery/auto-resolve.js +99 -0
  127. package/dist/workspace/recovery/auto-resolve.js.map +1 -0
  128. package/dist/workspace/recovery/defer.d.ts +15 -0
  129. package/dist/workspace/recovery/defer.d.ts.map +1 -0
  130. package/dist/workspace/recovery/defer.js +16 -0
  131. package/dist/workspace/recovery/defer.js.map +1 -0
  132. package/dist/workspace/recovery/escalate.d.ts +16 -0
  133. package/dist/workspace/recovery/escalate.d.ts.map +1 -0
  134. package/dist/workspace/recovery/escalate.js +24 -0
  135. package/dist/workspace/recovery/escalate.js.map +1 -0
  136. package/dist/workspace/recovery/index.d.ts +32 -0
  137. package/dist/workspace/recovery/index.d.ts.map +1 -0
  138. package/dist/workspace/recovery/index.js +45 -0
  139. package/dist/workspace/recovery/index.js.map +1 -0
  140. package/dist/workspace/recovery/spawn-resolver.d.ts +45 -0
  141. package/dist/workspace/recovery/spawn-resolver.d.ts.map +1 -0
  142. package/dist/workspace/recovery/spawn-resolver.js +111 -0
  143. package/dist/workspace/recovery/spawn-resolver.js.map +1 -0
  144. package/dist/workspace/recovery/types.d.ts +63 -0
  145. package/dist/workspace/recovery/types.d.ts.map +1 -0
  146. package/dist/workspace/recovery/types.js +12 -0
  147. package/dist/workspace/recovery/types.js.map +1 -0
  148. package/dist/workspace/topology/index.d.ts +9 -0
  149. package/dist/workspace/topology/index.d.ts.map +1 -0
  150. package/dist/workspace/topology/index.js +8 -0
  151. package/dist/workspace/topology/index.js.map +1 -0
  152. package/dist/workspace/topology/no-workspace.d.ts +18 -0
  153. package/dist/workspace/topology/no-workspace.d.ts.map +1 -0
  154. package/dist/workspace/topology/no-workspace.js +25 -0
  155. package/dist/workspace/topology/no-workspace.js.map +1 -0
  156. package/dist/workspace/topology/types.d.ts +97 -0
  157. package/dist/workspace/topology/types.d.ts.map +1 -0
  158. package/dist/workspace/topology/types.js +20 -0
  159. package/dist/workspace/topology/types.js.map +1 -0
  160. package/dist/workspace/topology/yaml-driven.d.ts +69 -0
  161. package/dist/workspace/topology/yaml-driven.d.ts.map +1 -0
  162. package/dist/workspace/topology/yaml-driven.js +273 -0
  163. package/dist/workspace/topology/yaml-driven.js.map +1 -0
  164. package/dist/workspace/types-v3.d.ts +110 -0
  165. package/dist/workspace/types-v3.d.ts.map +1 -0
  166. package/dist/workspace/types-v3.js +20 -0
  167. package/dist/workspace/types-v3.js.map +1 -0
  168. package/dist/workspace/types.d.ts +145 -17
  169. package/dist/workspace/types.d.ts.map +1 -1
  170. package/dist/workspace/workspace-manager.d.ts +92 -13
  171. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  172. package/dist/workspace/workspace-manager.js +373 -13
  173. package/dist/workspace/workspace-manager.js.map +1 -1
  174. package/dist/workspace/yaml-schema.d.ts +254 -0
  175. package/dist/workspace/yaml-schema.d.ts.map +1 -0
  176. package/dist/workspace/yaml-schema.js +170 -0
  177. package/dist/workspace/yaml-schema.js.map +1 -0
  178. package/docs/conflict-recovery.md +472 -0
  179. package/docs/git-cascade-integration-gaps.md +678 -0
  180. package/docs/workspace-interfaces.md +731 -0
  181. package/docs/workspace-redesign-plan.md +302 -0
  182. package/package.json +4 -4
  183. package/src/__tests__/e2e/auto-sync.e2e.test.ts +257 -0
  184. package/src/__tests__/e2e/cascade-rebase.e2e.test.ts +254 -0
  185. package/src/__tests__/e2e/cli-run.e2e.test.ts +167 -0
  186. package/src/__tests__/e2e/self-driving-v3.e2e.test.ts +197 -0
  187. package/src/__tests__/e2e/spawn-resolver.e2e.test.ts +200 -0
  188. package/src/__tests__/e2e/workspace-lifecycle.e2e.test.ts +30 -22
  189. package/src/__tests__/e2e/workspace-v3.e2e.test.ts +413 -0
  190. package/src/acp/__tests__/claude-code-replay.test.ts +225 -0
  191. package/src/acp/__tests__/macro-agent.test.ts +39 -1
  192. package/src/acp/claude-code-replay.ts +208 -0
  193. package/src/acp/macro-agent.ts +167 -9
  194. package/src/acp/types.ts +10 -0
  195. package/src/agent/__tests__/agent-manager-topology.test.ts +73 -0
  196. package/src/agent/__tests__/agent-manager-v2.test.ts +66 -0
  197. package/src/agent/__tests__/task-ref-resolution.test.ts +231 -0
  198. package/src/agent/agent-manager-v2.ts +293 -48
  199. package/src/agent/agent-manager.ts +14 -0
  200. package/src/agent/types.ts +16 -2
  201. package/src/boot-v2.ts +68 -1
  202. package/src/cli/index.ts +61 -0
  203. package/src/cognitive/macro-agent-backend.ts +45 -29
  204. package/src/integrations/skilltree.ts +1 -0
  205. package/src/lifecycle/cleanup.ts +52 -3
  206. package/src/lifecycle/handlers-v2.ts +40 -3
  207. package/src/lifecycle/types.ts +12 -0
  208. package/src/map/__tests__/cascade-bridge.test.ts +229 -0
  209. package/src/map/__tests__/lifecycle-bridge.test.ts +86 -10
  210. package/src/map/acp-bridge.ts +26 -3
  211. package/src/map/cascade-bridge.ts +301 -0
  212. package/src/map/lifecycle-bridge.ts +52 -17
  213. package/src/map/server.ts +47 -6
  214. package/src/map/sidecar.ts +31 -1
  215. package/src/map/types.ts +20 -0
  216. package/src/mcp/tools/done-v2.ts +9 -0
  217. package/src/teams/team-manager-v2.ts +37 -0
  218. package/src/teams/team-runtime-v2.ts +23 -3
  219. package/src/workspace/__tests__/{dataplane-adapter.test.ts → git-cascade-adapter.test.ts} +209 -14
  220. package/src/workspace/__tests__/self-driving-yaml.test.ts +114 -0
  221. package/src/workspace/__tests__/shared-worktree-refcount.test.ts +154 -0
  222. package/src/workspace/__tests__/standalone-mode.test.ts +118 -0
  223. package/src/workspace/__tests__/workspace-manager-v3.test.ts +245 -0
  224. package/src/workspace/__tests__/yaml-schema.test.ts +210 -0
  225. package/src/workspace/config.ts +11 -11
  226. package/src/workspace/git-cascade-adapter.ts +1186 -0
  227. package/src/workspace/index.ts +11 -11
  228. package/src/workspace/landing/__tests__/strategies.test.ts +142 -0
  229. package/src/workspace/landing/direct-push.ts +91 -0
  230. package/src/workspace/landing/index.ts +40 -0
  231. package/src/workspace/landing/merge-to-parent.ts +228 -0
  232. package/src/workspace/landing/optimistic-push.ts +36 -0
  233. package/src/workspace/landing/queue-to-branch.ts +108 -0
  234. package/src/workspace/merge-queue/merge-queue.ts +10 -0
  235. package/src/workspace/merge-queue/types.ts +16 -2
  236. package/src/workspace/pool/__tests__/worktree-pool.integration.test.ts +5 -5
  237. package/src/workspace/pool/types.ts +1 -0
  238. package/src/workspace/pool/worktree-pool.ts +1 -0
  239. package/src/workspace/recovery/__tests__/auto-resolve-integration.test.ts +127 -0
  240. package/src/workspace/recovery/__tests__/spawn-resolver.test.ts +139 -0
  241. package/src/workspace/recovery/__tests__/strategies.test.ts +145 -0
  242. package/src/workspace/recovery/abandon.ts +51 -0
  243. package/src/workspace/recovery/auto-resolve.ts +119 -0
  244. package/src/workspace/recovery/defer.ts +23 -0
  245. package/src/workspace/recovery/escalate.ts +30 -0
  246. package/src/workspace/recovery/index.ts +58 -0
  247. package/src/workspace/recovery/spawn-resolver.ts +145 -0
  248. package/src/workspace/recovery/types.ts +54 -0
  249. package/src/workspace/topology/__tests__/yaml-driven.test.ts +345 -0
  250. package/src/workspace/topology/index.ts +18 -0
  251. package/src/workspace/topology/no-workspace.ts +39 -0
  252. package/src/workspace/topology/types.ts +116 -0
  253. package/src/workspace/topology/yaml-driven.ts +316 -0
  254. package/src/workspace/types-v3.ts +155 -0
  255. package/src/workspace/types.ts +191 -20
  256. package/src/workspace/workspace-manager.ts +474 -19
  257. package/src/workspace/yaml-schema.ts +216 -0
  258. package/src/workspace/dataplane-adapter.ts +0 -546
@@ -0,0 +1,254 @@
1
+ /**
2
+ * YAML Zod schema for `macro_agent.workspace`.
3
+ *
4
+ * Teams declare workspace topology via `macro_agent.workspace` in their
5
+ * `team.yaml`. This module validates that section and exposes typed config
6
+ * objects that the TopologyPolicy compiler (Phase 3) consumes.
7
+ *
8
+ * @module workspace/yaml-schema
9
+ * @see docs/workspace-interfaces.md §8
10
+ * @see docs/workspace-redesign-plan.md Phase 2
11
+ */
12
+ import { z } from 'zod';
13
+ export declare const StreamLineageSchema: z.ZodEnum<{
14
+ from_team_root: "from_team_root";
15
+ fork_from_team_root: "fork_from_team_root";
16
+ fork_from_parent: "fork_from_parent";
17
+ independent: "independent";
18
+ track_existing_branch: "track_existing_branch";
19
+ }>;
20
+ export declare const LandingStrategyNameSchema: z.ZodEnum<{
21
+ none: "none";
22
+ merge_to_parent_stream: "merge_to_parent_stream";
23
+ queue_to_branch: "queue_to_branch";
24
+ cherry_pick_stack: "cherry_pick_stack";
25
+ direct_push: "direct_push";
26
+ optimistic_push: "optimistic_push";
27
+ }>;
28
+ export declare const ConflictStrategyNameSchema: z.ZodEnum<{
29
+ agent: "agent";
30
+ abort: "abort";
31
+ ours: "ours";
32
+ theirs: "theirs";
33
+ defer: "defer";
34
+ }>;
35
+ /**
36
+ * Recovery strategies for landing conflicts.
37
+ * See docs/conflict-recovery.md §4.
38
+ */
39
+ export declare const ConflictRecoveryStrategyNameSchema: z.ZodEnum<{
40
+ "auto-resolve": "auto-resolve";
41
+ "spawn-resolver": "spawn-resolver";
42
+ defer: "defer";
43
+ abandon: "abandon";
44
+ escalate: "escalate";
45
+ }>;
46
+ export declare const WorkspaceKindSchema: z.ZodEnum<{
47
+ none: "none";
48
+ new_stream: "new_stream";
49
+ attach_to_team_root: "attach_to_team_root";
50
+ share_with_agent: "share_with_agent";
51
+ share_parent_cwd: "share_parent_cwd";
52
+ }>;
53
+ export declare const AllocationSchema: z.ZodEnum<{
54
+ new_worktree: "new_worktree";
55
+ inherit_parent_cwd: "inherit_parent_cwd";
56
+ pooled_worktree: "pooled_worktree";
57
+ }>;
58
+ export declare const OnParentAdvancedSchema: z.ZodEnum<{
59
+ none: "none";
60
+ sync_with_parent: "sync_with_parent";
61
+ }>;
62
+ export declare const OnTeamCompleteSchema: z.ZodEnum<{
63
+ abandon: "abandon";
64
+ keep: "keep";
65
+ merge_to_main: "merge_to_main";
66
+ }>;
67
+ export declare const RoleWorkspaceConfigSchema: z.ZodObject<{
68
+ workspace: z.ZodEnum<{
69
+ none: "none";
70
+ new_stream: "new_stream";
71
+ attach_to_team_root: "attach_to_team_root";
72
+ share_with_agent: "share_with_agent";
73
+ share_parent_cwd: "share_parent_cwd";
74
+ }>;
75
+ stream_lineage: z.ZodOptional<z.ZodEnum<{
76
+ from_team_root: "from_team_root";
77
+ fork_from_team_root: "fork_from_team_root";
78
+ fork_from_parent: "fork_from_parent";
79
+ independent: "independent";
80
+ track_existing_branch: "track_existing_branch";
81
+ }>>;
82
+ allocation: z.ZodOptional<z.ZodEnum<{
83
+ new_worktree: "new_worktree";
84
+ inherit_parent_cwd: "inherit_parent_cwd";
85
+ pooled_worktree: "pooled_worktree";
86
+ }>>;
87
+ landing: z.ZodOptional<z.ZodEnum<{
88
+ none: "none";
89
+ merge_to_parent_stream: "merge_to_parent_stream";
90
+ queue_to_branch: "queue_to_branch";
91
+ cherry_pick_stack: "cherry_pick_stack";
92
+ direct_push: "direct_push";
93
+ optimistic_push: "optimistic_push";
94
+ }>>;
95
+ landing_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
96
+ on_conflict: z.ZodOptional<z.ZodEnum<{
97
+ agent: "agent";
98
+ abort: "abort";
99
+ ours: "ours";
100
+ theirs: "theirs";
101
+ defer: "defer";
102
+ }>>;
103
+ on_conflict_recovery: z.ZodOptional<z.ZodEnum<{
104
+ "auto-resolve": "auto-resolve";
105
+ "spawn-resolver": "spawn-resolver";
106
+ defer: "defer";
107
+ abandon: "abandon";
108
+ escalate: "escalate";
109
+ }>>;
110
+ conflict_recovery_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
111
+ cascade_on_parent_update: z.ZodOptional<z.ZodBoolean>;
112
+ on_parent_advanced: z.ZodOptional<z.ZodEnum<{
113
+ none: "none";
114
+ sync_with_parent: "sync_with_parent";
115
+ }>>;
116
+ share_with: z.ZodOptional<z.ZodString>;
117
+ track_branch: z.ZodOptional<z.ZodString>;
118
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
119
+ }, z.core.$strip>;
120
+ export declare const PoolConfigSchema: z.ZodObject<{
121
+ enabled: z.ZodDefault<z.ZodBoolean>;
122
+ max_size: z.ZodDefault<z.ZodNumber>;
123
+ reuse_across_streams: z.ZodDefault<z.ZodBoolean>;
124
+ }, z.core.$strip>;
125
+ export declare const DefaultStreamConfigSchema: z.ZodObject<{
126
+ fork_from: z.ZodDefault<z.ZodString>;
127
+ name_template: z.ZodDefault<z.ZodString>;
128
+ change_id_tracking: z.ZodDefault<z.ZodBoolean>;
129
+ }, z.core.$strip>;
130
+ export declare const ConflictRecoveryTeamConfigSchema: z.ZodObject<{
131
+ default_strategy: z.ZodDefault<z.ZodEnum<{
132
+ "auto-resolve": "auto-resolve";
133
+ "spawn-resolver": "spawn-resolver";
134
+ defer: "defer";
135
+ abandon: "abandon";
136
+ escalate: "escalate";
137
+ }>>;
138
+ default_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
139
+ escalation_target: z.ZodOptional<z.ZodString>;
140
+ max_recovery_depth: z.ZodDefault<z.ZodNumber>;
141
+ }, z.core.$strip>;
142
+ export declare const TeamWorkspaceConfigSchema: z.ZodObject<{
143
+ default_stream: z.ZodOptional<z.ZodObject<{
144
+ fork_from: z.ZodDefault<z.ZodString>;
145
+ name_template: z.ZodDefault<z.ZodString>;
146
+ change_id_tracking: z.ZodDefault<z.ZodBoolean>;
147
+ }, z.core.$strip>>;
148
+ on_team_complete: z.ZodDefault<z.ZodEnum<{
149
+ abandon: "abandon";
150
+ keep: "keep";
151
+ merge_to_main: "merge_to_main";
152
+ }>>;
153
+ pool: z.ZodOptional<z.ZodObject<{
154
+ enabled: z.ZodDefault<z.ZodBoolean>;
155
+ max_size: z.ZodDefault<z.ZodNumber>;
156
+ reuse_across_streams: z.ZodDefault<z.ZodBoolean>;
157
+ }, z.core.$strip>>;
158
+ roles: z.ZodRecord<z.ZodString, z.ZodObject<{
159
+ workspace: z.ZodEnum<{
160
+ none: "none";
161
+ new_stream: "new_stream";
162
+ attach_to_team_root: "attach_to_team_root";
163
+ share_with_agent: "share_with_agent";
164
+ share_parent_cwd: "share_parent_cwd";
165
+ }>;
166
+ stream_lineage: z.ZodOptional<z.ZodEnum<{
167
+ from_team_root: "from_team_root";
168
+ fork_from_team_root: "fork_from_team_root";
169
+ fork_from_parent: "fork_from_parent";
170
+ independent: "independent";
171
+ track_existing_branch: "track_existing_branch";
172
+ }>>;
173
+ allocation: z.ZodOptional<z.ZodEnum<{
174
+ new_worktree: "new_worktree";
175
+ inherit_parent_cwd: "inherit_parent_cwd";
176
+ pooled_worktree: "pooled_worktree";
177
+ }>>;
178
+ landing: z.ZodOptional<z.ZodEnum<{
179
+ none: "none";
180
+ merge_to_parent_stream: "merge_to_parent_stream";
181
+ queue_to_branch: "queue_to_branch";
182
+ cherry_pick_stack: "cherry_pick_stack";
183
+ direct_push: "direct_push";
184
+ optimistic_push: "optimistic_push";
185
+ }>>;
186
+ landing_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
187
+ on_conflict: z.ZodOptional<z.ZodEnum<{
188
+ agent: "agent";
189
+ abort: "abort";
190
+ ours: "ours";
191
+ theirs: "theirs";
192
+ defer: "defer";
193
+ }>>;
194
+ on_conflict_recovery: z.ZodOptional<z.ZodEnum<{
195
+ "auto-resolve": "auto-resolve";
196
+ "spawn-resolver": "spawn-resolver";
197
+ defer: "defer";
198
+ abandon: "abandon";
199
+ escalate: "escalate";
200
+ }>>;
201
+ conflict_recovery_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
202
+ cascade_on_parent_update: z.ZodOptional<z.ZodBoolean>;
203
+ on_parent_advanced: z.ZodOptional<z.ZodEnum<{
204
+ none: "none";
205
+ sync_with_parent: "sync_with_parent";
206
+ }>>;
207
+ share_with: z.ZodOptional<z.ZodString>;
208
+ track_branch: z.ZodOptional<z.ZodString>;
209
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
210
+ }, z.core.$strip>>;
211
+ conflict_recovery: z.ZodOptional<z.ZodObject<{
212
+ default_strategy: z.ZodDefault<z.ZodEnum<{
213
+ "auto-resolve": "auto-resolve";
214
+ "spawn-resolver": "spawn-resolver";
215
+ defer: "defer";
216
+ abandon: "abandon";
217
+ escalate: "escalate";
218
+ }>>;
219
+ default_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
220
+ escalation_target: z.ZodOptional<z.ZodString>;
221
+ max_recovery_depth: z.ZodDefault<z.ZodNumber>;
222
+ }, z.core.$strip>>;
223
+ }, z.core.$strip>;
224
+ export type StreamLineage = z.infer<typeof StreamLineageSchema>;
225
+ export type LandingStrategyName = z.infer<typeof LandingStrategyNameSchema>;
226
+ export type ConflictStrategyName = z.infer<typeof ConflictStrategyNameSchema>;
227
+ export type ConflictRecoveryStrategyName = z.infer<typeof ConflictRecoveryStrategyNameSchema>;
228
+ export type WorkspaceKind = z.infer<typeof WorkspaceKindSchema>;
229
+ export type Allocation = z.infer<typeof AllocationSchema>;
230
+ export type OnParentAdvanced = z.infer<typeof OnParentAdvancedSchema>;
231
+ export type OnTeamComplete = z.infer<typeof OnTeamCompleteSchema>;
232
+ export type RoleWorkspaceConfig = z.infer<typeof RoleWorkspaceConfigSchema>;
233
+ export type PoolConfig = z.infer<typeof PoolConfigSchema>;
234
+ export type DefaultStreamConfig = z.infer<typeof DefaultStreamConfigSchema>;
235
+ export type ConflictRecoveryTeamConfig = z.infer<typeof ConflictRecoveryTeamConfigSchema>;
236
+ export type TeamWorkspaceConfig = z.infer<typeof TeamWorkspaceConfigSchema>;
237
+ /**
238
+ * Parse and validate a `macro_agent.workspace` block from a team manifest.
239
+ *
240
+ * Returns `null` when the block is absent (indicating no workspace isolation
241
+ * is configured for the team). Throws on validation failure with a helpful
242
+ * error message.
243
+ */
244
+ export declare function parseTeamWorkspaceConfig(raw: unknown): TeamWorkspaceConfig | null;
245
+ /**
246
+ * Extract the workspace block from a loaded openteams `TeamManifest`.
247
+ *
248
+ * openteams treats `macro_agent` as `Record<string, unknown>` — macro-agent
249
+ * owns the schema inside.
250
+ */
251
+ export declare function extractWorkspaceConfig(manifest: {
252
+ macro_agent?: Record<string, unknown>;
253
+ }): TeamWorkspaceConfig | null;
254
+ //# sourceMappingURL=yaml-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-schema.d.ts","sourceRoot":"","sources":["../../src/workspace/yaml-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,mBAAmB;;;;;;EAM9B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;EAOpC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;EAMrC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kCAAkC;;;;;;EAM7C,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;EAM9B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;EAGjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;EAI/B,CAAC;AAMH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8CpC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;iBAIpC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;iBAK3C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMpC,CAAC;AAMH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAC9F,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,GACX,mBAAmB,GAAG,IAAI,CAY5B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAClD,mBAAmB,GAAG,IAAI,CAG5B"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * YAML Zod schema for `macro_agent.workspace`.
3
+ *
4
+ * Teams declare workspace topology via `macro_agent.workspace` in their
5
+ * `team.yaml`. This module validates that section and exposes typed config
6
+ * objects that the TopologyPolicy compiler (Phase 3) consumes.
7
+ *
8
+ * @module workspace/yaml-schema
9
+ * @see docs/workspace-interfaces.md §8
10
+ * @see docs/workspace-redesign-plan.md Phase 2
11
+ */
12
+ import { z } from 'zod';
13
+ // ─────────────────────────────────────────────────────────────────────────────
14
+ // Enums
15
+ // ─────────────────────────────────────────────────────────────────────────────
16
+ export const StreamLineageSchema = z.enum([
17
+ 'from_team_root', // attach to the team's root stream (no new stream)
18
+ 'fork_from_team_root', // fork a new stream off the team root
19
+ 'fork_from_parent', // fork a new stream off the spawner's stream
20
+ 'independent', // fork a new stream off a branch (no parent stream)
21
+ 'track_existing_branch', // track an existing branch (no new stream/<id>)
22
+ ]);
23
+ export const LandingStrategyNameSchema = z.enum([
24
+ 'merge_to_parent_stream',
25
+ 'queue_to_branch',
26
+ 'cherry_pick_stack',
27
+ 'direct_push',
28
+ 'optimistic_push',
29
+ 'none',
30
+ ]);
31
+ export const ConflictStrategyNameSchema = z.enum([
32
+ 'abort',
33
+ 'ours',
34
+ 'theirs',
35
+ 'defer',
36
+ 'agent',
37
+ ]);
38
+ /**
39
+ * Recovery strategies for landing conflicts.
40
+ * See docs/conflict-recovery.md §4.
41
+ */
42
+ export const ConflictRecoveryStrategyNameSchema = z.enum([
43
+ 'auto-resolve',
44
+ 'defer',
45
+ 'spawn-resolver',
46
+ 'abandon',
47
+ 'escalate',
48
+ ]);
49
+ export const WorkspaceKindSchema = z.enum([
50
+ 'new_stream', // agent gets its own stream
51
+ 'attach_to_team_root', // agent works on team root stream
52
+ 'share_with_agent', // agent shares another agent's worktree (ref-counted)
53
+ 'share_parent_cwd', // agent inherits spawner's cwd (no isolation)
54
+ 'none', // no workspace; agent has no streaming concerns
55
+ ]);
56
+ export const AllocationSchema = z.enum([
57
+ 'new_worktree',
58
+ 'inherit_parent_cwd',
59
+ 'pooled_worktree',
60
+ ]);
61
+ export const OnParentAdvancedSchema = z.enum([
62
+ 'sync_with_parent',
63
+ 'none',
64
+ ]);
65
+ export const OnTeamCompleteSchema = z.enum([
66
+ 'keep',
67
+ 'merge_to_main',
68
+ 'abandon',
69
+ ]);
70
+ // ─────────────────────────────────────────────────────────────────────────────
71
+ // Schemas
72
+ // ─────────────────────────────────────────────────────────────────────────────
73
+ export const RoleWorkspaceConfigSchema = z.object({
74
+ workspace: WorkspaceKindSchema,
75
+ stream_lineage: StreamLineageSchema.optional(),
76
+ allocation: AllocationSchema.optional(),
77
+ // Landing
78
+ landing: LandingStrategyNameSchema.optional(),
79
+ landing_config: z.record(z.string(), z.unknown()).optional(),
80
+ // Conflict handling at landing time
81
+ on_conflict: ConflictStrategyNameSchema.optional(),
82
+ on_conflict_recovery: ConflictRecoveryStrategyNameSchema.optional(),
83
+ conflict_recovery_config: z.record(z.string(), z.unknown()).optional(),
84
+ // Cascade behavior
85
+ cascade_on_parent_update: z.boolean().optional(),
86
+ on_parent_advanced: OnParentAdvancedSchema.optional(),
87
+ // Cross-role references
88
+ share_with: z.string().optional(), // role name (for workspace: share_with_agent)
89
+ track_branch: z.string().optional(), // branch name (for stream_lineage: track_existing_branch)
90
+ // Capabilities granted to this role for MCP tool gating
91
+ capabilities: z.array(z.string()).optional(),
92
+ }).superRefine((val, ctx) => {
93
+ if (val.workspace === 'share_with_agent' && !val.share_with) {
94
+ ctx.addIssue({
95
+ code: 'custom',
96
+ path: ['share_with'],
97
+ message: 'share_with is required when workspace = share_with_agent',
98
+ });
99
+ }
100
+ if (val.stream_lineage === 'track_existing_branch' && !val.track_branch) {
101
+ ctx.addIssue({
102
+ code: 'custom',
103
+ path: ['track_branch'],
104
+ message: 'track_branch is required when stream_lineage = track_existing_branch',
105
+ });
106
+ }
107
+ if (val.workspace === 'new_stream' && !val.stream_lineage) {
108
+ ctx.addIssue({
109
+ code: 'custom',
110
+ path: ['stream_lineage'],
111
+ message: 'stream_lineage is required when workspace = new_stream',
112
+ });
113
+ }
114
+ });
115
+ export const PoolConfigSchema = z.object({
116
+ enabled: z.boolean().default(true),
117
+ max_size: z.number().int().positive().default(10),
118
+ reuse_across_streams: z.boolean().default(false),
119
+ });
120
+ export const DefaultStreamConfigSchema = z.object({
121
+ fork_from: z.string().default('main'),
122
+ name_template: z.string().default('{team}'),
123
+ change_id_tracking: z.boolean().default(true),
124
+ });
125
+ export const ConflictRecoveryTeamConfigSchema = z.object({
126
+ default_strategy: ConflictRecoveryStrategyNameSchema.default('defer'),
127
+ default_config: z.record(z.string(), z.unknown()).optional(),
128
+ escalation_target: z.string().optional(),
129
+ max_recovery_depth: z.number().int().positive().default(3),
130
+ });
131
+ export const TeamWorkspaceConfigSchema = z.object({
132
+ default_stream: DefaultStreamConfigSchema.optional(),
133
+ on_team_complete: OnTeamCompleteSchema.default('keep'),
134
+ pool: PoolConfigSchema.optional(),
135
+ roles: z.record(z.string(), RoleWorkspaceConfigSchema),
136
+ conflict_recovery: ConflictRecoveryTeamConfigSchema.optional(),
137
+ });
138
+ // ─────────────────────────────────────────────────────────────────────────────
139
+ // Parsing helpers
140
+ // ─────────────────────────────────────────────────────────────────────────────
141
+ /**
142
+ * Parse and validate a `macro_agent.workspace` block from a team manifest.
143
+ *
144
+ * Returns `null` when the block is absent (indicating no workspace isolation
145
+ * is configured for the team). Throws on validation failure with a helpful
146
+ * error message.
147
+ */
148
+ export function parseTeamWorkspaceConfig(raw) {
149
+ if (raw === undefined || raw === null)
150
+ return null;
151
+ const result = TeamWorkspaceConfigSchema.safeParse(raw);
152
+ if (!result.success) {
153
+ const issues = result.error.issues
154
+ .map((i) => ` • ${i.path.join('.')}: ${i.message}`)
155
+ .join('\n');
156
+ throw new Error(`Invalid macro_agent.workspace configuration:\n${issues}`);
157
+ }
158
+ return result.data;
159
+ }
160
+ /**
161
+ * Extract the workspace block from a loaded openteams `TeamManifest`.
162
+ *
163
+ * openteams treats `macro_agent` as `Record<string, unknown>` — macro-agent
164
+ * owns the schema inside.
165
+ */
166
+ export function extractWorkspaceConfig(manifest) {
167
+ const workspaceRaw = manifest.macro_agent?.workspace;
168
+ return parseTeamWorkspaceConfig(workspaceRaw);
169
+ }
170
+ //# sourceMappingURL=yaml-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-schema.js","sourceRoot":"","sources":["../../src/workspace/yaml-schema.ts"],"names":[],"mappings":"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"}