@agent-native/core 0.49.6 → 0.49.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/agent/production-agent.d.ts.map +1 -1
  2. package/dist/agent/production-agent.js +6 -2
  3. package/dist/agent/production-agent.js.map +1 -1
  4. package/dist/agent/types.d.ts +6 -1
  5. package/dist/agent/types.d.ts.map +1 -1
  6. package/dist/agent/types.js.map +1 -1
  7. package/dist/cli/app-skill.d.ts.map +1 -1
  8. package/dist/cli/app-skill.js +21 -5
  9. package/dist/cli/app-skill.js.map +1 -1
  10. package/dist/cli/connect.d.ts.map +1 -1
  11. package/dist/cli/connect.js +46 -2
  12. package/dist/cli/connect.js.map +1 -1
  13. package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
  14. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  15. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  16. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  17. package/dist/cli/recap.d.ts +6 -11
  18. package/dist/cli/recap.d.ts.map +1 -1
  19. package/dist/cli/recap.js +14 -24
  20. package/dist/cli/recap.js.map +1 -1
  21. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  22. package/dist/client/agent-chat-adapter.js +30 -11
  23. package/dist/client/agent-chat-adapter.js.map +1 -1
  24. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
  25. package/dist/client/blocks/library/AnnotatedCodeBlock.js +20 -4
  26. package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
  27. package/dist/client/blocks/library/DiffBlock.d.ts.map +1 -1
  28. package/dist/client/blocks/library/DiffBlock.js +33 -9
  29. package/dist/client/blocks/library/DiffBlock.js.map +1 -1
  30. package/dist/client/blocks/library/annotation-rail.d.ts +41 -3
  31. package/dist/client/blocks/library/annotation-rail.d.ts.map +1 -1
  32. package/dist/client/blocks/library/annotation-rail.js +157 -29
  33. package/dist/client/blocks/library/annotation-rail.js.map +1 -1
  34. package/dist/client/blocks/types.d.ts +19 -0
  35. package/dist/client/blocks/types.d.ts.map +1 -1
  36. package/dist/client/blocks/types.js.map +1 -1
  37. package/dist/client/sse-event-processor.d.ts.map +1 -1
  38. package/dist/client/sse-event-processor.js +13 -12
  39. package/dist/client/sse-event-processor.js.map +1 -1
  40. package/dist/vite/client.d.ts.map +1 -1
  41. package/dist/vite/client.js +6 -8
  42. package/dist/vite/client.js.map +1 -1
  43. package/docs/content/pr-visual-recap.md +11 -12
  44. package/package.json +1 -1
@@ -181,7 +181,12 @@ export type AgentChatEvent = {
181
181
  details?: string;
182
182
  /** True when the user can reasonably continue/retry from partial work. */
183
183
  recoverable?: boolean;
184
- } | {
184
+ }
185
+ /**
186
+ * Legacy SSE terminal event. New streams emit
187
+ * `{ type: "error", errorCode: "missing_credentials" }` instead.
188
+ */
189
+ | {
185
190
  type: "missing_api_key";
186
191
  } | {
187
192
  type: "loop_limit";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReasoningEffort } from \"../shared/reasoning-effort.js\";\nimport type { AgentMcpAppPayload } from \"../mcp-client/app-result.js\";\n\nexport interface ActionTool {\n description: string;\n parameters?: {\n type: \"object\";\n properties: Record<\n string,\n {\n type: string;\n description?: string;\n enum?: string[];\n }\n >;\n required?: string[];\n };\n}\n\n/** @deprecated Use `ActionTool` instead */\nexport type ScriptTool = ActionTool;\n\nexport interface AgentMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport type AgentChatStructuredContentPart =\n | { type: \"text\"; text: string }\n | {\n type: \"tool-call\";\n id?: string;\n toolCallId?: string;\n name?: string;\n toolName?: string;\n input?: unknown;\n args?: unknown;\n }\n | {\n type: \"tool-result\";\n toolCallId: string;\n /** Persisted for replay; omitted in older rows is backfilled server-side. */\n toolName?: string;\n toolInput?: string;\n content: string;\n isError?: boolean;\n };\n\nexport interface AgentChatStructuredMessage {\n role: \"user\" | \"assistant\";\n content: AgentChatStructuredContentPart[];\n}\n\nexport interface AgentChatReference {\n type: \"file\" | \"skill\" | \"mention\" | \"agent\" | \"custom-agent\";\n path: string;\n name: string;\n source: string;\n refType?: string;\n refId?: string;\n}\n\nexport interface MentionProviderItem {\n id: string;\n label: string;\n description?: string;\n icon?: string;\n refType: string;\n refId?: string;\n refPath?: string;\n}\n\nexport interface MentionProvider {\n label: string;\n icon?: string;\n search: (\n query: string,\n /** The H3 event for the current request — use to make internal API calls */\n event?: any,\n ) => MentionProviderItem[] | Promise<MentionProviderItem[]>;\n}\n\nexport interface AgentChatAttachment {\n type: string;\n name: string;\n data?: string;\n contentType?: string;\n text?: string;\n}\n\nexport interface AgentChatScope {\n type: string;\n id: string;\n label?: string;\n}\n\nexport interface AgentChatRequest {\n message: string;\n /**\n * User-visible text to persist in chat history. `message` may be normalized\n * for the model (for example mention markup or internal continuation text).\n */\n displayMessage?: string;\n history?: AgentMessage[];\n /**\n * Provider-neutral transcript used for run recovery. Unlike `history`,\n * this preserves assistant tool calls and matching tool results so\n * continuation turns do not re-run completed read-only tools.\n */\n structuredHistory?: AgentChatStructuredMessage[];\n references?: AgentChatReference[];\n threadId?: string;\n attachments?: AgentChatAttachment[];\n /** Internal retry/continuation requests should not create visible user turns. */\n internalContinuation?: boolean;\n /**\n * Stable identity for the logical assistant turn this request belongs to.\n * The client sends the SAME turnId for the initial POST and every\n * auto-continuation re-POST of one turn, so the server can fold each\n * continuation run's output onto a single durable assistant message instead\n * of dropping the earlier chunks. Defaults to the run id when absent.\n */\n turnId?: string;\n /** Execution mode for this turn. Plan mode is read-only and proposes before acting. */\n mode?: \"act\" | \"plan\";\n /** Per-request model override (ephemeral, from the composer model picker). */\n model?: string;\n /** Per-request engine override (sent alongside model for cross-provider switches). */\n engine?: string;\n /** Per-request reasoning effort override (ephemeral, from the composer picker). */\n effort?: ReasoningEffort;\n /** Usage-tracking label for this call (e.g. \"chat\", \"summarize\"). Default: \"chat\". */\n usageLabel?: string;\n /** Stable browser tab id so screen/url context and navigation commands are tab-scoped. */\n browserTabId?: string;\n /** Resource scope for this chat thread, e.g. the deck currently bound to the tab. */\n scope?: AgentChatScope | null;\n /** When true, expose this chat turn as a user-visible run in RunsTray. */\n trackInRunsTray?: boolean;\n}\n\nexport type AgentChatEvent =\n | { type: \"text\"; text: string }\n | { type: \"thinking\"; text: string }\n | { type: \"activity\"; label: string; tool?: string }\n | { type: \"tool_start\"; tool: string; input: Record<string, string> }\n | {\n type: \"tool_done\";\n tool: string;\n result: string;\n mcpApp?: AgentMcpAppPayload;\n }\n | {\n type: \"agent_call\";\n agent: string;\n status: \"start\" | \"done\" | \"error\";\n }\n | { type: \"agent_call_text\"; agent: string; text: string }\n | {\n type: \"agent_task\";\n taskId: string;\n threadId: string;\n description: string;\n status: \"running\" | \"completed\" | \"errored\";\n }\n | {\n type: \"agent_task_update\";\n taskId: string;\n preview: string;\n currentStep?: string;\n }\n | {\n type: \"agent_task_complete\";\n taskId: string;\n summary: string;\n }\n | { type: \"done\" }\n | {\n type: \"error\";\n error: string;\n /**\n * Optional machine-readable error code. Builder gateway uses codes\n * like \"credits-limit-monthly\" / \"unauthorized\" / \"gateway_not_enabled\"\n * so the chat UI can render a structured CTA (e.g. upgrade button).\n */\n errorCode?: string;\n /** Optional link paired with errorCode — e.g. Builder billing page. */\n upgradeUrl?: string;\n /** Optional details for expandable UI/debugging. */\n details?: string;\n /** True when the user can reasonably continue/retry from partial work. */\n recoverable?: boolean;\n }\n | { type: \"missing_api_key\" }\n | { type: \"loop_limit\"; maxIterations?: number }\n | {\n type: \"auto_continue\";\n reason:\n | \"run_timeout\"\n | \"loop_limit\"\n | \"no_progress\"\n | \"stream_ended\"\n | \"gateway_timeout\"\n | \"network_interrupted\";\n maxIterations?: number;\n }\n | { type: \"clear\" };\n\nexport interface RunEvent {\n seq: number;\n event: AgentChatEvent;\n}\n\nexport type RunStatus = \"running\" | \"completed\" | \"errored\" | \"aborted\";\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReasoningEffort } from \"../shared/reasoning-effort.js\";\nimport type { AgentMcpAppPayload } from \"../mcp-client/app-result.js\";\n\nexport interface ActionTool {\n description: string;\n parameters?: {\n type: \"object\";\n properties: Record<\n string,\n {\n type: string;\n description?: string;\n enum?: string[];\n }\n >;\n required?: string[];\n };\n}\n\n/** @deprecated Use `ActionTool` instead */\nexport type ScriptTool = ActionTool;\n\nexport interface AgentMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport type AgentChatStructuredContentPart =\n | { type: \"text\"; text: string }\n | {\n type: \"tool-call\";\n id?: string;\n toolCallId?: string;\n name?: string;\n toolName?: string;\n input?: unknown;\n args?: unknown;\n }\n | {\n type: \"tool-result\";\n toolCallId: string;\n /** Persisted for replay; omitted in older rows is backfilled server-side. */\n toolName?: string;\n toolInput?: string;\n content: string;\n isError?: boolean;\n };\n\nexport interface AgentChatStructuredMessage {\n role: \"user\" | \"assistant\";\n content: AgentChatStructuredContentPart[];\n}\n\nexport interface AgentChatReference {\n type: \"file\" | \"skill\" | \"mention\" | \"agent\" | \"custom-agent\";\n path: string;\n name: string;\n source: string;\n refType?: string;\n refId?: string;\n}\n\nexport interface MentionProviderItem {\n id: string;\n label: string;\n description?: string;\n icon?: string;\n refType: string;\n refId?: string;\n refPath?: string;\n}\n\nexport interface MentionProvider {\n label: string;\n icon?: string;\n search: (\n query: string,\n /** The H3 event for the current request — use to make internal API calls */\n event?: any,\n ) => MentionProviderItem[] | Promise<MentionProviderItem[]>;\n}\n\nexport interface AgentChatAttachment {\n type: string;\n name: string;\n data?: string;\n contentType?: string;\n text?: string;\n}\n\nexport interface AgentChatScope {\n type: string;\n id: string;\n label?: string;\n}\n\nexport interface AgentChatRequest {\n message: string;\n /**\n * User-visible text to persist in chat history. `message` may be normalized\n * for the model (for example mention markup or internal continuation text).\n */\n displayMessage?: string;\n history?: AgentMessage[];\n /**\n * Provider-neutral transcript used for run recovery. Unlike `history`,\n * this preserves assistant tool calls and matching tool results so\n * continuation turns do not re-run completed read-only tools.\n */\n structuredHistory?: AgentChatStructuredMessage[];\n references?: AgentChatReference[];\n threadId?: string;\n attachments?: AgentChatAttachment[];\n /** Internal retry/continuation requests should not create visible user turns. */\n internalContinuation?: boolean;\n /**\n * Stable identity for the logical assistant turn this request belongs to.\n * The client sends the SAME turnId for the initial POST and every\n * auto-continuation re-POST of one turn, so the server can fold each\n * continuation run's output onto a single durable assistant message instead\n * of dropping the earlier chunks. Defaults to the run id when absent.\n */\n turnId?: string;\n /** Execution mode for this turn. Plan mode is read-only and proposes before acting. */\n mode?: \"act\" | \"plan\";\n /** Per-request model override (ephemeral, from the composer model picker). */\n model?: string;\n /** Per-request engine override (sent alongside model for cross-provider switches). */\n engine?: string;\n /** Per-request reasoning effort override (ephemeral, from the composer picker). */\n effort?: ReasoningEffort;\n /** Usage-tracking label for this call (e.g. \"chat\", \"summarize\"). Default: \"chat\". */\n usageLabel?: string;\n /** Stable browser tab id so screen/url context and navigation commands are tab-scoped. */\n browserTabId?: string;\n /** Resource scope for this chat thread, e.g. the deck currently bound to the tab. */\n scope?: AgentChatScope | null;\n /** When true, expose this chat turn as a user-visible run in RunsTray. */\n trackInRunsTray?: boolean;\n}\n\nexport type AgentChatEvent =\n | { type: \"text\"; text: string }\n | { type: \"thinking\"; text: string }\n | { type: \"activity\"; label: string; tool?: string }\n | { type: \"tool_start\"; tool: string; input: Record<string, string> }\n | {\n type: \"tool_done\";\n tool: string;\n result: string;\n mcpApp?: AgentMcpAppPayload;\n }\n | {\n type: \"agent_call\";\n agent: string;\n status: \"start\" | \"done\" | \"error\";\n }\n | { type: \"agent_call_text\"; agent: string; text: string }\n | {\n type: \"agent_task\";\n taskId: string;\n threadId: string;\n description: string;\n status: \"running\" | \"completed\" | \"errored\";\n }\n | {\n type: \"agent_task_update\";\n taskId: string;\n preview: string;\n currentStep?: string;\n }\n | {\n type: \"agent_task_complete\";\n taskId: string;\n summary: string;\n }\n | { type: \"done\" }\n | {\n type: \"error\";\n error: string;\n /**\n * Optional machine-readable error code. Builder gateway uses codes\n * like \"credits-limit-monthly\" / \"unauthorized\" / \"gateway_not_enabled\"\n * so the chat UI can render a structured CTA (e.g. upgrade button).\n */\n errorCode?: string;\n /** Optional link paired with errorCode — e.g. Builder billing page. */\n upgradeUrl?: string;\n /** Optional details for expandable UI/debugging. */\n details?: string;\n /** True when the user can reasonably continue/retry from partial work. */\n recoverable?: boolean;\n }\n /**\n * Legacy SSE terminal event. New streams emit\n * `{ type: \"error\", errorCode: \"missing_credentials\" }` instead.\n */\n | { type: \"missing_api_key\" }\n | { type: \"loop_limit\"; maxIterations?: number }\n | {\n type: \"auto_continue\";\n reason:\n | \"run_timeout\"\n | \"loop_limit\"\n | \"no_progress\"\n | \"stream_ended\"\n | \"gateway_timeout\"\n | \"network_interrupted\";\n maxIterations?: number;\n }\n | { type: \"clear\" };\n\nexport interface RunEvent {\n seq: number;\n event: AgentChatEvent;\n}\n\nexport type RunStatus = \"running\" | \"completed\" | \"errored\" | \"aborted\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"app-skill.d.ts","sourceRoot":"","sources":["../../src/cli/app-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-skill.d.ts","sourceRoot":"","sources":["../../src/cli/app-skill.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ import path from "node:path";
12
12
  import { spawn } from "node:child_process";
13
13
  import { createHash } from "node:crypto";
14
14
  import { buildHttpMcpEntry, removeSameUrlDuplicatesForClient, } from "./mcp-config-writers.js";
15
- import { resolveClients, writeConfigs } from "./connect.js";
15
+ import { resolveClients, supportsRemoteMcpOAuth, writeConfigs, } from "./connect.js";
16
16
  const HELP = `agent-native app-skill
17
17
 
18
18
  Usage:
@@ -878,21 +878,37 @@ export async function ensureAppSkill(loaded, options = {}) {
878
878
  await confirmMcpRegistration(result, loaded.manifest.displayName, scope);
879
879
  }
880
880
  const baseDir = options.baseDir ?? process.cwd();
881
- result.written = writeConfigs(clients, serverName, plan.mcpUrl, undefined, scope, baseDir);
881
+ const authMode = manifest.auth?.mode ?? "oauth";
882
+ const shouldSkipDeviceHostedConfig = mode === "hosted" && authMode !== "none";
883
+ const writableClients = shouldSkipDeviceHostedConfig
884
+ ? clients.filter((client) => supportsRemoteMcpOAuth(client))
885
+ : clients;
886
+ const skippedClients = shouldSkipDeviceHostedConfig
887
+ ? clients.filter((client) => !supportsRemoteMcpOAuth(client))
888
+ : [];
889
+ result.written = writableClients.length
890
+ ? writeConfigs(writableClients, serverName, plan.mcpUrl, undefined, scope, baseDir)
891
+ : [];
892
+ if (skippedClients.length > 0) {
893
+ options.log?.(`Skipped URL-only hosted MCP config for ${skippedClients.join(", ")}; run agent-native connect ${manifest.hosted.url} --client ${skippedClients.join(",")} --scope ${scope} to write bearer auth.`);
894
+ }
895
+ if (writableClients.length === 0) {
896
+ return result;
897
+ }
882
898
  // Aliases are intentionally NOT written as separate entries. Instead,
883
899
  // repurpose the alias list as a cleanup list: remove any other entries in
884
900
  // the same config files that point at the same URL (covers legacy alias
885
901
  // names, old default names like 'agent-native-<slug>', and any stale
886
902
  // custom names left from previous installs).
887
903
  const allRemovedNames = [];
888
- for (const client of clients) {
904
+ for (const client of writableClients) {
889
905
  const removed = removeSameUrlDuplicatesForClient(client, serverName, plan.mcpUrl, baseDir, scope);
890
906
  allRemovedNames.push(...removed);
891
907
  }
892
908
  const uniqueRemoved = [...new Set(allRemovedNames)];
893
909
  const logMsg = uniqueRemoved.length > 0
894
- ? `Registered "${serverName}" for ${clients.join(", ")} at ${plan.mcpUrl}; removed duplicate entries: ${uniqueRemoved.join(", ")}`
895
- : `Registered "${serverName}" for ${clients.join(", ")} at ${plan.mcpUrl}`;
910
+ ? `Registered "${serverName}" for ${writableClients.join(", ")} at ${plan.mcpUrl}; removed duplicate entries: ${uniqueRemoved.join(", ")}`
911
+ : `Registered "${serverName}" for ${writableClients.join(", ")} at ${plan.mcpUrl}`;
896
912
  options.log?.(logMsg);
897
913
  return result;
898
914
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-skill.js","sourceRoot":"","sources":["../../src/cli/app-skill.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native app-skill` packages an agent-native app as a distributable\n * skill bundle: instructions + MCP connector + embeddable app surfaces.\n *\n * The manifest intentionally contains no user secrets. Hosted installs write\n * URL-only MCP entries; clients that need auth complete OAuth/device setup in\n * the host. Local installs point at a developer-owned app process.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\n\nimport {\n type ClientId,\n buildHttpMcpEntry,\n removeSameUrlDuplicatesForClient,\n} from \"./mcp-config-writers.js\";\nimport { resolveClients, writeConfigs } from \"./connect.js\";\n\nexport type SkillVisibility = \"internal\" | \"exported\" | \"both\";\nexport type AppSkillHostAdapter =\n | \"codex-plugin\"\n | \"claude-marketplace\"\n | \"vercel-skills\"\n | \"plain-skill\"\n | \"claude-skill\"\n | \"chatgpt-mcp\"\n | \"generic-mcp\";\n\nexport interface AppSkillManifestSkill {\n path: string;\n visibility: SkillVisibility;\n exportAs?: string;\n}\n\nexport interface AppSkillSurface {\n id: string;\n action?: string;\n path: string;\n mediaTypes?: string[];\n defaultMediaType?: string;\n}\n\nexport interface AppSkillManifest {\n schemaVersion: 1;\n id: string;\n displayName: string;\n description: string;\n /**\n * Optional semver base for generated plugin manifests. Codex keys its plugin\n * cache on the version string, so the packer appends a content hash to this\n * base; leave it unset to default to \"1.0.0\".\n */\n version?: string;\n hosted: {\n url: string;\n mcpUrl: string;\n };\n mcp: {\n serverName: string;\n aliases?: string[];\n };\n local?: {\n template?: string;\n sourcePath?: string;\n defaultUrl?: string;\n commands?: {\n install?: string;\n dev?: string;\n start?: string;\n };\n };\n auth?: {\n mode?: \"oauth\" | \"device\" | \"none\";\n setup?: string;\n };\n surfaces: AppSkillSurface[];\n skills: AppSkillManifestSkill[];\n hostAdapters: AppSkillHostAdapter[];\n}\n\nexport interface LoadedAppSkillManifest {\n manifest: AppSkillManifest;\n file: string;\n dir: string;\n}\n\nexport interface ParsedAppSkillArgs {\n command: \"ensure\" | \"launch\" | \"pack\" | \"help\";\n manifest?: string;\n client: string;\n scope: string;\n serverName?: string;\n out?: string;\n into?: string;\n mode: \"hosted\" | \"local\";\n dryRun: boolean;\n skipInstall: boolean;\n noRegister: boolean;\n printJson: boolean;\n yes: boolean;\n}\n\nexport interface EnsureAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n dryRun?: boolean;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface EnsureAppSkillResult {\n mode: \"hosted\" | \"local\";\n serverName: string;\n mcpUrl: string;\n clients: ClientId[];\n written: { client: ClientId; file: string }[];\n}\n\nexport interface LaunchAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n into?: string;\n dryRun?: boolean;\n skipInstall?: boolean;\n noRegister?: boolean;\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface AppSkillLaunchPlan {\n mode: \"hosted\" | \"local\";\n appId: string;\n appDir?: string;\n sourceDir?: string;\n url: string;\n mcpUrl: string;\n serverName: string;\n commands: {\n install?: string;\n dev?: string;\n start?: string;\n };\n}\n\nconst HELP = `agent-native app-skill\n\nUsage:\n agent-native app-skill ensure [--manifest <file>] [--hosted|--local] [--client all|codex|claude-code|claude-code-cli|cowork] [--scope user|project] [--name <server>] [--yes] [--dry-run] [--json]\n agent-native app-skill launch [--manifest <file>] [--local|--hosted] [--into <path>] [--client <client>] [--scope user|project] [--name <server>] [--no-register] [--skip-install] [--yes] [--dry-run] [--json]\n agent-native app-skill pack [--manifest <file>] --out <dir> [--json]\n\nCommands:\n ensure Register the app skill MCP connector for your local agent clients.\n launch Open the hosted app, or materialize and start a local editable app.\n pack Create marketplace-ready skill, MCP, Codex/Claude plugin, and Vercel skills adapters.\n\nHosted is the default. Use --local when you want editable source, offline work,\nor a privacy-sensitive local app instance.`;\n\nconst APP_SKILL_COMMANDS = new Set([\"ensure\", \"launch\", \"pack\"]);\nconst APP_SKILL_SCOPES = new Set([\"user\", \"project\"]);\nconst SAFE_PACKAGE_EXECUTABLES = new Set([\"pnpm\", \"npm\", \"bun\", \"yarn\"]);\nconst SAFE_ENV_KEYS = [\n \"PATH\",\n \"HOME\",\n \"USER\",\n \"SHELL\",\n \"TMPDIR\",\n \"TEMP\",\n \"TMP\",\n \"TERM\",\n \"CI\",\n \"PNPM_HOME\",\n \"COREPACK_HOME\",\n \"SystemRoot\",\n \"ComSpec\",\n];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction stringArray(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction normalizeOriginUrl(value: string, field: string): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new Error(`${field} must be a valid URL.`);\n }\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`${field} must use http:// or https://.`);\n }\n return `${url.origin}${url.pathname}`.replace(/\\/+$/, \"\");\n}\n\nfunction withMcpPath(baseUrl: string): string {\n return `${baseUrl.replace(/\\/+$/, \"\")}/_agent-native/mcp`;\n}\n\nfunction normalizeSkillVisibility(value: unknown): SkillVisibility {\n if (value === \"internal\" || value === \"exported\" || value === \"both\") {\n return value;\n }\n return \"both\";\n}\n\nfunction normalizeHostAdapter(value: unknown): AppSkillHostAdapter | null {\n if (\n value === \"codex-plugin\" ||\n value === \"claude-marketplace\" ||\n value === \"vercel-skills\" ||\n value === \"plain-skill\" ||\n value === \"claude-skill\" ||\n value === \"chatgpt-mcp\" ||\n value === \"generic-mcp\"\n ) {\n return value;\n }\n return null;\n}\n\nfunction defaultHostAdapters(): AppSkillHostAdapter[] {\n return [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ];\n}\n\nfunction uniqueAdapters(values: AppSkillHostAdapter[]): AppSkillHostAdapter[] {\n const seen = new Set<AppSkillHostAdapter>();\n return values.filter((value) => {\n if (seen.has(value)) return false;\n seen.add(value);\n return true;\n });\n}\n\nexport function normalizeAppSkillManifest(raw: unknown): AppSkillManifest {\n if (!isRecord(raw)) throw new Error(\"App skill manifest must be an object.\");\n const schemaVersion = raw.schemaVersion ?? 1;\n if (schemaVersion !== 1) {\n throw new Error(`Unsupported app skill schemaVersion: ${schemaVersion}`);\n }\n\n const id = stringValue(raw.id);\n if (!id || !/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/.test(id)) {\n throw new Error(\n \"App skill manifest id must be kebab-case and 2-64 characters.\",\n );\n }\n\n const hostedRaw = isRecord(raw.hosted) ? raw.hosted : {};\n const hostedUrl = normalizeOriginUrl(\n stringValue(hostedRaw.url) ?? \"\",\n \"hosted.url\",\n );\n const hostedMcpUrl = normalizeOriginUrl(\n stringValue(hostedRaw.mcpUrl) ?? withMcpPath(hostedUrl),\n \"hosted.mcpUrl\",\n );\n\n const mcpRaw = isRecord(raw.mcp) ? raw.mcp : {};\n const localRaw = isRecord(raw.local) ? raw.local : undefined;\n const commandsRaw = isRecord(localRaw?.commands)\n ? localRaw.commands\n : undefined;\n const surfacesRaw = Array.isArray(raw.surfaces) ? raw.surfaces : [];\n const skillsRaw = Array.isArray(raw.skills) ? raw.skills : [];\n const adaptersRaw = Array.isArray(raw.hostAdapters) ? raw.hostAdapters : [];\n const authRaw = isRecord(raw.auth) ? raw.auth : undefined;\n\n const adapters = uniqueAdapters(\n adaptersRaw\n .map(normalizeHostAdapter)\n .filter((value): value is AppSkillHostAdapter => Boolean(value)),\n );\n\n return {\n schemaVersion: 1,\n id,\n displayName: stringValue(raw.displayName) ?? id,\n description:\n stringValue(raw.description) ??\n `Agent-native app-backed skill for ${id}.`,\n ...(stringValue(raw.version) ? { version: stringValue(raw.version) } : {}),\n hosted: {\n url: hostedUrl,\n mcpUrl: hostedMcpUrl,\n },\n mcp: {\n serverName: stringValue(mcpRaw.serverName) ?? `agent-native-${id}`,\n aliases: stringArray(mcpRaw.aliases),\n },\n ...(localRaw\n ? {\n local: {\n ...(stringValue(localRaw.template)\n ? { template: stringValue(localRaw.template) }\n : {}),\n ...(stringValue(localRaw.sourcePath)\n ? { sourcePath: stringValue(localRaw.sourcePath) }\n : {}),\n ...(stringValue(localRaw.defaultUrl)\n ? {\n defaultUrl: normalizeOriginUrl(\n stringValue(localRaw.defaultUrl)!,\n \"local.defaultUrl\",\n ),\n }\n : {}),\n commands: {\n install: stringValue(commandsRaw?.install) ?? \"pnpm install\",\n dev: stringValue(commandsRaw?.dev) ?? \"pnpm dev\",\n start: stringValue(commandsRaw?.start) ?? \"pnpm start\",\n },\n },\n }\n : {}),\n ...(authRaw\n ? {\n auth: {\n ...(authRaw.mode === \"oauth\" ||\n authRaw.mode === \"device\" ||\n authRaw.mode === \"none\"\n ? { mode: authRaw.mode }\n : {}),\n ...(stringValue(authRaw.setup)\n ? { setup: stringValue(authRaw.setup) }\n : {}),\n },\n }\n : {}),\n surfaces: surfacesRaw.filter(isRecord).map((surface) => ({\n id: stringValue(surface.id) ?? \"app\",\n ...(stringValue(surface.action)\n ? { action: stringValue(surface.action) }\n : {}),\n path: stringValue(surface.path) ?? \"/\",\n mediaTypes: stringArray(surface.mediaTypes),\n ...(stringValue(surface.defaultMediaType)\n ? { defaultMediaType: stringValue(surface.defaultMediaType) }\n : {}),\n })),\n skills: skillsRaw\n .filter(isRecord)\n .map((skill) => ({\n path: stringValue(skill.path) ?? \"\",\n visibility: normalizeSkillVisibility(skill.visibility),\n ...(stringValue(skill.exportAs)\n ? { exportAs: stringValue(skill.exportAs) }\n : {}),\n }))\n .filter((skill) => skill.path),\n hostAdapters: adapters.length ? adapters : defaultHostAdapters(),\n };\n}\n\nexport function findAppSkillManifest(startDir: string = process.cwd()): string {\n let current = path.resolve(startDir);\n while (true) {\n const candidate = path.join(current, \"agent-native.app-skill.json\");\n if (fs.existsSync(candidate)) return candidate;\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n throw new Error(\n \"Could not find agent-native.app-skill.json. Pass --manifest <file>.\",\n );\n}\n\nexport function loadAppSkillManifest(file?: string): LoadedAppSkillManifest {\n const resolved = path.resolve(file ?? findAppSkillManifest());\n const raw = JSON.parse(fs.readFileSync(resolved, \"utf-8\"));\n return {\n manifest: normalizeAppSkillManifest(raw),\n file: resolved,\n dir: path.dirname(resolved),\n };\n}\n\nexport function exportedSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"exported\" || skill.visibility === \"both\",\n );\n}\n\nexport function internalSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"internal\" || skill.visibility === \"both\",\n );\n}\n\nexport function parseAppSkillArgs(argv: string[]): ParsedAppSkillArgs {\n const first = argv[0];\n let command: ParsedAppSkillArgs[\"command\"] = \"ensure\";\n let args = argv;\n if (first === \"help\" || first === \"--help\" || first === \"-h\") {\n command = \"help\";\n args = argv.slice(1);\n } else if (APP_SKILL_COMMANDS.has(first ?? \"\")) {\n command = first as ParsedAppSkillArgs[\"command\"];\n args = argv.slice(1);\n } else if (first && !first.startsWith(\"-\") && !looksLikeManifestArg(first)) {\n throw new Error(`Unknown app-skill command: ${first}`);\n }\n const out: ParsedAppSkillArgs = {\n command,\n client: \"all\",\n scope: \"user\",\n mode: \"hosted\",\n dryRun: false,\n skipInstall: false,\n noRegister: false,\n printJson: false,\n yes: false,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const eat = (flag: string): string | undefined => {\n if (arg === flag) {\n const next = args[++i];\n if (!next || next.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return next;\n }\n if (arg.startsWith(`${flag}=`)) {\n const value = arg.slice(flag.length + 1);\n if (!value) throw new Error(`Missing value for ${flag}.`);\n return value;\n }\n return undefined;\n };\n let value: string | undefined;\n if ((value = eat(\"--manifest\")) !== undefined) out.manifest = value;\n else if ((value = eat(\"--client\")) !== undefined) out.client = value;\n else if ((value = eat(\"--scope\")) !== undefined) out.scope = value;\n else if ((value = eat(\"--name\")) !== undefined) out.serverName = value;\n else if ((value = eat(\"--server-name\")) !== undefined)\n out.serverName = value;\n else if ((value = eat(\"--out\")) !== undefined) out.out = value;\n else if ((value = eat(\"--into\")) !== undefined) out.into = value;\n else if (arg === \"--local\") out.mode = \"local\";\n else if (arg === \"--hosted\") out.mode = \"hosted\";\n else if (arg === \"--dry-run\") out.dryRun = true;\n else if (arg === \"--skip-install\" || arg === \"--no-install\")\n out.skipInstall = true;\n else if (arg === \"--no-register\") out.noRegister = true;\n else if (arg === \"--json\") out.printJson = true;\n else if (arg === \"--yes\" || arg === \"-y\") out.yes = true;\n else if (arg.startsWith(\"-\")) throw new Error(`Unknown option: ${arg}`);\n else if (!out.manifest) out.manifest = arg;\n else throw new Error(`Unexpected argument: ${arg}`);\n }\n\n if (!APP_SKILL_SCOPES.has(out.scope)) {\n throw new Error(\"--scope must be either user or project.\");\n }\n\n return out;\n}\n\nfunction looksLikeManifestArg(value: string): boolean {\n return (\n value.endsWith(\".json\") ||\n value.includes(\"/\") ||\n value.includes(\"\\\\\") ||\n fs.existsSync(value)\n );\n}\n\nfunction assertPathInside(root: string, target: string, field: string): string {\n const resolvedRoot = path.resolve(root);\n const resolvedTarget = path.resolve(target);\n const relative = path.relative(resolvedRoot, resolvedTarget);\n if (relative && (relative.startsWith(\"..\") || path.isAbsolute(relative))) {\n throw new Error(`${field} must resolve inside ${resolvedRoot}.`);\n }\n return resolvedTarget;\n}\n\nfunction resolveSkillSource(manifestDir: string, skill: AppSkillManifestSkill) {\n if (path.isAbsolute(skill.path)) {\n throw new Error(`Skill path must be relative: ${skill.path}`);\n }\n return assertPathInside(\n manifestDir,\n path.resolve(manifestDir, skill.path),\n `Skill path ${skill.path}`,\n );\n}\n\nfunction skillExportName(skill: AppSkillManifestSkill): string {\n if (skill.exportAs) {\n if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(skill.exportAs)) {\n throw new Error(`Invalid skill export name: ${skill.exportAs}`);\n }\n return skill.exportAs;\n }\n const normalized = skill.path.replace(/\\/+$/, \"\");\n return path.basename(normalized);\n}\n\nfunction copyDirFiltered(source: string, dest: string): void {\n const sourceRoot = path.resolve(source);\n const destRoot = path.resolve(dest);\n const relativeDest = path.relative(sourceRoot, destRoot);\n const outputRootInsideSource =\n relativeDest &&\n !relativeDest.startsWith(\"..\") &&\n !path.isAbsolute(relativeDest)\n ? path.join(sourceRoot, relativeDest.split(path.sep)[0])\n : destRoot;\n fs.cpSync(source, dest, {\n recursive: true,\n filter: (src) => {\n const resolved = path.resolve(src);\n if (\n resolved === outputRootInsideSource ||\n resolved.startsWith(`${outputRootInsideSource}${path.sep}`)\n ) {\n return false;\n }\n const base = path.basename(src);\n const lower = base.toLowerCase();\n return (\n base !== \"node_modules\" &&\n base !== \".git\" &&\n base !== \"dist\" &&\n base !== \".output\" &&\n base !== \".react-router\" &&\n base !== \".netlify\" &&\n base !== \"secrets\" &&\n base !== \"private\" &&\n !base.startsWith(\".env\") &&\n base !== \".dev.vars\" &&\n base !== \".npmrc\" &&\n !lower.endsWith(\".db\") &&\n !lower.endsWith(\".sqlite\") &&\n !lower.endsWith(\".sqlite3\") &&\n !lower.endsWith(\".pem\") &&\n !lower.endsWith(\".key\") &&\n !lower.endsWith(\".crt\") &&\n !lower.endsWith(\".p12\")\n );\n },\n });\n}\n\nfunction copySkill(\n manifestDir: string,\n skill: AppSkillManifestSkill,\n destRoot: string,\n): string {\n const source = resolveSkillSource(manifestDir, skill);\n const exportName = skillExportName(skill);\n const dest = path.join(destRoot, exportName);\n if (!fs.existsSync(source)) {\n throw new Error(`Exported skill source not found: ${source}`);\n }\n fs.mkdirSync(destRoot, { recursive: true });\n const stat = fs.statSync(source);\n if (stat.isDirectory()) {\n copyDirFiltered(source, dest);\n } else {\n fs.mkdirSync(dest, { recursive: true });\n fs.copyFileSync(source, path.join(dest, \"SKILL.md\"));\n }\n rewriteSkillFrontmatterName(path.join(dest, \"SKILL.md\"), exportName);\n return dest;\n}\n\nfunction rewriteSkillFrontmatterName(file: string, name: string): void {\n if (!fs.existsSync(file)) return;\n const source = fs.readFileSync(file, \"utf-8\");\n const lines = source.split(\"\\n\");\n if (lines[0]?.trim() !== \"---\") return;\n const end = lines.findIndex(\n (line, index) => index > 0 && line.trim() === \"---\",\n );\n if (end <= 0) return;\n const nameIndex = lines.findIndex(\n (line, index) => index > 0 && index < end && /^name\\s*:/.test(line),\n );\n if (nameIndex === -1) {\n lines.splice(1, 0, `name: ${name}`);\n } else {\n lines[nameIndex] = `name: ${name}`;\n }\n fs.writeFileSync(file, lines.join(\"\\n\"), \"utf-8\");\n}\n\nfunction writeJson(file: string, value: unknown): void {\n fs.mkdirSync(path.dirname(file), { recursive: true });\n fs.writeFileSync(file, JSON.stringify(value, null, 2) + \"\\n\", \"utf-8\");\n}\n\nfunction mcpServerNames(\n manifest: AppSkillManifest,\n serverName?: string,\n): string[] {\n if (serverName) return [serverName];\n const names = [manifest.mcp.serverName, ...(manifest.mcp.aliases ?? [])];\n return [...new Set(names.filter(Boolean))];\n}\n\nfunction mcpServerConfig(manifest: AppSkillManifest, serverName?: string) {\n const entry = buildHttpMcpEntry(manifest.hosted.mcpUrl);\n return {\n mcpServers: Object.fromEntries(\n mcpServerNames(manifest, serverName).map((name) => [name, entry]),\n ),\n };\n}\n\nfunction pluginName(manifest: AppSkillManifest): string {\n return `agent-native-${manifest.id}`;\n}\n\nfunction claudeMarketplaceName(): string {\n return \"agent-native-apps\";\n}\n\nexport function exportedSkillContentHash(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n manifest: AppSkillManifest,\n): string {\n const parts = skills\n .map((skill) => {\n const skillDir = path.join(manifestDir, skill.path);\n // Hash SKILL.md plus every sibling file under the skill dir (e.g.\n // references/*), so a progressive-disclosure reference edit still changes\n // the content hash and bumps the Codex plugin version for auto-upgrade.\n const body = collectSkillFiles(skillDir)\n .map(\n (rel) =>\n `${rel}\\n${fs.readFileSync(path.join(skillDir, rel), \"utf-8\")}`,\n )\n .join(\"\\n \\n\");\n return `${skillExportName(skill)}\\n${body}`;\n })\n .sort();\n parts.push(\n `mcp:${mcpServerNames(manifest).join(\",\")}:${manifest.hosted.mcpUrl}`,\n );\n return createHash(\"sha256\")\n .update(parts.join(\"\\n\u0000\\n\"))\n .digest(\"hex\")\n .slice(0, 12);\n}\n\n/**\n * List a skill dir's files (SKILL.md + any siblings like references/*) as\n * skill-relative POSIX paths, sorted for a stable content hash. A bare SKILL.md\n * source (file, not dir) falls back to just \"SKILL.md\".\n */\nfunction collectSkillFiles(skillDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, prefix: string): void => {\n if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) return;\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) walk(path.join(dir, entry.name), rel);\n else if (entry.isFile()) out.push(rel);\n }\n };\n walk(skillDir, \"\");\n if (out.length === 0) {\n // Source resolved to a single SKILL.md file rather than a dir, or is empty.\n return [\"SKILL.md\"];\n }\n return out.sort();\n}\n\n/**\n * Plugin version embeds a content hash of the exported skills + MCP server\n * identity/endpoint.\n * Codex keys its plugin cache on the version string, so a changed skill or MCP\n * URL yields a new version and `codex plugin marketplace upgrade` (which runs\n * on startup) delivers the update automatically — no manual semver bump per\n * edit. Claude Code uses commit-SHA versioning instead (plugin.json omits\n * version), so it auto-updates on every push.\n */\nexport function resolvePluginVersion(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n): string {\n const base = manifest.version ?? \"1.0.0\";\n return `${base}+codex.${exportedSkillContentHash(manifestDir, skills, manifest)}`;\n}\n\nfunction writeCodexPluginAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n version: string,\n): void {\n const name = pluginName(manifest);\n writeJson(path.join(outDir, \".codex-plugin\", \"plugin.json\"), {\n name,\n version,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n interface: {\n displayName: manifest.displayName,\n shortDescription: manifest.description,\n longDescription:\n `${manifest.displayName} packages agent instructions, app actions, ` +\n \"an MCP connector, and inline UI surfaces as an installable skill.\",\n developerName: \"Agent-Native\",\n category: \"Productivity\",\n capabilities: [\"Interactive\", \"Read\", \"Write\"],\n websiteURL: manifest.hosted.url,\n defaultPrompt: [\n `Open ${manifest.displayName} where useful`,\n `Use ${manifest.displayName} for app-backed workflows`,\n `Search ${manifest.displayName} and return usable context`,\n ],\n brandColor: \"#2563EB\",\n },\n });\n writeJson(path.join(outDir, \".mcp.json\"), mcpServerConfig(manifest));\n}\n\nfunction writeClaudeMarketplaceAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"claude-marketplace\");\n const name = pluginName(manifest);\n const marketplaceName = claudeMarketplaceName();\n const pluginDir = path.join(adapterDir, \"plugins\", name);\n const skillRoot = path.join(pluginDir, \"skills\");\n\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n\n writeJson(path.join(adapterDir, \".claude-plugin\", \"marketplace.json\"), {\n name: marketplaceName,\n description:\n \"Agent-Native app-backed skills that bundle instructions, MCP connectors, and UI surfaces.\",\n owner: {\n name: \"Agent-Native\",\n },\n plugins: [\n {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n source: `./plugins/${name}`,\n autoUpdate: true,\n homepage: manifest.hosted.url,\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n },\n ],\n });\n\n writeJson(path.join(pluginDir, \".claude-plugin\", \"plugin.json\"), {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n repository: \"https://github.com/BuilderIO/agent-native\",\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n });\n writeJson(path.join(pluginDir, \".mcp.json\"), mcpServerConfig(manifest));\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Claude Code Marketplace`,\n \"\",\n \"Install this local marketplace from Claude Code:\",\n \"\",\n \"```text\",\n `/plugin marketplace add ./dist/${manifest.id}-skill/adapters/claude-marketplace`,\n `/plugin install ${name}@${marketplaceName}`,\n \"/reload-plugins\",\n \"/mcp\",\n \"```\",\n \"\",\n \"Authenticate the MCP connector from `/mcp` after installation. The plugin ships a URL-only MCP config, so no shared secrets are stored in the marketplace package.\",\n \"\",\n \"For a published marketplace repo, point `/plugin marketplace add` at the repository URL instead of the local folder.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n}\n\nfunction writeMcpAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n adapter: \"generic-mcp\" | \"chatgpt-mcp\",\n): void {\n const dir = path.join(outDir, \"adapters\", adapter);\n if (adapter === \"generic-mcp\") {\n writeJson(path.join(dir, \"mcp.json\"), mcpServerConfig(manifest));\n return;\n }\n writeJson(path.join(dir, \"connector.json\"), {\n name: manifest.mcp.serverName,\n title: manifest.displayName,\n url: manifest.hosted.mcpUrl,\n auth: manifest.auth?.mode ?? \"oauth\",\n surfaces: manifest.surfaces,\n });\n}\n\nfunction copySkillAdapter(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n adapter: \"plain-skill\" | \"claude-skill\" | \"vercel-skills\",\n): void {\n const skillRoot = path.join(outDir, \"adapters\", adapter, \"skills\");\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n}\n\nfunction writeVercelSkillsAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"vercel-skills\");\n copySkillAdapter(manifestDir, skills, outDir, \"vercel-skills\");\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Skills`,\n \"\",\n \"Install instructions only with the Vercel Labs/open skills CLI:\",\n \"\",\n \"```bash\",\n `npx skills@latest add . --skill ${skills.map(skillExportName).join(\" --skill \")} -a codex`,\n \"```\",\n \"\",\n \"Then register the app-backed MCP connector:\",\n \"\",\n \"```bash\",\n `npx @agent-native/core@latest app-skill ensure --manifest agent-native.app-skill.json --yes`,\n \"```\",\n \"\",\n \"The open skills CLI installs instruction files only; it does not run postinstall scripts or register MCP connectors. OAuth or device setup happens in the MCP host; secrets are not stored in skills.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n writeJson(path.join(adapterDir, \"agent-native.app-skill.json\"), manifest);\n}\n\nexport interface AppSkillPackResult {\n outDir: string;\n exportedSkillNames: string[];\n files: string[];\n}\n\nexport function buildAppSkillPack(\n loaded: LoadedAppSkillManifest,\n outDir: string,\n): AppSkillPackResult {\n const manifest = loaded.manifest;\n const target = path.resolve(outDir);\n const skills = exportedSkills(manifest);\n if (skills.length === 0) {\n throw new Error(\"Manifest has no exported or both-visibility skills.\");\n }\n const pluginVersion = resolvePluginVersion(manifest, loaded.dir, skills);\n\n fs.mkdirSync(target, { recursive: true });\n const appSource = resolveLocalSourceDir(loaded);\n const packedManifest: AppSkillManifest = appSource\n ? {\n ...manifest,\n local: {\n ...(manifest.local ?? {}),\n sourcePath: \"./app\",\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n },\n }\n : manifest;\n writeJson(path.join(target, \"agent-native.app-skill.json\"), packedManifest);\n if (appSource) {\n copyDirFiltered(appSource, path.join(target, \"app\"));\n }\n const exportedSkillNames = skills.map(skillExportName);\n for (const skill of skills)\n copySkill(loaded.dir, skill, path.join(target, \"skills\"));\n\n const files: string[] = [\n path.join(target, \"agent-native.app-skill.json\"),\n ...(appSource ? [path.join(target, \"app\")] : []),\n ...exportedSkillNames.map((name) =>\n path.join(target, \"skills\", name, \"SKILL.md\"),\n ),\n ];\n\n if (manifest.hostAdapters.includes(\"codex-plugin\")) {\n writeCodexPluginAdapter(manifest, target, pluginVersion);\n files.push(\n path.join(target, \".codex-plugin\", \"plugin.json\"),\n path.join(target, \".mcp.json\"),\n );\n }\n if (manifest.hostAdapters.includes(\"claude-marketplace\")) {\n writeClaudeMarketplaceAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \".claude-plugin\",\n \"marketplace.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".claude-plugin\",\n \"plugin.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".mcp.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \"skills\",\n ),\n path.join(target, \"adapters\", \"claude-marketplace\", \"README.md\"),\n );\n }\n if (manifest.hostAdapters.includes(\"vercel-skills\")) {\n writeVercelSkillsAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(target, \"adapters\", \"vercel-skills\", \"skills\"),\n path.join(target, \"adapters\", \"vercel-skills\", \"README.md\"),\n path.join(\n target,\n \"adapters\",\n \"vercel-skills\",\n \"agent-native.app-skill.json\",\n ),\n );\n }\n if (manifest.hostAdapters.includes(\"plain-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"plain-skill\");\n files.push(path.join(target, \"adapters\", \"plain-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"claude-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"claude-skill\");\n files.push(path.join(target, \"adapters\", \"claude-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"generic-mcp\")) {\n writeMcpAdapter(manifest, target, \"generic-mcp\");\n files.push(path.join(target, \"adapters\", \"generic-mcp\", \"mcp.json\"));\n }\n if (manifest.hostAdapters.includes(\"chatgpt-mcp\")) {\n writeMcpAdapter(manifest, target, \"chatgpt-mcp\");\n files.push(path.join(target, \"adapters\", \"chatgpt-mcp\", \"connector.json\"));\n }\n\n return { outDir: target, exportedSkillNames, files };\n}\n\nfunction appSkillCacheDir(appId: string): string {\n return path.join(os.homedir(), \".agent-native\", \"app-skills\", appId, \"app\");\n}\n\nfunction resolveLocalSourceDir(\n loaded: LoadedAppSkillManifest,\n): string | undefined {\n const local = loaded.manifest.local;\n if (local?.sourcePath) {\n if (path.isAbsolute(local.sourcePath)) {\n throw new Error(\"local.sourcePath must be relative to the manifest.\");\n }\n const source = assertPathInside(\n loaded.dir,\n path.resolve(loaded.dir, local.sourcePath),\n \"local.sourcePath\",\n );\n if (fs.existsSync(source)) return source;\n throw new Error(\n `local.sourcePath \"${local.sourcePath}\" does not exist. ` +\n \"Run pack from the directory containing the app source.\",\n );\n }\n if (local?.template) {\n if (!/^[a-z0-9][a-z0-9-]*$/i.test(local.template)) {\n throw new Error(\"local.template must be a direct template name.\");\n }\n const repoTemplate = path.resolve(\n process.cwd(),\n \"templates\",\n local.template,\n );\n if (fs.existsSync(repoTemplate)) return repoTemplate;\n }\n return undefined;\n}\n\nexport function resolveLaunchPlan(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): AppSkillLaunchPlan {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const serverName = options.serverName ?? manifest.mcp.serverName;\n if (mode === \"hosted\") {\n return {\n mode,\n appId: manifest.id,\n url: manifest.hosted.url,\n mcpUrl: manifest.hosted.mcpUrl,\n serverName,\n commands: {},\n };\n }\n\n const defaultUrl = manifest.local?.defaultUrl ?? \"http://127.0.0.1:8100\";\n const appDir = path.resolve(options.into ?? appSkillCacheDir(manifest.id));\n return {\n mode,\n appId: manifest.id,\n appDir,\n sourceDir: resolveLocalSourceDir(loaded),\n url: defaultUrl,\n mcpUrl: withMcpPath(defaultUrl),\n serverName,\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n };\n}\n\nfunction printPlan(plan: AppSkillLaunchPlan, log: (message: string) => void) {\n log(` App: ${plan.appId}`);\n log(` Mode: ${plan.mode}`);\n log(` URL: ${plan.url}`);\n log(` MCP URL: ${plan.mcpUrl}`);\n log(` Server: ${plan.serverName}`);\n if (plan.appDir) log(` App dir: ${plan.appDir}`);\n if (plan.sourceDir) log(` Source: ${plan.sourceDir}`);\n if (plan.commands.install) log(` Install: ${plan.commands.install}`);\n if (plan.commands.dev) log(` Dev: ${plan.commands.dev}`);\n}\n\nfunction safeChildEnv(): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n for (const key of SAFE_ENV_KEYS) {\n const value = process.env[key];\n if (value !== undefined) env[key] = value;\n }\n return env;\n}\n\nfunction parsePackageCommand(command: string): {\n executable: string;\n args: string[];\n} {\n const trimmed = command.trim();\n if (!trimmed) throw new Error(\"Command cannot be empty.\");\n if (/[\\n\\r;&|<>`$]/.test(trimmed)) {\n throw new Error(\n `Unsafe shell syntax is not allowed in command: ${command}`,\n );\n }\n const parts = trimmed.split(/\\s+/);\n const executable = parts[0];\n if (!SAFE_PACKAGE_EXECUTABLES.has(executable)) {\n throw new Error(\n `Unsupported app-skill command executable: ${executable}. Use pnpm, npm, bun, or yarn.`,\n );\n }\n return { executable, args: parts.slice(1) };\n}\n\nfunction runShell(command: string, cwd: string): Promise<number> {\n const { executable, args } = parsePackageCommand(command);\n return new Promise((resolve, reject) => {\n const child = spawn(executable, args, {\n cwd,\n env: safeChildEnv(),\n stdio: \"inherit\",\n });\n child.on(\"error\", reject);\n child.on(\"exit\", (code, signal) => {\n if (signal) {\n reject(new Error(`Command \"${command}\" was terminated by ${signal}.`));\n return;\n }\n resolve(code ?? 1);\n });\n });\n}\n\nfunction openUrl(url: string): void {\n const command =\n process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"cmd\"\n : \"xdg-open\";\n const args = process.platform === \"win32\" ? [\"/c\", \"start\", \"\", url] : [url];\n const child = spawn(command, args, {\n detached: true,\n stdio: \"ignore\",\n shell: process.platform === \"win32\",\n });\n child.unref();\n}\n\nexport async function ensureAppSkill(\n loaded: LoadedAppSkillManifest,\n options: EnsureAppSkillOptions = {},\n): Promise<EnsureAppSkillResult> {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const clients = options.clients ?? resolveClients(\"all\");\n const serverName = options.serverName ?? manifest.mcp.serverName;\n const scope = options.scope ?? \"user\";\n const plan = resolveLaunchPlan(loaded, { mode, serverName });\n const result: EnsureAppSkillResult = {\n mode,\n serverName,\n mcpUrl: plan.mcpUrl,\n clients,\n written: [],\n };\n\n if (options.dryRun) return result;\n\n if (options.confirm && !options.yes) {\n await confirmMcpRegistration(result, loaded.manifest.displayName, scope);\n }\n\n const baseDir = options.baseDir ?? process.cwd();\n result.written = writeConfigs(\n clients,\n serverName,\n plan.mcpUrl,\n undefined,\n scope,\n baseDir,\n );\n\n // Aliases are intentionally NOT written as separate entries. Instead,\n // repurpose the alias list as a cleanup list: remove any other entries in\n // the same config files that point at the same URL (covers legacy alias\n // names, old default names like 'agent-native-<slug>', and any stale\n // custom names left from previous installs).\n const allRemovedNames: string[] = [];\n for (const client of clients) {\n const removed = removeSameUrlDuplicatesForClient(\n client,\n serverName,\n plan.mcpUrl,\n baseDir,\n scope,\n );\n allRemovedNames.push(...removed);\n }\n\n const uniqueRemoved = [...new Set(allRemovedNames)];\n const logMsg =\n uniqueRemoved.length > 0\n ? `Registered \"${serverName}\" for ${clients.join(\", \")} at ${plan.mcpUrl}; removed duplicate entries: ${uniqueRemoved.join(\", \")}`\n : `Registered \"${serverName}\" for ${clients.join(\", \")} at ${plan.mcpUrl}`;\n options.log?.(logMsg);\n return result;\n}\n\nasync function confirmMcpRegistration(\n result: EnsureAppSkillResult,\n displayName: string,\n scope: string,\n): Promise<void> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n throw new Error(\n \"Refusing to register MCP servers from a manifest without confirmation. Re-run with --yes to approve.\",\n );\n }\n const readline = await import(\"node:readline/promises\");\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n try {\n const answer = await rl.question(\n [\n `Register ${displayName} MCP server \"${result.serverName}\"?`,\n ` URL: ${result.mcpUrl}`,\n ` Clients: ${result.clients.join(\", \")}`,\n ` Scope: ${scope}`,\n \"Proceed? [y/N] \",\n ].join(\"\\n\"),\n );\n if (!/^(y|yes)$/i.test(answer.trim())) {\n throw new Error(\"Cancelled app-skill MCP registration.\");\n }\n } finally {\n rl.close();\n }\n}\n\nexport async function launchAppSkill(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): Promise<AppSkillLaunchPlan> {\n const log =\n options.log ?? ((message: string) => process.stdout.write(`${message}\\n`));\n const plan = resolveLaunchPlan(loaded, options);\n\n if (options.dryRun) {\n printPlan(plan, log);\n return plan;\n }\n\n if (plan.mode === \"hosted\") {\n log(`Opening ${loaded.manifest.displayName}: ${plan.url}`);\n openUrl(plan.url);\n return plan;\n }\n\n if (!plan.appDir) throw new Error(\"Local launch plan is missing appDir.\");\n if (!fs.existsSync(path.join(plan.appDir, \"package.json\"))) {\n if (!plan.sourceDir) {\n throw new Error(\n \"Local launch needs bundled app source. Pass --into <path> from a manifest with local.sourcePath.\",\n );\n }\n fs.mkdirSync(path.dirname(plan.appDir), { recursive: true });\n copyDirFiltered(plan.sourceDir, plan.appDir);\n log(`Materialized ${loaded.manifest.displayName} at ${plan.appDir}`);\n } else {\n log(`Using existing local app at ${plan.appDir}`);\n }\n\n if (!options.noRegister) {\n await ensureAppSkill(loaded, {\n mode: \"local\",\n clients: options.clients,\n scope: options.scope,\n serverName: options.serverName,\n baseDir: options.baseDir,\n confirm: options.confirm,\n yes: options.yes,\n log,\n });\n }\n\n if (!options.skipInstall && plan.commands.install) {\n const installCode = await runShell(plan.commands.install, plan.appDir);\n if (installCode !== 0) {\n throw new Error(`Install command failed with exit code ${installCode}.`);\n }\n }\n\n if (plan.commands.dev) {\n const code = await runShell(plan.commands.dev, plan.appDir);\n if (code !== 0) throw new Error(`Dev command exited with code ${code}.`);\n }\n\n return plan;\n}\n\nfunction resolveArgsClients(parsed: ParsedAppSkillArgs): ClientId[] {\n return resolveClients(parsed.client);\n}\n\nexport async function runAppSkill(argv: string[]): Promise<void> {\n try {\n const parsed = parseAppSkillArgs(argv);\n if (parsed.command === \"help\") {\n process.stdout.write(`${HELP}\\n`);\n return;\n }\n\n const loaded = loadAppSkillManifest(parsed.manifest);\n const log = (message: string) =>\n (parsed.printJson ? process.stderr : process.stdout).write(\n `${message}\\n`,\n );\n if (parsed.command === \"ensure\") {\n const result = await ensureAppSkill(loaded, {\n mode: parsed.mode,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n dryRun: parsed.dryRun,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else if (parsed.dryRun) {\n process.stdout.write(\n `Would register ${result.serverName} at ${result.mcpUrl} for ${result.clients.join(\", \")}\\n`,\n );\n }\n return;\n }\n\n if (parsed.command === \"launch\") {\n const plan = await launchAppSkill(loaded, {\n mode: parsed.mode,\n into: parsed.into,\n dryRun: parsed.dryRun,\n skipInstall: parsed.skipInstall,\n noRegister: parsed.noRegister,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(plan, null, 2)}\\n`);\n }\n return;\n }\n\n if (parsed.command === \"pack\") {\n if (!parsed.out) {\n throw new Error(\"Missing --out <dir> for app-skill pack.\");\n }\n const result = buildAppSkillPack(loaded, parsed.out);\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else {\n process.stdout.write(\n `Packed ${loaded.manifest.displayName} app skill at ${result.outDir}\\n`,\n );\n }\n }\n } catch (err: any) {\n process.stderr.write(`${err?.message ?? err}\\n`);\n process.exitCode = 1;\n }\n}\n"]}
1
+ {"version":3,"file":"app-skill.js","sourceRoot":"","sources":["../../src/cli/app-skill.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native app-skill` packages an agent-native app as a distributable\n * skill bundle: instructions + MCP connector + embeddable app surfaces.\n *\n * The manifest intentionally contains no user secrets. Hosted installs write\n * URL-only MCP entries; clients that need auth complete OAuth/device setup in\n * the host. Local installs point at a developer-owned app process.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\n\nimport {\n type ClientId,\n buildHttpMcpEntry,\n removeSameUrlDuplicatesForClient,\n} from \"./mcp-config-writers.js\";\nimport {\n resolveClients,\n supportsRemoteMcpOAuth,\n writeConfigs,\n} from \"./connect.js\";\n\nexport type SkillVisibility = \"internal\" | \"exported\" | \"both\";\nexport type AppSkillHostAdapter =\n | \"codex-plugin\"\n | \"claude-marketplace\"\n | \"vercel-skills\"\n | \"plain-skill\"\n | \"claude-skill\"\n | \"chatgpt-mcp\"\n | \"generic-mcp\";\n\nexport interface AppSkillManifestSkill {\n path: string;\n visibility: SkillVisibility;\n exportAs?: string;\n}\n\nexport interface AppSkillSurface {\n id: string;\n action?: string;\n path: string;\n mediaTypes?: string[];\n defaultMediaType?: string;\n}\n\nexport interface AppSkillManifest {\n schemaVersion: 1;\n id: string;\n displayName: string;\n description: string;\n /**\n * Optional semver base for generated plugin manifests. Codex keys its plugin\n * cache on the version string, so the packer appends a content hash to this\n * base; leave it unset to default to \"1.0.0\".\n */\n version?: string;\n hosted: {\n url: string;\n mcpUrl: string;\n };\n mcp: {\n serverName: string;\n aliases?: string[];\n };\n local?: {\n template?: string;\n sourcePath?: string;\n defaultUrl?: string;\n commands?: {\n install?: string;\n dev?: string;\n start?: string;\n };\n };\n auth?: {\n mode?: \"oauth\" | \"device\" | \"none\";\n setup?: string;\n };\n surfaces: AppSkillSurface[];\n skills: AppSkillManifestSkill[];\n hostAdapters: AppSkillHostAdapter[];\n}\n\nexport interface LoadedAppSkillManifest {\n manifest: AppSkillManifest;\n file: string;\n dir: string;\n}\n\nexport interface ParsedAppSkillArgs {\n command: \"ensure\" | \"launch\" | \"pack\" | \"help\";\n manifest?: string;\n client: string;\n scope: string;\n serverName?: string;\n out?: string;\n into?: string;\n mode: \"hosted\" | \"local\";\n dryRun: boolean;\n skipInstall: boolean;\n noRegister: boolean;\n printJson: boolean;\n yes: boolean;\n}\n\nexport interface EnsureAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n dryRun?: boolean;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface EnsureAppSkillResult {\n mode: \"hosted\" | \"local\";\n serverName: string;\n mcpUrl: string;\n clients: ClientId[];\n written: { client: ClientId; file: string }[];\n}\n\nexport interface LaunchAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n into?: string;\n dryRun?: boolean;\n skipInstall?: boolean;\n noRegister?: boolean;\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface AppSkillLaunchPlan {\n mode: \"hosted\" | \"local\";\n appId: string;\n appDir?: string;\n sourceDir?: string;\n url: string;\n mcpUrl: string;\n serverName: string;\n commands: {\n install?: string;\n dev?: string;\n start?: string;\n };\n}\n\nconst HELP = `agent-native app-skill\n\nUsage:\n agent-native app-skill ensure [--manifest <file>] [--hosted|--local] [--client all|codex|claude-code|claude-code-cli|cowork] [--scope user|project] [--name <server>] [--yes] [--dry-run] [--json]\n agent-native app-skill launch [--manifest <file>] [--local|--hosted] [--into <path>] [--client <client>] [--scope user|project] [--name <server>] [--no-register] [--skip-install] [--yes] [--dry-run] [--json]\n agent-native app-skill pack [--manifest <file>] --out <dir> [--json]\n\nCommands:\n ensure Register the app skill MCP connector for your local agent clients.\n launch Open the hosted app, or materialize and start a local editable app.\n pack Create marketplace-ready skill, MCP, Codex/Claude plugin, and Vercel skills adapters.\n\nHosted is the default. Use --local when you want editable source, offline work,\nor a privacy-sensitive local app instance.`;\n\nconst APP_SKILL_COMMANDS = new Set([\"ensure\", \"launch\", \"pack\"]);\nconst APP_SKILL_SCOPES = new Set([\"user\", \"project\"]);\nconst SAFE_PACKAGE_EXECUTABLES = new Set([\"pnpm\", \"npm\", \"bun\", \"yarn\"]);\nconst SAFE_ENV_KEYS = [\n \"PATH\",\n \"HOME\",\n \"USER\",\n \"SHELL\",\n \"TMPDIR\",\n \"TEMP\",\n \"TMP\",\n \"TERM\",\n \"CI\",\n \"PNPM_HOME\",\n \"COREPACK_HOME\",\n \"SystemRoot\",\n \"ComSpec\",\n];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction stringArray(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction normalizeOriginUrl(value: string, field: string): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new Error(`${field} must be a valid URL.`);\n }\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`${field} must use http:// or https://.`);\n }\n return `${url.origin}${url.pathname}`.replace(/\\/+$/, \"\");\n}\n\nfunction withMcpPath(baseUrl: string): string {\n return `${baseUrl.replace(/\\/+$/, \"\")}/_agent-native/mcp`;\n}\n\nfunction normalizeSkillVisibility(value: unknown): SkillVisibility {\n if (value === \"internal\" || value === \"exported\" || value === \"both\") {\n return value;\n }\n return \"both\";\n}\n\nfunction normalizeHostAdapter(value: unknown): AppSkillHostAdapter | null {\n if (\n value === \"codex-plugin\" ||\n value === \"claude-marketplace\" ||\n value === \"vercel-skills\" ||\n value === \"plain-skill\" ||\n value === \"claude-skill\" ||\n value === \"chatgpt-mcp\" ||\n value === \"generic-mcp\"\n ) {\n return value;\n }\n return null;\n}\n\nfunction defaultHostAdapters(): AppSkillHostAdapter[] {\n return [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ];\n}\n\nfunction uniqueAdapters(values: AppSkillHostAdapter[]): AppSkillHostAdapter[] {\n const seen = new Set<AppSkillHostAdapter>();\n return values.filter((value) => {\n if (seen.has(value)) return false;\n seen.add(value);\n return true;\n });\n}\n\nexport function normalizeAppSkillManifest(raw: unknown): AppSkillManifest {\n if (!isRecord(raw)) throw new Error(\"App skill manifest must be an object.\");\n const schemaVersion = raw.schemaVersion ?? 1;\n if (schemaVersion !== 1) {\n throw new Error(`Unsupported app skill schemaVersion: ${schemaVersion}`);\n }\n\n const id = stringValue(raw.id);\n if (!id || !/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/.test(id)) {\n throw new Error(\n \"App skill manifest id must be kebab-case and 2-64 characters.\",\n );\n }\n\n const hostedRaw = isRecord(raw.hosted) ? raw.hosted : {};\n const hostedUrl = normalizeOriginUrl(\n stringValue(hostedRaw.url) ?? \"\",\n \"hosted.url\",\n );\n const hostedMcpUrl = normalizeOriginUrl(\n stringValue(hostedRaw.mcpUrl) ?? withMcpPath(hostedUrl),\n \"hosted.mcpUrl\",\n );\n\n const mcpRaw = isRecord(raw.mcp) ? raw.mcp : {};\n const localRaw = isRecord(raw.local) ? raw.local : undefined;\n const commandsRaw = isRecord(localRaw?.commands)\n ? localRaw.commands\n : undefined;\n const surfacesRaw = Array.isArray(raw.surfaces) ? raw.surfaces : [];\n const skillsRaw = Array.isArray(raw.skills) ? raw.skills : [];\n const adaptersRaw = Array.isArray(raw.hostAdapters) ? raw.hostAdapters : [];\n const authRaw = isRecord(raw.auth) ? raw.auth : undefined;\n\n const adapters = uniqueAdapters(\n adaptersRaw\n .map(normalizeHostAdapter)\n .filter((value): value is AppSkillHostAdapter => Boolean(value)),\n );\n\n return {\n schemaVersion: 1,\n id,\n displayName: stringValue(raw.displayName) ?? id,\n description:\n stringValue(raw.description) ??\n `Agent-native app-backed skill for ${id}.`,\n ...(stringValue(raw.version) ? { version: stringValue(raw.version) } : {}),\n hosted: {\n url: hostedUrl,\n mcpUrl: hostedMcpUrl,\n },\n mcp: {\n serverName: stringValue(mcpRaw.serverName) ?? `agent-native-${id}`,\n aliases: stringArray(mcpRaw.aliases),\n },\n ...(localRaw\n ? {\n local: {\n ...(stringValue(localRaw.template)\n ? { template: stringValue(localRaw.template) }\n : {}),\n ...(stringValue(localRaw.sourcePath)\n ? { sourcePath: stringValue(localRaw.sourcePath) }\n : {}),\n ...(stringValue(localRaw.defaultUrl)\n ? {\n defaultUrl: normalizeOriginUrl(\n stringValue(localRaw.defaultUrl)!,\n \"local.defaultUrl\",\n ),\n }\n : {}),\n commands: {\n install: stringValue(commandsRaw?.install) ?? \"pnpm install\",\n dev: stringValue(commandsRaw?.dev) ?? \"pnpm dev\",\n start: stringValue(commandsRaw?.start) ?? \"pnpm start\",\n },\n },\n }\n : {}),\n ...(authRaw\n ? {\n auth: {\n ...(authRaw.mode === \"oauth\" ||\n authRaw.mode === \"device\" ||\n authRaw.mode === \"none\"\n ? { mode: authRaw.mode }\n : {}),\n ...(stringValue(authRaw.setup)\n ? { setup: stringValue(authRaw.setup) }\n : {}),\n },\n }\n : {}),\n surfaces: surfacesRaw.filter(isRecord).map((surface) => ({\n id: stringValue(surface.id) ?? \"app\",\n ...(stringValue(surface.action)\n ? { action: stringValue(surface.action) }\n : {}),\n path: stringValue(surface.path) ?? \"/\",\n mediaTypes: stringArray(surface.mediaTypes),\n ...(stringValue(surface.defaultMediaType)\n ? { defaultMediaType: stringValue(surface.defaultMediaType) }\n : {}),\n })),\n skills: skillsRaw\n .filter(isRecord)\n .map((skill) => ({\n path: stringValue(skill.path) ?? \"\",\n visibility: normalizeSkillVisibility(skill.visibility),\n ...(stringValue(skill.exportAs)\n ? { exportAs: stringValue(skill.exportAs) }\n : {}),\n }))\n .filter((skill) => skill.path),\n hostAdapters: adapters.length ? adapters : defaultHostAdapters(),\n };\n}\n\nexport function findAppSkillManifest(startDir: string = process.cwd()): string {\n let current = path.resolve(startDir);\n while (true) {\n const candidate = path.join(current, \"agent-native.app-skill.json\");\n if (fs.existsSync(candidate)) return candidate;\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n throw new Error(\n \"Could not find agent-native.app-skill.json. Pass --manifest <file>.\",\n );\n}\n\nexport function loadAppSkillManifest(file?: string): LoadedAppSkillManifest {\n const resolved = path.resolve(file ?? findAppSkillManifest());\n const raw = JSON.parse(fs.readFileSync(resolved, \"utf-8\"));\n return {\n manifest: normalizeAppSkillManifest(raw),\n file: resolved,\n dir: path.dirname(resolved),\n };\n}\n\nexport function exportedSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"exported\" || skill.visibility === \"both\",\n );\n}\n\nexport function internalSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"internal\" || skill.visibility === \"both\",\n );\n}\n\nexport function parseAppSkillArgs(argv: string[]): ParsedAppSkillArgs {\n const first = argv[0];\n let command: ParsedAppSkillArgs[\"command\"] = \"ensure\";\n let args = argv;\n if (first === \"help\" || first === \"--help\" || first === \"-h\") {\n command = \"help\";\n args = argv.slice(1);\n } else if (APP_SKILL_COMMANDS.has(first ?? \"\")) {\n command = first as ParsedAppSkillArgs[\"command\"];\n args = argv.slice(1);\n } else if (first && !first.startsWith(\"-\") && !looksLikeManifestArg(first)) {\n throw new Error(`Unknown app-skill command: ${first}`);\n }\n const out: ParsedAppSkillArgs = {\n command,\n client: \"all\",\n scope: \"user\",\n mode: \"hosted\",\n dryRun: false,\n skipInstall: false,\n noRegister: false,\n printJson: false,\n yes: false,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const eat = (flag: string): string | undefined => {\n if (arg === flag) {\n const next = args[++i];\n if (!next || next.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return next;\n }\n if (arg.startsWith(`${flag}=`)) {\n const value = arg.slice(flag.length + 1);\n if (!value) throw new Error(`Missing value for ${flag}.`);\n return value;\n }\n return undefined;\n };\n let value: string | undefined;\n if ((value = eat(\"--manifest\")) !== undefined) out.manifest = value;\n else if ((value = eat(\"--client\")) !== undefined) out.client = value;\n else if ((value = eat(\"--scope\")) !== undefined) out.scope = value;\n else if ((value = eat(\"--name\")) !== undefined) out.serverName = value;\n else if ((value = eat(\"--server-name\")) !== undefined)\n out.serverName = value;\n else if ((value = eat(\"--out\")) !== undefined) out.out = value;\n else if ((value = eat(\"--into\")) !== undefined) out.into = value;\n else if (arg === \"--local\") out.mode = \"local\";\n else if (arg === \"--hosted\") out.mode = \"hosted\";\n else if (arg === \"--dry-run\") out.dryRun = true;\n else if (arg === \"--skip-install\" || arg === \"--no-install\")\n out.skipInstall = true;\n else if (arg === \"--no-register\") out.noRegister = true;\n else if (arg === \"--json\") out.printJson = true;\n else if (arg === \"--yes\" || arg === \"-y\") out.yes = true;\n else if (arg.startsWith(\"-\")) throw new Error(`Unknown option: ${arg}`);\n else if (!out.manifest) out.manifest = arg;\n else throw new Error(`Unexpected argument: ${arg}`);\n }\n\n if (!APP_SKILL_SCOPES.has(out.scope)) {\n throw new Error(\"--scope must be either user or project.\");\n }\n\n return out;\n}\n\nfunction looksLikeManifestArg(value: string): boolean {\n return (\n value.endsWith(\".json\") ||\n value.includes(\"/\") ||\n value.includes(\"\\\\\") ||\n fs.existsSync(value)\n );\n}\n\nfunction assertPathInside(root: string, target: string, field: string): string {\n const resolvedRoot = path.resolve(root);\n const resolvedTarget = path.resolve(target);\n const relative = path.relative(resolvedRoot, resolvedTarget);\n if (relative && (relative.startsWith(\"..\") || path.isAbsolute(relative))) {\n throw new Error(`${field} must resolve inside ${resolvedRoot}.`);\n }\n return resolvedTarget;\n}\n\nfunction resolveSkillSource(manifestDir: string, skill: AppSkillManifestSkill) {\n if (path.isAbsolute(skill.path)) {\n throw new Error(`Skill path must be relative: ${skill.path}`);\n }\n return assertPathInside(\n manifestDir,\n path.resolve(manifestDir, skill.path),\n `Skill path ${skill.path}`,\n );\n}\n\nfunction skillExportName(skill: AppSkillManifestSkill): string {\n if (skill.exportAs) {\n if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(skill.exportAs)) {\n throw new Error(`Invalid skill export name: ${skill.exportAs}`);\n }\n return skill.exportAs;\n }\n const normalized = skill.path.replace(/\\/+$/, \"\");\n return path.basename(normalized);\n}\n\nfunction copyDirFiltered(source: string, dest: string): void {\n const sourceRoot = path.resolve(source);\n const destRoot = path.resolve(dest);\n const relativeDest = path.relative(sourceRoot, destRoot);\n const outputRootInsideSource =\n relativeDest &&\n !relativeDest.startsWith(\"..\") &&\n !path.isAbsolute(relativeDest)\n ? path.join(sourceRoot, relativeDest.split(path.sep)[0])\n : destRoot;\n fs.cpSync(source, dest, {\n recursive: true,\n filter: (src) => {\n const resolved = path.resolve(src);\n if (\n resolved === outputRootInsideSource ||\n resolved.startsWith(`${outputRootInsideSource}${path.sep}`)\n ) {\n return false;\n }\n const base = path.basename(src);\n const lower = base.toLowerCase();\n return (\n base !== \"node_modules\" &&\n base !== \".git\" &&\n base !== \"dist\" &&\n base !== \".output\" &&\n base !== \".react-router\" &&\n base !== \".netlify\" &&\n base !== \"secrets\" &&\n base !== \"private\" &&\n !base.startsWith(\".env\") &&\n base !== \".dev.vars\" &&\n base !== \".npmrc\" &&\n !lower.endsWith(\".db\") &&\n !lower.endsWith(\".sqlite\") &&\n !lower.endsWith(\".sqlite3\") &&\n !lower.endsWith(\".pem\") &&\n !lower.endsWith(\".key\") &&\n !lower.endsWith(\".crt\") &&\n !lower.endsWith(\".p12\")\n );\n },\n });\n}\n\nfunction copySkill(\n manifestDir: string,\n skill: AppSkillManifestSkill,\n destRoot: string,\n): string {\n const source = resolveSkillSource(manifestDir, skill);\n const exportName = skillExportName(skill);\n const dest = path.join(destRoot, exportName);\n if (!fs.existsSync(source)) {\n throw new Error(`Exported skill source not found: ${source}`);\n }\n fs.mkdirSync(destRoot, { recursive: true });\n const stat = fs.statSync(source);\n if (stat.isDirectory()) {\n copyDirFiltered(source, dest);\n } else {\n fs.mkdirSync(dest, { recursive: true });\n fs.copyFileSync(source, path.join(dest, \"SKILL.md\"));\n }\n rewriteSkillFrontmatterName(path.join(dest, \"SKILL.md\"), exportName);\n return dest;\n}\n\nfunction rewriteSkillFrontmatterName(file: string, name: string): void {\n if (!fs.existsSync(file)) return;\n const source = fs.readFileSync(file, \"utf-8\");\n const lines = source.split(\"\\n\");\n if (lines[0]?.trim() !== \"---\") return;\n const end = lines.findIndex(\n (line, index) => index > 0 && line.trim() === \"---\",\n );\n if (end <= 0) return;\n const nameIndex = lines.findIndex(\n (line, index) => index > 0 && index < end && /^name\\s*:/.test(line),\n );\n if (nameIndex === -1) {\n lines.splice(1, 0, `name: ${name}`);\n } else {\n lines[nameIndex] = `name: ${name}`;\n }\n fs.writeFileSync(file, lines.join(\"\\n\"), \"utf-8\");\n}\n\nfunction writeJson(file: string, value: unknown): void {\n fs.mkdirSync(path.dirname(file), { recursive: true });\n fs.writeFileSync(file, JSON.stringify(value, null, 2) + \"\\n\", \"utf-8\");\n}\n\nfunction mcpServerNames(\n manifest: AppSkillManifest,\n serverName?: string,\n): string[] {\n if (serverName) return [serverName];\n const names = [manifest.mcp.serverName, ...(manifest.mcp.aliases ?? [])];\n return [...new Set(names.filter(Boolean))];\n}\n\nfunction mcpServerConfig(manifest: AppSkillManifest, serverName?: string) {\n const entry = buildHttpMcpEntry(manifest.hosted.mcpUrl);\n return {\n mcpServers: Object.fromEntries(\n mcpServerNames(manifest, serverName).map((name) => [name, entry]),\n ),\n };\n}\n\nfunction pluginName(manifest: AppSkillManifest): string {\n return `agent-native-${manifest.id}`;\n}\n\nfunction claudeMarketplaceName(): string {\n return \"agent-native-apps\";\n}\n\nexport function exportedSkillContentHash(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n manifest: AppSkillManifest,\n): string {\n const parts = skills\n .map((skill) => {\n const skillDir = path.join(manifestDir, skill.path);\n // Hash SKILL.md plus every sibling file under the skill dir (e.g.\n // references/*), so a progressive-disclosure reference edit still changes\n // the content hash and bumps the Codex plugin version for auto-upgrade.\n const body = collectSkillFiles(skillDir)\n .map(\n (rel) =>\n `${rel}\\n${fs.readFileSync(path.join(skillDir, rel), \"utf-8\")}`,\n )\n .join(\"\\n \\n\");\n return `${skillExportName(skill)}\\n${body}`;\n })\n .sort();\n parts.push(\n `mcp:${mcpServerNames(manifest).join(\",\")}:${manifest.hosted.mcpUrl}`,\n );\n return createHash(\"sha256\")\n .update(parts.join(\"\\n\u0000\\n\"))\n .digest(\"hex\")\n .slice(0, 12);\n}\n\n/**\n * List a skill dir's files (SKILL.md + any siblings like references/*) as\n * skill-relative POSIX paths, sorted for a stable content hash. A bare SKILL.md\n * source (file, not dir) falls back to just \"SKILL.md\".\n */\nfunction collectSkillFiles(skillDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, prefix: string): void => {\n if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) return;\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) walk(path.join(dir, entry.name), rel);\n else if (entry.isFile()) out.push(rel);\n }\n };\n walk(skillDir, \"\");\n if (out.length === 0) {\n // Source resolved to a single SKILL.md file rather than a dir, or is empty.\n return [\"SKILL.md\"];\n }\n return out.sort();\n}\n\n/**\n * Plugin version embeds a content hash of the exported skills + MCP server\n * identity/endpoint.\n * Codex keys its plugin cache on the version string, so a changed skill or MCP\n * URL yields a new version and `codex plugin marketplace upgrade` (which runs\n * on startup) delivers the update automatically — no manual semver bump per\n * edit. Claude Code uses commit-SHA versioning instead (plugin.json omits\n * version), so it auto-updates on every push.\n */\nexport function resolvePluginVersion(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n): string {\n const base = manifest.version ?? \"1.0.0\";\n return `${base}+codex.${exportedSkillContentHash(manifestDir, skills, manifest)}`;\n}\n\nfunction writeCodexPluginAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n version: string,\n): void {\n const name = pluginName(manifest);\n writeJson(path.join(outDir, \".codex-plugin\", \"plugin.json\"), {\n name,\n version,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n interface: {\n displayName: manifest.displayName,\n shortDescription: manifest.description,\n longDescription:\n `${manifest.displayName} packages agent instructions, app actions, ` +\n \"an MCP connector, and inline UI surfaces as an installable skill.\",\n developerName: \"Agent-Native\",\n category: \"Productivity\",\n capabilities: [\"Interactive\", \"Read\", \"Write\"],\n websiteURL: manifest.hosted.url,\n defaultPrompt: [\n `Open ${manifest.displayName} where useful`,\n `Use ${manifest.displayName} for app-backed workflows`,\n `Search ${manifest.displayName} and return usable context`,\n ],\n brandColor: \"#2563EB\",\n },\n });\n writeJson(path.join(outDir, \".mcp.json\"), mcpServerConfig(manifest));\n}\n\nfunction writeClaudeMarketplaceAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"claude-marketplace\");\n const name = pluginName(manifest);\n const marketplaceName = claudeMarketplaceName();\n const pluginDir = path.join(adapterDir, \"plugins\", name);\n const skillRoot = path.join(pluginDir, \"skills\");\n\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n\n writeJson(path.join(adapterDir, \".claude-plugin\", \"marketplace.json\"), {\n name: marketplaceName,\n description:\n \"Agent-Native app-backed skills that bundle instructions, MCP connectors, and UI surfaces.\",\n owner: {\n name: \"Agent-Native\",\n },\n plugins: [\n {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n source: `./plugins/${name}`,\n autoUpdate: true,\n homepage: manifest.hosted.url,\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n },\n ],\n });\n\n writeJson(path.join(pluginDir, \".claude-plugin\", \"plugin.json\"), {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n repository: \"https://github.com/BuilderIO/agent-native\",\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n });\n writeJson(path.join(pluginDir, \".mcp.json\"), mcpServerConfig(manifest));\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Claude Code Marketplace`,\n \"\",\n \"Install this local marketplace from Claude Code:\",\n \"\",\n \"```text\",\n `/plugin marketplace add ./dist/${manifest.id}-skill/adapters/claude-marketplace`,\n `/plugin install ${name}@${marketplaceName}`,\n \"/reload-plugins\",\n \"/mcp\",\n \"```\",\n \"\",\n \"Authenticate the MCP connector from `/mcp` after installation. The plugin ships a URL-only MCP config, so no shared secrets are stored in the marketplace package.\",\n \"\",\n \"For a published marketplace repo, point `/plugin marketplace add` at the repository URL instead of the local folder.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n}\n\nfunction writeMcpAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n adapter: \"generic-mcp\" | \"chatgpt-mcp\",\n): void {\n const dir = path.join(outDir, \"adapters\", adapter);\n if (adapter === \"generic-mcp\") {\n writeJson(path.join(dir, \"mcp.json\"), mcpServerConfig(manifest));\n return;\n }\n writeJson(path.join(dir, \"connector.json\"), {\n name: manifest.mcp.serverName,\n title: manifest.displayName,\n url: manifest.hosted.mcpUrl,\n auth: manifest.auth?.mode ?? \"oauth\",\n surfaces: manifest.surfaces,\n });\n}\n\nfunction copySkillAdapter(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n adapter: \"plain-skill\" | \"claude-skill\" | \"vercel-skills\",\n): void {\n const skillRoot = path.join(outDir, \"adapters\", adapter, \"skills\");\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n}\n\nfunction writeVercelSkillsAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"vercel-skills\");\n copySkillAdapter(manifestDir, skills, outDir, \"vercel-skills\");\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Skills`,\n \"\",\n \"Install instructions only with the Vercel Labs/open skills CLI:\",\n \"\",\n \"```bash\",\n `npx skills@latest add . --skill ${skills.map(skillExportName).join(\" --skill \")} -a codex`,\n \"```\",\n \"\",\n \"Then register the app-backed MCP connector:\",\n \"\",\n \"```bash\",\n `npx @agent-native/core@latest app-skill ensure --manifest agent-native.app-skill.json --yes`,\n \"```\",\n \"\",\n \"The open skills CLI installs instruction files only; it does not run postinstall scripts or register MCP connectors. OAuth or device setup happens in the MCP host; secrets are not stored in skills.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n writeJson(path.join(adapterDir, \"agent-native.app-skill.json\"), manifest);\n}\n\nexport interface AppSkillPackResult {\n outDir: string;\n exportedSkillNames: string[];\n files: string[];\n}\n\nexport function buildAppSkillPack(\n loaded: LoadedAppSkillManifest,\n outDir: string,\n): AppSkillPackResult {\n const manifest = loaded.manifest;\n const target = path.resolve(outDir);\n const skills = exportedSkills(manifest);\n if (skills.length === 0) {\n throw new Error(\"Manifest has no exported or both-visibility skills.\");\n }\n const pluginVersion = resolvePluginVersion(manifest, loaded.dir, skills);\n\n fs.mkdirSync(target, { recursive: true });\n const appSource = resolveLocalSourceDir(loaded);\n const packedManifest: AppSkillManifest = appSource\n ? {\n ...manifest,\n local: {\n ...(manifest.local ?? {}),\n sourcePath: \"./app\",\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n },\n }\n : manifest;\n writeJson(path.join(target, \"agent-native.app-skill.json\"), packedManifest);\n if (appSource) {\n copyDirFiltered(appSource, path.join(target, \"app\"));\n }\n const exportedSkillNames = skills.map(skillExportName);\n for (const skill of skills)\n copySkill(loaded.dir, skill, path.join(target, \"skills\"));\n\n const files: string[] = [\n path.join(target, \"agent-native.app-skill.json\"),\n ...(appSource ? [path.join(target, \"app\")] : []),\n ...exportedSkillNames.map((name) =>\n path.join(target, \"skills\", name, \"SKILL.md\"),\n ),\n ];\n\n if (manifest.hostAdapters.includes(\"codex-plugin\")) {\n writeCodexPluginAdapter(manifest, target, pluginVersion);\n files.push(\n path.join(target, \".codex-plugin\", \"plugin.json\"),\n path.join(target, \".mcp.json\"),\n );\n }\n if (manifest.hostAdapters.includes(\"claude-marketplace\")) {\n writeClaudeMarketplaceAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \".claude-plugin\",\n \"marketplace.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".claude-plugin\",\n \"plugin.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".mcp.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \"skills\",\n ),\n path.join(target, \"adapters\", \"claude-marketplace\", \"README.md\"),\n );\n }\n if (manifest.hostAdapters.includes(\"vercel-skills\")) {\n writeVercelSkillsAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(target, \"adapters\", \"vercel-skills\", \"skills\"),\n path.join(target, \"adapters\", \"vercel-skills\", \"README.md\"),\n path.join(\n target,\n \"adapters\",\n \"vercel-skills\",\n \"agent-native.app-skill.json\",\n ),\n );\n }\n if (manifest.hostAdapters.includes(\"plain-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"plain-skill\");\n files.push(path.join(target, \"adapters\", \"plain-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"claude-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"claude-skill\");\n files.push(path.join(target, \"adapters\", \"claude-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"generic-mcp\")) {\n writeMcpAdapter(manifest, target, \"generic-mcp\");\n files.push(path.join(target, \"adapters\", \"generic-mcp\", \"mcp.json\"));\n }\n if (manifest.hostAdapters.includes(\"chatgpt-mcp\")) {\n writeMcpAdapter(manifest, target, \"chatgpt-mcp\");\n files.push(path.join(target, \"adapters\", \"chatgpt-mcp\", \"connector.json\"));\n }\n\n return { outDir: target, exportedSkillNames, files };\n}\n\nfunction appSkillCacheDir(appId: string): string {\n return path.join(os.homedir(), \".agent-native\", \"app-skills\", appId, \"app\");\n}\n\nfunction resolveLocalSourceDir(\n loaded: LoadedAppSkillManifest,\n): string | undefined {\n const local = loaded.manifest.local;\n if (local?.sourcePath) {\n if (path.isAbsolute(local.sourcePath)) {\n throw new Error(\"local.sourcePath must be relative to the manifest.\");\n }\n const source = assertPathInside(\n loaded.dir,\n path.resolve(loaded.dir, local.sourcePath),\n \"local.sourcePath\",\n );\n if (fs.existsSync(source)) return source;\n throw new Error(\n `local.sourcePath \"${local.sourcePath}\" does not exist. ` +\n \"Run pack from the directory containing the app source.\",\n );\n }\n if (local?.template) {\n if (!/^[a-z0-9][a-z0-9-]*$/i.test(local.template)) {\n throw new Error(\"local.template must be a direct template name.\");\n }\n const repoTemplate = path.resolve(\n process.cwd(),\n \"templates\",\n local.template,\n );\n if (fs.existsSync(repoTemplate)) return repoTemplate;\n }\n return undefined;\n}\n\nexport function resolveLaunchPlan(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): AppSkillLaunchPlan {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const serverName = options.serverName ?? manifest.mcp.serverName;\n if (mode === \"hosted\") {\n return {\n mode,\n appId: manifest.id,\n url: manifest.hosted.url,\n mcpUrl: manifest.hosted.mcpUrl,\n serverName,\n commands: {},\n };\n }\n\n const defaultUrl = manifest.local?.defaultUrl ?? \"http://127.0.0.1:8100\";\n const appDir = path.resolve(options.into ?? appSkillCacheDir(manifest.id));\n return {\n mode,\n appId: manifest.id,\n appDir,\n sourceDir: resolveLocalSourceDir(loaded),\n url: defaultUrl,\n mcpUrl: withMcpPath(defaultUrl),\n serverName,\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n };\n}\n\nfunction printPlan(plan: AppSkillLaunchPlan, log: (message: string) => void) {\n log(` App: ${plan.appId}`);\n log(` Mode: ${plan.mode}`);\n log(` URL: ${plan.url}`);\n log(` MCP URL: ${plan.mcpUrl}`);\n log(` Server: ${plan.serverName}`);\n if (plan.appDir) log(` App dir: ${plan.appDir}`);\n if (plan.sourceDir) log(` Source: ${plan.sourceDir}`);\n if (plan.commands.install) log(` Install: ${plan.commands.install}`);\n if (plan.commands.dev) log(` Dev: ${plan.commands.dev}`);\n}\n\nfunction safeChildEnv(): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n for (const key of SAFE_ENV_KEYS) {\n const value = process.env[key];\n if (value !== undefined) env[key] = value;\n }\n return env;\n}\n\nfunction parsePackageCommand(command: string): {\n executable: string;\n args: string[];\n} {\n const trimmed = command.trim();\n if (!trimmed) throw new Error(\"Command cannot be empty.\");\n if (/[\\n\\r;&|<>`$]/.test(trimmed)) {\n throw new Error(\n `Unsafe shell syntax is not allowed in command: ${command}`,\n );\n }\n const parts = trimmed.split(/\\s+/);\n const executable = parts[0];\n if (!SAFE_PACKAGE_EXECUTABLES.has(executable)) {\n throw new Error(\n `Unsupported app-skill command executable: ${executable}. Use pnpm, npm, bun, or yarn.`,\n );\n }\n return { executable, args: parts.slice(1) };\n}\n\nfunction runShell(command: string, cwd: string): Promise<number> {\n const { executable, args } = parsePackageCommand(command);\n return new Promise((resolve, reject) => {\n const child = spawn(executable, args, {\n cwd,\n env: safeChildEnv(),\n stdio: \"inherit\",\n });\n child.on(\"error\", reject);\n child.on(\"exit\", (code, signal) => {\n if (signal) {\n reject(new Error(`Command \"${command}\" was terminated by ${signal}.`));\n return;\n }\n resolve(code ?? 1);\n });\n });\n}\n\nfunction openUrl(url: string): void {\n const command =\n process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"cmd\"\n : \"xdg-open\";\n const args = process.platform === \"win32\" ? [\"/c\", \"start\", \"\", url] : [url];\n const child = spawn(command, args, {\n detached: true,\n stdio: \"ignore\",\n shell: process.platform === \"win32\",\n });\n child.unref();\n}\n\nexport async function ensureAppSkill(\n loaded: LoadedAppSkillManifest,\n options: EnsureAppSkillOptions = {},\n): Promise<EnsureAppSkillResult> {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const clients = options.clients ?? resolveClients(\"all\");\n const serverName = options.serverName ?? manifest.mcp.serverName;\n const scope = options.scope ?? \"user\";\n const plan = resolveLaunchPlan(loaded, { mode, serverName });\n const result: EnsureAppSkillResult = {\n mode,\n serverName,\n mcpUrl: plan.mcpUrl,\n clients,\n written: [],\n };\n\n if (options.dryRun) return result;\n\n if (options.confirm && !options.yes) {\n await confirmMcpRegistration(result, loaded.manifest.displayName, scope);\n }\n\n const baseDir = options.baseDir ?? process.cwd();\n const authMode = manifest.auth?.mode ?? \"oauth\";\n const shouldSkipDeviceHostedConfig = mode === \"hosted\" && authMode !== \"none\";\n const writableClients = shouldSkipDeviceHostedConfig\n ? clients.filter((client) => supportsRemoteMcpOAuth(client))\n : clients;\n const skippedClients = shouldSkipDeviceHostedConfig\n ? clients.filter((client) => !supportsRemoteMcpOAuth(client))\n : [];\n\n result.written = writableClients.length\n ? writeConfigs(\n writableClients,\n serverName,\n plan.mcpUrl,\n undefined,\n scope,\n baseDir,\n )\n : [];\n\n if (skippedClients.length > 0) {\n options.log?.(\n `Skipped URL-only hosted MCP config for ${skippedClients.join(\n \", \",\n )}; run agent-native connect ${manifest.hosted.url} --client ${skippedClients.join(\n \",\",\n )} --scope ${scope} to write bearer auth.`,\n );\n }\n\n if (writableClients.length === 0) {\n return result;\n }\n\n // Aliases are intentionally NOT written as separate entries. Instead,\n // repurpose the alias list as a cleanup list: remove any other entries in\n // the same config files that point at the same URL (covers legacy alias\n // names, old default names like 'agent-native-<slug>', and any stale\n // custom names left from previous installs).\n const allRemovedNames: string[] = [];\n for (const client of writableClients) {\n const removed = removeSameUrlDuplicatesForClient(\n client,\n serverName,\n plan.mcpUrl,\n baseDir,\n scope,\n );\n allRemovedNames.push(...removed);\n }\n\n const uniqueRemoved = [...new Set(allRemovedNames)];\n const logMsg =\n uniqueRemoved.length > 0\n ? `Registered \"${serverName}\" for ${writableClients.join(\", \")} at ${plan.mcpUrl}; removed duplicate entries: ${uniqueRemoved.join(\", \")}`\n : `Registered \"${serverName}\" for ${writableClients.join(\", \")} at ${plan.mcpUrl}`;\n options.log?.(logMsg);\n return result;\n}\n\nasync function confirmMcpRegistration(\n result: EnsureAppSkillResult,\n displayName: string,\n scope: string,\n): Promise<void> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n throw new Error(\n \"Refusing to register MCP servers from a manifest without confirmation. Re-run with --yes to approve.\",\n );\n }\n const readline = await import(\"node:readline/promises\");\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n try {\n const answer = await rl.question(\n [\n `Register ${displayName} MCP server \"${result.serverName}\"?`,\n ` URL: ${result.mcpUrl}`,\n ` Clients: ${result.clients.join(\", \")}`,\n ` Scope: ${scope}`,\n \"Proceed? [y/N] \",\n ].join(\"\\n\"),\n );\n if (!/^(y|yes)$/i.test(answer.trim())) {\n throw new Error(\"Cancelled app-skill MCP registration.\");\n }\n } finally {\n rl.close();\n }\n}\n\nexport async function launchAppSkill(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): Promise<AppSkillLaunchPlan> {\n const log =\n options.log ?? ((message: string) => process.stdout.write(`${message}\\n`));\n const plan = resolveLaunchPlan(loaded, options);\n\n if (options.dryRun) {\n printPlan(plan, log);\n return plan;\n }\n\n if (plan.mode === \"hosted\") {\n log(`Opening ${loaded.manifest.displayName}: ${plan.url}`);\n openUrl(plan.url);\n return plan;\n }\n\n if (!plan.appDir) throw new Error(\"Local launch plan is missing appDir.\");\n if (!fs.existsSync(path.join(plan.appDir, \"package.json\"))) {\n if (!plan.sourceDir) {\n throw new Error(\n \"Local launch needs bundled app source. Pass --into <path> from a manifest with local.sourcePath.\",\n );\n }\n fs.mkdirSync(path.dirname(plan.appDir), { recursive: true });\n copyDirFiltered(plan.sourceDir, plan.appDir);\n log(`Materialized ${loaded.manifest.displayName} at ${plan.appDir}`);\n } else {\n log(`Using existing local app at ${plan.appDir}`);\n }\n\n if (!options.noRegister) {\n await ensureAppSkill(loaded, {\n mode: \"local\",\n clients: options.clients,\n scope: options.scope,\n serverName: options.serverName,\n baseDir: options.baseDir,\n confirm: options.confirm,\n yes: options.yes,\n log,\n });\n }\n\n if (!options.skipInstall && plan.commands.install) {\n const installCode = await runShell(plan.commands.install, plan.appDir);\n if (installCode !== 0) {\n throw new Error(`Install command failed with exit code ${installCode}.`);\n }\n }\n\n if (plan.commands.dev) {\n const code = await runShell(plan.commands.dev, plan.appDir);\n if (code !== 0) throw new Error(`Dev command exited with code ${code}.`);\n }\n\n return plan;\n}\n\nfunction resolveArgsClients(parsed: ParsedAppSkillArgs): ClientId[] {\n return resolveClients(parsed.client);\n}\n\nexport async function runAppSkill(argv: string[]): Promise<void> {\n try {\n const parsed = parseAppSkillArgs(argv);\n if (parsed.command === \"help\") {\n process.stdout.write(`${HELP}\\n`);\n return;\n }\n\n const loaded = loadAppSkillManifest(parsed.manifest);\n const log = (message: string) =>\n (parsed.printJson ? process.stderr : process.stdout).write(\n `${message}\\n`,\n );\n if (parsed.command === \"ensure\") {\n const result = await ensureAppSkill(loaded, {\n mode: parsed.mode,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n dryRun: parsed.dryRun,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else if (parsed.dryRun) {\n process.stdout.write(\n `Would register ${result.serverName} at ${result.mcpUrl} for ${result.clients.join(\", \")}\\n`,\n );\n }\n return;\n }\n\n if (parsed.command === \"launch\") {\n const plan = await launchAppSkill(loaded, {\n mode: parsed.mode,\n into: parsed.into,\n dryRun: parsed.dryRun,\n skipInstall: parsed.skipInstall,\n noRegister: parsed.noRegister,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(plan, null, 2)}\\n`);\n }\n return;\n }\n\n if (parsed.command === \"pack\") {\n if (!parsed.out) {\n throw new Error(\"Missing --out <dir> for app-skill pack.\");\n }\n const result = buildAppSkillPack(loaded, parsed.out);\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else {\n process.stdout.write(\n `Packed ${loaded.manifest.displayName} app skill at ${result.outDir}\\n`,\n );\n }\n }\n } catch (err: any) {\n process.stderr.write(`${err?.message ?? err}\\n`);\n process.exitCode = 1;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/cli/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/cli/connect.ts"],"names":[],"mappings":"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"}