@jungjaehoon/mama-os 0.9.2 → 0.9.3
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/README.md +41 -7
- package/dist/api/graph-api.js +1 -1
- package/dist/api/graph-api.js.map +1 -1
- package/dist/cli/config/config-manager.d.ts.map +1 -1
- package/dist/cli/config/config-manager.js +60 -15
- package/dist/cli/config/config-manager.js.map +1 -1
- package/dist/cli/config/types.d.ts +16 -4
- package/dist/cli/config/types.d.ts.map +1 -1
- package/dist/cli/config/types.js.map +1 -1
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +0 -10
- package/dist/gateways/slack.js.map +1 -1
- package/dist/multi-agent/agent-process-manager.d.ts +3 -1
- package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
- package/dist/multi-agent/agent-process-manager.js +21 -12
- package/dist/multi-agent/agent-process-manager.js.map +1 -1
- package/dist/multi-agent/background-task-manager.d.ts +2 -2
- package/dist/multi-agent/background-task-manager.js +2 -2
- package/dist/multi-agent/council-engine.d.ts +60 -0
- package/dist/multi-agent/council-engine.d.ts.map +1 -0
- package/dist/multi-agent/council-engine.js +284 -0
- package/dist/multi-agent/council-engine.js.map +1 -0
- package/dist/multi-agent/multi-agent-base.d.ts +17 -9
- package/dist/multi-agent/multi-agent-base.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-base.js +109 -30
- package/dist/multi-agent/multi-agent-base.js.map +1 -1
- package/dist/multi-agent/multi-agent-discord.d.ts +3 -35
- package/dist/multi-agent/multi-agent-discord.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-discord.js +57 -300
- package/dist/multi-agent/multi-agent-discord.js.map +1 -1
- package/dist/multi-agent/multi-agent-slack.d.ts +0 -25
- package/dist/multi-agent/multi-agent-slack.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-slack.js +95 -234
- package/dist/multi-agent/multi-agent-slack.js.map +1 -1
- package/dist/multi-agent/shared-context.d.ts.map +1 -1
- package/dist/multi-agent/shared-context.js +4 -4
- package/dist/multi-agent/shared-context.js.map +1 -1
- package/dist/multi-agent/system-reminder.d.ts +1 -1
- package/dist/multi-agent/system-reminder.js +1 -1
- package/dist/multi-agent/types.d.ts +11 -15
- package/dist/multi-agent/types.d.ts.map +1 -1
- package/dist/multi-agent/types.js +1 -3
- package/dist/multi-agent/types.js.map +1 -1
- package/dist/multi-agent/ultrawork-state.d.ts +57 -0
- package/dist/multi-agent/ultrawork-state.d.ts.map +1 -0
- package/dist/multi-agent/ultrawork-state.js +191 -0
- package/dist/multi-agent/ultrawork-state.js.map +1 -0
- package/dist/multi-agent/ultrawork.d.ts +37 -19
- package/dist/multi-agent/ultrawork.d.ts.map +1 -1
- package/dist/multi-agent/ultrawork.js +587 -41
- package/dist/multi-agent/ultrawork.js.map +1 -1
- package/dist/multi-agent/workflow-engine.d.ts.map +1 -1
- package/dist/multi-agent/workflow-engine.js +39 -14
- package/dist/multi-agent/workflow-engine.js.map +1 -1
- package/dist/multi-agent/workflow-types.d.ts +69 -0
- package/dist/multi-agent/workflow-types.d.ts.map +1 -1
- package/dist/onboarding/complete-autonomous-prompt.d.ts +1 -1
- package/dist/onboarding/complete-autonomous-prompt.d.ts.map +1 -1
- package/dist/onboarding/complete-autonomous-prompt.js +27 -10
- package/dist/onboarding/complete-autonomous-prompt.js.map +1 -1
- package/dist/onboarding/phase-7-integrations.d.ts.map +1 -1
- package/dist/onboarding/phase-7-integrations.js +23 -3
- package/dist/onboarding/phase-7-integrations.js.map +1 -1
- package/dist/onboarding/phase-9-finalization.d.ts.map +1 -1
- package/dist/onboarding/phase-9-finalization.js +33 -0
- package/dist/onboarding/phase-9-finalization.js.map +1 -1
- package/package.json +1 -1
- package/templates/personas/architect.md +70 -0
- package/templates/personas/conductor.md +302 -0
- package/templates/personas/developer.md +20 -7
- package/templates/personas/pm.md +49 -33
- package/templates/personas/reviewer.md +18 -5
- package/dist/multi-agent/pr-review-poller.d.ts +0 -197
- package/dist/multi-agent/pr-review-poller.d.ts.map +0 -1
- package/dist/multi-agent/pr-review-poller.js +0 -972
- package/dist/multi-agent/pr-review-poller.js.map +0 -1
- package/templates/personas/sisyphus-builtin-en.md +0 -161
- package/templates/personas/sisyphus.md +0 -218
|
@@ -84,7 +84,7 @@ export type ReminderLanguage = 'en' | 'ko';
|
|
|
84
84
|
* taskId: 'bg_abc12345',
|
|
85
85
|
* description: 'Implement auth module',
|
|
86
86
|
* agentId: 'developer',
|
|
87
|
-
* requestedBy: '
|
|
87
|
+
* requestedBy: 'conductor',
|
|
88
88
|
* channelId: 'channel-123',
|
|
89
89
|
* timestamp: Date.now(),
|
|
90
90
|
* });
|
|
@@ -113,7 +113,7 @@ function truncate(text, maxLength) {
|
|
|
113
113
|
* taskId: 'bg_abc12345',
|
|
114
114
|
* description: 'Implement auth module',
|
|
115
115
|
* agentId: 'developer',
|
|
116
|
-
* requestedBy: '
|
|
116
|
+
* requestedBy: 'conductor',
|
|
117
117
|
* channelId: 'channel-123',
|
|
118
118
|
* timestamp: Date.now(),
|
|
119
119
|
* });
|
|
@@ -152,16 +152,6 @@ export interface LoopPreventionConfig {
|
|
|
152
152
|
*/
|
|
153
153
|
chain_window_ms: number;
|
|
154
154
|
}
|
|
155
|
-
/**
|
|
156
|
-
* PR review poller configuration
|
|
157
|
-
*/
|
|
158
|
-
export interface PRReviewPollerConfig {
|
|
159
|
-
/**
|
|
160
|
-
* Enable autonomous PR review polling and follow-up wake-up workflows
|
|
161
|
-
* @default false
|
|
162
|
-
*/
|
|
163
|
-
enabled: boolean;
|
|
164
|
-
}
|
|
165
155
|
/**
|
|
166
156
|
* Multi-agent system configuration
|
|
167
157
|
*/
|
|
@@ -184,6 +174,7 @@ export interface MultiAgentConfig {
|
|
|
184
174
|
* Free chat mode - all agents respond to every human message
|
|
185
175
|
* regardless of keyword matching or explicit triggers
|
|
186
176
|
* @default false
|
|
177
|
+
* @deprecated Use council_plan for multi-agent discussions instead
|
|
187
178
|
*/
|
|
188
179
|
free_chat?: boolean;
|
|
189
180
|
/**
|
|
@@ -232,11 +223,6 @@ export interface MultiAgentConfig {
|
|
|
232
223
|
* @default false
|
|
233
224
|
*/
|
|
234
225
|
mention_delegation?: boolean;
|
|
235
|
-
/**
|
|
236
|
-
* PR review polling configuration
|
|
237
|
-
* @default false
|
|
238
|
-
*/
|
|
239
|
-
pr_review_poller?: PRReviewPollerConfig;
|
|
240
226
|
/**
|
|
241
227
|
* Maximum depth of @mention delegation chains
|
|
242
228
|
* Prevents infinite agent-to-agent mention loops
|
|
@@ -254,6 +240,12 @@ export interface MultiAgentConfig {
|
|
|
254
240
|
* that spawn ephemeral agents to execute multi-step tasks.
|
|
255
241
|
*/
|
|
256
242
|
workflow?: import('./workflow-types.js').WorkflowConfig;
|
|
243
|
+
/**
|
|
244
|
+
* Council mode configuration
|
|
245
|
+
* When enabled, Conductor can generate council_plan blocks
|
|
246
|
+
* to initiate multi-round discussions among existing named agents.
|
|
247
|
+
*/
|
|
248
|
+
council?: import('./workflow-types.js').CouncilConfig;
|
|
257
249
|
}
|
|
258
250
|
/**
|
|
259
251
|
* Runtime-only options for multi-agent process execution backend.
|
|
@@ -309,6 +301,10 @@ export interface UltraWorkConfig {
|
|
|
309
301
|
max_duration?: number;
|
|
310
302
|
/** Maximum autonomous steps @default 20 */
|
|
311
303
|
max_steps?: number;
|
|
304
|
+
/** Enable file-based state persistence (Ralph Loop pattern) @default true */
|
|
305
|
+
persist_state?: boolean;
|
|
306
|
+
/** Enable 3-phase structured loop (plan->build->retrospective) @default true */
|
|
307
|
+
phased_loop?: boolean;
|
|
312
308
|
}
|
|
313
309
|
/**
|
|
314
310
|
* Task continuation configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/multi-agent/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IAE5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE;QACjB,uDAAuD;QACvD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,oDAAoD;QACpD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IAEF;;;OAGG;IACH,YAAY,CAAC,EAAE;QACb,gCAAgC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,iCAAiC;QACjC,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/multi-agent/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/multi-agent/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/multi-agent/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAkbH;;GAEG;AACU,QAAA,uBAAuB,GAAyB;IAC3D,gBAAgB,EAAE,CAAC;IACnB,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF;;GAEG;AACU,QAAA,0BAA0B,GAAqB;IAC1D,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,EAAE;IACV,eAAe,EAAE,+BAAuB;IACxC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CAC5B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UltraWork State Manager
|
|
3
|
+
*
|
|
4
|
+
* File-based session state persistence for the Ralph Loop pattern.
|
|
5
|
+
* Each session gets its own directory under ~/.mama/workspace/ultrawork/{session_id}/
|
|
6
|
+
*
|
|
7
|
+
* Directory structure:
|
|
8
|
+
* session.json - Session metadata (task, phase, agents)
|
|
9
|
+
* plan.md - Phase 1 result: implementation plan
|
|
10
|
+
* progress.json - Completed steps array
|
|
11
|
+
* retrospective.md - Phase 3 result: retrospective notes
|
|
12
|
+
*/
|
|
13
|
+
export type UltraWorkPhase = 'planning' | 'building' | 'retrospective' | 'completed';
|
|
14
|
+
export interface UltraWorkSessionState {
|
|
15
|
+
id: string;
|
|
16
|
+
task: string;
|
|
17
|
+
phase: UltraWorkPhase;
|
|
18
|
+
agents: string[];
|
|
19
|
+
createdAt: number;
|
|
20
|
+
updatedAt: number;
|
|
21
|
+
}
|
|
22
|
+
export interface UltraWorkStepRecord {
|
|
23
|
+
stepNumber: number;
|
|
24
|
+
agentId: string;
|
|
25
|
+
action: string;
|
|
26
|
+
responseSummary: string;
|
|
27
|
+
isDelegation: boolean;
|
|
28
|
+
duration: number;
|
|
29
|
+
timestamp: number;
|
|
30
|
+
}
|
|
31
|
+
export declare class UltraWorkStateManager {
|
|
32
|
+
private baseDir;
|
|
33
|
+
private sessionLocks;
|
|
34
|
+
constructor(baseDir?: string);
|
|
35
|
+
/**
|
|
36
|
+
* Validates sessionId to prevent path traversal attacks.
|
|
37
|
+
* Only allows alphanumeric, hyphen, and underscore characters.
|
|
38
|
+
*/
|
|
39
|
+
private validateSessionId;
|
|
40
|
+
private sessionDir;
|
|
41
|
+
/**
|
|
42
|
+
* Executes a function with an exclusive lock on the given sessionId.
|
|
43
|
+
* Prevents TOCTOU race conditions on read-modify-write operations.
|
|
44
|
+
*/
|
|
45
|
+
private withSessionLock;
|
|
46
|
+
createSession(sessionId: string, task: string, agents: string[]): Promise<void>;
|
|
47
|
+
loadSession(sessionId: string): Promise<UltraWorkSessionState | null>;
|
|
48
|
+
updatePhase(sessionId: string, phase: UltraWorkPhase): Promise<void>;
|
|
49
|
+
savePlan(sessionId: string, plan: string): Promise<void>;
|
|
50
|
+
loadPlan(sessionId: string): Promise<string | null>;
|
|
51
|
+
recordStep(sessionId: string, step: UltraWorkStepRecord): Promise<void>;
|
|
52
|
+
loadProgress(sessionId: string): Promise<UltraWorkStepRecord[]>;
|
|
53
|
+
saveRetrospective(sessionId: string, retro: string): Promise<void>;
|
|
54
|
+
deleteSession(sessionId: string): Promise<void>;
|
|
55
|
+
listSessions(): Promise<string[]>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ultrawork-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultrawork-state.d.ts","sourceRoot":"","sources":["../../src/multi-agent/ultrawork-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,WAAW,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAoC;gBAE5C,OAAO,CAAC,EAAE,MAAM;IAI5B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,UAAU;IAKlB;;;OAGG;YACW,eAAe;IAmBvB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/E,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAerE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWnD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAe/D,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAWxC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UltraWork State Manager
|
|
4
|
+
*
|
|
5
|
+
* File-based session state persistence for the Ralph Loop pattern.
|
|
6
|
+
* Each session gets its own directory under ~/.mama/workspace/ultrawork/{session_id}/
|
|
7
|
+
*
|
|
8
|
+
* Directory structure:
|
|
9
|
+
* session.json - Session metadata (task, phase, agents)
|
|
10
|
+
* plan.md - Phase 1 result: implementation plan
|
|
11
|
+
* progress.json - Completed steps array
|
|
12
|
+
* retrospective.md - Phase 3 result: retrospective notes
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.UltraWorkStateManager = void 0;
|
|
49
|
+
const fs = __importStar(require("fs/promises"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const os = __importStar(require("os"));
|
|
52
|
+
class UltraWorkStateManager {
|
|
53
|
+
baseDir;
|
|
54
|
+
sessionLocks = new Map();
|
|
55
|
+
constructor(baseDir) {
|
|
56
|
+
this.baseDir = baseDir ?? path.join(os.homedir(), '.mama', 'workspace', 'ultrawork');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Validates sessionId to prevent path traversal attacks.
|
|
60
|
+
* Only allows alphanumeric, hyphen, and underscore characters.
|
|
61
|
+
*/
|
|
62
|
+
validateSessionId(sessionId) {
|
|
63
|
+
if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {
|
|
64
|
+
throw new Error(`Invalid sessionId: "${sessionId}" — must match /^[A-Za-z0-9_-]+$/`);
|
|
65
|
+
}
|
|
66
|
+
// Double-check with path resolution
|
|
67
|
+
const resolved = path.resolve(this.baseDir, sessionId);
|
|
68
|
+
const base = path.resolve(this.baseDir);
|
|
69
|
+
if (!resolved.startsWith(base + path.sep)) {
|
|
70
|
+
throw new Error(`Invalid sessionId: "${sessionId}" — path traversal detected`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
sessionDir(sessionId) {
|
|
74
|
+
this.validateSessionId(sessionId);
|
|
75
|
+
return path.join(this.baseDir, sessionId);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Executes a function with an exclusive lock on the given sessionId.
|
|
79
|
+
* Prevents TOCTOU race conditions on read-modify-write operations.
|
|
80
|
+
*/
|
|
81
|
+
async withSessionLock(sessionId, fn) {
|
|
82
|
+
const prev = this.sessionLocks.get(sessionId) ?? Promise.resolve();
|
|
83
|
+
let release;
|
|
84
|
+
const next = new Promise((res) => {
|
|
85
|
+
release = res;
|
|
86
|
+
});
|
|
87
|
+
const chained = prev.then(() => next);
|
|
88
|
+
this.sessionLocks.set(sessionId, chained);
|
|
89
|
+
await prev;
|
|
90
|
+
try {
|
|
91
|
+
return await fn();
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
release();
|
|
95
|
+
if (this.sessionLocks.get(sessionId) === chained) {
|
|
96
|
+
this.sessionLocks.delete(sessionId);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async createSession(sessionId, task, agents) {
|
|
101
|
+
const dir = this.sessionDir(sessionId);
|
|
102
|
+
await fs.mkdir(dir, { recursive: true });
|
|
103
|
+
const state = {
|
|
104
|
+
id: sessionId,
|
|
105
|
+
task,
|
|
106
|
+
phase: 'planning',
|
|
107
|
+
agents,
|
|
108
|
+
createdAt: Date.now(),
|
|
109
|
+
updatedAt: Date.now(),
|
|
110
|
+
};
|
|
111
|
+
await fs.writeFile(path.join(dir, 'session.json'), JSON.stringify(state, null, 2));
|
|
112
|
+
await fs.writeFile(path.join(dir, 'progress.json'), '[]');
|
|
113
|
+
}
|
|
114
|
+
async loadSession(sessionId) {
|
|
115
|
+
try {
|
|
116
|
+
const data = await fs.readFile(path.join(this.sessionDir(sessionId), 'session.json'), 'utf-8');
|
|
117
|
+
return JSON.parse(data);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
if (err.code === 'ENOENT') {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
throw err;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async updatePhase(sessionId, phase) {
|
|
127
|
+
return this.withSessionLock(sessionId, async () => {
|
|
128
|
+
const state = await this.loadSession(sessionId);
|
|
129
|
+
if (!state) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
state.phase = phase;
|
|
133
|
+
state.updatedAt = Date.now();
|
|
134
|
+
await fs.writeFile(path.join(this.sessionDir(sessionId), 'session.json'), JSON.stringify(state, null, 2));
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
async savePlan(sessionId, plan) {
|
|
138
|
+
await fs.writeFile(path.join(this.sessionDir(sessionId), 'plan.md'), plan);
|
|
139
|
+
}
|
|
140
|
+
async loadPlan(sessionId) {
|
|
141
|
+
try {
|
|
142
|
+
return await fs.readFile(path.join(this.sessionDir(sessionId), 'plan.md'), 'utf-8');
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
if (err.code === 'ENOENT') {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
throw err;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async recordStep(sessionId, step) {
|
|
152
|
+
return this.withSessionLock(sessionId, async () => {
|
|
153
|
+
const steps = await this.loadProgress(sessionId);
|
|
154
|
+
steps.push(step);
|
|
155
|
+
await fs.writeFile(path.join(this.sessionDir(sessionId), 'progress.json'), JSON.stringify(steps, null, 2));
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
async loadProgress(sessionId) {
|
|
159
|
+
try {
|
|
160
|
+
const data = await fs.readFile(path.join(this.sessionDir(sessionId), 'progress.json'), 'utf-8');
|
|
161
|
+
return JSON.parse(data);
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
if (err.code === 'ENOENT') {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
throw err;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async saveRetrospective(sessionId, retro) {
|
|
171
|
+
await fs.writeFile(path.join(this.sessionDir(sessionId), 'retrospective.md'), retro);
|
|
172
|
+
}
|
|
173
|
+
async deleteSession(sessionId) {
|
|
174
|
+
// force: true already suppresses ENOENT, so no need to catch
|
|
175
|
+
await fs.rm(this.sessionDir(sessionId), { recursive: true, force: true });
|
|
176
|
+
}
|
|
177
|
+
async listSessions() {
|
|
178
|
+
try {
|
|
179
|
+
const entries = await fs.readdir(this.baseDir, { withFileTypes: true });
|
|
180
|
+
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
if (err.code === 'ENOENT') {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
throw err;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.UltraWorkStateManager = UltraWorkStateManager;
|
|
191
|
+
//# sourceMappingURL=ultrawork-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultrawork-state.js","sourceRoot":"","sources":["../../src/multi-agent/ultrawork-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,12 @@
|
|
|
4
4
|
* Manages autonomous multi-step work sessions that combine
|
|
5
5
|
* delegation and task continuation for extended workflows.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Supports two modes:
|
|
8
|
+
* 1. **Phased Loop** (Ralph Loop, default): Plan -> Build -> Retrospective
|
|
9
|
+
* - File-based state persist for crash recovery
|
|
10
|
+
* - Council integration at plan and retrospective phases
|
|
11
|
+
* - Structured task execution from plan
|
|
12
|
+
* 2. **Freeform Loop** (legacy): Lead agent freely delegates and continues
|
|
10
13
|
*
|
|
11
14
|
* Constraints:
|
|
12
15
|
* - max_duration (default 30 min)
|
|
@@ -16,6 +19,15 @@
|
|
|
16
19
|
import type { UltraWorkConfig, AgentPersonaConfig } from './types.js';
|
|
17
20
|
import { ToolPermissionManager } from './tool-permission-manager.js';
|
|
18
21
|
import { type DelegationExecuteCallback, type DelegationNotifyCallback } from './delegation-manager.js';
|
|
22
|
+
import { UltraWorkStateManager } from './ultrawork-state.js';
|
|
23
|
+
/**
|
|
24
|
+
* Callback to intercept agent responses for workflow/council plan execution.
|
|
25
|
+
* Returns the processed result if a plan was found, or null to continue normal processing.
|
|
26
|
+
*/
|
|
27
|
+
export type ResponseInterceptor = (agentResponse: string, channelId: string) => Promise<{
|
|
28
|
+
result: string;
|
|
29
|
+
type: 'workflow' | 'council';
|
|
30
|
+
} | null>;
|
|
19
31
|
/**
|
|
20
32
|
* UltraWork session state
|
|
21
33
|
*/
|
|
@@ -66,6 +78,7 @@ export interface UltraWorkStep {
|
|
|
66
78
|
export declare class UltraWorkManager {
|
|
67
79
|
private config;
|
|
68
80
|
private permissionManager;
|
|
81
|
+
private stateManager;
|
|
69
82
|
/** Active sessions per channel */
|
|
70
83
|
private sessions;
|
|
71
84
|
/** Session counter for unique IDs */
|
|
@@ -78,7 +91,7 @@ export declare class UltraWorkManager {
|
|
|
78
91
|
/**
|
|
79
92
|
* Start a new UltraWork session.
|
|
80
93
|
*/
|
|
81
|
-
startSession(channelId: string, leadAgentId: string, task: string, agents: AgentPersonaConfig[], executeCallback: DelegationExecuteCallback, notifyCallback: DelegationNotifyCallback): Promise<UltraWorkSession>;
|
|
94
|
+
startSession(channelId: string, leadAgentId: string, task: string, agents: AgentPersonaConfig[], executeCallback: DelegationExecuteCallback, notifyCallback: DelegationNotifyCallback, responseInterceptor?: ResponseInterceptor): Promise<UltraWorkSession>;
|
|
82
95
|
/**
|
|
83
96
|
* Check if a session should continue.
|
|
84
97
|
*/
|
|
@@ -104,28 +117,33 @@ export declare class UltraWorkManager {
|
|
|
104
117
|
*/
|
|
105
118
|
updateConfig(config: UltraWorkConfig): void;
|
|
106
119
|
/**
|
|
107
|
-
*
|
|
108
|
-
* Prevents long-running agent responses from blocking indefinitely.
|
|
109
|
-
*
|
|
110
|
-
* @param executeCallback - The callback to execute
|
|
111
|
-
* @param agentId - Agent ID for error messages
|
|
112
|
-
* @param prompt - Prompt to send to agent
|
|
113
|
-
* @param timeoutMs - Timeout in milliseconds (default: 5 minutes)
|
|
114
|
-
* @returns Promise that rejects on timeout
|
|
120
|
+
* Get the state manager (for testing).
|
|
115
121
|
*/
|
|
116
|
-
|
|
122
|
+
getStateManager(): UltraWorkStateManager | null;
|
|
117
123
|
/**
|
|
118
|
-
*
|
|
119
|
-
* Lead agent works on the task, delegating and continuing as needed.
|
|
124
|
+
* Override state manager (for testing with temp dirs).
|
|
120
125
|
*/
|
|
121
|
-
|
|
126
|
+
setStateManager(sm: UltraWorkStateManager | null): void;
|
|
122
127
|
/**
|
|
123
|
-
*
|
|
128
|
+
* Execute callback with timeout protection.
|
|
124
129
|
*/
|
|
125
|
-
private
|
|
130
|
+
private executeWithTimeout;
|
|
126
131
|
/**
|
|
127
|
-
*
|
|
132
|
+
* Run the autonomous session loop — dispatches to phased or freeform mode.
|
|
128
133
|
*/
|
|
134
|
+
private runSessionLoop;
|
|
135
|
+
private runPlanningPhase;
|
|
136
|
+
private runBuildingPhase;
|
|
137
|
+
private runRetrospectivePhase;
|
|
138
|
+
private runPhasedLoop;
|
|
139
|
+
private runFreeformLoop;
|
|
140
|
+
private buildPlanningPrompt;
|
|
141
|
+
private buildBuildingPrompt;
|
|
142
|
+
private buildRetrospectivePrompt;
|
|
143
|
+
private buildInitialPrompt;
|
|
129
144
|
private buildContinuationAfterDelegation;
|
|
145
|
+
private isBuildComplete;
|
|
146
|
+
private isRetroComplete;
|
|
147
|
+
private endSession;
|
|
130
148
|
}
|
|
131
149
|
//# sourceMappingURL=ultrawork.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ultrawork.d.ts","sourceRoot":"","sources":["../../src/multi-agent/ultrawork.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ultrawork.d.ts","sourceRoot":"","sources":["../../src/multi-agent/ultrawork.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAO7D;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAOtE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB;IAChB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAwB;IACjD,OAAO,CAAC,YAAY,CAAsC;IAE1D,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAA4C;IAE5D,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,qBAAqB;IAW9E;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAS5C;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,kBAAkB,EAAE,EAC5B,eAAe,EAAE,yBAAyB,EAC1C,cAAc,EAAE,wBAAwB,EACxC,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,gBAAgB,CAAC;IAqE5B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAOlD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IASvD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAItD;;OAEG;IACH,iBAAiB,IAAI,gBAAgB,EAAE;IAIvC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAI3C;;OAEG;IACH,eAAe,IAAI,qBAAqB,GAAG,IAAI;IAI/C;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI;IAIvD;;OAEG;YACW,kBAAkB;IAsBhC;;OAEG;YACW,cAAc;YA8Bd,gBAAgB;YAwFhB,gBAAgB;YAgNhB,qBAAqB;YAmErB,aAAa;YA4Hb,eAAe;IAuL7B,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,wBAAwB;IAqChC,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,gCAAgC;IAcxC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;YAQT,UAAU;CAqBzB"}
|