@cliangdev/conductor 0.17.0 → 0.19.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.
@@ -7,6 +7,16 @@ export interface PublishTargetSelection {
7
7
  */
8
8
  connectionId?: string | null;
9
9
  publishOptions?: Record<string, unknown>;
10
+ /**
11
+ * Copy for this destination alone, replacing the Post's caption here. Omitted means the Post's own —
12
+ * and, because this is a set-replace, omitting it also clears an override already stored.
13
+ */
14
+ captionOverride?: string | null;
15
+ /**
16
+ * An ordered subset of the Post's uploaded media this destination publishes. Omitted or empty means it
17
+ * inherits the Post's whole set. Order is content: Instagram crops a carousel to its first item.
18
+ */
19
+ assetIds?: string[];
10
20
  }
11
21
  export declare function listPublishTargets(params: {
12
22
  issueId?: string;
@@ -26,8 +36,9 @@ export declare function setPublishTargets(params: {
26
36
  */
27
37
  export declare function uploadAsset(params: {
28
38
  issueId: string;
29
- filePath: string;
30
- type: string;
39
+ filePath?: string;
40
+ url?: string;
41
+ type?: string;
31
42
  label?: string;
32
43
  width?: number;
33
44
  height?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"marketing.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/marketing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AA+DrC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC;AAqBD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAAE,EAC9D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlC;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8ElC;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACtF,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAalC"}
1
+ {"version":3,"file":"marketing.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/marketing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AA+DrC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAqBD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC;AAwDD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAAE,EAC9D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlC;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmBlC;AAgHD,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACtF,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAalC"}
@@ -1,5 +1,7 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { basename, extname } from 'node:path';
1
+ import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { basename, extname, join } from 'node:path';
4
+ import { probeVideo } from '../../lib/mp4-probe.js';
3
5
  import { apiGet, apiPost, apiPut, apiDelete, putBytes } from '../api.js';
4
6
  /**
5
7
  * The publishing pipeline for a Post, end to end from an agent: which connected accounts a project can
@@ -57,12 +59,61 @@ function missingVideoMeasurements(contentType, asset) {
57
59
  return ['width', 'height', 'durationSeconds'].filter((field) => asset[field] === undefined || asset[field] === null);
58
60
  }
59
61
  export async function listPublishTargets(params, config) {
60
- const available = await apiGet(`${V2_PROJECT(config)}/publish-targets`, config);
62
+ const accounts = await apiGet(`${V2_PROJECT(config)}/publish-targets`, config);
61
63
  if (!params.issueId) {
62
- return { available };
64
+ return { accounts };
63
65
  }
64
66
  const selected = await apiGet(`${workItemBase(config, params.issueId)}/publish-targets`, config);
65
- return { available, selected };
67
+ return { accounts, selected };
68
+ }
69
+ /**
70
+ * The asset type a file on this Work Item is recorded under when the caller did not say: the first one
71
+ * its Workflow declares. The UI makes the same choice — on a publishing Workflow the type changes nothing
72
+ * a person can see, and asking an agent to name `instagram_post` for a file bound for Facebook was the
73
+ * kind of magic string that made the pipeline hard to drive.
74
+ */
75
+ async function defaultAssetType(config, issueId) {
76
+ const item = await apiGet(workItemBase(config, issueId), config);
77
+ const slug = item.workflow;
78
+ const workflows = await apiGet(`/api/v1/projects/${config.projectId}/workflows?lifecycle=true`, config);
79
+ const bound = (Array.isArray(workflows) ? workflows : []).find((w) => w['slug'] === slug);
80
+ const def = bound?.['definition'];
81
+ const types = def?.['asset_types'] ?? [];
82
+ if (types.length === 0) {
83
+ throw new Error(`Workflow ${slug ?? '(unknown)'} declares no asset types, so a file cannot be attached to this Work Item.`);
84
+ }
85
+ return types[0];
86
+ }
87
+ /**
88
+ * Fetches a public URL to a temp file so it can go through the same mint → PUT → confirm path a local file
89
+ * does. The server never fetches a URL itself; this runs on the machine the MCP server runs on.
90
+ */
91
+ async function downloadToTemp(url) {
92
+ let parsed;
93
+ try {
94
+ parsed = new URL(url);
95
+ }
96
+ catch {
97
+ throw new Error(`"${url}" is not a valid URL`);
98
+ }
99
+ if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {
100
+ throw new Error(`Only http(s) URLs can be fetched, not ${parsed.protocol}`);
101
+ }
102
+ const response = await fetch(parsed);
103
+ if (!response.ok) {
104
+ throw new Error(`Fetching ${url} failed: HTTP ${response.status}`);
105
+ }
106
+ const dir = await mkdtemp(join(tmpdir(), 'conductor-media-'));
107
+ let name = basename(parsed.pathname) || 'download';
108
+ const headerType = response.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase() ?? null;
109
+ if (!extname(name) && headerType) {
110
+ const ext = Object.entries(MEDIA_TYPES).find(([, type]) => type === headerType)?.[0];
111
+ if (ext)
112
+ name += ext;
113
+ }
114
+ const filePath = join(dir, name);
115
+ await writeFile(filePath, new Uint8Array(await response.arrayBuffer()));
116
+ return { filePath, contentType: headerType, cleanup: () => rm(dir, { recursive: true, force: true }) };
66
117
  }
67
118
  export async function setPublishTargets(params, config) {
68
119
  if (!Array.isArray(params.targets)) {
@@ -81,6 +132,27 @@ export async function setPublishTargets(params, config) {
81
132
  * did create.
82
133
  */
83
134
  export async function uploadAsset(params, config) {
135
+ if (!params.filePath && !params.url) {
136
+ throw new Error('Pass filePath (a file on this machine) or url (a public http(s) URL).');
137
+ }
138
+ let filePath = params.filePath;
139
+ let cleanup;
140
+ let fetchedType = null;
141
+ if (!params.filePath && params.url) {
142
+ const downloaded = await downloadToTemp(params.url);
143
+ filePath = downloaded.filePath;
144
+ cleanup = downloaded.cleanup;
145
+ fetchedType = downloaded.contentType;
146
+ }
147
+ try {
148
+ return await uploadFile({ ...params, filePath, type: params.type ?? (await defaultAssetType(config, params.issueId)) }, fetchedType, config);
149
+ }
150
+ finally {
151
+ if (cleanup)
152
+ await cleanup();
153
+ }
154
+ }
155
+ async function uploadFile(params, fetchedType, config) {
84
156
  let bytes;
85
157
  try {
86
158
  bytes = new Uint8Array(await readFile(params.filePath));
@@ -89,17 +161,35 @@ export async function uploadAsset(params, config) {
89
161
  throw new Error(`Cannot read "${params.filePath}": ${err instanceof Error ? err.message : String(err)}`);
90
162
  }
91
163
  const filename = basename(params.filePath);
92
- const contentType = mediaTypeFor(filename);
164
+ const guessed = mediaTypeFor(filename);
165
+ const contentType = guessed === DEFAULT_MEDIA_TYPE && fetchedType ? fetchedType : guessed;
93
166
  const base = workItemBase(config, params.issueId);
167
+ // A video's measurements come from the client — the server has no container parser by design — and
168
+ // the approval gate blocks without them. Measure here, the way the browser does, unless the caller
169
+ // already did; a caller's numbers always win.
170
+ let width = params.width;
171
+ let height = params.height;
172
+ let durationSeconds = params.durationSeconds;
173
+ if (contentType.startsWith('video/') && (width == null || height == null || durationSeconds == null)) {
174
+ try {
175
+ const probe = await probeVideo(params.filePath);
176
+ width = width ?? probe.width ?? undefined;
177
+ height = height ?? probe.height ?? undefined;
178
+ durationSeconds = durationSeconds ?? probe.durationSeconds ?? undefined;
179
+ }
180
+ catch {
181
+ // Unreadable container: fall through and let the read-back warning say what is missing.
182
+ }
183
+ }
94
184
  const ticket = await apiPost(`${base}/assets/uploads`, {
95
185
  type: params.type,
96
186
  label: params.label,
97
187
  filename,
98
188
  contentType,
99
189
  sizeBytes: bytes.byteLength,
100
- width: params.width,
101
- height: params.height,
102
- durationSeconds: params.durationSeconds,
190
+ width,
191
+ height,
192
+ durationSeconds,
103
193
  }, config);
104
194
  try {
105
195
  await putBytes(ticket.uploadUrl, contentType, bytes);
@@ -1 +1 @@
1
- {"version":3,"file":"marketing.js","sourceRoot":"","sources":["../../../src/mcp/tools/marketing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marketing.js","sourceRoot":"","sources":["../../../src/mcp/tools/marketing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ import { Config } from '../config.js';
2
+ export interface MediaInput {
3
+ /** A file on this machine. */
4
+ path?: string;
5
+ /** A public URL — fetched here, on the machine the server runs on, then uploaded like a local file. */
6
+ url?: string;
7
+ label?: string;
8
+ width?: number;
9
+ height?: number;
10
+ durationSeconds?: number;
11
+ }
12
+ export interface TargetInput {
13
+ platform: string;
14
+ /** The connected account's label as list_publish_targets shows it, or its connectionId. Omitted = manual. */
15
+ account?: string;
16
+ captionOverride?: string;
17
+ /** Indexes into `media` (0-based) or asset ids. Order is content. */
18
+ assetIds?: Array<string | number>;
19
+ options?: Record<string, unknown>;
20
+ }
21
+ export interface CreatePostParams {
22
+ text: string;
23
+ title?: string;
24
+ media?: MediaInput[];
25
+ targets: TargetInput[];
26
+ scheduledFor?: string;
27
+ timezone?: string;
28
+ submit?: boolean;
29
+ reviewers?: string[];
30
+ workflow?: string;
31
+ }
32
+ interface AccountOption {
33
+ platform: string;
34
+ connectionId: string | null;
35
+ label: string;
36
+ lane: string;
37
+ healthStatus?: string | null;
38
+ optionKeys?: string[];
39
+ }
40
+ interface Finding {
41
+ code: string;
42
+ message: string;
43
+ targetId?: string | null;
44
+ }
45
+ interface Preflight {
46
+ publishing: boolean;
47
+ ready: boolean;
48
+ blockers: Finding[];
49
+ warnings: Finding[];
50
+ nextTransition?: {
51
+ to: string;
52
+ label?: string | null;
53
+ requiresReview: boolean;
54
+ } | null;
55
+ consent: {
56
+ required: boolean;
57
+ verdict: string;
58
+ };
59
+ review: {
60
+ gated: boolean;
61
+ assignedReviewers: number;
62
+ satisfied: boolean;
63
+ reviewerRole?: string | null;
64
+ };
65
+ earliestFireTime?: string | null;
66
+ }
67
+ interface WorkflowSummary {
68
+ slug: string;
69
+ noun?: string;
70
+ types: string[];
71
+ assetTypes: string[];
72
+ statuses: unknown[];
73
+ }
74
+ export declare function getPreflight(config: Config, postId: string): Promise<Preflight>;
75
+ /**
76
+ * The Workflow whose items publish: the one whose asset types name a platform the project can publish
77
+ * to. With one such Workflow it is chosen silently; with several the caller has to say, because a Post
78
+ * on the wrong lifecycle is not a small mistake.
79
+ */
80
+ export declare function pickPublishingWorkflow(config: Config, accounts: AccountOption[], slug?: string): Promise<WorkflowSummary>;
81
+ /** The next quarter-hour at or after `earliest`, so "no time given" lands on a tidy calendar slot. */
82
+ export declare function nextQuarterHour(earliest: Date): Date;
83
+ /**
84
+ * Assigns reviewers by name, email or id. Only members holding the REVIEWER role can be assigned — the
85
+ * backend refuses anyone else — so a wrong role is reported by name rather than as a bare 4xx.
86
+ */
87
+ export declare function assignReviewers(config: Config, postId: string, reviewers: string[]): Promise<{
88
+ assigned: Array<{
89
+ userId: string;
90
+ name: string | null;
91
+ }>;
92
+ problems: string[];
93
+ }>;
94
+ /**
95
+ * The one call. Creates the Post, uploads its media (from paths or URLs, measuring video here), chooses
96
+ * its destinations by account name, schedules it at the server's earliest acceptable time when none is
97
+ * given, and — unless told not to — submits it for review with the named reviewers. Returns the
98
+ * confirmation table plus whatever the gate still wants.
99
+ */
100
+ export declare function createPost(params: CreatePostParams, config: Config): Promise<Record<string, unknown>>;
101
+ /** Where a Post stands: status, every destination's outcome, and what the gate still wants. Always live. */
102
+ export declare function getPostStatus(params: {
103
+ postId: string;
104
+ }, config: Config): Promise<Record<string, unknown>>;
105
+ /** Hands a Post to review: assigns the named reviewers, then takes the move the preflight names. */
106
+ export declare function submitPost(params: {
107
+ postId: string;
108
+ reviewers?: string[];
109
+ }, config: Config): Promise<Record<string, unknown>>;
110
+ /** Posts across every publishing Workflow, with each one's destinations, newest schedule first. */
111
+ export declare function listPosts(params: {
112
+ status?: string;
113
+ since?: string;
114
+ until?: string;
115
+ platform?: string;
116
+ limit?: number;
117
+ }, config: Config): Promise<Record<string, unknown>>;
118
+ /**
119
+ * Records a review verdict as the caller's user. The backend requires an assigned reviewer holding the
120
+ * REVIEWER role (or an ADMIN who was assigned) — a project API key cannot review, and a user key without
121
+ * the role is refused; both come back as the server's own message. Approval on MARKETING schedules the
122
+ * Post in the same request; `autoTransition` says how far it got.
123
+ */
124
+ export declare function submitReview(params: {
125
+ postId: string;
126
+ verdict: 'approve' | 'request_changes' | string;
127
+ summary?: string;
128
+ }, config: Config): Promise<Record<string, unknown>>;
129
+ /** What happened to a Post after it went out: each destination's counters, as the feeds read them back. */
130
+ export declare function getPostAnalytics(params: {
131
+ postId: string;
132
+ since?: string;
133
+ }, config: Config): Promise<Record<string, unknown>>;
134
+ /** The project's best-performing destinations by one metric — views by default. */
135
+ export declare function listTopPosts(params: {
136
+ metric?: string;
137
+ platform?: string;
138
+ since?: string;
139
+ limit?: number;
140
+ }, config: Config): Promise<Record<string, unknown>>;
141
+ /** Every Asset on a Work Item — the ids set_publish_targets.assetIds wants. */
142
+ export declare function listAssets(params: {
143
+ issueId: string;
144
+ }, config: Config): Promise<Record<string, unknown>>;
145
+ export {};
146
+ //# sourceMappingURL=posts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/posts.ts"],"names":[],"mappings":"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"}