@autopo/mcp 0.4.4 → 0.5.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.
package/dist/api.d.ts CHANGED
@@ -18,6 +18,9 @@ export declare class ApiError extends Error {
18
18
  constructor(status: number, body: ApiErrorBody);
19
19
  }
20
20
  export type Query = Record<string, string | number | boolean | null | undefined>;
21
+ export declare function isSafePath(path: string): boolean;
22
+ /** Plain http would show the token to everyone on the way, so it is for this machine and private service names only. */
23
+ export declare function assertSafeApiUrl(baseUrl: string): void;
21
24
  export interface ApiOptions {
22
25
  /** The API's origin, e.g. https://api.example.com (no trailing slash). */
23
26
  baseUrl: string;
@@ -36,6 +39,8 @@ export declare class Api {
36
39
  readonly fetchImpl: typeof fetch;
37
40
  private readonly userAgent;
38
41
  constructor(options: ApiOptions);
42
+ /** False on the hosted server's public discovery, which answers without a person. */
43
+ get signedIn(): boolean;
39
44
  request<T = unknown>(method: string, path: string, body?: unknown, query?: Query): Promise<T>;
40
45
  /**
41
46
  * Send a raw body: bytes (`application/octet-stream`, the Studio's upload chunks), a Blob, or a FormData (multipart,
package/dist/api.js CHANGED
@@ -4,6 +4,8 @@
4
4
  * the server never sees anything the person could not do themselves.
5
5
  */
6
6
  import { AsyncLocalStorage } from 'node:async_hooks';
7
+ import { isIP } from 'node:net';
8
+ import { isPrivateAddress } from './net.js';
7
9
  export class ApiError extends Error {
8
10
  status;
9
11
  code;
@@ -17,7 +19,25 @@ export class ApiError extends Error {
17
19
  this.body = body;
18
20
  }
19
21
  }
22
+ /** Ids and paths come from the model and go straight into URLs, so one holding `..`, `?` or `#` would call another endpoint. */
23
+ const UNSAFE_PATH = /[\\?#\x00-\x1f\x7f]|%(?:2e|2f|5c|23|3f|00)/i;
24
+ export function isSafePath(path) {
25
+ return path.startsWith('/api/') && !UNSAFE_PATH.test(path) && !path.split('/').some((part) => part === '.' || part === '..');
26
+ }
27
+ /** Plain http would show the token to everyone on the way, so it is for this machine and private service names only. */
28
+ export function assertSafeApiUrl(baseUrl) {
29
+ const url = new URL(baseUrl);
30
+ if (url.protocol === 'https:')
31
+ return;
32
+ const host = url.hostname.replace(/^\[|\]$/g, '');
33
+ if (url.protocol === 'http:' && (host === 'localhost' || !host.includes('.') || isPrivateIp(host)))
34
+ return;
35
+ throw new Error(`The API address must be https (a token would travel in the clear): ${baseUrl}`);
36
+ }
37
+ const isPrivateIp = (host) => isIP(host) !== 0 && isPrivateAddress(host);
20
38
  /** The MCP call being served: its API calls name it, so the user action log can tie them together (API_CONTRACT §90.3). */
39
+ /** Only so a dead connection can't hold a call open for ever: a film's check or a large chunk can take minutes. */
40
+ const REQUEST_TIMEOUT_MS = 10 * 60_000;
21
41
  const currentCall = new AsyncLocalStorage();
22
42
  export const inCall = (call, run) => currentCall.run(call, run);
23
43
  export class Api {
@@ -27,10 +47,15 @@ export class Api {
27
47
  userAgent;
28
48
  constructor(options) {
29
49
  this.baseUrl = options.baseUrl.replace(/\/+$/, '');
50
+ assertSafeApiUrl(this.baseUrl);
30
51
  this.token = options.token;
31
52
  this.fetchImpl = options.fetch ?? globalThis.fetch;
32
53
  this.userAgent = options.userAgent ?? 'autopoiesis-mcp';
33
54
  }
55
+ /** False on the hosted server's public discovery, which answers without a person. */
56
+ get signedIn() {
57
+ return this.token !== '';
58
+ }
34
59
  async request(method, path, body, query) {
35
60
  if (body === undefined)
36
61
  return this.send(method, path, undefined, undefined, query);
@@ -41,8 +66,8 @@ export class Api {
41
66
  * the content type set by fetch). `contentType` is left unset for FormData.
42
67
  */
43
68
  async send(method, path, body, contentType, query) {
44
- if (!path.startsWith('/api/')) {
45
- throw new ApiError(400, { error: { code: 'validation_error', message: 'Paths start with /api/ (see the API reference).' } });
69
+ if (!isSafePath(path)) {
70
+ throw new ApiError(400, { error: { code: 'validation_error', message: 'Paths start with /api/ and hold no .. segments, ?, # or backslashes; ids are plain ids, and a query goes in `query`.' } });
46
71
  }
47
72
  const url = new URL(this.baseUrl + path);
48
73
  for (const [key, value] of Object.entries(query ?? {})) {
@@ -63,7 +88,7 @@ export class Api {
63
88
  }
64
89
  if (contentType)
65
90
  headers['Content-Type'] = contentType;
66
- const init = { method, headers };
91
+ const init = { method, headers, signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS) };
67
92
  if (body !== undefined)
68
93
  init.body = body;
69
94
  const response = await this.fetchImpl(url, init);
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAOpD,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,MAAM,CAAQ;IACd,IAAI,CAAoB;IACxB,IAAI,CAAc;IAE3B,YAAY,MAAc,EAAE,IAAkB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAA;QAC/G,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAaD,2HAA2H;AAC3H,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAgC,CAAA;AAEzE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,IAAkC,EAAE,GAAY,EAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAE5G,MAAM,OAAO,GAAG;IACL,OAAO,CAAQ;IACP,KAAK,CAAQ;IACrB,SAAS,CAAc;IACf,SAAS,CAAQ;IAElC,YAAY,OAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAA;QAClD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,MAAc,EAAE,IAAY,EAAE,IAAc,EAAE,KAAa;QACpF,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,IAAI,CAAI,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QACtF,OAAO,IAAI,CAAC,IAAI,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAc,MAAc,EAAE,IAAY,EAAE,IAAuC,EAAE,WAAoB,EAAE,KAAa;QAChI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iDAAiD,EAAE,EAAE,CAAC,CAAA;QAC9H,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;gBAAE,SAAQ;YACnE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,CAAC;QACD,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;YACrC,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,UAAU,EAAE,KAAK;SAClB,CAAA;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAA;QACnC,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;YAC/B,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,CAAC;QACD,IAAI,WAAW;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAA;QACtD,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;QAC7C,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,IAAI,GAAY,IAAI,CAAA;QACxB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAA;YACrC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAqB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAA;YACxJ,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,IAAS,CAAA;IAClB,CAAC;IAED,yHAAyH;IACzH,UAAU,CAAC,IAA6B;QACtC,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,KAAa;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IACvD,CAAC;IACD,IAAI,CAAc,IAAY,EAAE,IAAI,GAAY,EAAE,EAAE,KAAa;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IACD,KAAK,CAAc,IAAY,EAAE,IAAa;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IACD,GAAG,CAAc,IAAY,EAAE,IAAa;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,CAAc,IAAY;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;CACF;AAED,sGAAsG;AACtG,MAAM,UAAU,IAAI,CAA8B,IAAa;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAW,CAAA;IAC3C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,IAA8B,CAAC,OAAO,CAAC;QAAE,OAAQ,IAAyB,CAAC,OAAO,CAAA;IACzI,OAAO,EAAE,CAAA;AACX,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,OAAO,CAA8B,IAAa,EAAE,KAAK,GAAG,EAAE;IAC5E,MAAM,GAAG,GAAG,IAAI,CAAI,IAAI,CAAC,CAAA;IACzB,MAAM,KAAK,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAA4B,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,IAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA;IAC1J,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAA2B,CAAC,IAAI,CAAC,CAAA;IAC3F,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,EAAE,CAAA;AAClF,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,IAAI,CAAoC,GAAM,EAAE,IAAuB;IACrF,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,IAAI,GAAG,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3D,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/apps.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/server';
2
- import type { Session } from './kit.js';
2
+ import { type Session } from './kit.js';
3
3
  export declare const VIEWS: readonly ['inbox', 'storyboard', 'gallery', 'home', 'money'];
4
4
  export type View = (typeof VIEWS)[number];
5
5
  export declare const viewUri: (view: View) => string;
6
- /** The built HTML of a view, wherever this module runs from (dist/, or src/ under tsx). */
6
+ /** The built HTML of a view, wherever this module runs from (dist/, or src/ under tsx). Read once: a hosted server makes a
7
+ * server per connection, and these are half a megabyte each. */
7
8
  export declare function viewHtml(view: View): string | null;
8
9
  /** Claude's sandbox origin for a hosted server: the first 32 hex characters of the SHA-256 of the server URL. */
9
10
  export declare function claudeDomain(publicUrl: string | undefined): string | undefined;
package/dist/apps.js CHANGED
@@ -3,26 +3,36 @@
3
3
  * is one self-contained HTML file built from ui/<name>/ into dist/ui/<name>.html. Hosts that don't render apps (Claude
4
4
  * Code, Codex CLI) still get the full text result: the views are an extra, never the only answer.
5
5
  *
6
- * Buttons in a view call app-only tools (hidden from the model): the click is the person's confirmation, so those skip
7
- * the elicitation their model-facing twins ask for.
6
+ * Buttons in a view call app-only tools, which a host that renders views keeps from the model: there the click is the
7
+ * person's confirmation. A host that doesn't know views has never heard of that rule and lists them as ordinary tools, so
8
+ * without the extension on the connection they ask in a dialog, like their model-facing twins.
8
9
  */
9
10
  import { readFileSync, existsSync } from 'node:fs';
10
11
  import { createHash } from 'node:crypto';
11
12
  import { fileURLToPath } from 'node:url';
12
13
  import { dirname, join } from 'node:path';
13
- import { RESOURCE_MIME_TYPE, registerAppResource, registerAppTool } from '@modelcontextprotocol/ext-apps/server';
14
+ import { RESOURCE_MIME_TYPE, getUiCapability, registerAppResource, registerAppTool } from '@modelcontextprotocol/ext-apps/server';
14
15
  import { z } from 'zod';
16
+ import { SAFE_ID, confirm } from './kit.js';
15
17
  export const VIEWS = ['inbox', 'storyboard', 'gallery', 'home', 'money'];
16
18
  export const viewUri = (view) => `ui://autopoiesis/${view}.html`;
17
19
  const here = dirname(fileURLToPath(import.meta.url));
18
- /** The built HTML of a view, wherever this module runs from (dist/, or src/ under tsx). */
20
+ const built = new Map();
21
+ /** The built HTML of a view, wherever this module runs from (dist/, or src/ under tsx). Read once: a hosted server makes a
22
+ * server per connection, and these are half a megabyte each. */
19
23
  export function viewHtml(view) {
24
+ if (built.has(view))
25
+ return built.get(view);
26
+ let html = null;
20
27
  for (const dir of [join(here, 'ui'), join(here, '..', 'dist', 'ui')]) {
21
28
  const file = join(dir, `${view}.html`);
22
- if (existsSync(file))
23
- return readFileSync(file, 'utf8');
29
+ if (existsSync(file)) {
30
+ html = readFileSync(file, 'utf8');
31
+ break;
32
+ }
24
33
  }
25
- return null;
34
+ built.set(view, html);
35
+ return html;
26
36
  }
27
37
  /** Claude's sandbox origin for a hosted server: the first 32 hex characters of the SHA-256 of the server URL. */
28
38
  export function claudeDomain(publicUrl) {
@@ -62,14 +72,22 @@ export function registerApps(server, s) {
62
72
  }
63
73
  // --- app-only tools: what the buttons call -------------------------------------------------------------------------
64
74
  const appOnly = { visibility: ['app'] };
75
+ const clicked = async (ctx, key, message) => getUiCapability(server.server.getClientCapabilities()) ? true : confirm(ctx, key, await message());
76
+ const id = z.string().regex(SAFE_ID);
65
77
  registerAppTool(server, 'app_decide', {
66
78
  title: 'Decide (from the inbox view)',
67
79
  description: 'Decide a card from the inbox view. Hidden from the model: the click is the confirmation.',
68
- inputSchema: z.object({ decision: z.string(), choice: z.enum(['approve', 'reject', 'cancel']), note: z.string().optional(), answer: z.unknown().optional() }),
80
+ inputSchema: z.object({ decision: id, choice: z.enum(['approve', 'reject', 'cancel']), note: z.string().optional(), answer: z.unknown().optional() }),
69
81
  annotations: { destructiveHint: true },
70
82
  _meta: { ui: { resourceUri: viewUri('inbox'), ...appOnly } },
71
- }, async ({ decision, choice, note, answer }) => {
83
+ }, async ({ decision, choice, note, answer }, ctx) => {
72
84
  try {
85
+ const ok = await clicked(ctx, 'decide', async () => {
86
+ const card = (await s.api.get(`/api/approvals/${decision}`));
87
+ return `${choice[0].toUpperCase()}${choice.slice(1)} "${card.title ?? decision}"${card.amount ? ` (${card.amount})` : ''}?`;
88
+ });
89
+ if (ok !== true)
90
+ return ok;
73
91
  const body = { decision: choice };
74
92
  if (note)
75
93
  body.note = note;
@@ -85,22 +103,32 @@ export function registerApps(server, s) {
85
103
  registerAppTool(server, 'app_refresh_inbox', {
86
104
  title: 'Refresh the inbox view',
87
105
  description: 'Reload the pending cards for the inbox view.',
88
- inputSchema: z.object({ company: z.string(), status: z.string().optional() }),
106
+ inputSchema: z.object({ company: id, status: z.string().optional() }),
89
107
  annotations: { readOnlyHint: true },
90
108
  _meta: { ui: { resourceUri: viewUri('inbox'), ...appOnly } },
91
109
  }, async ({ company, status }) => {
92
- const data = (await s.api.get(`/api/companies/${company}/approvals`, { status: status ?? 'pending' }));
93
- const results = Array.isArray(data) ? data : (data.results ?? []);
94
- return { content: [{ type: 'text', text: `${results.length} cards` }], structuredContent: { company, results, count: results.length, more: false } };
110
+ try {
111
+ const data = (await s.api.get(`/api/companies/${company}/approvals`, { status: status ?? 'pending' }));
112
+ const results = Array.isArray(data) ? data : (data.results ?? []);
113
+ return { content: [{ type: 'text', text: `${results.length} cards` }], structuredContent: { company, results, count: results.length, more: false } };
114
+ }
115
+ catch (error) {
116
+ return { isError: true, content: [{ type: 'text', text: error.message }] };
117
+ }
95
118
  });
96
119
  registerAppTool(server, 'app_video', {
97
120
  title: 'Video (from the storyboard view)',
98
121
  description: 'Reload a video, or act on it: keyframes, make media, critique, render. The click is the confirmation.',
99
- inputSchema: z.object({ video: z.string(), action: z.enum(['refresh', 'keyframes', 'make', 'critique_keyframes', 'critique_clips', 'render']).optional() }),
122
+ inputSchema: z.object({ video: id, action: z.enum(['refresh', 'keyframes', 'make', 'critique_keyframes', 'critique_clips', 'render']).optional() }),
100
123
  annotations: { destructiveHint: false },
101
124
  _meta: { ui: { resourceUri: viewUri('storyboard'), ...appOnly } },
102
- }, async ({ video, action }) => {
125
+ }, async ({ video, action }, ctx) => {
103
126
  try {
127
+ if (action && action !== 'refresh') {
128
+ const ok = await clicked(ctx, 'video', () => `Run ${action.replace('_', ' ')} on this video? It can spend credits.`);
129
+ if (ok !== true)
130
+ return ok;
131
+ }
104
132
  if (action === 'keyframes')
105
133
  await s.api.post(`/api/studio/productions/${video}/keyframes`, {});
106
134
  else if (action === 'make')
@@ -121,11 +149,16 @@ export function registerApps(server, s) {
121
149
  registerAppTool(server, 'app_media', {
122
150
  title: 'Media (from the gallery view)',
123
151
  description: 'Star, retry or reload media from the gallery view.',
124
- inputSchema: z.object({ company: z.string().optional(), media: z.string().optional(), action: z.enum(['refresh', 'star', 'unstar', 'retry']).optional(), kind: z.string().optional() }),
152
+ inputSchema: z.object({ company: id.optional(), media: id.optional(), action: z.enum(['refresh', 'star', 'unstar', 'retry']).optional(), kind: z.string().optional() }),
125
153
  annotations: { destructiveHint: false },
126
154
  _meta: { ui: { resourceUri: viewUri('gallery'), ...appOnly } },
127
- }, async ({ company, media, action, kind }) => {
155
+ }, async ({ company, media, action, kind }, ctx) => {
128
156
  try {
157
+ if (media && action === 'retry') {
158
+ const ok = await clicked(ctx, 'spend', () => 'Make this media again? Credits leave your balance.');
159
+ if (ok !== true)
160
+ return ok;
161
+ }
129
162
  if (media && action === 'star')
130
163
  await s.api.patch(`/api/studio/media/${media}`, { starred: true });
131
164
  if (media && action === 'unstar')
package/dist/apps.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"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"}
package/dist/calllog.js CHANGED
@@ -4,12 +4,21 @@
4
4
  * carry its id (X-MCP-Call, X-MCP-Tool), so the platform ties them together. A report never holds up or fails a call.
5
5
  */
6
6
  import { randomUUID } from 'node:crypto';
7
+ import { basename } from 'node:path';
7
8
  import { inCall } from './api.js';
8
9
  /** Short enough that the platform's own cut (500 chars) leaves the note of the real length in place. */
9
10
  const MAX_TEXT = 480;
10
11
  const MAX_ARGUMENTS = 100_000;
11
- function forLog(value) {
12
- const text = JSON.stringify(value ?? {}, (_key, v) => typeof v === 'string' && v.length > MAX_TEXT ? `${v.slice(0, MAX_TEXT)}… (${v.length.toLocaleString('en-US')} chars)` : v);
12
+ /** These tools' `path` is on the person's own disk: its folders (their user name, their projects) are not the platform's to log. */
13
+ const DISK_PATHS = new Set(['upload_media', 'import_video_plan']);
14
+ function forLog(value, tool) {
15
+ const text = JSON.stringify(value ?? {}, (key, v) => {
16
+ if (typeof v !== 'string')
17
+ return v;
18
+ if (key === 'path' && tool && DISK_PATHS.has(tool))
19
+ return basename(v);
20
+ return v.length > MAX_TEXT ? `${v.slice(0, MAX_TEXT)}… (${v.length.toLocaleString('en-US')} chars)` : v;
21
+ });
13
22
  return text.length <= MAX_ARGUMENTS ? JSON.parse(text) : { omitted: `${text.length.toLocaleString('en-US')} chars` };
14
23
  }
15
24
  function outcome(result) {
@@ -31,7 +40,7 @@ async function logged(server, api, what, run) {
31
40
  call_id: id,
32
41
  method: what.method,
33
42
  tool: what.tool ?? '',
34
- arguments: forLog(what.arguments),
43
+ arguments: forLog(what.arguments, what.tool),
35
44
  duration_ms: Date.now() - started,
36
45
  ...ended,
37
46
  ...(client ? { client: { name: client.name, version: client.version } } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"calllog.js","sourceRoot":"","sources":["../src/calllog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calllog.js","sourceRoot":"","sources":["../src/calllog.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -15,18 +15,22 @@ Usage
15
15
  autopoiesis-mcp --http Streamable HTTP server on PORT (default 8080), one token per request
16
16
 
17
17
  Options
18
- --token <apk_…> your personal access token (or AUTOPOIESIS_TOKEN)
18
+ --token <apk_…> your personal access token (better: AUTOPOIESIS_TOKEN, a flag shows in the process list)
19
19
  --api-url <url> the platform API (or AUTOPOIESIS_API_URL; default ${DEFAULT_API_URL})
20
20
  --app-url <url> the web app, for links (or AUTOPOIESIS_APP_URL; default ${DEFAULT_APP_URL})
21
21
  --public-url <url> this server's public address when hosted (or AUTOPOIESIS_MCP_URL)
22
22
  --port <n> --http only (or PORT)
23
- --host <addr> --http only (default 0.0.0.0)
23
+ --host <addr> --http only (or HOST; default 127.0.0.1, this machine only; 0.0.0.0 to serve others)
24
24
  --version, --help
25
25
 
26
26
  Files
27
27
  On stdio the server runs on your machine, so upload_media and import_video_plan take paths (a recording, a folder of
28
28
  footage, a plan.json or zip) and upload them to the Studio in 8 MB chunks. Hosted servers take URLs; set
29
- AUTOPOIESIS_ALLOW_PATHS=1 to let a server you run for yourself read its host's files too.
29
+ AUTOPOIESIS_ALLOW_PATHS=1 to let a server you run for yourself on 127.0.0.1 read its host's files too. Only images,
30
+ clips and audio are read, and you confirm the list before anything leaves the machine.
31
+
32
+ Hosted
33
+ AUTOPOIESIS_ALLOWED_HOSTS, AUTOPOIESIS_ALLOWED_ORIGINS comma-separated hostnames and browser origins to accept
30
34
 
31
35
  Get a token: open the app → Connectors → MCP → Make the token. Docs: https://docs.autopoiesis.app
32
36
  `;
@@ -38,7 +42,8 @@ const env = process.env;
38
42
  const apiUrl = arg('--api-url') ?? env.AUTOPOIESIS_API_URL ?? DEFAULT_API_URL;
39
43
  const appUrl = arg('--app-url') ?? env.AUTOPOIESIS_APP_URL ?? DEFAULT_APP_URL;
40
44
  const publicUrl = arg('--public-url') ?? env.AUTOPOIESIS_MCP_URL;
41
- const mediaDomains = (env.AUTOPOIESIS_MEDIA_DOMAINS ?? '').split(',').map((d) => d.trim()).filter(Boolean);
45
+ const list = (value) => (value ?? '').split(',').map((d) => d.trim()).filter(Boolean);
46
+ const mediaDomains = list(env.AUTOPOIESIS_MEDIA_DOMAINS);
42
47
  if (process.argv.includes('--help') || process.argv.includes('-h')) {
43
48
  process.stdout.write(HELP);
44
49
  }
@@ -47,8 +52,16 @@ else if (process.argv.includes('--version') || process.argv.includes('-v')) {
47
52
  }
48
53
  else if (process.argv.includes('--http')) {
49
54
  const port = Number(arg('--port') ?? env.PORT ?? 8080);
50
- const host = arg('--host') ?? env.HOST ?? '0.0.0.0';
51
- serveHttp({ port, host, apiUrl, appUrl, ...(publicUrl ? { publicUrl } : {}), mediaDomains, local: env.AUTOPOIESIS_ALLOW_PATHS === '1' });
55
+ const host = arg('--host') ?? env.HOST ?? '127.0.0.1';
56
+ try {
57
+ if (!Number.isInteger(port) || port < 0 || port > 65535)
58
+ throw new Error(`Not a port: ${arg('--port') ?? env.PORT}`);
59
+ serveHttp({ port, host, apiUrl, appUrl, ...(publicUrl ? { publicUrl } : {}), mediaDomains, local: env.AUTOPOIESIS_ALLOW_PATHS === '1', allowedHosts: list(env.AUTOPOIESIS_ALLOWED_HOSTS), allowedOrigins: list(env.AUTOPOIESIS_ALLOWED_ORIGINS) });
60
+ }
61
+ catch (error) {
62
+ process.stderr.write(`autopoiesis-mcp: ${error.message}\n`);
63
+ process.exit(1);
64
+ }
52
65
  }
53
66
  else {
54
67
  const token = arg('--token') ?? env.AUTOPOIESIS_TOKEN;
@@ -56,7 +69,15 @@ else {
56
69
  process.stderr.write('autopoiesis-mcp: no token. Set AUTOPOIESIS_TOKEN (make one in the app: Connectors → MCP) or pass --token.\n');
57
70
  process.exit(1);
58
71
  }
59
- const handle = serveStdio(() => createServer({ token, apiUrl, appUrl, mediaDomains, local: true, ...(publicUrl ? { publicUrl } : {}) }), {
72
+ const make = () => createServer({ token, apiUrl, appUrl, mediaDomains, local: true, ...(publicUrl ? { publicUrl } : {}) });
73
+ try {
74
+ make(); // a bad address says so now, not on the first call
75
+ }
76
+ catch (error) {
77
+ process.stderr.write(`autopoiesis-mcp: ${error.message}\n`);
78
+ process.exit(1);
79
+ }
80
+ const handle = serveStdio(make, {
60
81
  legacy: 'serve',
61
82
  onerror: (error) => process.stderr.write(`autopoiesis-mcp: ${error.message}\n`),
62
83
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/files.d.ts CHANGED
@@ -24,7 +24,7 @@ export declare function expandHome(path: string): string;
24
24
  export declare function expandPath(path: string): Promise<string[]>;
25
25
  export declare function pathSource(path: string): Promise<Source>;
26
26
  /** A public link: streamed when its size is known, read whole (up to 512 MB) when it is not. */
27
- export declare function urlSource(url: string, fetchImpl?: typeof fetch): Promise<Source>;
27
+ export declare function urlSource(url: string, outside: typeof fetch, signal?: AbortSignal): Promise<Source>;
28
28
  export declare function bytesSource(name: string, data: Buffer, type?: string): Source;
29
29
  /** A zip entry: streamed by range when stored, inflated whole when deflated. */
30
30
  export declare function zipSource(range: ByteRange, entry: ZipEntry): Source;
@@ -61,10 +61,16 @@ export interface PlanBundle {
61
61
  files: Record<string, () => Promise<Source>>;
62
62
  close(): Promise<void>;
63
63
  }
64
- /** A plan from this machine: a zip, a plan.json (the files beside it come along), or a folder holding plan.json. */
64
+ /**
65
+ * A plan from this machine: a zip, a plan.json (the files beside it come along), or a folder holding plan.json. The plan's
66
+ * text goes to the platform, so only a file really named plan.json or .zip is read: this is how the path can't be a
67
+ * credentials file that happens to be JSON. A link is judged on what it points at.
68
+ */
65
69
  export declare function planFromPath(path: string): Promise<PlanBundle>;
66
70
  /** A plan from a link: a zip or a plan.json, read whole (up to 512 MB). */
67
- export declare function planFromUrl(url: string, fetchImpl?: typeof fetch): Promise<PlanBundle>;
71
+ export declare function planFromUrl(url: string, outside: typeof fetch, signal?: AbortSignal): Promise<PlanBundle>;
68
72
  /** Why a path can't be read on this connection, with the way out. */
69
73
  export declare function noLocalFiles(s: Session, companyId?: string): ToolError;
74
+ /** The dialog before files leave this machine: what goes, and how much of it. */
75
+ export declare function uploadQuestion(names: string[], bytes: number, where: string): string;
70
76
  export declare function describeApiError(error: unknown): string;