@jungjaehoon/mama-os 0.9.2 → 0.9.4
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/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +2 -3
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/claude-cli-wrapper.d.ts +4 -4
- package/dist/agent/claude-cli-wrapper.d.ts.map +1 -1
- package/dist/agent/claude-cli-wrapper.js +17 -5
- package/dist/agent/claude-cli-wrapper.js.map +1 -1
- package/dist/agent/claude-client.js +3 -3
- package/dist/agent/claude-client.js.map +1 -1
- package/dist/agent/codex-mcp-process.d.ts +10 -0
- package/dist/agent/codex-mcp-process.d.ts.map +1 -1
- package/dist/agent/codex-mcp-process.js +226 -58
- package/dist/agent/codex-mcp-process.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +15 -1
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +37 -3
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +1 -0
- package/dist/agent/persistent-cli-process.d.ts +2 -0
- package/dist/agent/persistent-cli-process.d.ts.map +1 -1
- package/dist/agent/persistent-cli-process.js +15 -0
- package/dist/agent/persistent-cli-process.js.map +1 -1
- package/dist/agent/types.d.ts +3 -3
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/graph-api.d.ts.map +1 -1
- package/dist/api/graph-api.js +31 -5
- package/dist/api/graph-api.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +91 -6
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/stop.d.ts +7 -1
- package/dist/cli/commands/stop.d.ts.map +1 -1
- package/dist/cli/commands/stop.js +49 -0
- package/dist/cli/commands/stop.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 +19 -5
- package/dist/cli/config/types.d.ts.map +1 -1
- package/dist/cli/config/types.js +3 -3
- package/dist/cli/config/types.js.map +1 -1
- package/dist/gateways/image-analyzer.js +1 -1
- package/dist/gateways/image-analyzer.js.map +1 -1
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +8 -19
- package/dist/gateways/slack.js.map +1 -1
- package/dist/multi-agent/agent-process-manager.d.ts +15 -1
- package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
- package/dist/multi-agent/agent-process-manager.js +121 -22
- 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/bmad-templates.d.ts +67 -0
- package/dist/multi-agent/bmad-templates.d.ts.map +1 -0
- package/dist/multi-agent/bmad-templates.js +248 -0
- package/dist/multi-agent/bmad-templates.js.map +1 -0
- 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 +18 -9
- package/dist/multi-agent/multi-agent-base.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-base.js +116 -33
- 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 +81 -302
- package/dist/multi-agent/multi-agent-discord.js.map +1 -1
- package/dist/multi-agent/multi-agent-slack.d.ts +2 -25
- package/dist/multi-agent/multi-agent-slack.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-slack.js +173 -253
- package/dist/multi-agent/multi-agent-slack.js.map +1 -1
- package/dist/multi-agent/runtime-process.d.ts +3 -0
- package/dist/multi-agent/runtime-process.d.ts.map +1 -1
- package/dist/multi-agent/runtime-process.js +4 -0
- package/dist/multi-agent/runtime-process.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 +31 -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 +7 -0
- package/dist/multi-agent/workflow-engine.d.ts.map +1 -1
- package/dist/multi-agent/workflow-engine.js +238 -33
- package/dist/multi-agent/workflow-engine.js.map +1 -1
- package/dist/multi-agent/workflow-types.d.ts +74 -1
- 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/dist/setup/setup-prompt.d.ts +1 -1
- package/dist/setup/setup-prompt.d.ts.map +1 -1
- package/dist/setup/setup-prompt.js +1 -1
- package/package.json +1 -1
- package/public/viewer/js/modules/settings.js +110 -15
- package/public/viewer/js/utils/format.js +10 -7
- package/public/viewer/src/modules/settings.ts +133 -16
- package/public/viewer/src/utils/api.ts +2 -1
- package/public/viewer/src/utils/format.ts +10 -7
- package/public/viewer/viewer.html +1 -0
- package/templates/bmad/LICENSE +28 -0
- package/templates/bmad/architecture.md +343 -0
- package/templates/bmad/bmm-workflow-status.template.yaml +66 -0
- package/templates/bmad/prd.md +198 -0
- package/templates/bmad/product-brief.md +149 -0
- package/templates/bmad/sprint-status.template.yaml +35 -0
- package/templates/bmad/tech-spec.md +151 -0
- package/templates/personas/architect.md +70 -0
- package/templates/personas/conductor.md +373 -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
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PR Review Poller
|
|
3
|
-
*
|
|
4
|
-
* Polls GitHub PR for new review comments and injects them into Slack channel.
|
|
5
|
-
* Enables autonomous Sisyphus → DevBot → push → review → fix → push loop.
|
|
6
|
-
*
|
|
7
|
-
* Flow:
|
|
8
|
-
* 1. Agent pushes and posts PR URL in channel
|
|
9
|
-
* 2. Poller detects URL → starts polling `gh api` every 60s
|
|
10
|
-
* 3. New review comments → posted through callback (e.g., as lightweight reminders)
|
|
11
|
-
* 4. Sisyphus analyzes severity → delegates fixes to @DevBot
|
|
12
|
-
* 5. DevBot fixes → @Reviewer → approve or request changes
|
|
13
|
-
* 6. Poller detects new comments or Approved → loop continues or ends
|
|
14
|
-
*/
|
|
15
|
-
type PRPollerItemKind = 'review' | 'comment' | 'thread';
|
|
16
|
-
type PRPollerSeverity = 'high' | 'medium' | 'low';
|
|
17
|
-
export interface PRPollerBatchItem {
|
|
18
|
-
id: string;
|
|
19
|
-
kind: PRPollerItemKind;
|
|
20
|
-
severity: PRPollerSeverity;
|
|
21
|
-
summary: string;
|
|
22
|
-
isReminder: boolean;
|
|
23
|
-
}
|
|
24
|
-
export interface PRPollerBatchDigest {
|
|
25
|
-
items: PRPollerBatchItem[];
|
|
26
|
-
newItems: PRPollerBatchItem[];
|
|
27
|
-
reminderItems: PRPollerBatchItem[];
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Callback for sending messages to Slack
|
|
31
|
-
*/
|
|
32
|
-
type MessageSender = (channelId: string, text: string) => Promise<void>;
|
|
33
|
-
type BatchItemCallback = (channelId: string, summary: string, item: PRPollerBatchItem) => Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* PR Review Poller
|
|
36
|
-
*
|
|
37
|
-
* Watches GitHub PRs for new review comments and routes them to agents.
|
|
38
|
-
*/
|
|
39
|
-
export declare class PRReviewPoller {
|
|
40
|
-
private sessions;
|
|
41
|
-
private messageSender;
|
|
42
|
-
private onBatchItem;
|
|
43
|
-
private onBatchComplete;
|
|
44
|
-
private logger;
|
|
45
|
-
/**
|
|
46
|
-
* Check if a message sender is already configured
|
|
47
|
-
*/
|
|
48
|
-
hasMessageSender(): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* Set the message sender callback (Slack WebClient wrapper)
|
|
51
|
-
*/
|
|
52
|
-
setMessageSender(sender: MessageSender): void;
|
|
53
|
-
/**
|
|
54
|
-
* Set callback fired once per logical poll item (before chunking/sending).
|
|
55
|
-
* Useful for counting poll items and passing compact summaries upstream.
|
|
56
|
-
*/
|
|
57
|
-
setOnBatchItem(callback: BatchItemCallback): void;
|
|
58
|
-
/**
|
|
59
|
-
* Set callback fired after all message chunks for a poll cycle are sent.
|
|
60
|
-
* Used by handlers to trigger lead wake-up once per poll cycle (not per-chunk).
|
|
61
|
-
*/
|
|
62
|
-
setOnBatchComplete(callback: (channelId: string, digest?: PRPollerBatchDigest) => Promise<void>): void;
|
|
63
|
-
/**
|
|
64
|
-
* Set the target agent's Slack user ID for @mentions in review messages
|
|
65
|
-
* (typically the orchestrator/Sisyphus, who analyzes and delegates to DevBot)
|
|
66
|
-
*/
|
|
67
|
-
private targetAgentUserId?;
|
|
68
|
-
setTargetAgentUserId(userId: string): void;
|
|
69
|
-
/**
|
|
70
|
-
* Start polling a PR for review comments
|
|
71
|
-
*
|
|
72
|
-
* @param prUrl - GitHub PR URL (e.g., https://github.com/owner/repo/pull/14)
|
|
73
|
-
* @param channelId - Slack channel to post updates to
|
|
74
|
-
*/
|
|
75
|
-
startPolling(prUrl: string, channelId: string): Promise<boolean>;
|
|
76
|
-
/**
|
|
77
|
-
* Stop polling a PR
|
|
78
|
-
*/
|
|
79
|
-
stopPolling(prUrl: string): void;
|
|
80
|
-
/**
|
|
81
|
-
* Stop all polling sessions
|
|
82
|
-
*/
|
|
83
|
-
stopAll(): void;
|
|
84
|
-
/**
|
|
85
|
-
* Get active polling sessions
|
|
86
|
-
*/
|
|
87
|
-
getActiveSessions(): string[];
|
|
88
|
-
/**
|
|
89
|
-
* Get session details for active polling sessions (for auto-commit)
|
|
90
|
-
*/
|
|
91
|
-
getSessionDetails(): {
|
|
92
|
-
owner: string;
|
|
93
|
-
repo: string;
|
|
94
|
-
prNumber: number;
|
|
95
|
-
channelId: string;
|
|
96
|
-
workspaceDir: string;
|
|
97
|
-
}[];
|
|
98
|
-
/**
|
|
99
|
-
* Schedule the next poll cycle for a session
|
|
100
|
-
*/
|
|
101
|
-
private scheduleNextPoll;
|
|
102
|
-
/**
|
|
103
|
-
* Poll a single PR for new comments/reviews
|
|
104
|
-
*/
|
|
105
|
-
private poll;
|
|
106
|
-
/**
|
|
107
|
-
* Format PR comments with full details grouped by file.
|
|
108
|
-
* Enables parallel delegation — independent files can be fixed simultaneously.
|
|
109
|
-
*/
|
|
110
|
-
private classifyCommentBatchSeverity;
|
|
111
|
-
private addPollerBatchItem;
|
|
112
|
-
private formatComments;
|
|
113
|
-
/**
|
|
114
|
-
* Fetch PR review comments via gh API
|
|
115
|
-
*/
|
|
116
|
-
private fetchComments;
|
|
117
|
-
/**
|
|
118
|
-
* Fetch PR reviews via gh API
|
|
119
|
-
*/
|
|
120
|
-
private fetchReviews;
|
|
121
|
-
/**
|
|
122
|
-
* Handle post-push: check unresolved threads, auto-reply to addressed ones,
|
|
123
|
-
* and keep unresolved-thread state fresh for the next poll cycle.
|
|
124
|
-
*
|
|
125
|
-
* @param allComments - Pre-fetched comments (to avoid N+1 API calls)
|
|
126
|
-
*/
|
|
127
|
-
private handlePostPush;
|
|
128
|
-
/**
|
|
129
|
-
* Format unresolved threads with details grouped by file.
|
|
130
|
-
*/
|
|
131
|
-
private formatUnresolvedThreads;
|
|
132
|
-
/**
|
|
133
|
-
* Fetch unresolved review threads via GitHub GraphQL API
|
|
134
|
-
*/
|
|
135
|
-
private fetchUnresolvedThreads;
|
|
136
|
-
/**
|
|
137
|
-
* Reply to a review thread (uses the first comment's ID as in_reply_to)
|
|
138
|
-
*/
|
|
139
|
-
private replyToThread;
|
|
140
|
-
/**
|
|
141
|
-
* Fetch HEAD commit SHA of the PR branch
|
|
142
|
-
*/
|
|
143
|
-
private fetchHeadSha;
|
|
144
|
-
/**
|
|
145
|
-
* Fetch list of files changed between two commits
|
|
146
|
-
*/
|
|
147
|
-
private fetchChangedFiles;
|
|
148
|
-
/**
|
|
149
|
-
* Fetch PR state (OPEN, MERGED, CLOSED)
|
|
150
|
-
*/
|
|
151
|
-
private fetchPRState;
|
|
152
|
-
private prepareWorkspace;
|
|
153
|
-
private ensureGhAuth;
|
|
154
|
-
private ensureRepo;
|
|
155
|
-
/**
|
|
156
|
-
* Git identity configuration for PR workspaces
|
|
157
|
-
* Can be overridden per-agent via setAgentGitIdentity
|
|
158
|
-
*/
|
|
159
|
-
private gitIdentity;
|
|
160
|
-
/**
|
|
161
|
-
* Set git identity for a specific agent (called before agent starts work)
|
|
162
|
-
*/
|
|
163
|
-
setAgentGitIdentity(identity: {
|
|
164
|
-
name: string;
|
|
165
|
-
email: string;
|
|
166
|
-
}): void;
|
|
167
|
-
/**
|
|
168
|
-
* Set git identity in workspace
|
|
169
|
-
*/
|
|
170
|
-
private setGitIdentity;
|
|
171
|
-
private getRemoteUrl;
|
|
172
|
-
private matchesRepo;
|
|
173
|
-
private withWorkspaceLock;
|
|
174
|
-
/**
|
|
175
|
-
* Parse GitHub PR URL into owner/repo/number
|
|
176
|
-
*/
|
|
177
|
-
parsePRUrl(url: string): {
|
|
178
|
-
owner: string;
|
|
179
|
-
repo: string;
|
|
180
|
-
prNumber: number;
|
|
181
|
-
} | null;
|
|
182
|
-
/**
|
|
183
|
-
* Detect PR URLs in message text
|
|
184
|
-
*/
|
|
185
|
-
static extractPRUrls(text: string): string[];
|
|
186
|
-
/**
|
|
187
|
-
* Send message to Slack via callback
|
|
188
|
-
*/
|
|
189
|
-
private sendMessage;
|
|
190
|
-
/**
|
|
191
|
-
* Build a compact, single-line summary for orchestrator wake-up prompts.
|
|
192
|
-
* Keep the text intentionally short to avoid PR wake-up context bloat.
|
|
193
|
-
*/
|
|
194
|
-
private extractBatchSummary;
|
|
195
|
-
}
|
|
196
|
-
export {};
|
|
197
|
-
//# sourceMappingURL=pr-review-poller.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pr-review-poller.d.ts","sourceRoot":"","sources":["../../src/multi-agent/pr-review-poller.ts"],"names":[],"mappings":"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"}
|