@cliangdev/conductor 0.18.0 → 0.20.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.
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: conductor-publisher
3
+ description: Schedules and tracks a Post on a Conductor publishing Workflow through the MCP tools — gathers the copy, destinations and timing, checks the content before anything is submitted, creates the Post with create_post, reports the confirmation table, and follows it through review and publishing with get_post_status. Use when someone asks to post, schedule or publish content to a connected account, or to check where a scheduled post stands.
4
+ user-invocable: true
5
+ allowed-tools: mcp__conductor__*, AskUserQuestion, Read, Glob, Grep
6
+ ---
7
+
8
+ # Conductor Publisher
9
+
10
+ You take a piece of content that is already written and get it out through Conductor: onto the
11
+ calendar, past the review gate, and to each destination. You do not write or rewrite the content —
12
+ that is an earlier step's job — and you never move something a person has not asked to move.
13
+
14
+ The pipeline is generic: any Work Item on a Workflow that declares publishable asset types goes
15
+ through the same review gate, the same media rules and the same schedule, whatever the platforms
16
+ are. One instance of it is a MARKETING Post going to Instagram and TikTok; another is a project's
17
+ own lifecycle that publishes somewhere else. Read the rules below as rules about the pipeline, and
18
+ the platform names as examples.
19
+
20
+ ## Step 1 — Gather three things, and ask rather than guess
21
+
22
+ 1. **The copy** — inline, or a file path you `Read`. Keep it exactly as given.
23
+ 2. **The destinations** — which platforms, which account on each, and which format (feed, reel or
24
+ story — see below) when a platform offers more than one. If the person did not name the
25
+ platforms, ask; never assume "everywhere".
26
+ 3. **The timing** — a specific time in a named timezone, "as soon as possible", or "next free slot".
27
+ With nothing said, default to scheduling (the earliest time the destinations accept, rounded to
28
+ the quarter-hour), never to publishing immediately.
29
+
30
+ Also note any media the person handed you: local paths or public URLs, in the order they should
31
+ appear. Media that must be measured (video) is measured by the tool; you do not need dimensions.
32
+
33
+ ### Formats
34
+
35
+ Some platforms publish more than one surface. Ask which one the person means when it is not
36
+ obvious from what they said — the destination's `formats` in `list_publish_targets` is the one
37
+ source of what a given account actually offers, so check it rather than assuming every platform
38
+ offers all three:
39
+
40
+ - **feed** — the platform's ordinary post (an image, a video, a carousel, a photo set). The default
41
+ when nobody says otherwise.
42
+ - **reel** — one vertical video. One instance of this is Facebook or Instagram; a reel is never a
43
+ carousel or a set of photos.
44
+ - **story** — exactly one image or clip, gone after 24 hours, with no caption at all (the platform
45
+ drops it even if you send one) — do not treat a story caption as lost work, it was never going
46
+ to show. `create_post` and `set_publish_targets` fire a story at its scheduled time themselves,
47
+ since neither Facebook nor Instagram can schedule one, so its lead time is short (about a
48
+ minute) rather than the platform's own scheduling window.
49
+
50
+ ## Step 2 — Look before you post
51
+
52
+ Call `list_publish_targets` first and group the accounts by platform. Then:
53
+
54
+ - A destination with no connected account is offered as a **manual** destination: Conductor will
55
+ schedule it, hold it to the same review and media rules, and at fire time ask a person to post
56
+ it by hand and paste the link. Say so, and use it only if the person wants it.
57
+ - An account whose `healthStatus` is `UNHEALTHY` will not publish; say so and offer the others.
58
+
59
+ ### Options
60
+
61
+ Every platform accepts a different bag of per-destination options, and the set changes as
62
+ connectors gain capabilities — so read `optionKeys` off that destination's row in
63
+ `list_publish_targets` and use exactly those keys. Never guess a key by analogy with another
64
+ platform, and never invent one because it sounds plausible; an unrecognized key is silently
65
+ dropped rather than acted on. TikTok needs a `privacyLevel` from that account's
66
+ `privacyLevelOptions` before it will publish at all; nothing else needs an option to go out, so
67
+ absent a stated preference, leave every other option unset rather than filling in a default.
68
+
69
+ Then run this checklist against the copy, per destination, and **halt on any failure** — report it
70
+ and ask how to proceed. Do not fix content yourself.
71
+
72
+ - Length: Instagram and TikTok captions ≤ 2200 characters; YouTube title ≤ 100, description ≤ 5000
73
+ bytes; a TikTok photo post title ≤ 90.
74
+ - Media: Instagram and TikTok refuse a post with no media; YouTube needs exactly one video; TikTok
75
+ photo posts take JPEG/WEBP only. A destination that needs different media than the rest gets its
76
+ own `assetIds`.
77
+ - Hashtags and mentions are part of the copy: do not add, remove or reorder them.
78
+ - Anything the person marked as a question, placeholder or TODO means the copy is not final.
79
+
80
+ The server enforces the media and schedule rules again at the gate; this pass is so the person
81
+ hears about a problem from you, in one message, rather than as a blocker after the fact.
82
+
83
+ ## Step 3 — Create it: one call
84
+
85
+ Call `create_post` with the copy as `text`, the media list, the destinations as
86
+ `{platform, account, format}` (omit `account` for a manual destination, `format` for feed), the
87
+ schedule if one was given, `reviewers` if the person named who should approve, and `submit: true`
88
+ (the default) unless the person asked for a draft.
89
+
90
+ Read the result before saying anything:
91
+
92
+ - `blockers` non-empty → nothing was submitted. Show every blocker verbatim, with its destination,
93
+ and ask. When the fix is yours to make (a different account, a different file, a later time),
94
+ make it with `set_publish_targets`, `upload_asset` or `update_work_item`, then `submit_post`.
95
+ - `warnings` → show them; they do not stop anything.
96
+ - `nextStep` tells you what happens now. Repeat it to the person in your own words.
97
+
98
+ ## Step 4 — The confirmation table is the last line of defense
99
+
100
+ End every successful run with a table, one row per destination:
101
+
102
+ | Post | Destination | Account | When | State |
103
+ |---|---|---|---|---|
104
+ | MK-12 | Instagram | @acme | 2026-09-04 14:15 Europe/Berlin | pending review |
105
+
106
+ Under it, say in one sentence who has to act next — "waiting for a reviewer; approval schedules it
107
+ automatically" — and, where a TikTok destination is involved, that the creator records their consent
108
+ in the Conductor UI, which no tool can do for them. A Post ID you cannot show in this table is a Post
109
+ you cannot claim to have created.
110
+
111
+ ## Step 5 — Following up
112
+
113
+ - **Where does it stand?** `get_post_status`: status, every destination with its state, permalink
114
+ or `errorMessage`, and the gate's current blockers. Show permalinks when they exist.
115
+ - **Something failed.** Show `errorMessage` verbatim. If the cause is on the platform side (a token,
116
+ a rate limit), offer `retry_failed_publish_targets`; if the cause is the content, that is a
117
+ change for the person to decide.
118
+ - **A manual destination is due.** `get_post_status` shows it `AWAITING_MANUAL`. Tell the person
119
+ what to post where; when they give you the live URL, record it with `complete_manual_publish`.
120
+ - **Approving.** Only an assigned reviewer's own user key can `submit_review`. If that is the key you
121
+ hold and the person asked you to approve, do it and report `autoTransition` — on a reviewed
122
+ Workflow an approval schedules the Post in the same call. Never approve something nobody asked
123
+ you to approve.
124
+
125
+ ## Never
126
+
127
+ - Publish immediately when no time was given; schedule instead.
128
+ - Rewrite, trim or "improve" copy to fit — halt and ask.
129
+ - Report success without a Post ID and the table.
130
+ - Record TikTok consent, or suggest a way around it.
@@ -164,6 +164,10 @@
164
164
  {
165
165
  "name": "conductor-ux-ui-design",
166
166
  "description": "Expert UX/UI design guidance for creating simple, user-focused interfaces. Applies human-centered design principles."
167
+ },
168
+ {
169
+ "name": "conductor-publisher",
170
+ "description": "Schedules and tracks a Post through the publishing pipeline: gathers copy, destinations and timing, checks content, creates it with create_post, reports the confirmation table, follows it through review and publishing."
167
171
  }
168
172
  ]
169
173
  },
@@ -586,12 +590,12 @@
586
590
  },
587
591
  {
588
592
  "name": "list_publish_targets",
589
- "description": "List the project's connected publishing accounts, and optionally a Work Item's selected targets with their publish state, permalink and error.",
593
+ "description": "Accounts a project can publish to (option keys and post formats per platform), plus a Work Item's selected targets and outcomes.",
590
594
  "category": "marketing"
591
595
  },
592
596
  {
593
597
  "name": "set_publish_targets",
594
- "description": "Replace which connected accounts a Work Item publishes to, with per-target publish options.",
598
+ "description": "Replace which connected accounts a Work Item publishes to, with per-target format, media and publish options.",
595
599
  "category": "marketing",
596
600
  "requiredParams": [
597
601
  "issueId",
@@ -600,12 +604,10 @@
600
604
  },
601
605
  {
602
606
  "name": "upload_asset",
603
- "description": "Attach a local file to a Work Item as a file Asset in one call (mint, upload, confirm).",
607
+ "description": "Attach a media file to a Work Item from a local path or a public URL in one call; MP4/MOV are measured here.",
604
608
  "category": "marketing",
605
609
  "requiredParams": [
606
- "issueId",
607
- "filePath",
608
- "type"
610
+ "issueId"
609
611
  ]
610
612
  },
611
613
  {
@@ -625,6 +627,68 @@
625
627
  "requiredParams": [
626
628
  "issueId"
627
629
  ]
630
+ },
631
+ {
632
+ "name": "list_assets",
633
+ "description": "Every Asset on a Work Item \u2014 uploaded media and recorded links, with the ids set_publish_targets takes.",
634
+ "category": "marketing",
635
+ "requiredParams": [
636
+ "issueId"
637
+ ]
638
+ },
639
+ {
640
+ "name": "create_post",
641
+ "description": "Create, schedule and submit a Post in one call: caption, media (paths or URLs), destinations by account name and format, fire time, reviewers.",
642
+ "category": "marketing",
643
+ "requiredParams": [
644
+ "text",
645
+ "targets"
646
+ ]
647
+ },
648
+ {
649
+ "name": "get_post_status",
650
+ "description": "Where a Post stands: status, every destination's outcome and format, the gate's blockers and warnings, review and consent state, next step.",
651
+ "category": "marketing",
652
+ "requiredParams": [
653
+ "postId"
654
+ ]
655
+ },
656
+ {
657
+ "name": "submit_post",
658
+ "description": "Hand a Post to review: assign reviewers and take the move the gate names, if nothing blocks it.",
659
+ "category": "marketing",
660
+ "requiredParams": [
661
+ "postId"
662
+ ]
663
+ },
664
+ {
665
+ "name": "list_posts",
666
+ "description": "Posts across every publishing Workflow with their destinations and formats, filtered by status, schedule window or platform.",
667
+ "category": "marketing",
668
+ "requiredParams": []
669
+ },
670
+ {
671
+ "name": "submit_review",
672
+ "description": "Record an approve / request_changes verdict on a Post as this API key's user (an assigned REVIEWER). Approval schedules the Post.",
673
+ "category": "marketing",
674
+ "requiredParams": [
675
+ "postId",
676
+ "verdict"
677
+ ]
678
+ },
679
+ {
680
+ "name": "get_post_analytics",
681
+ "description": "Views, likes, comments and shares per destination of a Post, as the platform reports them, with snapshots over time.",
682
+ "category": "marketing",
683
+ "requiredParams": [
684
+ "postId"
685
+ ]
686
+ },
687
+ {
688
+ "name": "list_top_posts",
689
+ "description": "The project's best-performing published destinations ranked by one metric.",
690
+ "category": "marketing",
691
+ "requiredParams": []
628
692
  }
629
693
  ]
630
694
  }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Width, height and duration of an MP4/MOV file, read from its `moov` atom.
3
+ *
4
+ * The backend deliberately ships no ffprobe or container parser (see `MediaMetadata` there) and asks the
5
+ * client for a video's measurements at mint — the browser measures with an `HTMLVideoElement`. This is
6
+ * the MCP server's equivalent: an ISO base-media-file box walk that reads two atoms and nothing else.
7
+ * It handles the two layouts that matter (`moov` before or after `mdat`), 32- and 64-bit box sizes,
8
+ * version 0 and 1 headers, and the rotation matrix a phone writes when it records portrait video in a
9
+ * landscape track. Anything it cannot read returns `null` fields rather than a guess: a wrong number
10
+ * would pass the approval gate and fail at the platform.
11
+ */
12
+ export interface VideoProbe {
13
+ width: number | null;
14
+ height: number | null;
15
+ durationSeconds: number | null;
16
+ }
17
+ export declare function probeVideo(filePath: string): Promise<VideoProbe>;
18
+ /** Probe an in-memory file — the same walk, for callers that already hold the bytes (and for tests). */
19
+ export declare function probeVideoBuffer(bytes: Buffer): VideoProbe;
20
+ //# sourceMappingURL=mp4-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mp4-probe.d.ts","sourceRoot":"","sources":["../../src/lib/mp4-probe.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAOD,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgCtE;AAED,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAK1D"}
@@ -0,0 +1,163 @@
1
+ import { open } from 'node:fs/promises';
2
+ const EMPTY = { width: null, height: null, durationSeconds: null };
3
+ /** How much of a `moov` box this is willing to read into memory. Real ones are kilobytes to a few MB. */
4
+ const MAX_MOOV_BYTES = 64 * 1024 * 1024;
5
+ export async function probeVideo(filePath) {
6
+ const handle = await open(filePath, 'r');
7
+ try {
8
+ const { size: fileSize } = await handle.stat();
9
+ let offset = 0;
10
+ while (offset + 8 <= fileSize) {
11
+ const header = Buffer.alloc(16);
12
+ const { bytesRead } = await handle.read(header, 0, 16, offset);
13
+ if (bytesRead < 8)
14
+ break;
15
+ let boxSize = header.readUInt32BE(0);
16
+ const type = header.toString('latin1', 4, 8);
17
+ let headerSize = 8;
18
+ if (boxSize === 1) {
19
+ if (bytesRead < 16)
20
+ break;
21
+ boxSize = Number(header.readBigUInt64BE(8));
22
+ headerSize = 16;
23
+ }
24
+ else if (boxSize === 0) {
25
+ boxSize = fileSize - offset;
26
+ }
27
+ if (boxSize < headerSize)
28
+ break;
29
+ if (type === 'moov') {
30
+ const bodySize = Math.min(boxSize - headerSize, MAX_MOOV_BYTES);
31
+ const body = Buffer.alloc(bodySize);
32
+ await handle.read(body, 0, bodySize, offset + headerSize);
33
+ return parseMoov(body);
34
+ }
35
+ offset += boxSize;
36
+ }
37
+ return EMPTY;
38
+ }
39
+ finally {
40
+ await handle.close();
41
+ }
42
+ }
43
+ /** Probe an in-memory file — the same walk, for callers that already hold the bytes (and for tests). */
44
+ export function probeVideoBuffer(bytes) {
45
+ for (const box of boxes(bytes, 0, bytes.length)) {
46
+ if (box.type === 'moov')
47
+ return parseMoov(bytes.subarray(box.bodyStart, box.end));
48
+ }
49
+ return EMPTY;
50
+ }
51
+ function* boxes(buf, start, end) {
52
+ let offset = start;
53
+ while (offset + 8 <= end) {
54
+ let size = buf.readUInt32BE(offset);
55
+ const type = buf.toString('latin1', offset + 4, offset + 8);
56
+ let headerSize = 8;
57
+ if (size === 1) {
58
+ if (offset + 16 > end)
59
+ return;
60
+ size = Number(buf.readBigUInt64BE(offset + 8));
61
+ headerSize = 16;
62
+ }
63
+ else if (size === 0) {
64
+ size = end - offset;
65
+ }
66
+ if (size < headerSize || offset + size > end)
67
+ return;
68
+ yield { type, bodyStart: offset + headerSize, end: offset + size };
69
+ offset += size;
70
+ }
71
+ }
72
+ function parseMoov(moov) {
73
+ let durationSeconds = null;
74
+ let width = null;
75
+ let height = null;
76
+ for (const box of boxes(moov, 0, moov.length)) {
77
+ if (box.type === 'mvhd' && durationSeconds === null) {
78
+ durationSeconds = parseMvhd(moov.subarray(box.bodyStart, box.end));
79
+ }
80
+ else if (box.type === 'trak' && width === null) {
81
+ const dims = parseTrak(moov.subarray(box.bodyStart, box.end));
82
+ if (dims) {
83
+ width = dims.width;
84
+ height = dims.height;
85
+ }
86
+ }
87
+ }
88
+ return { width, height, durationSeconds };
89
+ }
90
+ function parseMvhd(body) {
91
+ if (body.length < 4)
92
+ return null;
93
+ const version = body.readUInt8(0);
94
+ try {
95
+ if (version === 1) {
96
+ const timescale = body.readUInt32BE(20);
97
+ const duration = Number(body.readBigUInt64BE(24));
98
+ return timescale > 0 ? round(duration / timescale) : null;
99
+ }
100
+ const timescale = body.readUInt32BE(12);
101
+ const duration = body.readUInt32BE(16);
102
+ return timescale > 0 ? round(duration / timescale) : null;
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
108
+ /** The first track that carries a picture, with its rotation matrix applied. */
109
+ function parseTrak(trak) {
110
+ let dims = null;
111
+ let isVideo = false;
112
+ for (const box of boxes(trak, 0, trak.length)) {
113
+ if (box.type === 'tkhd') {
114
+ dims = parseTkhd(trak.subarray(box.bodyStart, box.end));
115
+ }
116
+ else if (box.type === 'mdia') {
117
+ for (const inner of boxes(trak, box.bodyStart, box.end)) {
118
+ if (inner.type === 'hdlr' && inner.end - inner.bodyStart >= 12) {
119
+ isVideo = trak.toString('latin1', inner.bodyStart + 8, inner.bodyStart + 12) === 'vide';
120
+ }
121
+ }
122
+ }
123
+ }
124
+ if (!dims || dims.width === 0 || dims.height === 0)
125
+ return null;
126
+ if (!isVideo && dims.width === 0)
127
+ return null;
128
+ return dims.rotated ? { width: dims.height, height: dims.width } : { width: dims.width, height: dims.height };
129
+ }
130
+ function parseTkhd(body) {
131
+ if (body.length < 4)
132
+ return null;
133
+ const version = body.readUInt8(0);
134
+ // After version/flags: creation, modification, track id, reserved, duration — 20 bytes in v0, 32 in v1.
135
+ const afterDuration = version === 1 ? 4 + 32 : 4 + 20;
136
+ // Then 8 reserved, 2 layer, 2 alternate group, 2 volume, 2 reserved = 16, then the 36-byte matrix.
137
+ const matrixStart = afterDuration + 16;
138
+ const widthStart = matrixStart + 36;
139
+ if (body.length < widthStart + 8)
140
+ return null;
141
+ try {
142
+ const a = fixed16(body.readInt32BE(matrixStart));
143
+ const b = fixed16(body.readInt32BE(matrixStart + 4));
144
+ const c = fixed16(body.readInt32BE(matrixStart + 12));
145
+ const d = fixed16(body.readInt32BE(matrixStart + 16));
146
+ const width = Math.round(body.readUInt32BE(widthStart) / 65536);
147
+ const height = Math.round(body.readUInt32BE(widthStart + 4) / 65536);
148
+ // A quarter turn leaves the diagonal at zero and the off-diagonal at ±1: the stored width is then
149
+ // the picture's height, which is what a platform will see.
150
+ const rotated = Math.abs(a) < 0.001 && Math.abs(d) < 0.001 && Math.abs(b) > 0.5 && Math.abs(c) > 0.5;
151
+ return { width, height, rotated };
152
+ }
153
+ catch {
154
+ return null;
155
+ }
156
+ }
157
+ function fixed16(raw) {
158
+ return raw / 65536;
159
+ }
160
+ function round(seconds) {
161
+ return Math.round(seconds * 1000) / 1000;
162
+ }
163
+ //# sourceMappingURL=mp4-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mp4-probe.js","sourceRoot":"","sources":["../../src/lib/mp4-probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAmBvC,MAAM,KAAK,GAAe,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAA;AAE9E,yGAAyG;AACzG,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAEvC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAC9C,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,OAAO,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;YAC9D,IAAI,SAAS,GAAG,CAAC;gBAAE,MAAK;YACxB,IAAI,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5C,IAAI,UAAU,GAAG,CAAC,CAAA;YAClB,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,IAAI,SAAS,GAAG,EAAE;oBAAE,MAAK;gBACzB,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC3C,UAAU,GAAG,EAAE,CAAA;YACjB,CAAC;iBAAM,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;YAC7B,CAAC;YACD,IAAI,OAAO,GAAG,UAAU;gBAAE,MAAK;YAC/B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,EAAE,cAAc,CAAC,CAAA;gBAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBACnC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,CAAA;gBACzD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC;YACD,MAAM,IAAI,OAAO,CAAA;QACnB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAQD,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAW,EAAE,KAAa,EAAE,GAAW;IACrD,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,OAAO,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;QAC3D,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,MAAM,GAAG,EAAE,GAAG,GAAG;gBAAE,OAAM;YAC7B,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YAC9C,UAAU,GAAG,EAAE,CAAA;QACjB,CAAC;aAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,GAAG,GAAG,MAAM,CAAA;QACrB,CAAC;QACD,IAAI,IAAI,GAAG,UAAU,IAAI,MAAM,GAAG,IAAI,GAAG,GAAG;YAAE,OAAM;QACpD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,CAAA;QAClE,MAAM,IAAI,IAAI,CAAA;IAChB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,eAAe,GAAkB,IAAI,CAAA;IACzC,IAAI,KAAK,GAAkB,IAAI,CAAA;IAC/B,IAAI,MAAM,GAAkB,IAAI,CAAA;IAChC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YACpD,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACpE,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7D,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBAClB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC;QACH,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;YACjD,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC3D,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACtC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,GAA+D,IAAI,CAAA;IAC3E,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACzD,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;oBAC/D,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,KAAK,MAAM,CAAA;gBACzF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/D,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;AAC/G,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACjC,wGAAwG;IACxG,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACrD,mGAAmG;IACnG,MAAM,WAAW,GAAG,aAAa,GAAG,EAAE,CAAA;IACtC,MAAM,UAAU,GAAG,WAAW,GAAG,EAAE,CAAA;IACnC,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC7C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAA;QAChD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAA;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;QACpE,kGAAkG;QAClG,2DAA2D;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QACpG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,GAAG,GAAG,KAAK,CAAA;AACpB,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;AAC1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-assets.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-assets.ts"],"names":[],"mappings":"AA0CA,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAmCD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;AAE/D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,aAAa,CA4Cf;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,GACrB;IAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CA0B9D"}
1
+ {"version":3,"file":"plugin-assets.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-assets.ts"],"names":[],"mappings":"AA2CA,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAmCD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;AAE/D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,aAAa,CA4Cf;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,GACrB;IAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CA0B9D"}
@@ -10,6 +10,7 @@ const PLUGIN_FILES = [
10
10
  'skills/conductor-ux-ui-design/SKILL.md',
11
11
  'skills/conductor-ux-ui-design/references/design-tokens.md',
12
12
  'skills/conductor-coder/SKILL.md',
13
+ 'skills/conductor-publisher/SKILL.md',
13
14
  ];
14
15
  // Paths removed in previous versions — deleted on `conductor init` to clean up stale installs.
15
16
  const LEGACY_PATHS = [
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-assets.js","sourceRoot":"","sources":["../../src/lib/plugin-assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-assets.js","sourceRoot":"","sources":["../../src/lib/plugin-assets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAm6BA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAupBlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AA6iCA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAqtBlD"}