@damian87/omp 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.github/copilot-instructions.md +15 -0
  2. package/.github/skills/caveman/SKILL.md +22 -11
  3. package/.github/skills/code-review/SKILL.md +27 -13
  4. package/.github/skills/debug/SKILL.md +29 -13
  5. package/.github/skills/grill-me/SKILL.md +19 -7
  6. package/.github/skills/jira-ticket/SKILL.md +34 -12
  7. package/.github/skills/omp-autopilot/SKILL.md +67 -12
  8. package/.github/skills/prototype/SKILL.md +30 -12
  9. package/.github/skills/ralph/SKILL.md +62 -13
  10. package/.github/skills/ralplan/SKILL.md +21 -12
  11. package/.github/skills/research-codebase/SKILL.md +58 -0
  12. package/.github/skills/research-codebase/reference/agent-prompts.md +38 -0
  13. package/.github/skills/research-codebase/reference/follow-up.md +21 -0
  14. package/.github/skills/research-codebase/reference/permalink.md +26 -0
  15. package/.github/skills/research-codebase/reference/template.md +75 -0
  16. package/.github/skills/tdd/SKILL.md +27 -10
  17. package/.github/skills/team/SKILL.md +95 -13
  18. package/.github/skills/team/scripts/team-launch.sh +132 -0
  19. package/.github/skills/ultraqa/SKILL.md +55 -11
  20. package/.github/skills/ultrawork/SKILL.md +66 -13
  21. package/.github/skills/verify/SKILL.md +29 -11
  22. package/.github/skills/worktree/SKILL.md +51 -0
  23. package/README.md +28 -14
  24. package/catalog/capabilities.json +104 -12
  25. package/catalog/skills-general.json +62 -10
  26. package/dist/src/cli.js +30 -3
  27. package/dist/src/cli.js.map +1 -1
  28. package/dist/src/copilot/launch.js +42 -2
  29. package/dist/src/copilot/launch.js.map +1 -1
  30. package/dist/src/mode-state/paths.d.ts +6 -0
  31. package/dist/src/mode-state/paths.js +12 -0
  32. package/dist/src/mode-state/paths.js.map +1 -1
  33. package/dist/src/team/api.d.ts +60 -1
  34. package/dist/src/team/api.js +101 -0
  35. package/dist/src/team/api.js.map +1 -1
  36. package/dist/src/team/config.d.ts +7 -0
  37. package/dist/src/team/config.js +16 -0
  38. package/dist/src/team/config.js.map +1 -0
  39. package/dist/src/team/mailbox.d.ts +30 -0
  40. package/dist/src/team/mailbox.js +188 -0
  41. package/dist/src/team/mailbox.js.map +1 -0
  42. package/dist/src/team/runtime.d.ts +9 -1
  43. package/dist/src/team/runtime.js +18 -12
  44. package/dist/src/team/runtime.js.map +1 -1
  45. package/dist/src/team/types.d.ts +25 -0
  46. package/dist/src/team/worker-bootstrap.js +29 -0
  47. package/dist/src/team/worker-bootstrap.js.map +1 -1
  48. package/dist/test/catalog.test.d.ts +1 -0
  49. package/dist/test/catalog.test.js +21 -0
  50. package/dist/test/catalog.test.js.map +1 -0
  51. package/dist/test/jira.test.d.ts +1 -0
  52. package/dist/test/jira.test.js +26 -0
  53. package/dist/test/jira.test.js.map +1 -0
  54. package/dist/test/lint.test.d.ts +1 -0
  55. package/dist/test/lint.test.js +9 -0
  56. package/dist/test/lint.test.js.map +1 -0
  57. package/dist/test/sync.test.d.ts +1 -0
  58. package/dist/test/sync.test.js +15 -0
  59. package/dist/test/sync.test.js.map +1 -0
  60. package/docs/general-skills.md +5 -4
  61. package/docs/plans/2026-05-29-team-messaging-and-nudge-gating-design.md +170 -0
  62. package/docs/self-evolve.md +2 -2
  63. package/package.json +1 -1
  64. package/scripts/lib/version-check.mjs +82 -0
  65. package/scripts/session-start.mjs +8 -2
  66. package/.github/skills/codebase-research/SKILL.md +0 -20
@@ -26,4 +26,16 @@ export function clearModeState(cwd, mode) {
26
26
  if (existsSync(p))
27
27
  unlinkSync(p);
28
28
  }
29
+ /**
30
+ * True when any loop mode (ralph/ultrawork/ultraqa) is currently active.
31
+ * Single source of truth for mode-gated behaviour (e.g. team idle-nudge).
32
+ * Pure, side-effect-free read.
33
+ */
34
+ export function isLoopModeActive(cwd) {
35
+ const modes = ["ralph", "ultrawork", "ultraqa"];
36
+ return modes.some((mode) => {
37
+ const state = readModeStateJson(cwd, mode);
38
+ return state?.active === true;
39
+ });
40
+ }
29
41
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/mode-state/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAInD,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAc;IACvD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,GAAW,EAAE,IAAc;IAC9D,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAM,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,GAAW,EAAE,IAAc,EAAE,KAAQ;IACzE,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACpD,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,IAAc;IACxD,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,UAAU,CAAC,CAAC,CAAC;QAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/mode-state/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAInD,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAc;IACvD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,GAAW,EAAE,IAAc;IAC9D,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAM,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,GAAW,EAAE,IAAc,EAAE,KAAQ;IACzE,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACpD,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,IAAc;IACxD,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,UAAU,CAAC,CAAC,CAAC;QAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAe,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,iBAAiB,CAAuB,GAAG,EAAE,IAAI,CAAC,CAAC;QACjE,OAAO,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { type ClaimResult, type TransitionResult } from "./task-store.js";
2
- import type { TaskStatus } from "./types.js";
2
+ import { type TmuxApi } from "./tmux.js";
3
+ import type { MailboxMessageView, TaskStatus } from "./types.js";
3
4
  export interface ClaimInput {
4
5
  team_name: string;
5
6
  task_id: string;
@@ -18,3 +19,61 @@ export interface TransitionInput {
18
19
  cwd?: string;
19
20
  }
20
21
  export declare function apiTransitionTaskStatus(input: TransitionInput): TransitionResult;
22
+ export interface SendMessageInput {
23
+ team_name: string;
24
+ from: string;
25
+ to: string;
26
+ body: string;
27
+ cwd?: string;
28
+ }
29
+ export interface SendMessageResult {
30
+ ok: boolean;
31
+ messageId?: string;
32
+ nudged?: boolean;
33
+ error?: string;
34
+ }
35
+ /**
36
+ * Send a message to the leader or any registered worker. Rejects path-traversal
37
+ * and unknown recipients before any file I/O. Best-effort nudges the recipient
38
+ * worker's tmux pane (never the leader — it has no tracked pane).
39
+ */
40
+ export declare function apiSendMessage(input: SendMessageInput, tmux?: TmuxApi): Promise<SendMessageResult>;
41
+ export interface BroadcastInput {
42
+ team_name: string;
43
+ from: string;
44
+ body: string;
45
+ cwd?: string;
46
+ }
47
+ export interface BroadcastResult {
48
+ ok: boolean;
49
+ recipients: string[];
50
+ messageIds: string[];
51
+ errors?: string[];
52
+ }
53
+ /** Broadcast to every worker (except the sender) AND the leader. */
54
+ export declare function apiBroadcast(input: BroadcastInput, tmux?: TmuxApi): Promise<BroadcastResult>;
55
+ export interface MailboxListInput {
56
+ team_name: string;
57
+ worker: string;
58
+ undelivered_only?: boolean;
59
+ cwd?: string;
60
+ }
61
+ export interface MailboxListResult {
62
+ ok: boolean;
63
+ messages: MailboxMessageView[];
64
+ error?: string;
65
+ }
66
+ /** List a recipient's mailbox (merged with delivery receipts). */
67
+ export declare function apiMailboxList(input: MailboxListInput): MailboxListResult;
68
+ export interface MailboxMarkDeliveredInput {
69
+ team_name: string;
70
+ worker: string;
71
+ message_id: string;
72
+ cwd?: string;
73
+ }
74
+ export interface MailboxMarkDeliveredResult {
75
+ ok: boolean;
76
+ error?: string;
77
+ }
78
+ /** Mark a mailbox message delivered (appends a delivery receipt). */
79
+ export declare function apiMailboxMarkDelivered(input: MailboxMarkDeliveredInput): MailboxMarkDeliveredResult;
@@ -1,8 +1,14 @@
1
1
  import { resolve } from "node:path";
2
+ import { randomUUID } from "node:crypto";
2
3
  import { resolveTeamPaths, resolveWorkerPaths } from "./state-paths.js";
3
4
  import { tryClaimTask, transitionTask } from "./task-store.js";
4
5
  import { writeHeartbeat } from "./heartbeat.js";
5
6
  import { appendOutbox } from "./outbox.js";
7
+ import { loadTeamConfig } from "./config.js";
8
+ import { appendMailbox, listMailbox, markDelivered, validateRecipientName } from "./mailbox.js";
9
+ import { makeTmux, sendToWorker } from "./tmux.js";
10
+ /** Reserved recipient name for the team leader. */
11
+ const LEADER = "leader";
6
12
  export function apiClaimTask(input) {
7
13
  const cwd = resolve(input.cwd ?? process.cwd());
8
14
  const team = resolveTeamPaths(cwd, input.team_name);
@@ -52,4 +58,99 @@ export function apiTransitionTaskStatus(input) {
52
58
  }
53
59
  return transition;
54
60
  }
61
+ /**
62
+ * Send a message to the leader or any registered worker. Rejects path-traversal
63
+ * and unknown recipients before any file I/O. Best-effort nudges the recipient
64
+ * worker's tmux pane (never the leader — it has no tracked pane).
65
+ */
66
+ export async function apiSendMessage(input, tmux) {
67
+ const cwd = resolve(input.cwd ?? process.cwd());
68
+ // Path-traversal guard BEFORE config lookup — hard gate regardless of config.
69
+ if (!validateRecipientName(input.to)) {
70
+ return { ok: false, error: "invalid_recipient_name" };
71
+ }
72
+ if (!input.from || !input.body) {
73
+ return { ok: false, error: "invalid_input" };
74
+ }
75
+ const team = resolveTeamPaths(cwd, input.team_name);
76
+ const config = loadTeamConfig(team);
77
+ const isLeader = input.to === LEADER;
78
+ const recipient = config?.workers.find((w) => w.name === input.to);
79
+ if (!isLeader && !recipient) {
80
+ return { ok: false, error: "unknown_recipient" };
81
+ }
82
+ const message = {
83
+ type: "message",
84
+ id: randomUUID(),
85
+ from: input.from,
86
+ to: input.to,
87
+ body: input.body,
88
+ timestamp: new Date().toISOString(),
89
+ };
90
+ appendMailbox(team.mailboxDir, message);
91
+ // Best-effort nudge: only workers have a tracked pane; never nudge the leader.
92
+ let nudged = false;
93
+ const paneId = recipient?.paneId;
94
+ if (!isLeader && paneId) {
95
+ const undelivered = listMailbox(team.mailboxDir, input.to).filter((m) => !m.deliveredAt).length;
96
+ const trigger = `You have ${undelivered} new message(s). Read your mailbox: omp team api mailbox-list --input '{"team_name":"${input.team_name}","worker":"${input.to}"}' --json`;
97
+ try {
98
+ const api = tmux ?? makeTmux();
99
+ nudged = await sendToWorker(api, paneId, trigger, { rounds: 4, delayMs: 100 });
100
+ }
101
+ catch {
102
+ nudged = false; // nudge is best-effort; persistence already succeeded
103
+ }
104
+ }
105
+ return { ok: true, messageId: message.id, nudged };
106
+ }
107
+ /** Broadcast to every worker (except the sender) AND the leader. */
108
+ export async function apiBroadcast(input, tmux) {
109
+ const cwd = resolve(input.cwd ?? process.cwd());
110
+ const team = resolveTeamPaths(cwd, input.team_name);
111
+ const config = loadTeamConfig(team);
112
+ const recipientNames = [
113
+ ...(config?.workers.map((w) => w.name) ?? []),
114
+ LEADER,
115
+ ].filter((name) => name !== input.from);
116
+ const recipients = [];
117
+ const messageIds = [];
118
+ const errors = [];
119
+ for (const to of recipientNames) {
120
+ const result = await apiSendMessage({ team_name: input.team_name, from: input.from, to, body: input.body, cwd }, tmux);
121
+ if (result.ok && result.messageId) {
122
+ recipients.push(to);
123
+ messageIds.push(result.messageId);
124
+ }
125
+ else {
126
+ errors.push(`${to}: ${result.error ?? "unknown_error"}`);
127
+ }
128
+ }
129
+ return errors.length > 0
130
+ ? { ok: true, recipients, messageIds, errors }
131
+ : { ok: true, recipients, messageIds };
132
+ }
133
+ /** List a recipient's mailbox (merged with delivery receipts). */
134
+ export function apiMailboxList(input) {
135
+ const cwd = resolve(input.cwd ?? process.cwd());
136
+ if (!validateRecipientName(input.worker)) {
137
+ return { ok: false, messages: [], error: "invalid_recipient_name" };
138
+ }
139
+ const team = resolveTeamPaths(cwd, input.team_name);
140
+ let messages = listMailbox(team.mailboxDir, input.worker);
141
+ if (input.undelivered_only) {
142
+ messages = messages.filter((m) => !m.deliveredAt);
143
+ }
144
+ return { ok: true, messages };
145
+ }
146
+ /** Mark a mailbox message delivered (appends a delivery receipt). */
147
+ export function apiMailboxMarkDelivered(input) {
148
+ const cwd = resolve(input.cwd ?? process.cwd());
149
+ if (!validateRecipientName(input.worker)) {
150
+ return { ok: false, error: "invalid_recipient_name" };
151
+ }
152
+ const team = resolveTeamPaths(cwd, input.team_name);
153
+ const ok = markDelivered(team.mailboxDir, input.worker, input.message_id);
154
+ return ok ? { ok: true } : { ok: false, error: "message_not_found" };
155
+ }
55
156
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/team/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/team/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TeamStatePaths } from "./state-paths.js";
2
+ import type { TeamConfig } from "./types.js";
3
+ /**
4
+ * Read a team's config.json. Pure leaf read (no orchestration dependency) so
5
+ * both the runtime and the api layer can import it without a cycle.
6
+ */
7
+ export declare function loadTeamConfig(paths: TeamStatePaths): TeamConfig | undefined;
@@ -0,0 +1,16 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ /**
3
+ * Read a team's config.json. Pure leaf read (no orchestration dependency) so
4
+ * both the runtime and the api layer can import it without a cycle.
5
+ */
6
+ export function loadTeamConfig(paths) {
7
+ if (!existsSync(paths.configFile))
8
+ return undefined;
9
+ try {
10
+ return JSON.parse(readFileSync(paths.configFile, "utf8"));
11
+ }
12
+ catch {
13
+ return undefined;
14
+ }
15
+ }
16
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/team/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAInD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAe,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { MailboxMessage, MailboxMessageView } from "./types.js";
2
+ /**
3
+ * Recipient names are used to build `<mailboxDir>/<recipient>.jsonl` paths and
4
+ * come from external CLI `--input` JSON. Reject anything that could escape the
5
+ * mailbox directory. Hard guard — call before constructing any file path.
6
+ */
7
+ export declare function validateRecipientName(name: string): boolean;
8
+ export declare function mailboxFilePath(mailboxDir: string, recipient: string): string;
9
+ export declare function mailboxOffsetPath(mailboxDir: string, recipient: string): string;
10
+ /** Append a message to its recipient's mailbox (keyed by msg.to). */
11
+ export declare function appendMailbox(mailboxDir: string, msg: MailboxMessage): void;
12
+ /**
13
+ * Mark a message delivered by APPENDING a DeliveryReceipt line (never rewrites
14
+ * the file, so active byte cursors stay valid). Returns false if no message
15
+ * with `messageId` exists (no receipt written).
16
+ */
17
+ export declare function markDelivered(mailboxDir: string, recipient: string, messageId: string): boolean;
18
+ /**
19
+ * Read new messages via byte cursor and advance it. The cursor advances past
20
+ * ALL lines (including delivery-receipt lines), but only `type: "message"`
21
+ * lines are returned — receipts are consumed but filtered from the result.
22
+ */
23
+ export declare function readNewMailbox(mailboxDir: string, recipient: string): MailboxMessage[];
24
+ /** Same filtering as readNewMailbox but does NOT advance the cursor. */
25
+ export declare function peekMailbox(mailboxDir: string, recipient: string): MailboxMessage[];
26
+ /**
27
+ * Full-file scan (no cursor). Returns every message merged with delivery info
28
+ * from any matching DeliveryReceipt line.
29
+ */
30
+ export declare function listMailbox(mailboxDir: string, recipient: string): MailboxMessageView[];
@@ -0,0 +1,188 @@
1
+ import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, statSync, writeFileSync, } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ // ---------------------------------------------------------------------------
4
+ // Recipient name validation (path-traversal guard)
5
+ // ---------------------------------------------------------------------------
6
+ /**
7
+ * Recipient names are used to build `<mailboxDir>/<recipient>.jsonl` paths and
8
+ * come from external CLI `--input` JSON. Reject anything that could escape the
9
+ * mailbox directory. Hard guard — call before constructing any file path.
10
+ */
11
+ export function validateRecipientName(name) {
12
+ if (!name || name === "." || name === "..")
13
+ return false;
14
+ if (name.includes("/") || name.includes("\\"))
15
+ return false;
16
+ return true;
17
+ }
18
+ // ---------------------------------------------------------------------------
19
+ // Paths
20
+ // ---------------------------------------------------------------------------
21
+ export function mailboxFilePath(mailboxDir, recipient) {
22
+ if (!validateRecipientName(recipient)) {
23
+ throw new Error(`invalid_recipient_name: ${recipient}`);
24
+ }
25
+ return join(mailboxDir, `${recipient}.jsonl`);
26
+ }
27
+ export function mailboxOffsetPath(mailboxDir, recipient) {
28
+ if (!validateRecipientName(recipient)) {
29
+ throw new Error(`invalid_recipient_name: ${recipient}`);
30
+ }
31
+ return join(mailboxDir, `.${recipient}.offset`);
32
+ }
33
+ // ---------------------------------------------------------------------------
34
+ // Byte-cursor scanner (copied verbatim from outbox.ts to mirror the pattern)
35
+ // ---------------------------------------------------------------------------
36
+ function readCursorBytes(offsetPath) {
37
+ if (!existsSync(offsetPath))
38
+ return 0;
39
+ try {
40
+ const data = JSON.parse(readFileSync(offsetPath, "utf8"));
41
+ return Number(data.bytesRead) || 0;
42
+ }
43
+ catch {
44
+ return 0;
45
+ }
46
+ }
47
+ function writeCursorBytes(offsetPath, bytes) {
48
+ mkdirSync(dirname(offsetPath), { recursive: true });
49
+ writeFileSync(offsetPath, JSON.stringify({ bytesRead: bytes }), "utf8");
50
+ }
51
+ function scanFromCursor(filePath, offsetPath) {
52
+ if (!existsSync(filePath))
53
+ return undefined;
54
+ const stats = statSync(filePath);
55
+ const cursor = readCursorBytes(offsetPath);
56
+ if (cursor >= stats.size)
57
+ return { lines: [], newCursor: cursor, cursor };
58
+ const remaining = stats.size - cursor;
59
+ const fd = openSync(filePath, "r");
60
+ const buf = Buffer.alloc(remaining);
61
+ try {
62
+ readSync(fd, buf, 0, remaining, cursor);
63
+ }
64
+ finally {
65
+ closeSync(fd);
66
+ }
67
+ const text = buf.toString("utf8");
68
+ const lastNewline = text.lastIndexOf("\n");
69
+ if (lastNewline === -1)
70
+ return { lines: [], newCursor: cursor, cursor }; // no complete line yet
71
+ const consumed = text.slice(0, lastNewline + 1);
72
+ const newCursor = cursor + Buffer.byteLength(consumed, "utf8");
73
+ const lines = [];
74
+ for (const line of consumed.split("\n")) {
75
+ if (!line.trim())
76
+ continue;
77
+ try {
78
+ lines.push(JSON.parse(line));
79
+ }
80
+ catch {
81
+ // ignore unparseable line; advance past it anyway
82
+ }
83
+ }
84
+ return { lines, newCursor, cursor };
85
+ }
86
+ // ---------------------------------------------------------------------------
87
+ // Writes (append-only)
88
+ // ---------------------------------------------------------------------------
89
+ /** Append a message to its recipient's mailbox (keyed by msg.to). */
90
+ export function appendMailbox(mailboxDir, msg) {
91
+ const filePath = mailboxFilePath(mailboxDir, msg.to);
92
+ mkdirSync(dirname(filePath), { recursive: true });
93
+ appendFileSync(filePath, `${JSON.stringify(msg)}\n`, "utf8");
94
+ }
95
+ /**
96
+ * Mark a message delivered by APPENDING a DeliveryReceipt line (never rewrites
97
+ * the file, so active byte cursors stay valid). Returns false if no message
98
+ * with `messageId` exists (no receipt written).
99
+ */
100
+ export function markDelivered(mailboxDir, recipient, messageId) {
101
+ const filePath = mailboxFilePath(mailboxDir, recipient);
102
+ if (!existsSync(filePath))
103
+ return false;
104
+ let found = false;
105
+ for (const raw of readFileSync(filePath, "utf8").split("\n")) {
106
+ if (!raw.trim())
107
+ continue;
108
+ try {
109
+ const line = JSON.parse(raw);
110
+ if (line.type === "message" && line.id === messageId) {
111
+ found = true;
112
+ break;
113
+ }
114
+ }
115
+ catch {
116
+ // skip unparseable line
117
+ }
118
+ }
119
+ if (!found)
120
+ return false;
121
+ const receipt = {
122
+ type: "delivery-receipt",
123
+ messageId,
124
+ deliveredAt: new Date().toISOString(),
125
+ };
126
+ appendFileSync(filePath, `${JSON.stringify(receipt)}\n`, "utf8");
127
+ return true;
128
+ }
129
+ // ---------------------------------------------------------------------------
130
+ // Reads
131
+ // ---------------------------------------------------------------------------
132
+ /**
133
+ * Read new messages via byte cursor and advance it. The cursor advances past
134
+ * ALL lines (including delivery-receipt lines), but only `type: "message"`
135
+ * lines are returned — receipts are consumed but filtered from the result.
136
+ */
137
+ export function readNewMailbox(mailboxDir, recipient) {
138
+ const filePath = mailboxFilePath(mailboxDir, recipient);
139
+ const offsetPath = mailboxOffsetPath(mailboxDir, recipient);
140
+ const scan = scanFromCursor(filePath, offsetPath);
141
+ if (!scan)
142
+ return [];
143
+ if (scan.newCursor !== scan.cursor)
144
+ writeCursorBytes(offsetPath, scan.newCursor);
145
+ return scan.lines.filter((l) => l.type === "message");
146
+ }
147
+ /** Same filtering as readNewMailbox but does NOT advance the cursor. */
148
+ export function peekMailbox(mailboxDir, recipient) {
149
+ const filePath = mailboxFilePath(mailboxDir, recipient);
150
+ const offsetPath = mailboxOffsetPath(mailboxDir, recipient);
151
+ const scan = scanFromCursor(filePath, offsetPath);
152
+ if (!scan)
153
+ return [];
154
+ return scan.lines.filter((l) => l.type === "message");
155
+ }
156
+ /**
157
+ * Full-file scan (no cursor). Returns every message merged with delivery info
158
+ * from any matching DeliveryReceipt line.
159
+ */
160
+ export function listMailbox(mailboxDir, recipient) {
161
+ const filePath = mailboxFilePath(mailboxDir, recipient);
162
+ if (!existsSync(filePath))
163
+ return [];
164
+ const messages = [];
165
+ const deliveredAt = new Map();
166
+ for (const raw of readFileSync(filePath, "utf8").split("\n")) {
167
+ if (!raw.trim())
168
+ continue;
169
+ let line;
170
+ try {
171
+ line = JSON.parse(raw);
172
+ }
173
+ catch {
174
+ continue;
175
+ }
176
+ if (line.type === "message") {
177
+ messages.push(line);
178
+ }
179
+ else if (line.type === "delivery-receipt") {
180
+ deliveredAt.set(line.messageId, line.deliveredAt);
181
+ }
182
+ }
183
+ return messages.map((m) => {
184
+ const delivered = deliveredAt.get(m.id);
185
+ return delivered ? { ...m, deliveredAt: delivered } : { ...m };
186
+ });
187
+ }
188
+ //# sourceMappingURL=mailbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../../src/team/mailbox.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type TeamStatePaths } from "./state-paths.js";
2
2
  import { type TmuxApi } from "./tmux.js";
3
3
  import { type NudgeAttempt, type NudgeConfig, type NudgeSummaryEntry } from "./idle-nudge.js";
4
+ import { loadTeamConfig } from "./config.js";
4
5
  import type { Task, TeamConfig, WorkerRole } from "./types.js";
5
6
  export declare function resolveWorkerBin(role: WorkerRole): string;
6
7
  export interface StartTeamOptions {
@@ -51,11 +52,18 @@ export interface MonitorResult {
51
52
  nudges: NudgeSummaryEntry[];
52
53
  nudgeAttempts: NudgeAttempt[];
53
54
  }
54
- export declare function loadTeamConfig(paths: TeamStatePaths): TeamConfig | undefined;
55
+ export { loadTeamConfig };
55
56
  export interface PollSnapshotOptions {
56
57
  consumeOutbox?: boolean;
57
58
  }
58
59
  export declare function pollSnapshot(paths: TeamStatePaths, config: TeamConfig, tmux: TmuxApi, options?: PollSnapshotOptions): MonitorSnapshot;
60
+ /**
61
+ * Resolve whether idle-nudge should run for this monitor session.
62
+ * OFF by default. ON when explicitly enabled (the `/team` orchestration monitor
63
+ * passes `nudge: { enabled: true }`) OR when a loop mode (ralph/ultrawork/ultraqa)
64
+ * is active. Read-only polling (`team status`) passes neither signal → OFF.
65
+ */
66
+ export declare function resolveNudgeEnabled(opts: MonitorOptions, cwd: string): boolean;
59
67
  export declare function monitorTeam(opts: MonitorOptions): Promise<MonitorResult>;
60
68
  export interface ShutdownOptions {
61
69
  cwd?: string;
@@ -1,4 +1,4 @@
1
- import { existsSync, readFileSync, writeFileSync } from "node:fs";
1
+ import { existsSync, writeFileSync } from "node:fs";
2
2
  import { resolve } from "node:path";
3
3
  import { ensureTeamDirs, ensureWorkerDirs, resolveTeamPaths, resolveWorkerPaths, } from "./state-paths.js";
4
4
  import { clearAllLocks, listTasks, taskFilePath, writeTask } from "./task-store.js";
@@ -8,6 +8,8 @@ import { peekNewOutbox, readNewOutbox } from "./outbox.js";
8
8
  import { isHeartbeatStale, readHeartbeat } from "./heartbeat.js";
9
9
  import { makeTmux } from "./tmux.js";
10
10
  import { NudgeTracker } from "./idle-nudge.js";
11
+ import { loadTeamConfig } from "./config.js";
12
+ import { isLoopModeActive } from "../mode-state/paths.js";
11
13
  const ROLE_BIN = {
12
14
  claude: "claude",
13
15
  codex: "codex",
@@ -93,16 +95,9 @@ export async function startTeam(opts) {
93
95
  throw err;
94
96
  }
95
97
  }
96
- export function loadTeamConfig(paths) {
97
- if (!existsSync(paths.configFile))
98
- return undefined;
99
- try {
100
- return JSON.parse(readFileSync(paths.configFile, "utf8"));
101
- }
102
- catch {
103
- return undefined;
104
- }
105
- }
98
+ // loadTeamConfig now lives in ./config.js (leaf module) so api.ts can import it
99
+ // without depending on this orchestration module. Re-exported for back-compat.
100
+ export { loadTeamConfig };
106
101
  export function pollSnapshot(paths, config, tmux, options = {}) {
107
102
  const reader = options.consumeOutbox === true ? readNewOutbox : peekNewOutbox;
108
103
  const tasks = listTasks(paths.tasksDir);
@@ -122,6 +117,17 @@ export function pollSnapshot(paths, config, tmux, options = {}) {
122
117
  const allDone = tasks.length > 0 && tasks.every((t) => t.status === "completed" || t.status === "failed");
123
118
  return { tasks, workers, allDone };
124
119
  }
120
+ /**
121
+ * Resolve whether idle-nudge should run for this monitor session.
122
+ * OFF by default. ON when explicitly enabled (the `/team` orchestration monitor
123
+ * passes `nudge: { enabled: true }`) OR when a loop mode (ralph/ultrawork/ultraqa)
124
+ * is active. Read-only polling (`team status`) passes neither signal → OFF.
125
+ */
126
+ export function resolveNudgeEnabled(opts, cwd) {
127
+ if (opts.nudge?.enabled === true)
128
+ return true;
129
+ return isLoopModeActive(cwd);
130
+ }
125
131
  export async function monitorTeam(opts) {
126
132
  const cwd = resolve(opts.cwd ?? process.cwd());
127
133
  const tmux = opts.tmux ?? makeTmux();
@@ -132,7 +138,7 @@ export async function monitorTeam(opts) {
132
138
  const pollInterval = opts.pollIntervalMs ?? 1000;
133
139
  const timeoutMs = opts.timeoutMs ?? 600_000;
134
140
  const deadline = Date.now() + timeoutMs;
135
- const nudgeEnabled = opts.nudge?.enabled !== false; // default on; opt-out via { enabled: false }
141
+ const nudgeEnabled = resolveNudgeEnabled(opts, cwd);
136
142
  const nudgeTracker = nudgeEnabled ? new NudgeTracker(opts.nudge) : undefined;
137
143
  const nudgeAttempts = [];
138
144
  let snapshot = pollSnapshot(paths, config, tmux, { consumeOutbox: true });
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/team/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/team/runtime.ts"],"names":[],"mappings":"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"}