macro-agent 0.1.11 → 0.1.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"seed-defaults.d.ts","sourceRoot":"","sources":["../../src/teams/seed-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiC9E"}
1
+ {"version":3,"file":"seed-defaults.d.ts","sourceRoot":"","sources":["../../src/teams/seed-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiC9E"}
@@ -11,9 +11,13 @@ import * as fs from "fs";
11
11
  import * as path from "path";
12
12
  import { fileURLToPath } from "url";
13
13
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
- // Package root: up from src/teams/ → src/ → package root
14
+ // Package root: up from src/teams/ → src/ → package root.
15
+ // Bundled templates live under `templates/teams/` so they're clearly shipped
16
+ // assets (not confused with user runtime config, which lives at
17
+ // `<project>/.multiagent/teams/` — a gitignored directory that this module
18
+ // seeds INTO on first use).
15
19
  const PACKAGE_ROOT = path.resolve(__dirname, "..", "..");
16
- const BUNDLED_TEAMS_DIR = path.join(PACKAGE_ROOT, ".multiagent", "teams");
20
+ const BUNDLED_TEAMS_DIR = path.join(PACKAGE_ROOT, "templates", "teams");
17
21
  const TEAMS_DIR = ".multiagent/teams";
18
22
  /**
19
23
  * Copy bundled default team templates to the project's .multiagent/teams/ directory.
@@ -1 +1 @@
1
- {"version":3,"file":"seed-defaults.js","sourceRoot":"","sources":["../../src/teams/seed-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,yDAAyD;AACzD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1E,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,kDAAkD;IAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,MAAM,CAAC;IAErD,IAAI,gBAA6B,CAAC;IAClC,IAAI,CAAC;QACH,gBAAgB,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC1E,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEjD,iCAAiC;IACjC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE,CAAC;QAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAAE,SAAS,CAAC,kBAAkB;QAEnE,kDAAkD;QAClD,gBAAgB,CACd,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,IAAI,CAAC,EAC9C,kBAAkB,CACnB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAY;IACjD,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"seed-defaults.js","sourceRoot":"","sources":["../../src/teams/seed-defaults.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"team-loader.d.ts","sourceRoot":"","sources":["../../src/teams/team-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAEL,KAAK,YAAY,EAKlB,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CA+EvB"}
1
+ {"version":3,"file":"team-loader.d.ts","sourceRoot":"","sources":["../../src/teams/team-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAEL,KAAK,YAAY,EAKlB,MAAM,YAAY,CAAC;AAqBpB;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAqFvB"}
@@ -6,13 +6,23 @@
6
6
  *
7
7
  * @module teams/team-loader
8
8
  */
9
+ import * as fs from "fs";
9
10
  import * as path from "path";
11
+ import { fileURLToPath } from "url";
10
12
  import { TemplateLoader } from "openteams";
11
13
  import { TeamLoadError, } from "./types.js";
12
14
  // =============================================================================
13
15
  // Constants
14
16
  // =============================================================================
15
17
  const TEAMS_DIR = ".multiagent/teams";
18
+ // Bundled team templates shipped with the macro-agent package. Used as a
19
+ // fallback when a team name isn't present in the user's `.multiagent/teams/`
20
+ // — so a fresh project can `startTeam('self-driving', cwd)` without first
21
+ // running the seed step. User-local copies always win when present.
22
+ const __filename = fileURLToPath(import.meta.url);
23
+ const __dirname = path.dirname(__filename);
24
+ const PACKAGE_ROOT = path.resolve(__dirname, "..", "..");
25
+ const BUNDLED_TEAMS_DIR = path.join(PACKAGE_ROOT, "templates", "teams");
16
26
  // =============================================================================
17
27
  // TeamLoader
18
28
  // =============================================================================
@@ -30,7 +40,13 @@ const TEAMS_DIR = ".multiagent/teams";
30
40
  */
31
41
  export async function loadTeam(teamName, roleRegistry, basePath) {
32
42
  const root = basePath ?? process.cwd();
33
- const teamDir = path.join(root, TEAMS_DIR, teamName);
43
+ const userTeamDir = path.join(root, TEAMS_DIR, teamName);
44
+ // Prefer a user-customised template; fall back to the bundled default
45
+ // shipped under `<package>/templates/teams/<name>/`. This lets fresh
46
+ // projects use built-in teams without an explicit seed step, while
47
+ // still honouring per-project overrides.
48
+ const bundledTeamDir = path.join(BUNDLED_TEAMS_DIR, teamName);
49
+ const teamDir = fs.existsSync(userTeamDir) ? userTeamDir : bundledTeamDir;
34
50
  // 1. Load via openteams TemplateLoader with hooks
35
51
  let template;
36
52
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"team-loader.js","sourceRoot":"","sources":["../../src/teams/team-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-loader.js","sourceRoot":"","sources":["../../src/teams/team-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Dataplane Adapter
3
+ *
4
+ * Wraps MultiAgentRepoTracker to integrate with macro-agent's event system
5
+ * and provide a simplified interface for workspace management.
6
+ *
7
+ * @module workspace/dataplane-adapter
8
+ * @implements [[s-7ktd]] Dataplane Integration section
9
+ */
10
+ import Database from 'better-sqlite3';
11
+ import { MultiAgentRepoTracker, type Stream, type StreamStatus, type CreateStreamOptions, type AgentWorktree, type CreateWorktreeOptions, type WorkerTask, type CreateTaskOptions, type StartTaskOptions, type CompleteTaskOptions, type StartTaskResult, type CompleteTaskResult, type ListTasksOptions, type CleanupWorkerBranchesOptions, type CleanupResult, type Checkpoint } from 'git-cascade';
12
+ import type { DataplaneConfig } from './config.js';
13
+ /**
14
+ * Event types emitted by DataplaneAdapter
15
+ */
16
+ export type DataplaneEventType = 'stream:created' | 'stream:updated' | 'stream:abandoned' | 'worktree:created' | 'worktree:deallocated' | 'task:created' | 'task:started' | 'task:completed' | 'task:abandoned';
17
+ /**
18
+ * Event payload for dataplane events
19
+ */
20
+ export interface DataplaneEvent {
21
+ type: DataplaneEventType;
22
+ timestamp: number;
23
+ data: Record<string, unknown>;
24
+ }
25
+ /**
26
+ * Callback for dataplane events
27
+ */
28
+ export type DataplaneEventCallback = (event: DataplaneEvent) => void;
29
+ /**
30
+ * DataplaneAdapter wraps MultiAgentRepoTracker for macro-agent integration.
31
+ *
32
+ * Key responsibilities:
33
+ * - Initialize dataplane with shared or dedicated database
34
+ * - Emit events on dataplane operations
35
+ * - Provide simplified API for workspace management
36
+ */
37
+ export declare class DataplaneAdapter {
38
+ private readonly tracker;
39
+ private readonly config;
40
+ private readonly eventListeners;
41
+ private readonly ownsDb;
42
+ /**
43
+ * Create a new DataplaneAdapter.
44
+ *
45
+ * @param config - Dataplane configuration
46
+ */
47
+ constructor(config: DataplaneConfig);
48
+ /**
49
+ * Get whether dataplane is enabled.
50
+ */
51
+ get enabled(): boolean;
52
+ /**
53
+ * Get the repository path.
54
+ */
55
+ get repoPath(): string;
56
+ /**
57
+ * Get the underlying database connection.
58
+ * Use with caution - prefer adapter methods for operations.
59
+ */
60
+ get db(): Database.Database;
61
+ /**
62
+ * Get the underlying tracker.
63
+ * Use with caution - prefer adapter methods for operations.
64
+ */
65
+ get rawTracker(): MultiAgentRepoTracker;
66
+ /**
67
+ * Subscribe to dataplane events.
68
+ *
69
+ * @param callback - Function called when events occur
70
+ * @returns Unsubscribe function
71
+ */
72
+ onEvent(callback: DataplaneEventCallback): () => void;
73
+ /**
74
+ * Emit an event to all listeners.
75
+ */
76
+ private emit;
77
+ /**
78
+ * Create a new stream (integration branch).
79
+ *
80
+ * @param options - Stream creation options
81
+ * @returns Stream ID
82
+ */
83
+ createStream(options: CreateStreamOptions): string;
84
+ /**
85
+ * Get a stream by ID.
86
+ */
87
+ getStream(streamId: string): Stream | null;
88
+ /**
89
+ * List streams with optional filters.
90
+ */
91
+ listStreams(options?: {
92
+ agentId?: string;
93
+ status?: StreamStatus;
94
+ }): Stream[];
95
+ /**
96
+ * Update a stream.
97
+ */
98
+ updateStream(streamId: string, updates: Partial<Pick<Stream, 'name' | 'status' | 'metadata'>>): void;
99
+ /**
100
+ * Abandon a stream.
101
+ */
102
+ abandonStream(streamId: string, options?: {
103
+ reason?: string;
104
+ cascade?: boolean;
105
+ }): void;
106
+ /**
107
+ * Get the git branch name for a stream.
108
+ */
109
+ getStreamBranchName(streamId: string): string;
110
+ /**
111
+ * Get the HEAD commit of a stream.
112
+ */
113
+ getStreamHead(streamId: string): string;
114
+ /**
115
+ * Create a worktree for an agent.
116
+ *
117
+ * @param options - Worktree creation options
118
+ * @returns Created worktree info
119
+ */
120
+ createWorktree(options: CreateWorktreeOptions): AgentWorktree;
121
+ /**
122
+ * Get a worktree by agent ID.
123
+ */
124
+ getWorktree(agentId: string): AgentWorktree | null;
125
+ /**
126
+ * List all worktrees.
127
+ */
128
+ listWorktrees(): AgentWorktree[];
129
+ /**
130
+ * Update the stream associated with a worktree.
131
+ */
132
+ updateWorktreeStream(agentId: string, streamId: string | null): void;
133
+ /**
134
+ * Deallocate a worktree.
135
+ */
136
+ deallocateWorktree(agentId: string): void;
137
+ /**
138
+ * Create a worker task under a stream.
139
+ *
140
+ * @param options - Task creation options
141
+ * @returns Task ID
142
+ */
143
+ createTask(options: CreateTaskOptions): string;
144
+ /**
145
+ * Get a task by ID.
146
+ */
147
+ getTask(taskId: string): WorkerTask | null;
148
+ /**
149
+ * List tasks for a stream.
150
+ */
151
+ listTasks(streamId: string, options?: ListTasksOptions): WorkerTask[];
152
+ /**
153
+ * Start a task - assigns agent and creates worker branch.
154
+ *
155
+ * @param options - Start task options
156
+ * @returns Branch name and start commit
157
+ */
158
+ startTask(options: StartTaskOptions): StartTaskResult;
159
+ /**
160
+ * Complete a task - merges worker branch to stream.
161
+ *
162
+ * @param options - Complete task options
163
+ * @returns Merge result
164
+ */
165
+ completeTask(options: CompleteTaskOptions): CompleteTaskResult;
166
+ /**
167
+ * Abandon a task.
168
+ *
169
+ * @param taskId - Task ID
170
+ * @param options - Options
171
+ */
172
+ abandonTask(taskId: string, options?: {
173
+ deleteBranch?: boolean;
174
+ }): void;
175
+ /**
176
+ * Release a task back to 'open' status.
177
+ */
178
+ releaseTask(taskId: string): void;
179
+ /**
180
+ * Detect conflicts for a task before completing.
181
+ *
182
+ * @param taskId - Task ID
183
+ * @param worktree - Worktree path
184
+ * @returns Array of conflicting file paths, empty if no conflicts
185
+ */
186
+ detectTaskConflicts(taskId: string, worktree: string): string[];
187
+ /**
188
+ * Recover stale tasks that have been in_progress too long.
189
+ *
190
+ * @param thresholdMs - Tasks older than this are considered stale
191
+ * @returns Result with released task IDs
192
+ */
193
+ recoverStaleTasks(thresholdMs?: number): {
194
+ released: string[];
195
+ };
196
+ /**
197
+ * Create checkpoints for commits made during a task.
198
+ *
199
+ * Creates a checkpoint for each commit between the task's startCommit and
200
+ * the current HEAD of the task's stream. This captures the work done during
201
+ * the task for future review and merge workflows.
202
+ *
203
+ * @param taskId - Task ID to create checkpoints for
204
+ * @param agentId - Agent ID (used as createdBy)
205
+ * @returns Array of created checkpoints
206
+ */
207
+ createCheckpointsForTask(taskId: string, agentId: string): Checkpoint[];
208
+ /**
209
+ * Commit changes in a worktree with Change tracking.
210
+ *
211
+ * @param options - Commit options
212
+ * @returns Commit hash and change ID
213
+ */
214
+ commitChanges(options: {
215
+ streamId: string;
216
+ agentId: string;
217
+ worktree: string;
218
+ message: string;
219
+ }): {
220
+ commit: string;
221
+ changeId: string;
222
+ };
223
+ /**
224
+ * Clean up old worker branches.
225
+ *
226
+ * Deletes branches for:
227
+ * - Completed tasks older than threshold (default 24h)
228
+ * - Abandoned tasks
229
+ * - Orphaned branches (no task record)
230
+ *
231
+ * @param options - Cleanup options
232
+ * @returns Deleted branches and any errors
233
+ */
234
+ cleanupWorkerBranches(options?: CleanupWorkerBranchesOptions): CleanupResult;
235
+ /**
236
+ * Delete a specific worker branch.
237
+ *
238
+ * @param branchName - Branch name to delete
239
+ * @returns true if deleted, false if branch didn't exist
240
+ */
241
+ deleteWorkerBranch(branchName: string): boolean;
242
+ /**
243
+ * Check system health.
244
+ */
245
+ healthCheck(): ReturnType<MultiAgentRepoTracker['healthCheck']>;
246
+ /**
247
+ * Close the adapter and release resources.
248
+ *
249
+ * Only closes the database if we created it (not if using shared DB).
250
+ */
251
+ close(): void;
252
+ }
253
+ /**
254
+ * Create a DataplaneAdapter instance.
255
+ *
256
+ * @param config - Configuration options
257
+ * @returns DataplaneAdapter instance
258
+ */
259
+ export declare function createDataplaneAdapter(config: DataplaneConfig): DataplaneAdapter;
260
+ //# sourceMappingURL=dataplane-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataplane-adapter.d.ts","sourceRoot":"","sources":["../../src/workspace/dataplane-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,416 @@
1
+ /**
2
+ * Dataplane Adapter
3
+ *
4
+ * Wraps MultiAgentRepoTracker to integrate with macro-agent's event system
5
+ * and provide a simplified interface for workspace management.
6
+ *
7
+ * @module workspace/dataplane-adapter
8
+ * @implements [[s-7ktd]] Dataplane Integration section
9
+ */
10
+ import { MultiAgentRepoTracker, workerTasks, diffStacks, } from 'git-cascade';
11
+ import { DEFAULT_DATAPLANE_CONFIG } from './config.js';
12
+ /**
13
+ * DataplaneAdapter wraps MultiAgentRepoTracker for macro-agent integration.
14
+ *
15
+ * Key responsibilities:
16
+ * - Initialize dataplane with shared or dedicated database
17
+ * - Emit events on dataplane operations
18
+ * - Provide simplified API for workspace management
19
+ */
20
+ export class DataplaneAdapter {
21
+ tracker;
22
+ config;
23
+ eventListeners = new Set();
24
+ ownsDb;
25
+ /**
26
+ * Create a new DataplaneAdapter.
27
+ *
28
+ * @param config - Dataplane configuration
29
+ */
30
+ constructor(config) {
31
+ const mergedConfig = {
32
+ ...DEFAULT_DATAPLANE_CONFIG,
33
+ ...config,
34
+ repoPath: config.repoPath ?? process.cwd(),
35
+ };
36
+ this.config = {
37
+ enabled: mergedConfig.enabled ?? true,
38
+ repoPath: mergedConfig.repoPath,
39
+ tablePrefix: mergedConfig.tablePrefix ?? 'dataplane_',
40
+ verbose: mergedConfig.verbose ?? false,
41
+ skipRecovery: mergedConfig.skipRecovery ?? false,
42
+ };
43
+ // Determine if we own the database connection
44
+ this.ownsDb = !config.db;
45
+ const trackerOptions = {
46
+ repoPath: this.config.repoPath,
47
+ tablePrefix: this.config.tablePrefix,
48
+ verbose: this.config.verbose,
49
+ skipRecovery: this.config.skipRecovery,
50
+ };
51
+ if (config.db) {
52
+ trackerOptions.db = config.db;
53
+ }
54
+ else if (config.dbPath) {
55
+ trackerOptions.dbPath = config.dbPath;
56
+ }
57
+ // If neither db nor dbPath provided, tracker uses default path
58
+ this.tracker = new MultiAgentRepoTracker(trackerOptions);
59
+ }
60
+ /**
61
+ * Get whether dataplane is enabled.
62
+ */
63
+ get enabled() {
64
+ return this.config.enabled;
65
+ }
66
+ /**
67
+ * Get the repository path.
68
+ */
69
+ get repoPath() {
70
+ return this.config.repoPath;
71
+ }
72
+ /**
73
+ * Get the underlying database connection.
74
+ * Use with caution - prefer adapter methods for operations.
75
+ */
76
+ get db() {
77
+ return this.tracker.db;
78
+ }
79
+ /**
80
+ * Get the underlying tracker.
81
+ * Use with caution - prefer adapter methods for operations.
82
+ */
83
+ get rawTracker() {
84
+ return this.tracker;
85
+ }
86
+ // ─────────────────────────────────────────────────────────────────────────────
87
+ // Event System
88
+ // ─────────────────────────────────────────────────────────────────────────────
89
+ /**
90
+ * Subscribe to dataplane events.
91
+ *
92
+ * @param callback - Function called when events occur
93
+ * @returns Unsubscribe function
94
+ */
95
+ onEvent(callback) {
96
+ this.eventListeners.add(callback);
97
+ return () => this.eventListeners.delete(callback);
98
+ }
99
+ /**
100
+ * Emit an event to all listeners.
101
+ */
102
+ emit(type, data) {
103
+ const event = {
104
+ type,
105
+ timestamp: Date.now(),
106
+ data,
107
+ };
108
+ for (const listener of this.eventListeners) {
109
+ try {
110
+ listener(event);
111
+ }
112
+ catch (error) {
113
+ console.error('[DataplaneAdapter] Event listener error:', error);
114
+ }
115
+ }
116
+ }
117
+ // ─────────────────────────────────────────────────────────────────────────────
118
+ // Stream Operations
119
+ // ─────────────────────────────────────────────────────────────────────────────
120
+ /**
121
+ * Create a new stream (integration branch).
122
+ *
123
+ * @param options - Stream creation options
124
+ * @returns Stream ID
125
+ */
126
+ createStream(options) {
127
+ const streamId = this.tracker.createStream(options);
128
+ this.emit('stream:created', { streamId, ...options });
129
+ return streamId;
130
+ }
131
+ /**
132
+ * Get a stream by ID.
133
+ */
134
+ getStream(streamId) {
135
+ return this.tracker.getStream(streamId);
136
+ }
137
+ /**
138
+ * List streams with optional filters.
139
+ */
140
+ listStreams(options) {
141
+ return this.tracker.listStreams(options);
142
+ }
143
+ /**
144
+ * Update a stream.
145
+ */
146
+ updateStream(streamId, updates) {
147
+ this.tracker.updateStream(streamId, updates);
148
+ this.emit('stream:updated', { streamId, updates });
149
+ }
150
+ /**
151
+ * Abandon a stream.
152
+ */
153
+ abandonStream(streamId, options) {
154
+ this.tracker.abandonStream(streamId, options);
155
+ this.emit('stream:abandoned', { streamId, ...options });
156
+ }
157
+ /**
158
+ * Get the git branch name for a stream.
159
+ */
160
+ getStreamBranchName(streamId) {
161
+ return this.tracker.getStreamBranchName(streamId);
162
+ }
163
+ /**
164
+ * Get the HEAD commit of a stream.
165
+ */
166
+ getStreamHead(streamId) {
167
+ return this.tracker.getStreamHead(streamId);
168
+ }
169
+ // ─────────────────────────────────────────────────────────────────────────────
170
+ // Worktree Operations
171
+ // ─────────────────────────────────────────────────────────────────────────────
172
+ /**
173
+ * Create a worktree for an agent.
174
+ *
175
+ * @param options - Worktree creation options
176
+ * @returns Created worktree info
177
+ */
178
+ createWorktree(options) {
179
+ const worktree = this.tracker.createWorktree(options);
180
+ this.emit('worktree:created', { ...worktree });
181
+ return worktree;
182
+ }
183
+ /**
184
+ * Get a worktree by agent ID.
185
+ */
186
+ getWorktree(agentId) {
187
+ return this.tracker.getWorktree(agentId);
188
+ }
189
+ /**
190
+ * List all worktrees.
191
+ */
192
+ listWorktrees() {
193
+ return this.tracker.listWorktrees();
194
+ }
195
+ /**
196
+ * Update the stream associated with a worktree.
197
+ */
198
+ updateWorktreeStream(agentId, streamId) {
199
+ this.tracker.updateWorktreeStream(agentId, streamId);
200
+ }
201
+ /**
202
+ * Deallocate a worktree.
203
+ */
204
+ deallocateWorktree(agentId) {
205
+ this.tracker.deallocateWorktree(agentId);
206
+ this.emit('worktree:deallocated', { agentId });
207
+ }
208
+ // ─────────────────────────────────────────────────────────────────────────────
209
+ // Worker Task Operations
210
+ // ─────────────────────────────────────────────────────────────────────────────
211
+ /**
212
+ * Create a worker task under a stream.
213
+ *
214
+ * @param options - Task creation options
215
+ * @returns Task ID
216
+ */
217
+ createTask(options) {
218
+ const taskId = this.tracker.createTask(options);
219
+ this.emit('task:created', { taskId, ...options });
220
+ return taskId;
221
+ }
222
+ /**
223
+ * Get a task by ID.
224
+ */
225
+ getTask(taskId) {
226
+ return this.tracker.getTask(taskId);
227
+ }
228
+ /**
229
+ * List tasks for a stream.
230
+ */
231
+ listTasks(streamId, options) {
232
+ return this.tracker.listTasks(streamId, options);
233
+ }
234
+ /**
235
+ * Start a task - assigns agent and creates worker branch.
236
+ *
237
+ * @param options - Start task options
238
+ * @returns Branch name and start commit
239
+ */
240
+ startTask(options) {
241
+ const result = this.tracker.startTask(options);
242
+ this.emit('task:started', {
243
+ taskId: options.taskId,
244
+ agentId: options.agentId,
245
+ branchName: result.branchName,
246
+ startCommit: result.startCommit,
247
+ });
248
+ return result;
249
+ }
250
+ /**
251
+ * Complete a task - merges worker branch to stream.
252
+ *
253
+ * @param options - Complete task options
254
+ * @returns Merge result
255
+ */
256
+ completeTask(options) {
257
+ const result = this.tracker.completeTask(options);
258
+ this.emit('task:completed', { taskId: options.taskId, ...result });
259
+ return result;
260
+ }
261
+ /**
262
+ * Abandon a task.
263
+ *
264
+ * @param taskId - Task ID
265
+ * @param options - Options
266
+ */
267
+ abandonTask(taskId, options) {
268
+ this.tracker.abandonTask(taskId, options);
269
+ this.emit('task:abandoned', { taskId, ...options });
270
+ }
271
+ /**
272
+ * Release a task back to 'open' status.
273
+ */
274
+ releaseTask(taskId) {
275
+ this.tracker.releaseTask(taskId);
276
+ }
277
+ /**
278
+ * Detect conflicts for a task before completing.
279
+ *
280
+ * @param taskId - Task ID
281
+ * @param worktree - Worktree path
282
+ * @returns Array of conflicting file paths, empty if no conflicts
283
+ */
284
+ detectTaskConflicts(taskId, worktree) {
285
+ return workerTasks.detectTaskConflicts(this.tracker.db, this.config.repoPath, taskId, worktree);
286
+ }
287
+ /**
288
+ * Recover stale tasks that have been in_progress too long.
289
+ *
290
+ * @param thresholdMs - Tasks older than this are considered stale
291
+ * @returns Result with released task IDs
292
+ */
293
+ recoverStaleTasks(thresholdMs = 60 * 60 * 1000) {
294
+ return workerTasks.recoverStaleTasks(this.tracker.db, thresholdMs);
295
+ }
296
+ // ─────────────────────────────────────────────────────────────────────────────
297
+ // Checkpoint Operations
298
+ // ─────────────────────────────────────────────────────────────────────────────
299
+ /**
300
+ * Create checkpoints for commits made during a task.
301
+ *
302
+ * Creates a checkpoint for each commit between the task's startCommit and
303
+ * the current HEAD of the task's stream. This captures the work done during
304
+ * the task for future review and merge workflows.
305
+ *
306
+ * @param taskId - Task ID to create checkpoints for
307
+ * @param agentId - Agent ID (used as createdBy)
308
+ * @returns Array of created checkpoints
309
+ */
310
+ createCheckpointsForTask(taskId, agentId) {
311
+ const task = this.getTask(taskId);
312
+ if (!task) {
313
+ console.warn(`[DataplaneAdapter] Task not found: ${taskId}`);
314
+ return [];
315
+ }
316
+ if (!task.streamId) {
317
+ console.warn(`[DataplaneAdapter] Task ${taskId} has no streamId`);
318
+ return [];
319
+ }
320
+ if (!task.startCommit) {
321
+ console.warn(`[DataplaneAdapter] Task ${taskId} has no startCommit`);
322
+ return [];
323
+ }
324
+ try {
325
+ // Create checkpoints from task's startCommit to stream's current HEAD
326
+ const checkpoints = diffStacks.createCheckpointsFromStream(this.tracker.db, this.config.repoPath, task.streamId, {
327
+ from: task.startCommit,
328
+ createdBy: agentId,
329
+ });
330
+ return checkpoints;
331
+ }
332
+ catch (error) {
333
+ console.error(`[DataplaneAdapter] Failed to create checkpoints for task ${taskId}:`, error);
334
+ return [];
335
+ }
336
+ }
337
+ // ─────────────────────────────────────────────────────────────────────────────
338
+ // Commit Operations
339
+ // ─────────────────────────────────────────────────────────────────────────────
340
+ /**
341
+ * Commit changes in a worktree with Change tracking.
342
+ *
343
+ * @param options - Commit options
344
+ * @returns Commit hash and change ID
345
+ */
346
+ commitChanges(options) {
347
+ return this.tracker.commitChanges(options);
348
+ }
349
+ // ─────────────────────────────────────────────────────────────────────────────
350
+ // Maintenance Operations
351
+ // ─────────────────────────────────────────────────────────────────────────────
352
+ /**
353
+ * Clean up old worker branches.
354
+ *
355
+ * Deletes branches for:
356
+ * - Completed tasks older than threshold (default 24h)
357
+ * - Abandoned tasks
358
+ * - Orphaned branches (no task record)
359
+ *
360
+ * @param options - Cleanup options
361
+ * @returns Deleted branches and any errors
362
+ */
363
+ cleanupWorkerBranches(options) {
364
+ return workerTasks.cleanupWorkerBranches(this.tracker.db, this.config.repoPath, options);
365
+ }
366
+ /**
367
+ * Delete a specific worker branch.
368
+ *
369
+ * @param branchName - Branch name to delete
370
+ * @returns true if deleted, false if branch didn't exist
371
+ */
372
+ deleteWorkerBranch(branchName) {
373
+ try {
374
+ const { execSync } = require('child_process');
375
+ execSync(`git branch -D "${branchName}"`, {
376
+ cwd: this.config.repoPath,
377
+ stdio: 'pipe',
378
+ });
379
+ return true;
380
+ }
381
+ catch {
382
+ return false;
383
+ }
384
+ }
385
+ // ─────────────────────────────────────────────────────────────────────────────
386
+ // Health & Recovery
387
+ // ─────────────────────────────────────────────────────────────────────────────
388
+ /**
389
+ * Check system health.
390
+ */
391
+ healthCheck() {
392
+ return this.tracker.healthCheck();
393
+ }
394
+ // ─────────────────────────────────────────────────────────────────────────────
395
+ // Lifecycle
396
+ // ─────────────────────────────────────────────────────────────────────────────
397
+ /**
398
+ * Close the adapter and release resources.
399
+ *
400
+ * Only closes the database if we created it (not if using shared DB).
401
+ */
402
+ close() {
403
+ this.eventListeners.clear();
404
+ this.tracker.close();
405
+ }
406
+ }
407
+ /**
408
+ * Create a DataplaneAdapter instance.
409
+ *
410
+ * @param config - Configuration options
411
+ * @returns DataplaneAdapter instance
412
+ */
413
+ export function createDataplaneAdapter(config) {
414
+ return new DataplaneAdapter(config);
415
+ }
416
+ //# sourceMappingURL=dataplane-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataplane-adapter.js","sourceRoot":"","sources":["../../src/workspace/dataplane-adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "macro-agent",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "Interact with multiple agents as if they were a single agent.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -50,7 +50,6 @@
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.25.1",
52
52
  "@multi-agent-protocol/sdk": "^0.1.12",
53
- "@sudocode-ai/claude-code-acp": "^0.13.9",
54
53
  "acp-factory": "^0.1.12",
55
54
  "agent-inbox": "^0.1.8",
56
55
  "better-sqlite3": "^12.5.0",
@@ -13,9 +13,13 @@ import * as path from "path";
13
13
  import { fileURLToPath } from "url";
14
14
 
15
15
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
- // Package root: up from src/teams/ → src/ → package root
16
+ // Package root: up from src/teams/ → src/ → package root.
17
+ // Bundled templates live under `templates/teams/` so they're clearly shipped
18
+ // assets (not confused with user runtime config, which lives at
19
+ // `<project>/.multiagent/teams/` — a gitignored directory that this module
20
+ // seeds INTO on first use).
17
21
  const PACKAGE_ROOT = path.resolve(__dirname, "..", "..");
18
- const BUNDLED_TEAMS_DIR = path.join(PACKAGE_ROOT, ".multiagent", "teams");
22
+ const BUNDLED_TEAMS_DIR = path.join(PACKAGE_ROOT, "templates", "teams");
19
23
  const TEAMS_DIR = ".multiagent/teams";
20
24
 
21
25
  /**
@@ -7,7 +7,9 @@
7
7
  * @module teams/team-loader
8
8
  */
9
9
 
10
+ import * as fs from "fs";
10
11
  import * as path from "path";
12
+ import { fileURLToPath } from "url";
11
13
  import { TemplateLoader } from "openteams";
12
14
  import type {
13
15
  ResolvedRole,
@@ -29,6 +31,15 @@ import {
29
31
 
30
32
  const TEAMS_DIR = ".multiagent/teams";
31
33
 
34
+ // Bundled team templates shipped with the macro-agent package. Used as a
35
+ // fallback when a team name isn't present in the user's `.multiagent/teams/`
36
+ // — so a fresh project can `startTeam('self-driving', cwd)` without first
37
+ // running the seed step. User-local copies always win when present.
38
+ const __filename = fileURLToPath(import.meta.url);
39
+ const __dirname = path.dirname(__filename);
40
+ const PACKAGE_ROOT = path.resolve(__dirname, "..", "..");
41
+ const BUNDLED_TEAMS_DIR = path.join(PACKAGE_ROOT, "templates", "teams");
42
+
32
43
  // =============================================================================
33
44
  // TeamLoader
34
45
  // =============================================================================
@@ -51,7 +62,13 @@ export async function loadTeam(
51
62
  basePath?: string
52
63
  ): Promise<TeamManifest> {
53
64
  const root = basePath ?? process.cwd();
54
- const teamDir = path.join(root, TEAMS_DIR, teamName);
65
+ const userTeamDir = path.join(root, TEAMS_DIR, teamName);
66
+ // Prefer a user-customised template; fall back to the bundled default
67
+ // shipped under `<package>/templates/teams/<name>/`. This lets fresh
68
+ // projects use built-in teams without an explicit seed step, while
69
+ // still honouring per-project overrides.
70
+ const bundledTeamDir = path.join(BUNDLED_TEAMS_DIR, teamName);
71
+ const teamDir = fs.existsSync(userTeamDir) ? userTeamDir : bundledTeamDir;
55
72
 
56
73
  // 1. Load via openteams TemplateLoader with hooks
57
74
  let template;
@@ -19,9 +19,17 @@ import type { WorkspaceManager } from '../types.js';
19
19
  import { vi } from 'vitest';
20
20
 
21
21
  describe('self-driving team YAML (V3 migration)', () => {
22
+ // Resolve relative to this test file so the path is cwd-independent and
23
+ // points at the shipped package asset (not a user-runtime copy under
24
+ // <project>/.multiagent/ — that only exists after `seed-defaults` runs).
25
+ // `src/workspace/__tests__/` → `../../../` → package root.
26
+ const PACKAGE_ROOT = path.resolve(
27
+ path.dirname(new URL(import.meta.url).pathname),
28
+ '..', '..', '..'
29
+ );
22
30
  const yamlPath = path.join(
23
- process.cwd(),
24
- '.multiagent/teams/self-driving/team.yaml'
31
+ PACKAGE_ROOT,
32
+ 'templates/teams/self-driving/team.yaml'
25
33
  );
26
34
 
27
35
  it('exists on disk', () => {
@@ -0,0 +1,142 @@
1
+ name: self-driving
2
+ description: "Cursor-style autonomous codebase development: planners explore and create tasks, grinders claim and execute in their own streams, judges evaluate quality."
3
+ version: 1
4
+
5
+ # ─────────────────────────────────────────────────────────────
6
+ # Roles
7
+ # ─────────────────────────────────────────────────────────────
8
+ roles:
9
+ - planner
10
+ - grinder
11
+ - judge
12
+
13
+ # ─────────────────────────────────────────────────────────────
14
+ # Topology
15
+ # ─────────────────────────────────────────────────────────────
16
+ topology:
17
+ root:
18
+ role: planner
19
+ prompt: prompts/planner.md
20
+ config:
21
+ model: sonnet
22
+ companions:
23
+ - role: judge
24
+ prompt: prompts/judge.md
25
+ config:
26
+ model: haiku
27
+ spawn_rules:
28
+ planner: [grinder, planner]
29
+ judge: []
30
+ grinder: []
31
+
32
+ # ─────────────────────────────────────────────────────────────
33
+ # Communication
34
+ # ─────────────────────────────────────────────────────────────
35
+ communication:
36
+ enforcement: permissive
37
+
38
+ channels:
39
+ task_updates:
40
+ description: "Task lifecycle events"
41
+ signals: [TASK_CREATED, TASK_COMPLETED, TASK_FAILED]
42
+ work_coordination:
43
+ description: "Work assignment and completion"
44
+ signals: [WORK_ASSIGNED, WORKER_DONE, MERGE_REQUEST]
45
+ health:
46
+ description: "System health monitoring"
47
+ signals: [HEALTH_CHECK, METRIC_SNAPSHOT, GREEN_SNAPSHOT, FIXUP_CREATED]
48
+
49
+ subscriptions:
50
+ planner:
51
+ - channel: task_updates
52
+ - channel: work_coordination
53
+ signals: [WORKER_DONE]
54
+ - channel: health
55
+ signals: [METRIC_SNAPSHOT, GREEN_SNAPSHOT, FIXUP_CREATED]
56
+ judge:
57
+ - channel: task_updates
58
+ signals: [TASK_FAILED]
59
+ - channel: work_coordination
60
+ signals: [WORKER_DONE]
61
+ - channel: health
62
+ grinder:
63
+ - channel: work_coordination
64
+ signals: [WORK_ASSIGNED]
65
+
66
+ emissions:
67
+ planner: [TASK_CREATED, WORK_ASSIGNED, PLANNING_COMPLETE]
68
+ judge: [HEALTH_CHECK, GREEN_SNAPSHOT, FIXUP_CREATED]
69
+ grinder: [WORKER_DONE]
70
+
71
+ routing:
72
+ peers:
73
+ - from: judge
74
+ to: planner
75
+ via: direct
76
+ signals: [FIXUP_CREATED, GREEN_SNAPSHOT]
77
+ - from: planner
78
+ to: judge
79
+ via: direct
80
+ signals: [CONVERGENCE_CHECK]
81
+
82
+ # ─────────────────────────────────────────────────────────────
83
+ # macro-agent specific extensions
84
+ # ─────────────────────────────────────────────────────────────
85
+ macro_agent:
86
+ # V3 stream-first workspace topology.
87
+ # Compiled by YamlDrivenTopology into per-spawn WorkspaceDecision values.
88
+ workspace:
89
+ default_stream:
90
+ fork_from: main
91
+ name_template: "{team}"
92
+ change_id_tracking: true
93
+
94
+ on_team_complete: keep
95
+
96
+ roles:
97
+ # Planner shares the team root stream — continuous exploration lives on the
98
+ # same branch as the team's accumulated work; no per-planner fork.
99
+ planner:
100
+ workspace: attach_to_team_root
101
+ capabilities:
102
+ - workspace.read
103
+ - agent.spawn
104
+
105
+ # Grinders fork their own stream off the team root, land via direct-push
106
+ # (trunk integration). A conflict during landing aborts and leaves the
107
+ # stream for human / judge review.
108
+ grinder:
109
+ workspace: new_stream
110
+ stream_lineage: fork_from_team_root
111
+ landing: direct_push
112
+ on_conflict: defer
113
+ capabilities:
114
+ - workspace.commit
115
+ - workspace.land
116
+
117
+ # Judge is read-only — it observes repo state but doesn't need a
118
+ # workspace of its own.
119
+ judge:
120
+ workspace: none
121
+ capabilities:
122
+ - workspace.read
123
+
124
+ # Declarative shorthand read by TeamRuntimeV2.getStrategyName(). `trunk`
125
+ # pairs with the grinder's direct_push landing above: every task lands
126
+ # straight onto the team-root stream rather than going through a merge
127
+ # queue. Kept here as a top-level scalar so runtimes that don't parse the
128
+ # full V3 workspace block (env-var consumers, logs, metrics labels) still
129
+ # see the integration strategy.
130
+ integration:
131
+ strategy: trunk
132
+
133
+ task_assignment:
134
+ mode: pull
135
+ pull:
136
+ idle_timeout_s: 300
137
+ claim_retry_delay_ms: 2000
138
+ max_concurrent_per_agent: 1
139
+
140
+ observability:
141
+ metrics_window_s: 3600
142
+ snapshot_interval_s: 300
package/tsconfig.json CHANGED
@@ -13,7 +13,8 @@
13
13
  "declaration": true,
14
14
  "declarationMap": true,
15
15
  "sourceMap": true,
16
- "resolveJsonModule": true
16
+ "resolveJsonModule": true,
17
+ "types": ["node", "better-sqlite3", "express", "js-yaml", "supertest", "ws"]
17
18
  },
18
19
  "include": ["src/**/*"],
19
20
  "exclude": ["node_modules", "dist", "**/*.test.ts"]