@damian87/omp 0.2.0 → 0.4.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 (57) hide show
  1. package/.github/skills/weighted-consensus/SKILL.md +120 -0
  2. package/README.md +59 -1
  3. package/catalog/capabilities.json +46 -0
  4. package/catalog/skills-general.json +29 -1
  5. package/dist/src/cli.d.ts +8 -0
  6. package/dist/src/cli.js +147 -3
  7. package/dist/src/cli.js.map +1 -1
  8. package/dist/src/council/config.d.ts +32 -0
  9. package/dist/src/council/config.js +84 -0
  10. package/dist/src/council/config.js.map +1 -0
  11. package/dist/src/council/engine.d.ts +19 -0
  12. package/dist/src/council/engine.js +193 -0
  13. package/dist/src/council/engine.js.map +1 -0
  14. package/dist/src/council/index.d.ts +20 -0
  15. package/dist/src/council/index.js +72 -0
  16. package/dist/src/council/index.js.map +1 -0
  17. package/dist/src/council/prompts.d.ts +32 -0
  18. package/dist/src/council/prompts.js +173 -0
  19. package/dist/src/council/prompts.js.map +1 -0
  20. package/dist/src/council/synth.d.ts +15 -0
  21. package/dist/src/council/synth.js +57 -0
  22. package/dist/src/council/synth.js.map +1 -0
  23. package/dist/src/council/types.d.ts +96 -0
  24. package/dist/src/council/types.js +4 -0
  25. package/dist/src/council/types.js.map +1 -0
  26. package/dist/src/mode-state/paths.d.ts +6 -0
  27. package/dist/src/mode-state/paths.js +12 -0
  28. package/dist/src/mode-state/paths.js.map +1 -1
  29. package/dist/src/team/api.d.ts +60 -1
  30. package/dist/src/team/api.js +101 -0
  31. package/dist/src/team/api.js.map +1 -1
  32. package/dist/src/team/config.d.ts +7 -0
  33. package/dist/src/team/config.js +16 -0
  34. package/dist/src/team/config.js.map +1 -0
  35. package/dist/src/team/mailbox.d.ts +30 -0
  36. package/dist/src/team/mailbox.js +188 -0
  37. package/dist/src/team/mailbox.js.map +1 -0
  38. package/dist/src/team/runtime.d.ts +9 -1
  39. package/dist/src/team/runtime.js +18 -12
  40. package/dist/src/team/runtime.js.map +1 -1
  41. package/dist/src/team/types.d.ts +25 -0
  42. package/dist/src/team/worker-bootstrap.js +29 -0
  43. package/dist/src/team/worker-bootstrap.js.map +1 -1
  44. package/dist/test/catalog.test.d.ts +1 -0
  45. package/dist/test/catalog.test.js +21 -0
  46. package/dist/test/catalog.test.js.map +1 -0
  47. package/dist/test/jira.test.d.ts +1 -0
  48. package/dist/test/jira.test.js +26 -0
  49. package/dist/test/jira.test.js.map +1 -0
  50. package/dist/test/lint.test.d.ts +1 -0
  51. package/dist/test/lint.test.js +9 -0
  52. package/dist/test/lint.test.js.map +1 -0
  53. package/dist/test/sync.test.d.ts +1 -0
  54. package/dist/test/sync.test.js +15 -0
  55. package/dist/test/sync.test.js.map +1 -0
  56. package/docs/plans/2026-05-29-team-messaging-and-nudge-gating-design.md +170 -0
  57. package/package.json +1 -1
@@ -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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"}
@@ -43,3 +43,28 @@ export interface OutboxMessage {
43
43
  detail?: string;
44
44
  timestamp: string;
45
45
  }
46
+ /**
47
+ * A team mailbox message (worker<->worker or worker<->leader).
48
+ * Mailbox files are append-only JSONL; delivery is tracked via separate
49
+ * append-only DeliveryReceipt lines, never by rewriting the message line.
50
+ */
51
+ export interface MailboxMessage {
52
+ type: "message";
53
+ id: string;
54
+ from: string;
55
+ to: string;
56
+ body: string;
57
+ timestamp: string;
58
+ }
59
+ /** Append-only delivery acknowledgement for a MailboxMessage. */
60
+ export interface DeliveryReceipt {
61
+ type: "delivery-receipt";
62
+ messageId: string;
63
+ deliveredAt: string;
64
+ }
65
+ /** A single line in a mailbox JSONL file. */
66
+ export type MailboxLine = MailboxMessage | DeliveryReceipt;
67
+ /** Merged view returned by listMailbox: a message with optional delivery info. */
68
+ export interface MailboxMessageView extends MailboxMessage {
69
+ deliveredAt?: string;
70
+ }
@@ -24,6 +24,22 @@ export function buildInboxMarkdown(opts) {
24
24
  to: "failed",
25
25
  claim_token: "<claim_token>",
26
26
  });
27
+ const sendToLeaderInput = JSON.stringify({
28
+ team_name: opts.teamName,
29
+ from: opts.workerName,
30
+ to: "leader",
31
+ body: "<message>",
32
+ });
33
+ const sendToPeerInput = JSON.stringify({
34
+ team_name: opts.teamName,
35
+ from: opts.workerName,
36
+ to: "<teammate>",
37
+ body: "<message>",
38
+ });
39
+ const mailboxListInput = JSON.stringify({
40
+ team_name: opts.teamName,
41
+ worker: opts.workerName,
42
+ });
27
43
  return [
28
44
  "## REQUIRED: Task Lifecycle Commands",
29
45
  "You MUST run these commands. Do NOT skip any step.",
@@ -47,6 +63,19 @@ export function buildInboxMarkdown(opts) {
47
63
  "## Description",
48
64
  opts.task.description,
49
65
  "",
66
+ "## Messaging",
67
+ "You can message the leader OR any teammate directly. The recipient is auto-nudged.",
68
+ "Unknown recipient names are rejected with `unknown_recipient`.",
69
+ "",
70
+ "Message the leader:",
71
+ ` omp team api send-message --input '${sendToLeaderInput}' --json`,
72
+ "",
73
+ "Message a teammate (replace <teammate> with their worker name):",
74
+ ` omp team api send-message --input '${sendToPeerInput}' --json`,
75
+ "",
76
+ "Check your mailbox:",
77
+ ` omp team api mailbox-list --input '${mailboxListInput}' --json`,
78
+ "",
50
79
  ].join("\n");
51
80
  }
52
81
  //# sourceMappingURL=worker-bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-bootstrap.js","sourceRoot":"","sources":["../../../src/team/worker-bootstrap.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,UAAU;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,UAAU;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,aAAa;QACnB,EAAE,EAAE,WAAW;QACf,WAAW,EAAE,eAAe;QAC5B,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,UAAU;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,aAAa;QACnB,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,eAAe;KAC7B,CAAC,CAAC;IACH,OAAO;QACL,sCAAsC;QACtC,oDAAoD;QACpD,EAAE;QACF,qBAAqB;QACrB,uCAAuC,UAAU,UAAU;QAC3D,4CAA4C;QAC5C,EAAE;QACF,iCAAiC;QACjC,EAAE;QACF,iDAAiD;QACjD,mDAAmD,qBAAqB,UAAU;QAClF,EAAE;QACF,gBAAgB;QAChB,mDAAmD,iBAAiB,UAAU;QAC9E,EAAE;QACF,oBAAoB;QACpB,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;QAC1B,WAAW,IAAI,CAAC,UAAU,EAAE;QAC5B,EAAE;QACF,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW;QACrB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"worker-bootstrap.js","sourceRoot":"","sources":["../../../src/team/worker-bootstrap.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,UAAU;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,UAAU;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,aAAa;QACnB,EAAE,EAAE,WAAW;QACf,WAAW,EAAE,eAAe;QAC5B,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,UAAU;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,aAAa;QACnB,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,eAAe;KAC7B,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,IAAI,EAAE,IAAI,CAAC,UAAU;QACrB,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,IAAI,EAAE,IAAI,CAAC,UAAU;QACrB,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;QACtC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,MAAM,EAAE,IAAI,CAAC,UAAU;KACxB,CAAC,CAAC;IACH,OAAO;QACL,sCAAsC;QACtC,oDAAoD;QACpD,EAAE;QACF,qBAAqB;QACrB,uCAAuC,UAAU,UAAU;QAC3D,4CAA4C;QAC5C,EAAE;QACF,iCAAiC;QACjC,EAAE;QACF,iDAAiD;QACjD,mDAAmD,qBAAqB,UAAU;QAClF,EAAE;QACF,gBAAgB;QAChB,mDAAmD,iBAAiB,UAAU;QAC9E,EAAE;QACF,oBAAoB;QACpB,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;QAC1B,WAAW,IAAI,CAAC,UAAU,EAAE;QAC5B,EAAE;QACF,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW;QACrB,EAAE;QACF,cAAc;QACd,oFAAoF;QACpF,gEAAgE;QAChE,EAAE;QACF,qBAAqB;QACrB,yCAAyC,iBAAiB,UAAU;QACpE,EAAE;QACF,iEAAiE;QACjE,yCAAyC,eAAe,UAAU;QAClE,EAAE;QACF,qBAAqB;QACrB,yCAAyC,gBAAgB,UAAU;QACnE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { loadCapabilityCatalog, loadSkillCatalog, validateCatalog } from '../src/catalog.js';
4
+ test('catalog contains approved MVP skills and valid projections', () => {
5
+ const catalog = loadSkillCatalog();
6
+ assert.deepEqual(validateCatalog(), []);
7
+ const names = catalog.skills.map((skill) => skill.name);
8
+ assert.deepEqual(names, ['grill', 'verify', 'jira-ticket', 'code-review', 'qa']);
9
+ assert.ok(catalog.projectionCommands.includes('grill-me'));
10
+ assert.ok(catalog.projectionCommands.includes('team'));
11
+ assert.ok(catalog.projectionCommands.includes('ralph'));
12
+ });
13
+ test('team and ralph stay thin handoff capabilities for Copilot', () => {
14
+ const capabilities = loadCapabilityCatalog();
15
+ for (const name of ['team', 'ralph']) {
16
+ const capability = capabilities.capabilities.find((entry) => entry.name === name);
17
+ assert.ok(capability, `${name} capability exists`);
18
+ assert.equal(capability.support.copilot, 'thin-handoff');
19
+ }
20
+ });
21
+ //# sourceMappingURL=catalog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../test/catalog.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE7F,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;IACrE,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAClF,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { commentPayload, createIssuePayload, discoverJiraConfig, isJiraConfigured, linkFallbackPayload, safeUpdatePayload, transitionFallbackPayload } from '../src/jira.js';
4
+ test('jira config discovery supports env and configuration detection', () => {
5
+ const config = discoverJiraConfig('/tmp/no-such-root', {
6
+ JIRA_SITE_URL: 'https://example.atlassian.net',
7
+ JIRA_EMAIL: 'agent@example.com',
8
+ JIRA_API_TOKEN: 'secret-token',
9
+ JIRA_PROJECT_KEY: 'OMC'
10
+ });
11
+ assert.equal(config.siteUrl, 'https://example.atlassian.net');
12
+ assert.equal(config.projectKey, 'OMC');
13
+ assert.equal(isJiraConfigured(config), true);
14
+ });
15
+ test('jira adapter renders create, comment, update, and fallback payloads', () => {
16
+ const config = discoverJiraConfig('/tmp/no-such-root', { JIRA_PROJECT_KEY: 'OMC' });
17
+ const create = createIssuePayload(config, { summary: 'Implement slice', description: 'Body' });
18
+ assert.equal(create.operation, 'create');
19
+ assert.equal(create.configured, false);
20
+ assert.match(JSON.stringify(create.body), /Implement slice/);
21
+ assert.equal(commentPayload(config, 'OMC-1', 'Evidence').operation, 'comment');
22
+ assert.equal(safeUpdatePayload(config, 'OMC-1', { summary: 'New' }).method, 'PUT');
23
+ assert.equal(transitionFallbackPayload(config, 'OMC-1', 'Done').configured, false);
24
+ assert.equal(linkFallbackPayload(config, 'OMC-1', 'OMC-2').operation, 'link-fallback');
25
+ });
26
+ //# sourceMappingURL=jira.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira.test.js","sourceRoot":"","sources":["../../test/jira.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE7K,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,MAAM,MAAM,GAAG,kBAAkB,CAAC,mBAAmB,EAAE;QACrD,aAAa,EAAE,+BAA+B;QAC9C,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,cAAc;QAC9B,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAG,kBAAkB,CAAC,mBAAmB,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpF,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAE7D,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AACzF,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { lintSkills } from '../src/lint.js';
4
+ import { workspaceRoot } from '../src/project.js';
5
+ test('workspace skills satisfy Phase 1 catalog lint', () => {
6
+ const issues = lintSkills(workspaceRoot('..'));
7
+ assert.deepEqual(issues.filter((issue) => issue.level === 'error'), []);
8
+ });
9
+ //# sourceMappingURL=lint.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.test.js","sourceRoot":"","sources":["../../test/lint.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { projectCopilotCommands } from '../src/sync.js';
4
+ test('dry-run projects skill aliases and thin runtime handoffs', () => {
5
+ const files = projectCopilotCommands();
6
+ const paths = files.map((file) => file.path);
7
+ assert.ok(paths.includes('.github/copilot/commands/grill.md'));
8
+ assert.ok(paths.includes('.github/copilot/commands/grill-me.md'));
9
+ assert.ok(paths.includes('.github/copilot/commands/team.md'));
10
+ assert.ok(paths.includes('.github/copilot/commands/ralph.md'));
11
+ const team = files.find((file) => file.path.endsWith('/team.md'));
12
+ assert.ok(team?.content.includes('thin capability handoff'));
13
+ assert.ok(team?.content.includes('not a Copilot-native durable runtime'));
14
+ });
15
+ //# sourceMappingURL=sync.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../test/sync.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACpE,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7C,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC"}