🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@filepad/agent-connect

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@filepad/agent-connect - npm Package Compare versions

Comparing version
0.1.17
to
0.1.18
+7
-10
dist/cli.js
#!/usr/bin/env node
// FILE MEMO: CLI entrypoint for Filepad pre-MCP runtime pairing.
// FILE MEMO: CLI entrypoint for Filepad remote MCP pairing.
import { pairAgent, renderPairResult, SUPPORTED_RUNTIMES, } from './index.js';

@@ -11,3 +11,3 @@ function readFlag(args, name) {

function isRuntime(value) {
return Boolean(value) && SUPPORTED_RUNTIMES.includes(value);
return SUPPORTED_RUNTIMES.some((runtime) => runtime === value);
}

@@ -17,4 +17,4 @@ function parseArgs(argv) {

if (command !== 'pair' || !code) {
throw new Error('Usage: filepad-agent-connect pair <CODE> --runtime <runtime> [--base-url URL]\n' +
' [--output json]');
throw new Error('Usage: filepad-agent-connect pair <CODE> --runtime <runtime> [--base-url URL]\n'
+ ' [--output json]');
}

@@ -30,5 +30,3 @@ const runtime = readFlag(argv, '--runtime');

runtime,
baseUrl: readFlag(argv, '--base-url') ??
process.env['FILEPAD_BASE_URL'] ??
'https://api.filepad.ai',
baseUrl: readFlag(argv, '--base-url') ?? process.env['FILEPAD_BASE_URL'] ?? 'https://api.filepad.ai',
label: readFlag(argv, '--label'),

@@ -46,6 +44,5 @@ configPath: readFlag(argv, '--config-path'),

process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
return;
}
else {
process.stdout.write(`${renderPairResult(result)}\n`);
}
process.stdout.write(`${renderPairResult(result)}\n`);
}

@@ -52,0 +49,0 @@ main().catch((error) => {

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,iEAAiE;AAEjE,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AAcpB,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACnC,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAqB,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,iFAAiF;YACjF,mBAAmB,CACpB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gDAAgD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE1C,OAAO;QACL,OAAO,EAAE,MAAM;QACf,IAAI;QACJ,OAAO;QACP,OAAO,EACL,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YAC/B,wBAAwB;QAC1B,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAChC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;QAC3C,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;QAC3C,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC3C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,4DAA4D;AAC5D,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AAEpB,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACnC,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,iFAAiF;cAC/E,mBAAmB,CACtB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gDAAgD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1C,OAAO;QACL,OAAO,EAAE,MAAe;QACxB,IAAI;QACJ,OAAO;QACP,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,wBAAwB;QACpG,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAChC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;QAC3C,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;QAC3C,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,MAAe;QAC7D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}

@@ -1,63 +0,142 @@

export type AgentRuntime = 'openclaw' | 'claude-code' | 'cursor' | 'windsurf' | 'codex' | 'generic-mcp';
export type FilepadRemoteMcpServerConfig = {
transport: 'streamable_http' | 'sse';
url: string;
headers?: Record<string, string> | undefined;
};
export type AgentHostDesiredState = {
version: 1;
runtime: AgentRuntime;
scope: 'project' | 'user';
mcp: {
enabled: boolean;
configPath: string;
configTarget: string;
};
hooks: {
enabled: boolean;
configPath: string;
credentialsPath: string | null;
adapterPackage: string | null;
adapterVersion: string | null;
adapterBinary: string | null;
adapterCommand: string | null;
enforcementMode: 'off' | 'observe' | 'warn' | 'block' | null;
offlinePolicy: 'allow' | 'deny' | null;
events: string[];
};
};
export type PairResponse = {
status: 'paired';
workspace: {
id: string;
name: string;
owner: string;
};
credentials: {
agentKeyId: string;
agentSecret: string;
expiresAt: string;
};
hostConfig: {
runtime: AgentRuntime;
configPath: string;
server: FilepadRemoteMcpServerConfig;
restartInstruction: string;
requiresHostRestart?: boolean;
nativeToolsAvailable?: boolean;
afterRestartCommand?: string;
desiredState?: AgentHostDesiredState | undefined;
};
handoff: {
sessionToken: string;
text: string;
nextStep: {
what: string;
how: string;
afterRestartCommand: string;
requiresHostRestart?: boolean;
nativeToolsAvailable?: boolean;
};
} & Record<string, unknown>;
};
import { z } from 'zod';
export declare const SUPPORTED_RUNTIMES: readonly ["openclaw", "claude-code", "cursor", "windsurf", "codex", "generic-mcp"];
export type AgentRuntime = (typeof SUPPORTED_RUNTIMES)[number];
declare const remoteMcpServerSchema: z.ZodObject<{
transport: z.ZodEnum<{
streamable_http: "streamable_http";
sse: "sse";
}>;
url: z.ZodString;
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strict>;
export type FilepadRemoteMcpServerConfig = z.infer<typeof remoteMcpServerSchema>;
declare const desiredStateSchema: z.ZodObject<{
version: z.ZodLiteral<1>;
runtime: z.ZodEnum<{
openclaw: "openclaw";
"claude-code": "claude-code";
cursor: "cursor";
windsurf: "windsurf";
codex: "codex";
"generic-mcp": "generic-mcp";
}>;
scope: z.ZodEnum<{
project: "project";
user: "user";
}>;
mcp: z.ZodObject<{
enabled: z.ZodBoolean;
configPath: z.ZodString;
configTarget: z.ZodString;
}, z.core.$strict>;
hooks: z.ZodObject<{
enabled: z.ZodBoolean;
configPath: z.ZodString;
credentialsPath: z.ZodNullable<z.ZodString>;
adapterPackage: z.ZodNullable<z.ZodString>;
adapterVersion: z.ZodNullable<z.ZodString>;
adapterBinary: z.ZodNullable<z.ZodString>;
adapterCommand: z.ZodNullable<z.ZodString>;
enforcementMode: z.ZodNullable<z.ZodEnum<{
off: "off";
observe: "observe";
warn: "warn";
block: "block";
}>>;
offlinePolicy: z.ZodNullable<z.ZodEnum<{
allow: "allow";
deny: "deny";
}>>;
events: z.ZodArray<z.ZodString>;
}, z.core.$strict>;
}, z.core.$strict>;
export type AgentHostDesiredState = z.infer<typeof desiredStateSchema>;
declare const pairResponseSchema: z.ZodObject<{
status: z.ZodLiteral<"paired">;
workspace: z.ZodObject<{
id: z.ZodString;
name: z.ZodString;
owner: z.ZodString;
}, z.core.$strict>;
credentials: z.ZodObject<{
agentKeyId: z.ZodString;
agentSecret: z.ZodString;
expiresAt: z.ZodString;
}, z.core.$strict>;
hostConfig: z.ZodObject<{
runtime: z.ZodEnum<{
openclaw: "openclaw";
"claude-code": "claude-code";
cursor: "cursor";
windsurf: "windsurf";
codex: "codex";
"generic-mcp": "generic-mcp";
}>;
configPath: z.ZodString;
server: z.ZodObject<{
transport: z.ZodEnum<{
streamable_http: "streamable_http";
sse: "sse";
}>;
url: z.ZodString;
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strict>;
restartInstruction: z.ZodString;
requiresHostRestart: z.ZodOptional<z.ZodBoolean>;
nativeToolsAvailable: z.ZodOptional<z.ZodBoolean>;
afterRestartCommand: z.ZodOptional<z.ZodString>;
desiredState: z.ZodOptional<z.ZodObject<{
version: z.ZodLiteral<1>;
runtime: z.ZodEnum<{
openclaw: "openclaw";
"claude-code": "claude-code";
cursor: "cursor";
windsurf: "windsurf";
codex: "codex";
"generic-mcp": "generic-mcp";
}>;
scope: z.ZodEnum<{
project: "project";
user: "user";
}>;
mcp: z.ZodObject<{
enabled: z.ZodBoolean;
configPath: z.ZodString;
configTarget: z.ZodString;
}, z.core.$strict>;
hooks: z.ZodObject<{
enabled: z.ZodBoolean;
configPath: z.ZodString;
credentialsPath: z.ZodNullable<z.ZodString>;
adapterPackage: z.ZodNullable<z.ZodString>;
adapterVersion: z.ZodNullable<z.ZodString>;
adapterBinary: z.ZodNullable<z.ZodString>;
adapterCommand: z.ZodNullable<z.ZodString>;
enforcementMode: z.ZodNullable<z.ZodEnum<{
off: "off";
observe: "observe";
warn: "warn";
block: "block";
}>>;
offlinePolicy: z.ZodNullable<z.ZodEnum<{
allow: "allow";
deny: "deny";
}>>;
events: z.ZodArray<z.ZodString>;
}, z.core.$strict>;
}, z.core.$strict>>;
}, z.core.$strict>;
handoff: z.ZodObject<{
sessionToken: z.ZodString;
text: z.ZodString;
nextStep: z.ZodObject<{
what: z.ZodString;
how: z.ZodString;
afterRestartCommand: z.ZodString;
requiresHostRestart: z.ZodOptional<z.ZodBoolean>;
nativeToolsAvailable: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strict>;
}, z.core.$loose>;
}, z.core.$strict>;
export type PairResponse = z.infer<typeof pairResponseSchema>;
export type PairOptions = {

@@ -72,6 +151,2 @@ code: string;

fetchImpl?: typeof fetch | undefined;
/**
* Test seam for host-native MCP registration. Production uses the runtime CLI
* where required, e.g. `claude mcp add-json` for Claude Code.
*/
mcpCommandRunner?: ((command: string, args: string[]) => Promise<void>) | undefined;

@@ -98,5 +173,5 @@ };

};
export declare const SUPPORTED_RUNTIMES: readonly AgentRuntime[];
export declare function pairAgent(options: PairOptions): Promise<PairResult>;
export declare function renderPairResult(result: PairResult): string;
export {};
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,aAAa,GACb,QAAQ,GACR,UAAU,GACV,OAAO,GACP,aAAa,CAAC;AAElB,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,iBAAiB,GAAG,KAAK,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;QAC7D,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,YAAY,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,4BAA4B,CAAC;QACrC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;KAClD,CAAC;IACF,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,mBAAmB,EAAE,MAAM,CAAC;YAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;YAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;SAChC,CAAC;KACH,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACrF,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mBAAmB,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE;QACT,MAAM,EAAE,IAAI,CAAC;QACb,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,YAAY,EAOrD,CAAC;AAqMF,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA+DzE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA2C3D"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kBAAkB,oFAOrB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,QAAA,MAAM,qBAAqB;;;;;;;kBAIhB,CAAC;AAEZ,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEjF,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqBb,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEvE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiCb,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAgB9D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;IACrC,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CACrF,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mBAAmB,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE;QACT,MAAM,EAAE,IAAI,CAAC;QACb,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAwRF,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAyDzE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAwC3D"}

@@ -7,2 +7,3 @@ // FILE MEMO: Remote Filepad MCP pairing helpers shared by the CLI and tests.

import { promisify } from 'node:util';
import { z } from 'zod';
const execFileAsync = promisify(execFile);

@@ -17,5 +18,82 @@ export const SUPPORTED_RUNTIMES = [

];
function isRecord(value) {
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
const remoteMcpServerSchema = z.object({
transport: z.enum(['streamable_http', 'sse']),
url: z.string().url(),
headers: z.record(z.string(), z.string()).optional(),
}).strict();
const desiredStateSchema = z.object({
version: z.literal(1),
runtime: z.enum(SUPPORTED_RUNTIMES),
scope: z.enum(['project', 'user']),
mcp: z.object({
enabled: z.boolean(),
configPath: z.string(),
configTarget: z.string(),
}).strict(),
hooks: z.object({
enabled: z.boolean(),
configPath: z.string(),
credentialsPath: z.string().nullable(),
adapterPackage: z.string().nullable(),
adapterVersion: z.string().nullable(),
adapterBinary: z.string().nullable(),
adapterCommand: z.string().nullable(),
enforcementMode: z.enum(['off', 'observe', 'warn', 'block']).nullable(),
offlinePolicy: z.enum(['allow', 'deny']).nullable(),
events: z.array(z.string()),
}).strict(),
}).strict();
const pairResponseSchema = z.object({
status: z.literal('paired'),
workspace: z.object({
id: z.string(),
name: z.string(),
owner: z.string(),
}).strict(),
credentials: z.object({
agentKeyId: z.string(),
agentSecret: z.string(),
expiresAt: z.string(),
}).strict(),
hostConfig: z.object({
runtime: z.enum(SUPPORTED_RUNTIMES),
configPath: z.string(),
server: remoteMcpServerSchema,
restartInstruction: z.string(),
requiresHostRestart: z.boolean().optional(),
nativeToolsAvailable: z.boolean().optional(),
afterRestartCommand: z.string().optional(),
desiredState: desiredStateSchema.optional(),
}).strict(),
handoff: z.object({
sessionToken: z.string(),
text: z.string(),
nextStep: z.object({
what: z.string(),
how: z.string(),
afterRestartCommand: z.string(),
requiresHostRestart: z.boolean().optional(),
nativeToolsAvailable: z.boolean().optional(),
}).strict(),
}).passthrough(),
}).strict();
const unknownRecordSchema = z.record(z.string(), z.unknown());
const nodeErrorSchema = z.object({
code: z.string(),
}).passthrough();
const pairErrorResponseSchema = z.object({
error: z.object({
code: z.string().optional(),
message: z.string().optional(),
details: z.unknown().optional(),
}).passthrough().optional(),
}).passthrough();
function recordFromUnknown(value) {
const parsed = unknownRecordSchema.safeParse(value);
return parsed.success ? parsed.data : {};
}
function nodeErrorCode(error) {
const parsed = nodeErrorSchema.safeParse(error);
return parsed.success ? parsed.data.code : undefined;
}
function expandHome(path) {

@@ -34,25 +112,10 @@ if (path === '~')

switch (runtime) {
case 'openclaw':
return join(base, '.openclaw', 'openclaw.json');
case 'claude-code':
return join(base, '.claude', 'settings.json');
case 'cursor':
return join(base, '.cursor', 'mcp.json');
case 'windsurf':
return join(base, '.codeium', 'windsurf', 'mcp_config.json');
case 'codex':
return join(base, '.codex', 'mcp.json');
case 'generic-mcp':
return join(process.cwd(), 'mcp.json');
case 'openclaw': return join(base, '.openclaw', 'openclaw.json');
case 'claude-code': return join(base, '.claude.json');
case 'cursor': return join(base, '.cursor', 'mcp.json');
case 'windsurf': return join(base, '.codeium', 'windsurf', 'mcp_config.json');
case 'codex': return join(base, '.codex', 'config.toml');
case 'generic-mcp': return join(process.cwd(), 'mcp.json');
}
}
function isClaudeCodeNativeMcpTarget(path) {
return path.startsWith('claude-code://');
}
function filesystemConfigPathForRuntime(runtime, configPath) {
if (runtime === 'claude-code' && isClaudeCodeNativeMcpTarget(configPath)) {
return defaultConfigPath(runtime);
}
return configPath;
}
async function chmodIfExists(path, mode) {

@@ -63,4 +126,3 @@ try {

catch (error) {
const err = error;
if (err.code === 'ENOENT')
if (nodeErrorCode(error) === 'ENOENT')
return;

@@ -73,6 +135,2 @@ throw error;

}
async function hardenClaudeCodeConfigFiles(configPath) {
await hardenSensitiveConfigFile(expandHome('~/.claude.json'));
await hardenSensitiveConfigFile(filesystemConfigPathForRuntime('claude-code', configPath));
}
async function readJsonFile(path) {

@@ -82,7 +140,6 @@ try {

const parsed = JSON.parse(text);
return isRecord(parsed) ? parsed : {};
return recordFromUnknown(parsed);
}
catch (error) {
const err = error;
if (err.code === 'ENOENT')
if (nodeErrorCode(error) === 'ENOENT')
return {};

@@ -94,4 +151,4 @@ throw error;

if (runtime === 'openclaw') {
const mcp = isRecord(existing['mcp']) ? existing['mcp'] : {};
const servers = isRecord(mcp['servers']) ? mcp['servers'] : {};
const mcp = recordFromUnknown(existing['mcp']);
const servers = recordFromUnknown(mcp['servers']);
const updated = { ...existing };

@@ -110,5 +167,3 @@ delete updated['mcpServers'];

}
const mcpServers = isRecord(existing['mcpServers'])
? existing['mcpServers']
: {};
const mcpServers = recordFromUnknown(existing['mcpServers']);
return {

@@ -122,38 +177,133 @@ ...existing,

}
function tomlString(value) {
return JSON.stringify(value);
}
function stripCodexFilepadSection(toml) {
const lines = toml.split(/\r?\n/);
const kept = [];
let skipping = false;
for (const line of lines) {
const table = line.match(/^\s*\[([^\]]+)]\s*$/);
if (table) {
const name = table[1]?.trim();
skipping = name === 'mcp_servers.filepad' || Boolean(name?.startsWith('mcp_servers.filepad.'));
}
if (!skipping)
kept.push(line);
}
return kept.join('\n').trimEnd();
}
async function writeCodexConfig(configPath, server) {
const authorization = server.headers?.['Authorization'];
if (typeof authorization !== 'string' || authorization.length === 0) {
throw new Error('HOST_CONFIG_FAILED: Codex MCP requires an Authorization header from the pair response.');
}
let existing = '';
try {
existing = await readFile(configPath, 'utf8');
}
catch (error) {
if (nodeErrorCode(error) !== 'ENOENT')
throw error;
}
const base = stripCodexFilepadSection(existing);
const section = [
'[mcp_servers.filepad]',
`url = ${tomlString(server.url)}`,
`http_headers = { Authorization = ${tomlString(authorization)} }`,
].join('\n');
const next = `${base ? `${base}\n\n` : ''}${section}\n`;
await mkdir(dirname(configPath), { recursive: true });
await writeFile(configPath, next, { mode: 0o600 });
await hardenSensitiveConfigFile(configPath);
}
function claudeServerConfig(server) {
return {
type: 'http',
url: server.url,
...(server.headers ? { headers: server.headers } : {}),
};
}
async function writeClaudeCodeJsonConfig(configPath, server) {
const existing = await readJsonFile(configPath);
const mcpServers = recordFromUnknown(existing['mcpServers']);
const updated = {
...existing,
mcpServers: {
...mcpServers,
filepad: claudeServerConfig(server),
},
};
await mkdir(dirname(configPath), { recursive: true });
await writeFile(configPath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 0o600 });
await hardenSensitiveConfigFile(configPath);
}
async function runMcpCommand(command, args, runner) {
if (runner) {
await runner(command, args);
return;
}
await execFileAsync(command, args);
}
async function registerClaudeCodeMcp(params) {
const scope = params.scope === 'project' ? 'local' : 'user';
const authorization = params.server.headers?.['Authorization'];
try {
await runMcpCommand('claude', ['mcp', 'remove', '-s', scope, 'filepad'], params.mcpCommandRunner)
.catch(() => undefined);
await runMcpCommand('claude', [
'mcp',
'add',
'--transport',
'http',
'-s',
scope,
'filepad',
params.server.url,
...(authorization ? ['--header', `Authorization: ${authorization}`] : []),
], params.mcpCommandRunner);
await hardenSensitiveConfigFile(params.configPath);
}
catch (error) {
void error;
await writeClaudeCodeJsonConfig(params.configPath, params.server);
}
}
async function writeRuntimeConfig(params) {
if (params.runtime === 'codex') {
await writeCodexConfig(params.configPath, params.server);
return;
}
if (params.runtime === 'claude-code') {
try {
const claudeScope = params.scope === 'project' ? 'local' : 'user';
const args = [
'mcp', 'add-json', '-s', claudeScope, 'filepad', JSON.stringify(params.server),
];
if (params.mcpCommandRunner) {
// Test seam — use provided runner
await params.mcpCommandRunner('claude', args);
}
else {
await execFileAsync('claude', args);
}
await hardenClaudeCodeConfigFiles(params.configPath);
return;
}
catch {
// claude CLI unavailable/not in PATH, or native registration failed.
// Fall through to direct JSON patch using a real filesystem path.
}
await registerClaudeCodeMcp({
configPath: params.configPath,
server: params.server,
scope: params.scope,
mcpCommandRunner: params.mcpCommandRunner,
});
return;
}
const fileConfigPath = filesystemConfigPathForRuntime(params.runtime, params.configPath);
const existing = await readJsonFile(fileConfigPath);
const existing = await readJsonFile(params.configPath);
const updated = patchMcpConfig(params.runtime, existing, params.server);
await mkdir(dirname(fileConfigPath), { recursive: true });
await writeFile(fileConfigPath, `${JSON.stringify(updated, null, 2)}\n`, {
mode: 0o600,
});
await hardenSensitiveConfigFile(fileConfigPath);
await mkdir(dirname(params.configPath), { recursive: true });
await writeFile(params.configPath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 0o600 });
await hardenSensitiveConfigFile(params.configPath);
}
function runtimeConfigTarget(runtime) {
return runtime === 'openclaw'
? 'mcp.servers.filepad'
: 'mcpServers.filepad';
if (runtime === 'openclaw')
return 'mcp.servers.filepad';
if (runtime === 'codex')
return 'mcp_servers.filepad';
return 'mcpServers.filepad';
}
function resolveConfigPath(params) {
if (params.override)
return expandHome(params.override);
if (params.desiredState?.mcp.configPath)
return expandHome(params.desiredState.mcp.configPath);
if (params.runtime === 'codex' || params.runtime === 'claude-code') {
return defaultConfigPath(params.runtime);
}
return expandHome(params.responseConfigPath ?? defaultConfigPath(params.runtime));
}
async function postPair(params) {

@@ -176,20 +326,16 @@ const fetchImpl = params.fetchImpl ?? fetch;

}
catch {
catch (error) {
void error;
throw new Error(`PAIR_FAILED HTTP ${response.status}: ${text}`);
}
if (!response.ok) {
const err = isRecord(parsed) && isRecord(parsed['error'])
? parsed['error']
: undefined;
const code = typeof err?.['code'] === 'string' ? err['code'] : `HTTP_${response.status}`;
const message = typeof err?.['message'] === 'string'
? err['message']
: `Filepad pairing failed with HTTP ${response.status}`;
// Surface ZodError details so agents can diagnose schema mismatches
const detailStr = err?.['details']
? `\n details: ${JSON.stringify(err['details'])}`
: '';
const parsedError = pairErrorResponseSchema.safeParse(parsed);
const err = parsedError.success ? parsedError.data.error : undefined;
const code = err?.code ?? `HTTP_${response.status}`;
const message = err?.message
?? `Filepad pairing failed with HTTP ${response.status}`;
const detailStr = err?.details ? `\n details: ${JSON.stringify(err.details)}` : '';
throw new Error(`${code}: ${message}${detailStr}`);
}
return parsed;
return pairResponseSchema.parse(parsed);
}

@@ -199,17 +345,18 @@ export async function pairAgent(options) {

const desiredState = response.hostConfig.desiredState;
const configPath = expandHome(options.configPath ??
desiredState?.mcp.configPath ??
response.hostConfig.configPath ??
defaultConfigPath(options.runtime));
const structuredOutputPath = options.outputPath ??
join(tmpdir(), `filepad-agent-connect-${process.pid}.json`);
const afterRestartTool = response.hostConfig.afterRestartCommand ??
response.handoff.nextStep.afterRestartCommand ??
'filepad_bootstrap';
const requiresHostRestart = response.hostConfig.requiresHostRestart ??
response.handoff.nextStep.requiresHostRestart ??
true;
const nativeToolsAvailable = response.hostConfig.nativeToolsAvailable ??
response.handoff.nextStep.nativeToolsAvailable ??
false;
const configPath = resolveConfigPath({
runtime: options.runtime,
override: options.configPath,
desiredState,
responseConfigPath: response.hostConfig.configPath,
});
const structuredOutputPath = options.outputPath ?? join(tmpdir(), `filepad-agent-connect-${process.pid}.json`);
const afterRestartTool = response.hostConfig.afterRestartCommand
?? response.handoff.nextStep.afterRestartCommand
?? 'filepad_bootstrap';
const requiresHostRestart = response.hostConfig.requiresHostRestart
?? response.handoff.nextStep.requiresHostRestart
?? true;
const nativeToolsAvailable = response.hostConfig.nativeToolsAvailable
?? response.handoff.nextStep.nativeToolsAvailable
?? false;
const configTarget = desiredState?.mcp.configTarget ?? runtimeConfigTarget(options.runtime);

@@ -276,10 +423,6 @@ const result = {

'Agent-facing checks:',
baseUrl ? ` Health: ${baseUrl}/agent-api/v1/health` : ' Health: /agent-api/v1/health',
baseUrl ? ` Discovery: ${baseUrl}/agent-api/v1/discovery` : ' Discovery: /agent-api/v1/discovery',
baseUrl
? ` Health: ${baseUrl.replace(/\/+$/g, '')}/agent-api/v1/health`
: ' Health: /agent-api/v1/health',
baseUrl
? ` Discovery: ${baseUrl.replace(/\/+$/g, '')}/agent-api/v1/discovery`
: ' Discovery: /agent-api/v1/discovery',
baseUrl
? ` HTTP bootstrap fallback: ${baseUrl.replace(/\/+$/g, '')}/agent-api/v1/workspaces/${workspaceId}/bootstrap (HMAC auth, or Authorization: Bearer <handoff.sessionToken> during setup)`
? ` HTTP bootstrap fallback: ${baseUrl}/agent-api/v1/workspaces/${workspaceId}/bootstrap (HMAC auth, or Authorization: Bearer <handoff.sessionToken> during setup)`
: ` HTTP bootstrap fallback: /agent-api/v1/workspaces/${workspaceId}/bootstrap (HMAC auth, or Authorization: Bearer <handoff.sessionToken> during setup)`,

@@ -299,3 +442,4 @@ ` Remote MCP transport: ${result.response.hostConfig.server.transport}`,

}
catch {
catch (error) {
void error;
return undefined;

@@ -302,0 +446,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{
"name": "@filepad/agent-connect",
"version": "0.1.17",
"version": "0.1.18",
"description": "Remote MCP pairing CLI for Filepad Agent Access runtimes.",

@@ -14,4 +14,3 @@ "type": "module",

"README.md",
"SECURITY.md",
"LICENSE"
"SECURITY.md"
],

@@ -25,3 +24,4 @@ "exports": {

"scripts": {
"build": "tsc -p tsconfig.build.json",
"clean": "node --input-type=module -e \"import fs from 'node:fs'; fs.rmSync('dist', { recursive: true, force: true });\"",
"build": "pnpm clean && tsc -p tsconfig.build.json",
"typecheck": "tsc -p tsconfig.json --noEmit",

@@ -35,3 +35,3 @@ "test": "vitest run",

"mcp",
"openclaw",
"codex",
"claude"

@@ -56,2 +56,5 @@ ],

},
"dependencies": {
"zod": "^3.25.76"
},
"devDependencies": {

@@ -58,0 +61,0 @@ "typescript": "5.9.3",

+12
-30

@@ -6,36 +6,18 @@ # @filepad/agent-connect

```bash
npx -y @filepad/agent-connect@latest pair A3K9MZ2X --runtime openclaw
npx -y @filepad/agent-connect@latest pair A3K9MZ2X --runtime codex
```
The command exchanges a short Filepad pairing code, writes the runtime's remote
MCP endpoint configuration, prints a concise handoff for the current agent
session, and instructs the host to restart/reload MCP. After restart, call
`filepad_bootstrap`.
The command exchanges a short Filepad pairing code, writes the runtime's MCP
configuration in the native host format, prints a concise handoff, and asks the
host to restart or reload MCP tools. After restart, call `filepad_bootstrap`.
This package does not install contract verification hooks. Claude Code contract
verification is owned by `@filepad/runtime-adapter-claude-code`.
Runtime-specific configuration:
That restart/reload message is an expected success state, not a pairing
failure. Some runtimes, including Codex, load MCP tools only when a session
starts; the CLI therefore reports `paired=true`, `configWritten=true`,
`nativeToolsAvailable=false`, and `requiresHostRestart=true` so agents can
calmly ask the user to restart before continuing.
- `codex`: writes `~/.codex/config.toml` under `mcp_servers.filepad` with
`http_headers.Authorization`.
- `claude-code`: registers an HTTP MCP server with Claude Code and falls back
to the same `~/.claude.json` shape Claude writes natively.
- `openclaw`: writes `mcp.servers.filepad`.
- `cursor`, `windsurf`, `generic-mcp`: write `mcpServers.filepad`.
For `--runtime openclaw`, the CLI writes Filepad under
`mcp.servers.filepad`, matching OpenClaw's native config schema. Other generic
MCP clients use the standard `mcpServers.filepad` shape.
The handoff also prints agent-facing probes:
- public health: `/agent-api/v1/health`
- public discovery: `/agent-api/v1/discovery`
- authenticated HTTP bootstrap fallback:
`/agent-api/v1/workspaces/{workspaceId}/bootstrap`
- remote MCP stream:
`/mcp/v1/workspaces/{workspaceId}/stream`
Use `--output json` for automation:
```bash
npx -y @filepad/agent-connect@latest pair A3K9MZ2X --runtime openclaw --output json
```
Use `--output json` for automation.

@@ -1,22 +0,7 @@

# Security Policy
# Security
## Supported Versions
`agent-connect` stores a Filepad MCP bearer token in the local agent host
configuration so the selected host can authenticate after restart. Config files
written by this package are chmodded to `0600` when the platform allows it.
Security fixes are provided for the latest published `0.x` release of `@filepad/agent-connect`.
## Reporting a Vulnerability
Email security reports to `security@filepad.ai`.
Please include:
- package name and version
- affected runtime or config writer
- reproduction steps
- expected impact
Do not open a public issue for vulnerabilities involving pairing codes, generated credentials, MCP config writes, request signing, secrets, or workspace data exposure.
## Secret Handling
Pairing codes are short-lived and should be pasted into the target agent runtime only. The CLI exchanges the code for agent credentials, writes them into the selected runtime config, and stores a structured result in a temporary file. Rotate the Filepad key if credentials are copied into chat, logs, screenshots, or source control.
Report security issues to security@filepad.ai.
MIT License
Copyright (c) Filepad
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.