@agent-native/core 0.32.1 → 0.32.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +48 -10
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts +12 -0
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +104 -6
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/cli/app-skill.js +2 -2
- package/dist/cli/app-skill.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +6 -1
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/code-agent-output-smoother.d.ts +7 -0
- package/dist/cli/code-agent-output-smoother.d.ts.map +1 -0
- package/dist/cli/code-agent-output-smoother.js +111 -0
- package/dist/cli/code-agent-output-smoother.js.map +1 -0
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +5 -0
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +17 -42
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/skills.d.ts +23 -2
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +405 -41
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +7 -105
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +41 -7
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AgentTaskCard.d.ts.map +1 -1
- package/dist/client/AgentTaskCard.js +0 -28
- package/dist/client/AgentTaskCard.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +8 -23
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +359 -205
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +254 -14
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +14 -9
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-chat.d.ts +24 -0
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +73 -0
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/assistant-ui-recovery.d.ts +34 -0
- package/dist/client/assistant-ui-recovery.d.ts.map +1 -0
- package/dist/client/assistant-ui-recovery.js +122 -0
- package/dist/client/assistant-ui-recovery.js.map +1 -0
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +7 -1
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +7 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +22 -2
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/frame-protocol.d.ts +6 -2
- package/dist/client/frame-protocol.d.ts.map +1 -1
- package/dist/client/frame-protocol.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +2 -1
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts +13 -3
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +105 -36
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/route-warmup.d.ts +61 -0
- package/dist/client/route-warmup.d.ts.map +1 -0
- package/dist/client/route-warmup.js +456 -0
- package/dist/client/route-warmup.js.map +1 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +2 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +5 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +10 -4
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/use-action.d.ts +1 -0
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +22 -4
- package/dist/client/use-action.js.map +1 -1
- package/dist/code-agents/background-run.d.ts +2 -0
- package/dist/code-agents/background-run.d.ts.map +1 -1
- package/dist/code-agents/background-run.js.map +1 -1
- package/dist/db/client.d.ts +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +25 -1
- package/dist/db/client.js.map +1 -1
- package/dist/deploy/build.d.ts +4 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +171 -14
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/immutable-assets.d.ts +1 -0
- package/dist/deploy/immutable-assets.d.ts.map +1 -1
- package/dist/deploy/immutable-assets.js +1 -0
- package/dist/deploy/immutable-assets.js.map +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/connect-route.d.ts.map +1 -1
- package/dist/mcp/connect-route.js +118 -82
- package/dist/mcp/connect-route.js.map +1 -1
- package/dist/progress/routes.d.ts.map +1 -1
- package/dist/progress/routes.js +1 -0
- package/dist/progress/routes.js.map +1 -1
- package/dist/progress/store.d.ts +13 -0
- package/dist/progress/store.d.ts.map +1 -1
- package/dist/progress/store.js +18 -0
- package/dist/progress/store.js.map +1 -1
- package/dist/progress/types.d.ts +2 -0
- package/dist/progress/types.d.ts.map +1 -1
- package/dist/progress/types.js.map +1 -1
- package/dist/scripts/db/wipe-leaked-builder-keys.d.ts +2 -2
- package/dist/scripts/db/wipe-leaked-builder-keys.d.ts.map +1 -1
- package/dist/scripts/db/wipe-leaked-builder-keys.js +14 -3
- package/dist/scripts/db/wipe-leaked-builder-keys.js.map +1 -1
- package/dist/server/action-routes.d.ts +1 -0
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +36 -2
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +123 -25
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +14 -1
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-teams-run-queue.d.ts +80 -0
- package/dist/server/agent-teams-run-queue.d.ts.map +1 -0
- package/dist/server/agent-teams-run-queue.js +208 -0
- package/dist/server/agent-teams-run-queue.js.map +1 -0
- package/dist/server/agent-teams.d.ts +67 -0
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +607 -180
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/auth-marketing.d.ts.map +1 -1
- package/dist/server/auth-marketing.js +0 -64
- package/dist/server/auth-marketing.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +67 -14
- package/dist/server/auth.js.map +1 -1
- package/dist/server/builder-browser.d.ts +12 -2
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +24 -0
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +66 -5
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +10 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +82 -3
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/csrf.js +3 -0
- package/dist/server/csrf.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts +1 -0
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +14 -1
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/self-dispatch.d.ts +44 -0
- package/dist/server/self-dispatch.d.ts.map +1 -0
- package/dist/server/self-dispatch.js +113 -0
- package/dist/server/self-dispatch.js.map +1 -0
- package/dist/server/social-og-image.d.ts +14 -0
- package/dist/server/social-og-image.d.ts.map +1 -0
- package/dist/server/social-og-image.js +251 -0
- package/dist/server/social-og-image.js.map +1 -0
- package/dist/server/ssr-handler.d.ts +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +27 -11
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/shared/cache-control.d.ts +7 -0
- package/dist/shared/cache-control.d.ts.map +1 -1
- package/dist/shared/cache-control.js +7 -0
- package/dist/shared/cache-control.js.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/route-warmup-config.d.ts +28 -0
- package/dist/shared/route-warmup-config.d.ts.map +1 -0
- package/dist/shared/route-warmup-config.js +58 -0
- package/dist/shared/route-warmup-config.js.map +1 -0
- package/dist/shared/social-meta.d.ts +5 -0
- package/dist/shared/social-meta.d.ts.map +1 -1
- package/dist/shared/social-meta.js +36 -2
- package/dist/shared/social-meta.js.map +1 -1
- package/dist/shared/streaming-text-smoothing.d.ts +12 -0
- package/dist/shared/streaming-text-smoothing.d.ts.map +1 -0
- package/dist/shared/streaming-text-smoothing.js +52 -0
- package/dist/shared/streaming-text-smoothing.js.map +1 -0
- package/dist/styles/agent-native.css +4 -4
- package/dist/templates/default/AGENTS.md +9 -4
- package/dist/templates/default/DEVELOPING.md +15 -1
- package/dist/templates/workspace-core/AGENTS.md +7 -3
- package/dist/templates/workspace-root/AGENTS.md +7 -3
- package/dist/vite/client.d.ts +13 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +36 -1
- package/dist/vite/client.js.map +1 -1
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js.map +1 -1
- package/docs/content/client.md +62 -1
- package/docs/content/code-agents-ui.md +6 -13
- package/docs/content/context-awareness.md +186 -21
- package/docs/content/deployment.md +8 -11
- package/docs/content/dispatch.md +1 -1
- package/docs/content/external-agents.md +32 -2
- package/docs/content/migration-workbench.md +4 -21
- package/docs/content/multi-app-workspace.md +1 -1
- package/docs/content/recurring-jobs.md +1 -1
- package/docs/content/security.md +0 -1
- package/docs/content/sharing.md +1 -3
- package/docs/content/skills-guide.md +12 -10
- package/docs/content/template-assets.md +21 -1
- package/docs/content/template-design.md +23 -5
- package/docs/content/template-dispatch.md +1 -1
- package/package.json +2 -1
- package/src/templates/default/AGENTS.md +9 -4
- package/src/templates/default/DEVELOPING.md +15 -1
- package/src/templates/workspace-core/AGENTS.md +7 -3
- package/src/templates/workspace-root/AGENTS.md +7 -3
|
@@ -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\";\n\nimport { type ClientId, buildHttpMcpEntry } 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 hosted: {\n url: string;\n mcpUrl: string;\n };\n mcp: {\n serverName: 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 hosted: {\n url: hostedUrl,\n mcpUrl: hostedMcpUrl,\n },\n mcp: {\n serverName: stringValue(mcpRaw.serverName) ?? `agent-native-${id}`,\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 mcpServerConfig(manifest: AppSkillManifest, serverName?: string) {\n return {\n mcpServers: {\n [serverName ?? manifest.mcp.serverName]: buildHttpMcpEntry(\n manifest.hosted.mcpUrl,\n ),\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\nfunction writeCodexPluginAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n): void {\n const name = pluginName(manifest);\n writeJson(path.join(outDir, \".codex-plugin\", \"plugin.json\"), {\n name,\n version: \"0.1.0\",\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 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 with the open skills CLI:\",\n \"\",\n \"```bash\",\n `npx skills 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 skill files contain instructions only. 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\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);\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 result.written = writeConfigs(\n clients,\n serverName,\n plan.mcpUrl,\n undefined,\n scope,\n options.baseDir ?? process.cwd(),\n );\n options.log?.(\n `Registered ${serverName} for ${clients.join(\", \")} at ${plan.mcpUrl}`,\n );\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\";\n\nimport { type ClientId, buildHttpMcpEntry } 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 hosted: {\n url: string;\n mcpUrl: string;\n };\n mcp: {\n serverName: 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 hosted: {\n url: hostedUrl,\n mcpUrl: hostedMcpUrl,\n },\n mcp: {\n serverName: stringValue(mcpRaw.serverName) ?? `agent-native-${id}`,\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 mcpServerConfig(manifest: AppSkillManifest, serverName?: string) {\n return {\n mcpServers: {\n [serverName ?? manifest.mcp.serverName]: buildHttpMcpEntry(\n manifest.hosted.mcpUrl,\n ),\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\nfunction writeCodexPluginAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n): void {\n const name = pluginName(manifest);\n writeJson(path.join(outDir, \".codex-plugin\", \"plugin.json\"), {\n name,\n version: \"0.1.0\",\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 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 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\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);\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 result.written = writeConfigs(\n clients,\n serverName,\n plan.mcpUrl,\n undefined,\n scope,\n options.baseDir ?? process.cwd(),\n );\n options.log?.(\n `Registered ${serverName} for ${clients.join(\", \")} at ${plan.mcpUrl}`,\n );\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":"code-agent-executor.d.ts","sourceRoot":"","sources":["../../src/cli/code-agent-executor.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"code-agent-executor.d.ts","sourceRoot":"","sources":["../../src/cli/code-agent-executor.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAeD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAiTpC;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAM,GACtD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAEpC;AAED,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;CAAO,GAC/C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA0FpC;AAmUD,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,GACd,0BAA0B,CAuD5B"}
|
|
@@ -8,6 +8,7 @@ import { PROVIDER_ENV_VARS } from "../agent/engine/provider-env-vars.js";
|
|
|
8
8
|
import { isReasoningEffort, } from "../shared/reasoning-effort.js";
|
|
9
9
|
import { formatPromptWithAttachments, } from "../code-agents/prompt-attachments.js";
|
|
10
10
|
import { appendCodeAgentTranscriptEvent, dequeueCodeAgentFollowUp, getCodeAgentRunRecord, listCodeAgentTranscriptEvents, updateCodeAgentRunRecord, } from "./code-agent-runs.js";
|
|
11
|
+
import { createCodeAgentOutputSmoother } from "./code-agent-output-smoother.js";
|
|
11
12
|
const DEFAULT_COMMAND_TIMEOUT_MS = 120_000;
|
|
12
13
|
const MAX_TOOL_OUTPUT_CHARS = 50_000;
|
|
13
14
|
const MAX_FILE_READ_CHARS = 120_000;
|
|
@@ -111,10 +112,11 @@ export async function executeCodeAgentRun(options) {
|
|
|
111
112
|
options.signal.addEventListener("abort", abortFromParent, { once: true });
|
|
112
113
|
}
|
|
113
114
|
let assistantText = "";
|
|
115
|
+
const outputSmoother = createCodeAgentOutputSmoother(options.stdout);
|
|
114
116
|
const send = (event) => {
|
|
115
117
|
if (event.type === "text") {
|
|
116
118
|
assistantText += event.text;
|
|
117
|
-
|
|
119
|
+
outputSmoother.write(event.text);
|
|
118
120
|
return;
|
|
119
121
|
}
|
|
120
122
|
if (event.type === "activity") {
|
|
@@ -171,6 +173,7 @@ export async function executeCodeAgentRun(options) {
|
|
|
171
173
|
maxIterations: 12,
|
|
172
174
|
reasoningEffort,
|
|
173
175
|
}));
|
|
176
|
+
await outputSmoother.flush();
|
|
174
177
|
if (assistantText.trim()) {
|
|
175
178
|
options.stdout?.write("\n");
|
|
176
179
|
appendCodeAgentTranscriptEvent({
|
|
@@ -267,6 +270,7 @@ export async function executeCodeAgentRun(options) {
|
|
|
267
270
|
});
|
|
268
271
|
}
|
|
269
272
|
catch (err) {
|
|
273
|
+
await outputSmoother.flush().catch(() => undefined);
|
|
270
274
|
const message = err instanceof Error ? err.message : String(err);
|
|
271
275
|
options.stdout?.write(`\nAgent-Native Code run failed: ${message}\n`);
|
|
272
276
|
appendCodeAgentTranscriptEvent({
|
|
@@ -292,6 +296,7 @@ export async function executeCodeAgentRun(options) {
|
|
|
292
296
|
});
|
|
293
297
|
}
|
|
294
298
|
finally {
|
|
299
|
+
outputSmoother.cancel();
|
|
295
300
|
options.signal?.removeEventListener("abort", abortFromParent);
|
|
296
301
|
await mcpManager?.stop().catch(() => undefined);
|
|
297
302
|
void running;
|