@openacp/cli 0.4.6 → 0.4.8
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 +8 -8
- package/dist/{chunk-IUPHAXGA.js → chunk-6MJLVZXV.js} +3 -3
- package/dist/{chunk-2M4O7AFI.js → chunk-BBPWAWE3.js} +392 -37
- package/dist/chunk-BBPWAWE3.js.map +1 -0
- package/dist/{chunk-3QACY5E3.js → chunk-C6YIUTGR.js} +2 -2
- package/dist/{chunk-2SY7Y2VB.js → chunk-HZD3CGPK.js} +2 -2
- package/dist/{chunk-ARWC4S35.js → chunk-UAUTLC4E.js} +13 -7
- package/dist/{chunk-ARWC4S35.js.map → chunk-UAUTLC4E.js.map} +1 -1
- package/dist/{chunk-WF5XDN4D.js → chunk-ZRFBLD3W.js} +6 -2
- package/dist/chunk-ZRFBLD3W.js.map +1 -0
- package/dist/cli.js +37 -31
- package/dist/cli.js.map +1 -1
- package/dist/{config-J5YQOMDU.js → config-H2DSEHNW.js} +2 -2
- package/dist/config-editor-SKS4LJLT.js +11 -0
- package/dist/{daemon-SLGQGRKO.js → daemon-VF6HJQXD.js} +3 -3
- package/dist/index.d.ts +18 -0
- package/dist/index.js +6 -6
- package/dist/integrate-WUPLRJD3.js +145 -0
- package/dist/integrate-WUPLRJD3.js.map +1 -0
- package/dist/{main-3POGUQPY.js → main-NV7YN3VY.js} +11 -11
- package/dist/{setup-CEDO6VWV.js → setup-FCVL75K6.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-2M4O7AFI.js.map +0 -1
- package/dist/chunk-WF5XDN4D.js.map +0 -1
- package/dist/config-editor-EPOKAEP6.js +0 -11
- package/dist/integrate-HYDSHAF3.js +0 -123
- package/dist/integrate-HYDSHAF3.js.map +0 -1
- /package/dist/{chunk-IUPHAXGA.js.map → chunk-6MJLVZXV.js.map} +0 -0
- /package/dist/{chunk-3QACY5E3.js.map → chunk-C6YIUTGR.js.map} +0 -0
- /package/dist/{chunk-2SY7Y2VB.js.map → chunk-HZD3CGPK.js.map} +0 -0
- /package/dist/{config-J5YQOMDU.js.map → config-H2DSEHNW.js.map} +0 -0
- /package/dist/{config-editor-EPOKAEP6.js.map → config-editor-SKS4LJLT.js.map} +0 -0
- /package/dist/{daemon-SLGQGRKO.js.map → daemon-VF6HJQXD.js.map} +0 -0
- /package/dist/{main-3POGUQPY.js.map → main-NV7YN3VY.js.map} +0 -0
- /package/dist/{setup-CEDO6VWV.js.map → setup-FCVL75K6.js.map} +0 -0
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli.ts","../../src/core/api-client.ts","../../src/cli/commands.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { setDefaultAutoSelectFamily } from \"node:net\";\nsetDefaultAutoSelectFamily(false);\n\nimport {\n printHelp,\n cmdVersion,\n cmdInstall,\n cmdUninstall,\n cmdPlugins,\n cmdApi,\n cmdStart,\n cmdStop,\n cmdStatus,\n cmdLogs,\n cmdConfig,\n cmdReset,\n cmdUpdate,\n cmdDefault,\n cmdAdopt,\n cmdIntegrate,\n} from './cli/commands.js'\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nconst commands: Record<string, () => Promise<void>> = {\n '--help': async () => printHelp(),\n '-h': async () => printHelp(),\n '--version': () => cmdVersion(),\n '-v': () => cmdVersion(),\n 'install': () => cmdInstall(args),\n 'uninstall': () => cmdUninstall(args),\n 'plugins': () => cmdPlugins(),\n 'api': () => cmdApi(args),\n 'start': () => cmdStart(),\n 'stop': () => cmdStop(),\n 'status': () => cmdStatus(),\n 'logs': () => cmdLogs(),\n 'config': () => cmdConfig(),\n 'reset': () => cmdReset(),\n 'update': () => cmdUpdate(),\n 'adopt': () => cmdAdopt(args),\n 'integrate': () => cmdIntegrate(args),\n '--daemon-child': async () => {\n const { startServer } = await import('./main.js')\n await startServer()\n },\n}\n\nasync function main() {\n const handler = command ? commands[command] : undefined\n if (handler) {\n await handler()\n } else {\n await cmdDefault(command)\n }\n}\n\nmain().catch((err) => {\n console.error(\"Fatal:\", err);\n process.exit(1);\n});\n","import * as fs from 'node:fs'\nimport * as path from 'node:path'\nimport * as os from 'node:os'\n\nconst DEFAULT_PORT_FILE = path.join(os.homedir(), '.openacp', 'api.port')\n\nexport function readApiPort(portFilePath: string = DEFAULT_PORT_FILE): number | null {\n try {\n const content = fs.readFileSync(portFilePath, 'utf-8').trim()\n const port = parseInt(content, 10)\n return isNaN(port) ? null : port\n } catch {\n return null\n }\n}\n\nexport function removeStalePortFile(portFilePath: string = DEFAULT_PORT_FILE): void {\n try {\n fs.unlinkSync(portFilePath)\n } catch {\n // ignore\n }\n}\n\nexport async function apiCall(\n port: number,\n urlPath: string,\n options?: RequestInit,\n): Promise<Response> {\n return fetch(`http://127.0.0.1:${port}${urlPath}`, options)\n}\n","import { installPlugin, uninstallPlugin, listPlugins } from '../core/plugin-manager.js'\nimport { readApiPort, removeStalePortFile, apiCall } from '../core/api-client.js'\nimport { getCurrentVersion, getLatestVersion, compareVersions, runUpdate, checkAndPromptUpdate } from './version.js'\n\nexport function printHelp(): void {\n console.log(`\nOpenACP - Self-hosted bridge for AI coding agents\n\nUsage:\n openacp Start (mode from config)\n openacp start Start as background daemon\n openacp stop Stop background daemon\n openacp status Show daemon status\n openacp logs Tail daemon log file\n openacp config Edit configuration\n openacp reset Delete all data and start fresh\n openacp update Update to latest version\n openacp install <package> Install a plugin adapter\n openacp uninstall <package> Uninstall a plugin adapter\n openacp plugins List installed plugins\n openacp --foreground Force foreground mode\n openacp --version Show version\n openacp --help Show this help\n adopt <agent> <id> Adopt an external agent session into OpenACP\n integrate <agent> Install/uninstall CLI integration for an agent\n\nAPI (requires running daemon):\n openacp api status Show active sessions\n openacp api session <id> Show session details\n openacp api new [agent] [workspace] Create a new session\n openacp api send <id> <prompt> Send prompt to session\n openacp api cancel <id> Cancel a session\n openacp api dangerous <id> [on|off] Toggle dangerous mode\n openacp api agents List available agents\n openacp api topics [--status s1,s2] List topics\n openacp api delete-topic <id> [--force] Delete a topic\n openacp api cleanup [--status s1,s2] Cleanup finished topics\n openacp api health Show system health\n openacp api adapters List registered adapters\n openacp api tunnel Show tunnel status\n openacp api config Show runtime config\n openacp api config set <key> <value> Update config value\n openacp api restart Restart daemon\n openacp api notify <message> Send notification to all channels\n openacp api version Show daemon version\n\nNote: \"openacp status\" shows daemon process health.\n \"openacp api status\" shows active agent sessions.\n \"openacp --version\" shows CLI version.\n \"openacp api version\" shows running daemon version.\n\nInstall:\n npm install -g @openacp/cli\n\nExamples:\n openacp\n openacp install @openacp/adapter-discord\n openacp uninstall @openacp/adapter-discord\n`)\n}\n\nexport async function cmdVersion(): Promise<void> {\n const { getCurrentVersion } = await import(\"./version.js\")\n console.log(`openacp v${getCurrentVersion()}`)\n}\n\nexport async function cmdInstall(args: string[]): Promise<void> {\n const pkg = args[1]\n if (!pkg) {\n console.error(\"Usage: openacp install <package>\")\n process.exit(1)\n }\n installPlugin(pkg)\n}\n\nexport async function cmdUninstall(args: string[]): Promise<void> {\n const pkg = args[1]\n if (!pkg) {\n console.error(\"Usage: openacp uninstall <package>\")\n process.exit(1)\n }\n uninstallPlugin(pkg)\n}\n\nexport async function cmdPlugins(): Promise<void> {\n const plugins = listPlugins()\n const entries = Object.entries(plugins)\n if (entries.length === 0) {\n console.log(\"No plugins installed.\")\n } else {\n console.log(\"Installed plugins:\")\n for (const [name, version] of entries) {\n console.log(` ${name}@${version}`)\n }\n }\n}\n\nexport async function cmdApi(args: string[]): Promise<void> {\n const subCmd = args[1]\n\n const port = readApiPort()\n if (port === null) {\n console.error('OpenACP is not running. Start with `openacp start`')\n process.exit(1)\n }\n\n try {\n if (subCmd === 'new') {\n const agent = args[2]\n const workspaceIdx = args.indexOf('--workspace')\n const workspace = workspaceIdx !== -1 ? args[workspaceIdx + 1] : args[3]\n const body: Record<string, string> = {}\n if (agent) body.agent = agent\n if (workspace) body.workspace = workspace\n\n const res = await apiCall(port, '/api/sessions', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log('Session created')\n console.log(` ID : ${data.sessionId}`)\n console.log(` Agent : ${data.agent}`)\n console.log(` Workspace : ${data.workspace}`)\n console.log(` Status : ${data.status}`)\n\n } else if (subCmd === 'cancel') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api cancel <session-id>')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}`, {\n method: 'DELETE',\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Session ${sessionId} cancelled`)\n\n } else if (subCmd === 'status') {\n const res = await apiCall(port, '/api/sessions')\n const data = await res.json() as { sessions: Array<{ id: string; agent: string; status: string; name: string | null }> }\n if (data.sessions.length === 0) {\n console.log('No active sessions.')\n } else {\n console.log(`Active sessions: ${data.sessions.length}\\n`)\n for (const s of data.sessions) {\n const name = s.name ? ` \"${s.name}\"` : ''\n console.log(` ${s.id} ${s.agent} ${s.status}${name}`)\n }\n }\n\n } else if (subCmd === 'agents') {\n const res = await apiCall(port, '/api/agents')\n const data = await res.json() as { agents: Array<{ name: string; command: string; args: string[] }>; default: string }\n console.log('Available agents:')\n for (const a of data.agents) {\n const isDefault = a.name === data.default ? ' (default)' : ''\n console.log(` ${a.name}${isDefault}`)\n }\n\n } else if (subCmd === 'topics') {\n const statusIdx = args.indexOf('--status')\n const statusParam = statusIdx !== -1 ? args[statusIdx + 1] : undefined\n const query = statusParam ? `?status=${encodeURIComponent(statusParam)}` : ''\n const res = await apiCall(port, `/api/topics${query}`)\n const data = await res.json() as { topics: Array<{ sessionId: string; topicId: number | null; name: string | null; status: string; agentName: string; lastActiveAt: string }> }\n if (data.topics.length === 0) {\n console.log('No topics found.')\n } else {\n console.log(`Topics: ${data.topics.length}\\n`)\n for (const t of data.topics) {\n const name = t.name ? ` \"${t.name}\"` : ''\n const topic = t.topicId ? `Topic #${t.topicId}` : 'headless'\n console.log(` ${t.sessionId} ${t.agentName} ${t.status}${name} ${topic}`)\n }\n }\n\n } else if (subCmd === 'delete-topic') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api delete-topic <session-id> [--force]')\n process.exit(1)\n }\n const force = args.includes('--force')\n const query = force ? '?force=true' : ''\n const res = await apiCall(port, `/api/topics/${encodeURIComponent(sessionId)}${query}`, { method: 'DELETE' })\n const data = await res.json() as Record<string, unknown>\n if (res.status === 409) {\n console.error(`Session \"${sessionId}\" is active (${(data.session as any)?.status}). Use --force to delete.`)\n process.exit(1)\n }\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n const topicLabel = data.topicId ? `Topic #${data.topicId}` : 'headless session'\n console.log(`${topicLabel} deleted (session ${sessionId})`)\n\n } else if (subCmd === 'cleanup') {\n const statusIdx = args.indexOf('--status')\n const statusParam = statusIdx !== -1 ? args[statusIdx + 1] : undefined\n const body: Record<string, unknown> = {}\n if (statusParam) body.statuses = statusParam.split(',')\n const res = await apiCall(port, '/api/topics/cleanup', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n })\n const data = await res.json() as { deleted: string[]; failed: Array<{ sessionId: string; error: string }> }\n if (data.deleted.length === 0 && data.failed.length === 0) {\n console.log('Nothing to clean up.')\n } else {\n console.log(`Cleaned up ${data.deleted.length} topics${data.deleted.length ? ': ' + data.deleted.join(', ') : ''} (${data.failed.length} failed)`)\n for (const f of data.failed) {\n console.error(` Failed: ${f.sessionId} — ${f.error}`)\n }\n }\n\n } else if (subCmd === 'send') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api send <session-id> <prompt>')\n process.exit(1)\n }\n const prompt = args.slice(3).join(' ')\n if (!prompt) {\n console.error('Usage: openacp api send <session-id> <prompt>')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}/prompt`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ prompt }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Prompt sent to session ${sessionId} (queue depth: ${data.queueDepth})`)\n\n } else if (subCmd === 'session') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api session <session-id>')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}`)\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Session details:`)\n console.log(` ID : ${data.id}`)\n console.log(` Agent : ${data.agent}`)\n console.log(` Status : ${data.status}`)\n console.log(` Name : ${data.name ?? '(none)'}`)\n console.log(` Workspace : ${data.workspace}`)\n console.log(` Created : ${data.createdAt}`)\n console.log(` Dangerous : ${data.dangerous}`)\n console.log(` Queue depth : ${data.queueDepth}`)\n console.log(` Prompt active : ${data.promptActive}`)\n console.log(` Channel : ${data.channelId ?? '(none)'}`)\n console.log(` Thread : ${data.threadId ?? '(none)'}`)\n\n } else if (subCmd === 'dangerous') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api dangerous <session-id> [on|off]')\n process.exit(1)\n }\n const toggle = args[3]\n if (!toggle || (toggle !== 'on' && toggle !== 'off')) {\n console.error('Usage: openacp api dangerous <session-id> [on|off]')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}/dangerous`, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ enabled: toggle === 'on' }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n const state = toggle === 'on' ? 'enabled' : 'disabled'\n console.log(`Dangerous mode ${state} for session ${sessionId}`)\n\n } else if (subCmd === 'health') {\n const res = await apiCall(port, '/api/health')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n const uptimeSeconds = typeof data.uptimeSeconds === 'number' ? data.uptimeSeconds : 0\n const hours = Math.floor(uptimeSeconds / 3600)\n const minutes = Math.floor((uptimeSeconds % 3600) / 60)\n const memoryBytes = typeof data.memoryUsage === 'number' ? data.memoryUsage : 0\n const memoryMB = (memoryBytes / 1024 / 1024).toFixed(1)\n const sessions = data.sessions as Record<string, unknown> ?? {}\n console.log(`Status : ${data.status}`)\n console.log(`Uptime : ${hours}h ${minutes}m`)\n console.log(`Version : ${data.version}`)\n console.log(`Memory : ${memoryMB} MB`)\n console.log(`Sessions : ${sessions.active ?? 0} active / ${sessions.total ?? 0} total`)\n console.log(`Adapters : ${data.adapters}`)\n console.log(`Tunnel : ${data.tunnel}`)\n\n } else if (subCmd === 'restart') {\n const res = await apiCall(port, '/api/restart', { method: 'POST' })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log('Restart signal sent. OpenACP is restarting...')\n\n } else if (subCmd === 'config') {\n const subSubCmd = args[2]\n if (!subSubCmd) {\n const res = await apiCall(port, '/api/config')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(JSON.stringify(data.config, null, 2))\n } else if (subSubCmd === 'set') {\n const configPath = args[3]\n const configValue = args[4]\n if (!configPath || configValue === undefined) {\n console.error('Usage: openacp api config set <path> <value>')\n process.exit(1)\n }\n let value: unknown = configValue\n try {\n value = JSON.parse(configValue)\n } catch {\n // keep as string\n }\n const res = await apiCall(port, '/api/config', {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ path: configPath, value }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Config updated: ${configPath} = ${JSON.stringify(value)}`)\n if (data.needsRestart) {\n console.log('Note: restart required for this change to take effect.')\n }\n } else {\n console.error(`Unknown config subcommand: ${subSubCmd}`)\n console.log(' openacp api config Show runtime config')\n console.log(' openacp api config set <key> <value> Update config value')\n process.exit(1)\n }\n\n } else if (subCmd === 'adapters') {\n const res = await apiCall(port, '/api/adapters')\n const data = await res.json() as { adapters: Array<{ name: string; type: string }> }\n if (!res.ok) {\n console.error(`Error: ${(data as any).error}`)\n process.exit(1)\n }\n console.log('Registered adapters:')\n for (const a of data.adapters) {\n console.log(` ${a.name} (${a.type})`)\n }\n\n } else if (subCmd === 'tunnel') {\n const res = await apiCall(port, '/api/tunnel')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n if (data.enabled) {\n console.log(`Tunnel provider : ${data.provider}`)\n console.log(`Tunnel URL : ${data.url}`)\n } else {\n console.log('Tunnel: not enabled')\n }\n\n } else if (subCmd === 'notify') {\n const message = args.slice(2).join(' ')\n if (!message) {\n console.error('Usage: openacp api notify <message>')\n process.exit(1)\n }\n const res = await apiCall(port, '/api/notify', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ message }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log('Notification sent to all channels.')\n\n } else if (subCmd === 'version') {\n const res = await apiCall(port, '/api/version')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Daemon version: ${data.version}`)\n\n } else {\n console.error(`Unknown api command: ${subCmd || '(none)'}\\n`)\n console.log('Usage:')\n console.log(' openacp api status Show active sessions')\n console.log(' openacp api session <id> Show session details')\n console.log(' openacp api new [agent] [workspace] Create a new session')\n console.log(' openacp api send <id> <prompt> Send prompt to session')\n console.log(' openacp api cancel <id> Cancel a session')\n console.log(' openacp api dangerous <id> [on|off] Toggle dangerous mode')\n console.log(' openacp api agents List available agents')\n console.log(' openacp api topics [--status s1,s2] List topics')\n console.log(' openacp api delete-topic <id> [--force] Delete a topic')\n console.log(' openacp api cleanup [--status s1,s2] Cleanup finished topics')\n console.log(' openacp api health Show system health')\n console.log(' openacp api adapters List registered adapters')\n console.log(' openacp api tunnel Show tunnel status')\n console.log(' openacp api config Show runtime config')\n console.log(' openacp api config set <key> <value> Update config value')\n console.log(' openacp api restart Restart daemon')\n console.log(' openacp api notify <message> Send notification to all channels')\n console.log(' openacp api version Show daemon version')\n process.exit(1)\n }\n } catch (err) {\n if (err instanceof TypeError && (err as any).cause?.code === 'ECONNREFUSED') {\n console.error('OpenACP is not running (stale port file)')\n removeStalePortFile()\n process.exit(1)\n }\n throw err\n }\n}\n\nexport async function cmdStart(): Promise<void> {\n await checkAndPromptUpdate()\n const { startDaemon, getPidPath } = await import('../core/daemon.js')\n const { ConfigManager } = await import('../core/config.js')\n const cm = new ConfigManager()\n if (await cm.exists()) {\n await cm.load()\n const config = cm.get()\n const result = startDaemon(getPidPath(), config.logging.logDir)\n if ('error' in result) {\n console.error(result.error)\n process.exit(1)\n }\n console.log(`OpenACP daemon started (PID ${result.pid})`)\n } else {\n console.error('No config found. Run \"openacp\" first to set up.')\n process.exit(1)\n }\n}\n\nexport async function cmdStop(): Promise<void> {\n const { stopDaemon } = await import('../core/daemon.js')\n const result = stopDaemon()\n if (result.stopped) {\n console.log(`OpenACP daemon stopped (was PID ${result.pid})`)\n } else {\n console.error(result.error)\n process.exit(1)\n }\n}\n\nexport async function cmdStatus(): Promise<void> {\n const { getStatus } = await import('../core/daemon.js')\n const status = getStatus()\n if (status.running) {\n console.log(`OpenACP is running (PID ${status.pid})`)\n } else {\n console.log('OpenACP is not running')\n }\n}\n\nexport async function cmdLogs(): Promise<void> {\n const { spawn } = await import('node:child_process')\n const { ConfigManager, expandHome } = await import('../core/config.js')\n const pathMod = await import('node:path')\n const cm = new ConfigManager()\n let logDir = '~/.openacp/logs'\n if (await cm.exists()) {\n await cm.load()\n logDir = cm.get().logging.logDir\n }\n const logFile = pathMod.join(expandHome(logDir), 'openacp.log')\n const tail = spawn('tail', ['-f', '-n', '50', logFile], { stdio: 'inherit' })\n tail.on('error', (err: Error) => {\n console.error(`Cannot tail log file: ${err.message}`)\n process.exit(1)\n })\n}\n\nexport async function cmdConfig(): Promise<void> {\n const { runConfigEditor } = await import('../core/config-editor.js')\n const { ConfigManager } = await import('../core/config.js')\n const cm = new ConfigManager()\n if (!(await cm.exists())) {\n console.error('No config found. Run \"openacp\" first to set up.')\n process.exit(1)\n }\n await runConfigEditor(cm)\n}\n\nexport async function cmdReset(): Promise<void> {\n const { getStatus } = await import('../core/daemon.js')\n const status = getStatus()\n if (status.running) {\n console.error('OpenACP is running. Stop it first: openacp stop')\n process.exit(1)\n }\n\n const { confirm } = await import('@inquirer/prompts')\n const yes = await confirm({\n message: 'This will delete all OpenACP data (~/.openacp). You will need to set up again. Continue?',\n default: false,\n })\n if (!yes) {\n console.log('Aborted.')\n return\n }\n\n const { uninstallAutoStart } = await import('../core/autostart.js')\n uninstallAutoStart()\n\n const fs = await import('node:fs')\n const os = await import('node:os')\n const path = await import('node:path')\n const openacpDir = path.join(os.homedir(), '.openacp')\n fs.rmSync(openacpDir, { recursive: true, force: true })\n\n console.log('Reset complete. Run `openacp` to set up again.')\n}\n\nexport async function cmdUpdate(): Promise<void> {\n const current = getCurrentVersion()\n const latest = await getLatestVersion()\n if (!latest) {\n console.error('Could not check for updates. Check your internet connection.')\n process.exit(1)\n }\n if (compareVersions(current, latest) >= 0) {\n console.log(`Already up to date (v${current})`)\n return\n }\n console.log(`Update available: v${current} → v${latest}`)\n const ok = await runUpdate()\n if (ok) {\n console.log(`\\x1b[32m✓ Updated to v${latest}\\x1b[0m`)\n } else {\n console.error('Update failed. Try manually: npm install -g @openacp/cli@latest')\n process.exit(1)\n }\n}\n\nexport async function cmdAdopt(args: string[]): Promise<void> {\n const agent = args[1];\n const sessionId = args[2];\n\n if (!agent || !sessionId) {\n console.log(\"Usage: openacp adopt <agent> <session_id> [--cwd <path>]\");\n console.log(\"Example: openacp adopt claude abc123-def456 --cwd /path/to/project\");\n process.exit(1);\n }\n\n const cwdIdx = args.indexOf(\"--cwd\");\n const cwd = cwdIdx !== -1 && args[cwdIdx + 1] ? args[cwdIdx + 1] : process.cwd();\n\n const port = readApiPort();\n if (!port) {\n console.log(\"OpenACP is not running. Start it with: openacp start\");\n process.exit(1);\n }\n\n try {\n const res = await fetch(`http://127.0.0.1:${port}/api/sessions/adopt`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ agent, agentSessionId: sessionId, cwd }),\n });\n const data = await res.json() as Record<string, unknown>;\n\n if (data.ok) {\n if (data.status === \"existing\") {\n console.log(`Session already on Telegram. Topic pinged.`);\n } else {\n console.log(`Session transferred to Telegram.`);\n }\n console.log(` Session ID: ${data.sessionId}`);\n console.log(` Thread ID: ${data.threadId}`);\n } else {\n console.log(`Error: ${(data.message as string) || (data.error as string)}`);\n process.exit(1);\n }\n } catch (err) {\n console.log(`Failed to connect to OpenACP: ${err instanceof Error ? err.message : err}`);\n process.exit(1);\n }\n}\n\nexport async function cmdIntegrate(args: string[]): Promise<void> {\n const { getIntegration, listIntegrations } = await import(\"./integrate.js\");\n\n const agent = args[1];\n const uninstall = args.includes(\"--uninstall\");\n\n if (!agent) {\n console.log(\"Usage: openacp integrate <agent> [--uninstall]\");\n console.log(`Available integrations: ${listIntegrations().join(\", \")}`);\n process.exit(1);\n }\n\n const integration = getIntegration(agent);\n if (!integration) {\n console.log(`No integration available for '${agent}'.`);\n console.log(`Available: ${listIntegrations().join(\", \")}`);\n process.exit(1);\n }\n\n try {\n if (uninstall) {\n console.log(`Removing ${agent} CLI integration...`);\n await integration.uninstall();\n console.log(`\\n${agent} CLI integration removed.`);\n } else {\n console.log(`Installing ${agent} CLI integration...`);\n await integration.install();\n console.log(`\\n${agent} CLI integration installed.`);\n console.log(` Use /openacp:handoff in Claude CLI to hand off sessions.`);\n }\n } catch (err) {\n console.log(`Error: ${err instanceof Error ? err.message : err}`);\n process.exit(1);\n }\n}\n\nexport async function cmdDefault(command: string | undefined): Promise<void> {\n const forceForeground = command === '--foreground'\n\n // Reject unknown commands\n if (command && !command.startsWith('-')) {\n console.error(`Unknown command: ${command}`)\n printHelp()\n process.exit(1)\n }\n\n await checkAndPromptUpdate()\n\n const { ConfigManager } = await import('../core/config.js')\n const cm = new ConfigManager()\n\n // If no config, run setup first\n if (!(await cm.exists())) {\n const { runSetup } = await import('../core/setup.js')\n const shouldStart = await runSetup(cm)\n if (!shouldStart) process.exit(0)\n }\n\n await cm.load()\n const config = cm.get()\n\n if (!forceForeground && config.runMode === 'daemon') {\n const { startDaemon, getPidPath } = await import('../core/daemon.js')\n const result = startDaemon(getPidPath(), config.logging.logDir)\n if ('error' in result) {\n console.error(result.error)\n process.exit(1)\n }\n console.log(`OpenACP daemon started (PID ${result.pid})`)\n return\n }\n\n const { markRunning } = await import('../core/daemon.js')\n markRunning()\n const { startServer } = await import('../main.js')\n await startServer()\n}\n"],"mappings":"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","names":["getCurrentVersion","args","fs","os","path","command"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli.ts","../../src/core/api-client.ts","../../src/cli/commands.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { setDefaultAutoSelectFamily } from \"node:net\";\nsetDefaultAutoSelectFamily(false);\n\nimport {\n printHelp,\n cmdVersion,\n cmdInstall,\n cmdUninstall,\n cmdPlugins,\n cmdApi,\n cmdStart,\n cmdStop,\n cmdStatus,\n cmdLogs,\n cmdConfig,\n cmdReset,\n cmdUpdate,\n cmdDefault,\n cmdAdopt,\n cmdIntegrate,\n} from './cli/commands.js'\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nconst commands: Record<string, () => Promise<void>> = {\n '--help': async () => printHelp(),\n '-h': async () => printHelp(),\n '--version': () => cmdVersion(),\n '-v': () => cmdVersion(),\n 'install': () => cmdInstall(args),\n 'uninstall': () => cmdUninstall(args),\n 'plugins': () => cmdPlugins(),\n 'api': () => cmdApi(args),\n 'start': () => cmdStart(),\n 'stop': () => cmdStop(),\n 'status': () => cmdStatus(),\n 'logs': () => cmdLogs(),\n 'config': () => cmdConfig(),\n 'reset': () => cmdReset(),\n 'update': () => cmdUpdate(),\n 'adopt': () => cmdAdopt(args),\n 'integrate': () => cmdIntegrate(args),\n '--daemon-child': async () => {\n const { startServer } = await import('./main.js')\n await startServer()\n },\n}\n\nasync function main() {\n const handler = command ? commands[command] : undefined\n if (handler) {\n await handler()\n } else {\n await cmdDefault(command)\n }\n}\n\nmain().catch((err) => {\n console.error(\"Fatal:\", err);\n process.exit(1);\n});\n","import * as fs from 'node:fs'\nimport * as path from 'node:path'\nimport * as os from 'node:os'\n\nconst DEFAULT_PORT_FILE = path.join(os.homedir(), '.openacp', 'api.port')\n\nexport function readApiPort(portFilePath: string = DEFAULT_PORT_FILE): number | null {\n try {\n const content = fs.readFileSync(portFilePath, 'utf-8').trim()\n const port = parseInt(content, 10)\n return isNaN(port) ? null : port\n } catch {\n return null\n }\n}\n\nexport function removeStalePortFile(portFilePath: string = DEFAULT_PORT_FILE): void {\n try {\n fs.unlinkSync(portFilePath)\n } catch {\n // ignore\n }\n}\n\nexport async function apiCall(\n port: number,\n urlPath: string,\n options?: RequestInit,\n): Promise<Response> {\n return fetch(`http://127.0.0.1:${port}${urlPath}`, options)\n}\n","import { installPlugin, uninstallPlugin, listPlugins } from '../core/plugin-manager.js'\nimport { readApiPort, removeStalePortFile, apiCall } from '../core/api-client.js'\nimport { getCurrentVersion, getLatestVersion, compareVersions, runUpdate, checkAndPromptUpdate } from './version.js'\n\nexport function printHelp(): void {\n console.log(`\nOpenACP - Self-hosted bridge for AI coding agents\n\nUsage:\n openacp Start (mode from config)\n openacp start Start as background daemon\n openacp stop Stop background daemon\n openacp status Show daemon status\n openacp logs Tail daemon log file\n openacp config Edit configuration\n openacp reset Delete all data and start fresh\n openacp update Update to latest version\n openacp install <package> Install a plugin adapter\n openacp uninstall <package> Uninstall a plugin adapter\n openacp plugins List installed plugins\n openacp --foreground Force foreground mode\n openacp --version Show version\n openacp --help Show this help\n adopt <agent> <id> Adopt an external agent session into OpenACP\n integrate <agent> Install/uninstall agent integration for session transfer\n\nAPI (requires running daemon):\n openacp api status Show active sessions\n openacp api session <id> Show session details\n openacp api new [agent] [workspace] Create a new session\n openacp api send <id> <prompt> Send prompt to session\n openacp api cancel <id> Cancel a session\n openacp api dangerous <id> [on|off] Toggle dangerous mode\n openacp api agents List available agents\n openacp api topics [--status s1,s2] List topics\n openacp api delete-topic <id> [--force] Delete a topic\n openacp api cleanup [--status s1,s2] Cleanup finished topics\n openacp api health Show system health\n openacp api adapters List registered adapters\n openacp api tunnel Show tunnel status\n openacp api config Show runtime config\n openacp api config set <key> <value> Update config value\n openacp api restart Restart daemon\n openacp api notify <message> Send notification to all channels\n openacp api version Show daemon version\n\nNote: \"openacp status\" shows daemon process health.\n \"openacp api status\" shows active agent sessions.\n \"openacp --version\" shows CLI version.\n \"openacp api version\" shows running daemon version.\n\nInstall:\n npm install -g @openacp/cli\n\nExamples:\n openacp\n openacp install @openacp/adapter-discord\n openacp uninstall @openacp/adapter-discord\n`)\n}\n\nexport async function cmdVersion(): Promise<void> {\n const { getCurrentVersion } = await import(\"./version.js\")\n console.log(`openacp v${getCurrentVersion()}`)\n}\n\nexport async function cmdInstall(args: string[]): Promise<void> {\n const pkg = args[1]\n if (!pkg) {\n console.error(\"Usage: openacp install <package>\")\n process.exit(1)\n }\n installPlugin(pkg)\n}\n\nexport async function cmdUninstall(args: string[]): Promise<void> {\n const pkg = args[1]\n if (!pkg) {\n console.error(\"Usage: openacp uninstall <package>\")\n process.exit(1)\n }\n uninstallPlugin(pkg)\n}\n\nexport async function cmdPlugins(): Promise<void> {\n const plugins = listPlugins()\n const entries = Object.entries(plugins)\n if (entries.length === 0) {\n console.log(\"No plugins installed.\")\n } else {\n console.log(\"Installed plugins:\")\n for (const [name, version] of entries) {\n console.log(` ${name}@${version}`)\n }\n }\n}\n\nexport async function cmdApi(args: string[]): Promise<void> {\n const subCmd = args[1]\n\n const port = readApiPort()\n if (port === null) {\n console.error('OpenACP is not running. Start with `openacp start`')\n process.exit(1)\n }\n\n try {\n if (subCmd === 'new') {\n const agent = args[2]\n const workspaceIdx = args.indexOf('--workspace')\n const workspace = workspaceIdx !== -1 ? args[workspaceIdx + 1] : args[3]\n const body: Record<string, string> = {}\n if (agent) body.agent = agent\n if (workspace) body.workspace = workspace\n\n const res = await apiCall(port, '/api/sessions', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log('Session created')\n console.log(` ID : ${data.sessionId}`)\n console.log(` Agent : ${data.agent}`)\n console.log(` Workspace : ${data.workspace}`)\n console.log(` Status : ${data.status}`)\n\n } else if (subCmd === 'cancel') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api cancel <session-id>')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}`, {\n method: 'DELETE',\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Session ${sessionId} cancelled`)\n\n } else if (subCmd === 'status') {\n const res = await apiCall(port, '/api/sessions')\n const data = await res.json() as { sessions: Array<{ id: string; agent: string; status: string; name: string | null }> }\n if (data.sessions.length === 0) {\n console.log('No active sessions.')\n } else {\n console.log(`Active sessions: ${data.sessions.length}\\n`)\n for (const s of data.sessions) {\n const name = s.name ? ` \"${s.name}\"` : ''\n console.log(` ${s.id} ${s.agent} ${s.status}${name}`)\n }\n }\n\n } else if (subCmd === 'agents') {\n const res = await apiCall(port, '/api/agents')\n const data = await res.json() as { agents: Array<{ name: string; command: string; args: string[] }>; default: string }\n console.log('Available agents:')\n for (const a of data.agents) {\n const isDefault = a.name === data.default ? ' (default)' : ''\n console.log(` ${a.name}${isDefault}`)\n }\n\n } else if (subCmd === 'topics') {\n const statusIdx = args.indexOf('--status')\n const statusParam = statusIdx !== -1 ? args[statusIdx + 1] : undefined\n const query = statusParam ? `?status=${encodeURIComponent(statusParam)}` : ''\n const res = await apiCall(port, `/api/topics${query}`)\n const data = await res.json() as { topics: Array<{ sessionId: string; topicId: number | null; name: string | null; status: string; agentName: string; lastActiveAt: string }> }\n if (data.topics.length === 0) {\n console.log('No topics found.')\n } else {\n console.log(`Topics: ${data.topics.length}\\n`)\n for (const t of data.topics) {\n const name = t.name ? ` \"${t.name}\"` : ''\n const topic = t.topicId ? `Topic #${t.topicId}` : 'headless'\n console.log(` ${t.sessionId} ${t.agentName} ${t.status}${name} ${topic}`)\n }\n }\n\n } else if (subCmd === 'delete-topic') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api delete-topic <session-id> [--force]')\n process.exit(1)\n }\n const force = args.includes('--force')\n const query = force ? '?force=true' : ''\n const res = await apiCall(port, `/api/topics/${encodeURIComponent(sessionId)}${query}`, { method: 'DELETE' })\n const data = await res.json() as Record<string, unknown>\n if (res.status === 409) {\n console.error(`Session \"${sessionId}\" is active (${(data.session as any)?.status}). Use --force to delete.`)\n process.exit(1)\n }\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n const topicLabel = data.topicId ? `Topic #${data.topicId}` : 'headless session'\n console.log(`${topicLabel} deleted (session ${sessionId})`)\n\n } else if (subCmd === 'cleanup') {\n const statusIdx = args.indexOf('--status')\n const statusParam = statusIdx !== -1 ? args[statusIdx + 1] : undefined\n const body: Record<string, unknown> = {}\n if (statusParam) body.statuses = statusParam.split(',')\n const res = await apiCall(port, '/api/topics/cleanup', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n })\n const data = await res.json() as { deleted: string[]; failed: Array<{ sessionId: string; error: string }> }\n if (data.deleted.length === 0 && data.failed.length === 0) {\n console.log('Nothing to clean up.')\n } else {\n console.log(`Cleaned up ${data.deleted.length} topics${data.deleted.length ? ': ' + data.deleted.join(', ') : ''} (${data.failed.length} failed)`)\n for (const f of data.failed) {\n console.error(` Failed: ${f.sessionId} — ${f.error}`)\n }\n }\n\n } else if (subCmd === 'send') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api send <session-id> <prompt>')\n process.exit(1)\n }\n const prompt = args.slice(3).join(' ')\n if (!prompt) {\n console.error('Usage: openacp api send <session-id> <prompt>')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}/prompt`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ prompt }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Prompt sent to session ${sessionId} (queue depth: ${data.queueDepth})`)\n\n } else if (subCmd === 'session') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api session <session-id>')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}`)\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Session details:`)\n console.log(` ID : ${data.id}`)\n console.log(` Agent : ${data.agent}`)\n console.log(` Status : ${data.status}`)\n console.log(` Name : ${data.name ?? '(none)'}`)\n console.log(` Workspace : ${data.workspace}`)\n console.log(` Created : ${data.createdAt}`)\n console.log(` Dangerous : ${data.dangerous}`)\n console.log(` Queue depth : ${data.queueDepth}`)\n console.log(` Prompt active : ${data.promptActive}`)\n console.log(` Channel : ${data.channelId ?? '(none)'}`)\n console.log(` Thread : ${data.threadId ?? '(none)'}`)\n\n } else if (subCmd === 'dangerous') {\n const sessionId = args[2]\n if (!sessionId) {\n console.error('Usage: openacp api dangerous <session-id> [on|off]')\n process.exit(1)\n }\n const toggle = args[3]\n if (!toggle || (toggle !== 'on' && toggle !== 'off')) {\n console.error('Usage: openacp api dangerous <session-id> [on|off]')\n process.exit(1)\n }\n const res = await apiCall(port, `/api/sessions/${encodeURIComponent(sessionId)}/dangerous`, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ enabled: toggle === 'on' }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n const state = toggle === 'on' ? 'enabled' : 'disabled'\n console.log(`Dangerous mode ${state} for session ${sessionId}`)\n\n } else if (subCmd === 'health') {\n const res = await apiCall(port, '/api/health')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n const uptimeSeconds = typeof data.uptimeSeconds === 'number' ? data.uptimeSeconds : 0\n const hours = Math.floor(uptimeSeconds / 3600)\n const minutes = Math.floor((uptimeSeconds % 3600) / 60)\n const memoryBytes = typeof data.memoryUsage === 'number' ? data.memoryUsage : 0\n const memoryMB = (memoryBytes / 1024 / 1024).toFixed(1)\n const sessions = data.sessions as Record<string, unknown> ?? {}\n console.log(`Status : ${data.status}`)\n console.log(`Uptime : ${hours}h ${minutes}m`)\n console.log(`Version : ${data.version}`)\n console.log(`Memory : ${memoryMB} MB`)\n console.log(`Sessions : ${sessions.active ?? 0} active / ${sessions.total ?? 0} total`)\n console.log(`Adapters : ${data.adapters}`)\n console.log(`Tunnel : ${data.tunnel}`)\n\n } else if (subCmd === 'restart') {\n const res = await apiCall(port, '/api/restart', { method: 'POST' })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log('Restart signal sent. OpenACP is restarting...')\n\n } else if (subCmd === 'config') {\n const subSubCmd = args[2]\n if (!subSubCmd) {\n const res = await apiCall(port, '/api/config')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(JSON.stringify(data.config, null, 2))\n } else if (subSubCmd === 'set') {\n const configPath = args[3]\n const configValue = args[4]\n if (!configPath || configValue === undefined) {\n console.error('Usage: openacp api config set <path> <value>')\n process.exit(1)\n }\n let value: unknown = configValue\n try {\n value = JSON.parse(configValue)\n } catch {\n // keep as string\n }\n const res = await apiCall(port, '/api/config', {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ path: configPath, value }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Config updated: ${configPath} = ${JSON.stringify(value)}`)\n if (data.needsRestart) {\n console.log('Note: restart required for this change to take effect.')\n }\n } else {\n console.error(`Unknown config subcommand: ${subSubCmd}`)\n console.log(' openacp api config Show runtime config')\n console.log(' openacp api config set <key> <value> Update config value')\n process.exit(1)\n }\n\n } else if (subCmd === 'adapters') {\n const res = await apiCall(port, '/api/adapters')\n const data = await res.json() as { adapters: Array<{ name: string; type: string }> }\n if (!res.ok) {\n console.error(`Error: ${(data as any).error}`)\n process.exit(1)\n }\n console.log('Registered adapters:')\n for (const a of data.adapters) {\n console.log(` ${a.name} (${a.type})`)\n }\n\n } else if (subCmd === 'tunnel') {\n const res = await apiCall(port, '/api/tunnel')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n if (data.enabled) {\n console.log(`Tunnel provider : ${data.provider}`)\n console.log(`Tunnel URL : ${data.url}`)\n } else {\n console.log('Tunnel: not enabled')\n }\n\n } else if (subCmd === 'notify') {\n const message = args.slice(2).join(' ')\n if (!message) {\n console.error('Usage: openacp api notify <message>')\n process.exit(1)\n }\n const res = await apiCall(port, '/api/notify', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ message }),\n })\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log('Notification sent to all channels.')\n\n } else if (subCmd === 'version') {\n const res = await apiCall(port, '/api/version')\n const data = await res.json() as Record<string, unknown>\n if (!res.ok) {\n console.error(`Error: ${data.error}`)\n process.exit(1)\n }\n console.log(`Daemon version: ${data.version}`)\n\n } else {\n console.error(`Unknown api command: ${subCmd || '(none)'}\\n`)\n console.log('Usage:')\n console.log(' openacp api status Show active sessions')\n console.log(' openacp api session <id> Show session details')\n console.log(' openacp api new [agent] [workspace] Create a new session')\n console.log(' openacp api send <id> <prompt> Send prompt to session')\n console.log(' openacp api cancel <id> Cancel a session')\n console.log(' openacp api dangerous <id> [on|off] Toggle dangerous mode')\n console.log(' openacp api agents List available agents')\n console.log(' openacp api topics [--status s1,s2] List topics')\n console.log(' openacp api delete-topic <id> [--force] Delete a topic')\n console.log(' openacp api cleanup [--status s1,s2] Cleanup finished topics')\n console.log(' openacp api health Show system health')\n console.log(' openacp api adapters List registered adapters')\n console.log(' openacp api tunnel Show tunnel status')\n console.log(' openacp api config Show runtime config')\n console.log(' openacp api config set <key> <value> Update config value')\n console.log(' openacp api restart Restart daemon')\n console.log(' openacp api notify <message> Send notification to all channels')\n console.log(' openacp api version Show daemon version')\n process.exit(1)\n }\n } catch (err) {\n if (err instanceof TypeError && (err as any).cause?.code === 'ECONNREFUSED') {\n console.error('OpenACP is not running (stale port file)')\n removeStalePortFile()\n process.exit(1)\n }\n throw err\n }\n}\n\nexport async function cmdStart(): Promise<void> {\n await checkAndPromptUpdate()\n const { startDaemon, getPidPath } = await import('../core/daemon.js')\n const { ConfigManager } = await import('../core/config.js')\n const cm = new ConfigManager()\n if (await cm.exists()) {\n await cm.load()\n const config = cm.get()\n const result = startDaemon(getPidPath(), config.logging.logDir)\n if ('error' in result) {\n console.error(result.error)\n process.exit(1)\n }\n console.log(`OpenACP daemon started (PID ${result.pid})`)\n } else {\n console.error('No config found. Run \"openacp\" first to set up.')\n process.exit(1)\n }\n}\n\nexport async function cmdStop(): Promise<void> {\n const { stopDaemon } = await import('../core/daemon.js')\n const result = stopDaemon()\n if (result.stopped) {\n console.log(`OpenACP daemon stopped (was PID ${result.pid})`)\n } else {\n console.error(result.error)\n process.exit(1)\n }\n}\n\nexport async function cmdStatus(): Promise<void> {\n const { getStatus } = await import('../core/daemon.js')\n const status = getStatus()\n if (status.running) {\n console.log(`OpenACP is running (PID ${status.pid})`)\n } else {\n console.log('OpenACP is not running')\n }\n}\n\nexport async function cmdLogs(): Promise<void> {\n const { spawn } = await import('node:child_process')\n const { ConfigManager, expandHome } = await import('../core/config.js')\n const pathMod = await import('node:path')\n const cm = new ConfigManager()\n let logDir = '~/.openacp/logs'\n if (await cm.exists()) {\n await cm.load()\n logDir = cm.get().logging.logDir\n }\n const logFile = pathMod.join(expandHome(logDir), 'openacp.log')\n const tail = spawn('tail', ['-f', '-n', '50', logFile], { stdio: 'inherit' })\n tail.on('error', (err: Error) => {\n console.error(`Cannot tail log file: ${err.message}`)\n process.exit(1)\n })\n}\n\nexport async function cmdConfig(): Promise<void> {\n const { runConfigEditor } = await import('../core/config-editor.js')\n const { ConfigManager } = await import('../core/config.js')\n const cm = new ConfigManager()\n if (!(await cm.exists())) {\n console.error('No config found. Run \"openacp\" first to set up.')\n process.exit(1)\n }\n await runConfigEditor(cm)\n}\n\nexport async function cmdReset(): Promise<void> {\n const { getStatus } = await import('../core/daemon.js')\n const status = getStatus()\n if (status.running) {\n console.error('OpenACP is running. Stop it first: openacp stop')\n process.exit(1)\n }\n\n const { confirm } = await import('@inquirer/prompts')\n const yes = await confirm({\n message: 'This will delete all OpenACP data (~/.openacp). You will need to set up again. Continue?',\n default: false,\n })\n if (!yes) {\n console.log('Aborted.')\n return\n }\n\n const { uninstallAutoStart } = await import('../core/autostart.js')\n uninstallAutoStart()\n\n const fs = await import('node:fs')\n const os = await import('node:os')\n const path = await import('node:path')\n const openacpDir = path.join(os.homedir(), '.openacp')\n fs.rmSync(openacpDir, { recursive: true, force: true })\n\n console.log('Reset complete. Run `openacp` to set up again.')\n}\n\nexport async function cmdUpdate(): Promise<void> {\n const current = getCurrentVersion()\n const latest = await getLatestVersion()\n if (!latest) {\n console.error('Could not check for updates. Check your internet connection.')\n process.exit(1)\n }\n if (compareVersions(current, latest) >= 0) {\n console.log(`Already up to date (v${current})`)\n return\n }\n console.log(`Update available: v${current} → v${latest}`)\n const ok = await runUpdate()\n if (ok) {\n console.log(`\\x1b[32m✓ Updated to v${latest}\\x1b[0m`)\n } else {\n console.error('Update failed. Try manually: npm install -g @openacp/cli@latest')\n process.exit(1)\n }\n}\n\nexport async function cmdAdopt(args: string[]): Promise<void> {\n const agent = args[1];\n const sessionId = args[2];\n\n if (!agent || !sessionId) {\n console.log(\"Usage: openacp adopt <agent> <session_id> [--cwd <path>]\");\n console.log(\"Example: openacp adopt claude abc123-def456 --cwd /path/to/project\");\n process.exit(1);\n }\n\n const cwdIdx = args.indexOf(\"--cwd\");\n const cwd = cwdIdx !== -1 && args[cwdIdx + 1] ? args[cwdIdx + 1] : process.cwd();\n\n const port = readApiPort();\n if (!port) {\n console.log(\"OpenACP is not running. Start it with: openacp start\");\n process.exit(1);\n }\n\n try {\n const res = await fetch(`http://127.0.0.1:${port}/api/sessions/adopt`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ agent, agentSessionId: sessionId, cwd }),\n });\n const data = await res.json() as Record<string, unknown>;\n\n if (data.ok) {\n if (data.status === \"existing\") {\n console.log(`Session already on Telegram. Topic pinged.`);\n } else {\n console.log(`Session transferred to Telegram.`);\n }\n console.log(` Session ID: ${data.sessionId}`);\n console.log(` Thread ID: ${data.threadId}`);\n } else {\n console.log(`Error: ${(data.message as string) || (data.error as string)}`);\n process.exit(1);\n }\n } catch (err) {\n console.log(`Failed to connect to OpenACP: ${err instanceof Error ? err.message : err}`);\n process.exit(1);\n }\n}\n\nexport async function cmdIntegrate(args: string[]): Promise<void> {\n const { getIntegration, listIntegrations } = await import(\"./integrate.js\");\n\n const agent = args[1];\n const uninstall = args.includes(\"--uninstall\");\n\n if (!agent) {\n console.log(\"Usage: openacp integrate <agent> [--uninstall]\");\n console.log(`Available integrations: ${listIntegrations().join(\", \")}`);\n process.exit(1);\n }\n\n const integration = getIntegration(agent);\n if (!integration) {\n console.log(`No integration available for '${agent}'.`);\n console.log(`Available: ${listIntegrations().join(\", \")}`);\n process.exit(1);\n }\n\n for (const item of integration.items) {\n if (uninstall) {\n console.log(`Removing ${agent}/${item.id}...`);\n const result = await item.uninstall();\n for (const log of result.logs) console.log(` ${log}`);\n if (result.success) {\n console.log(` ${item.name} removed.`);\n } else {\n console.log(` Failed to remove ${item.name}.`);\n process.exit(1);\n }\n } else {\n console.log(`Installing ${agent}/${item.id}...`);\n const result = await item.install();\n for (const log of result.logs) console.log(` ${log}`);\n if (result.success) {\n console.log(` ${item.name} installed.`);\n } else {\n console.log(` Failed to install ${item.name}.`);\n process.exit(1);\n }\n }\n }\n}\n\nexport async function cmdDefault(command: string | undefined): Promise<void> {\n const forceForeground = command === '--foreground'\n\n // Reject unknown commands\n if (command && !command.startsWith('-')) {\n console.error(`Unknown command: ${command}`)\n printHelp()\n process.exit(1)\n }\n\n await checkAndPromptUpdate()\n\n const { ConfigManager } = await import('../core/config.js')\n const cm = new ConfigManager()\n\n // If no config, run setup first\n if (!(await cm.exists())) {\n const { runSetup } = await import('../core/setup.js')\n const shouldStart = await runSetup(cm)\n if (!shouldStart) process.exit(0)\n }\n\n await cm.load()\n const config = cm.get()\n\n if (!forceForeground && config.runMode === 'daemon') {\n const { startDaemon, getPidPath } = await import('../core/daemon.js')\n const result = startDaemon(getPidPath(), config.logging.logDir)\n if ('error' in result) {\n console.error(result.error)\n process.exit(1)\n }\n console.log(`OpenACP daemon started (PID ${result.pid})`)\n return\n }\n\n const { markRunning } = await import('../core/daemon.js')\n markRunning()\n const { startServer } = await import('../main.js')\n await startServer()\n}\n"],"mappings":"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","names":["getCurrentVersion","args","fs","os","path","command"]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
ConfigSchema,
|
|
4
4
|
PLUGINS_DIR,
|
|
5
5
|
expandHome
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZRFBLD3W.js";
|
|
7
7
|
import "./chunk-LYKCQTH5.js";
|
|
8
8
|
export {
|
|
9
9
|
ConfigManager,
|
|
@@ -11,4 +11,4 @@ export {
|
|
|
11
11
|
PLUGINS_DIR,
|
|
12
12
|
expandHome
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=config-
|
|
14
|
+
//# sourceMappingURL=config-H2DSEHNW.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runConfigEditor
|
|
3
|
+
} from "./chunk-6MJLVZXV.js";
|
|
4
|
+
import "./chunk-UAUTLC4E.js";
|
|
5
|
+
import "./chunk-ZRFBLD3W.js";
|
|
6
|
+
import "./chunk-MRKYJ422.js";
|
|
7
|
+
import "./chunk-LYKCQTH5.js";
|
|
8
|
+
export {
|
|
9
|
+
runConfigEditor
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=config-editor-SKS4LJLT.js.map
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
startDaemon,
|
|
11
11
|
stopDaemon,
|
|
12
12
|
writePidFile
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-C6YIUTGR.js";
|
|
14
|
+
import "./chunk-ZRFBLD3W.js";
|
|
15
15
|
import "./chunk-LYKCQTH5.js";
|
|
16
16
|
export {
|
|
17
17
|
clearRunning,
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
stopDaemon,
|
|
27
27
|
writePidFile
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=daemon-
|
|
29
|
+
//# sourceMappingURL=daemon-VF6HJQXD.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -297,6 +297,16 @@ declare const ConfigSchema: z.ZodObject<{
|
|
|
297
297
|
token?: string | undefined;
|
|
298
298
|
} | undefined;
|
|
299
299
|
}>>;
|
|
300
|
+
integrations: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
301
|
+
installed: z.ZodBoolean;
|
|
302
|
+
installedAt: z.ZodOptional<z.ZodString>;
|
|
303
|
+
}, "strip", z.ZodTypeAny, {
|
|
304
|
+
installed: boolean;
|
|
305
|
+
installedAt?: string | undefined;
|
|
306
|
+
}, {
|
|
307
|
+
installed: boolean;
|
|
308
|
+
installedAt?: string | undefined;
|
|
309
|
+
}>>>;
|
|
300
310
|
}, "strip", z.ZodTypeAny, {
|
|
301
311
|
api: {
|
|
302
312
|
port: number;
|
|
@@ -344,6 +354,10 @@ declare const ConfigSchema: z.ZodObject<{
|
|
|
344
354
|
sessionStore: {
|
|
345
355
|
ttlDays: number;
|
|
346
356
|
};
|
|
357
|
+
integrations: Record<string, {
|
|
358
|
+
installed: boolean;
|
|
359
|
+
installedAt?: string | undefined;
|
|
360
|
+
}>;
|
|
347
361
|
}, {
|
|
348
362
|
agents: Record<string, {
|
|
349
363
|
command: string;
|
|
@@ -391,6 +405,10 @@ declare const ConfigSchema: z.ZodObject<{
|
|
|
391
405
|
sessionStore?: {
|
|
392
406
|
ttlDays?: number | undefined;
|
|
393
407
|
} | undefined;
|
|
408
|
+
integrations?: Record<string, {
|
|
409
|
+
installed: boolean;
|
|
410
|
+
installedAt?: string | undefined;
|
|
411
|
+
}> | undefined;
|
|
394
412
|
}>;
|
|
395
413
|
type Config = z.infer<typeof ConfigSchema>;
|
|
396
414
|
declare function expandHome(p: string): string;
|
package/dist/index.js
CHANGED
|
@@ -16,29 +16,29 @@ import {
|
|
|
16
16
|
TypedEmitter,
|
|
17
17
|
nodeToWebReadable,
|
|
18
18
|
nodeToWebWritable
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-BBPWAWE3.js";
|
|
20
20
|
import {
|
|
21
21
|
runConfigEditor
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-6MJLVZXV.js";
|
|
23
|
+
import "./chunk-UAUTLC4E.js";
|
|
24
24
|
import "./chunk-VA2M52CM.js";
|
|
25
25
|
import {
|
|
26
26
|
installPlugin,
|
|
27
27
|
listPlugins,
|
|
28
28
|
loadAdapterFactory,
|
|
29
29
|
uninstallPlugin
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-HZD3CGPK.js";
|
|
31
31
|
import {
|
|
32
32
|
getPidPath,
|
|
33
33
|
getStatus,
|
|
34
34
|
startDaemon,
|
|
35
35
|
stopDaemon
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-C6YIUTGR.js";
|
|
37
37
|
import {
|
|
38
38
|
ConfigManager,
|
|
39
39
|
PLUGINS_DIR,
|
|
40
40
|
expandHome
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-ZRFBLD3W.js";
|
|
42
42
|
import {
|
|
43
43
|
installAutoStart,
|
|
44
44
|
isAutoStartInstalled,
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// src/cli/integrate.ts
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, chmodSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { homedir } from "os";
|
|
5
|
+
var CLAUDE_DIR = join(homedir(), ".claude");
|
|
6
|
+
var HOOKS_DIR = join(CLAUDE_DIR, "hooks");
|
|
7
|
+
var COMMANDS_DIR = join(CLAUDE_DIR, "commands");
|
|
8
|
+
var SETTINGS_FILE = join(CLAUDE_DIR, "settings.json");
|
|
9
|
+
var INJECT_HOOK_FILE = join(HOOKS_DIR, "openacp-inject-session.sh");
|
|
10
|
+
var HANDOFF_SCRIPT_FILE = join(HOOKS_DIR, "openacp-handoff.sh");
|
|
11
|
+
var HANDOFF_COMMAND_FILE = join(COMMANDS_DIR, "openacp:handoff.md");
|
|
12
|
+
var INJECT_HOOK_CONTENT = `#!/bin/bash
|
|
13
|
+
INPUT=$(cat)
|
|
14
|
+
SESSION_ID=$(echo "$INPUT" | jq -r '.session_id')
|
|
15
|
+
CWD=$(echo "$INPUT" | jq -r '.cwd')
|
|
16
|
+
|
|
17
|
+
echo "CLAUDE_SESSION_ID: $SESSION_ID"
|
|
18
|
+
echo "CLAUDE_WORKING_DIR: $CWD"
|
|
19
|
+
|
|
20
|
+
exit 0
|
|
21
|
+
`;
|
|
22
|
+
var HANDOFF_SCRIPT_CONTENT = `#!/bin/bash
|
|
23
|
+
SESSION_ID=$1
|
|
24
|
+
CWD=$2
|
|
25
|
+
|
|
26
|
+
if [ -z "$SESSION_ID" ]; then
|
|
27
|
+
echo "Usage: openacp-handoff.sh <session_id> [cwd]"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
openacp adopt claude "$SESSION_ID" \${CWD:+--cwd "$CWD"}
|
|
32
|
+
`;
|
|
33
|
+
var HANDOFF_COMMAND_CONTENT = `---
|
|
34
|
+
description: Transfer current session to OpenACP (Telegram)
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
Look at the context injected at the start of this message to find
|
|
38
|
+
CLAUDE_SESSION_ID and CLAUDE_WORKING_DIR, then run:
|
|
39
|
+
|
|
40
|
+
bash ~/.claude/hooks/openacp-handoff.sh <CLAUDE_SESSION_ID> <CLAUDE_WORKING_DIR>
|
|
41
|
+
`;
|
|
42
|
+
var HOOK_MARKER = "openacp-inject-session.sh";
|
|
43
|
+
function mergeClaudeSettings() {
|
|
44
|
+
let settings = {};
|
|
45
|
+
if (existsSync(SETTINGS_FILE)) {
|
|
46
|
+
const raw = readFileSync(SETTINGS_FILE, "utf-8");
|
|
47
|
+
writeFileSync(`${SETTINGS_FILE}.bak`, raw);
|
|
48
|
+
settings = JSON.parse(raw);
|
|
49
|
+
}
|
|
50
|
+
const hooks = settings.hooks ?? {};
|
|
51
|
+
settings.hooks = hooks;
|
|
52
|
+
const userPromptSubmit = hooks.UserPromptSubmit ?? [];
|
|
53
|
+
hooks.UserPromptSubmit = userPromptSubmit;
|
|
54
|
+
const alreadyInstalled = userPromptSubmit.some(
|
|
55
|
+
(group) => group.hooks?.some((h) => h.command?.includes(HOOK_MARKER))
|
|
56
|
+
);
|
|
57
|
+
if (!alreadyInstalled) {
|
|
58
|
+
userPromptSubmit.push({
|
|
59
|
+
hooks: [
|
|
60
|
+
{
|
|
61
|
+
type: "command",
|
|
62
|
+
command: INJECT_HOOK_FILE
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2) + "\n");
|
|
68
|
+
}
|
|
69
|
+
function removeClaudeSettings() {
|
|
70
|
+
if (!existsSync(SETTINGS_FILE)) return;
|
|
71
|
+
const raw = readFileSync(SETTINGS_FILE, "utf-8");
|
|
72
|
+
const settings = JSON.parse(raw);
|
|
73
|
+
const hooks = settings.hooks;
|
|
74
|
+
if (!hooks?.UserPromptSubmit) return;
|
|
75
|
+
hooks.UserPromptSubmit = hooks.UserPromptSubmit.filter(
|
|
76
|
+
(group) => !group.hooks?.some((h) => h.command?.includes("openacp-"))
|
|
77
|
+
);
|
|
78
|
+
if (hooks.UserPromptSubmit.length === 0) {
|
|
79
|
+
delete hooks.UserPromptSubmit;
|
|
80
|
+
}
|
|
81
|
+
writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2) + "\n");
|
|
82
|
+
}
|
|
83
|
+
var claudeHandoffItem = {
|
|
84
|
+
id: "handoff",
|
|
85
|
+
name: "Handoff",
|
|
86
|
+
description: "Transfer sessions between terminal and Telegram",
|
|
87
|
+
isInstalled() {
|
|
88
|
+
return existsSync(INJECT_HOOK_FILE) && existsSync(HANDOFF_SCRIPT_FILE) && existsSync(HANDOFF_COMMAND_FILE);
|
|
89
|
+
},
|
|
90
|
+
async install() {
|
|
91
|
+
const logs = [];
|
|
92
|
+
try {
|
|
93
|
+
mkdirSync(HOOKS_DIR, { recursive: true });
|
|
94
|
+
mkdirSync(COMMANDS_DIR, { recursive: true });
|
|
95
|
+
writeFileSync(INJECT_HOOK_FILE, INJECT_HOOK_CONTENT);
|
|
96
|
+
chmodSync(INJECT_HOOK_FILE, 493);
|
|
97
|
+
logs.push(`Created ${INJECT_HOOK_FILE}`);
|
|
98
|
+
writeFileSync(HANDOFF_SCRIPT_FILE, HANDOFF_SCRIPT_CONTENT);
|
|
99
|
+
chmodSync(HANDOFF_SCRIPT_FILE, 493);
|
|
100
|
+
logs.push(`Created ${HANDOFF_SCRIPT_FILE}`);
|
|
101
|
+
writeFileSync(HANDOFF_COMMAND_FILE, HANDOFF_COMMAND_CONTENT);
|
|
102
|
+
logs.push(`Created ${HANDOFF_COMMAND_FILE}`);
|
|
103
|
+
mergeClaudeSettings();
|
|
104
|
+
logs.push(`Updated ${SETTINGS_FILE}`);
|
|
105
|
+
return { success: true, logs };
|
|
106
|
+
} catch (err) {
|
|
107
|
+
logs.push(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
108
|
+
return { success: false, logs };
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
async uninstall() {
|
|
112
|
+
const logs = [];
|
|
113
|
+
try {
|
|
114
|
+
for (const file of [INJECT_HOOK_FILE, HANDOFF_SCRIPT_FILE, HANDOFF_COMMAND_FILE]) {
|
|
115
|
+
if (existsSync(file)) {
|
|
116
|
+
unlinkSync(file);
|
|
117
|
+
logs.push(`Removed ${file}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
removeClaudeSettings();
|
|
121
|
+
logs.push(`Updated ${SETTINGS_FILE}`);
|
|
122
|
+
return { success: true, logs };
|
|
123
|
+
} catch (err) {
|
|
124
|
+
logs.push(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
125
|
+
return { success: false, logs };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
var claudeIntegration = {
|
|
130
|
+
items: [claudeHandoffItem]
|
|
131
|
+
};
|
|
132
|
+
var integrations = {
|
|
133
|
+
claude: claudeIntegration
|
|
134
|
+
};
|
|
135
|
+
function getIntegration(agentName) {
|
|
136
|
+
return integrations[agentName];
|
|
137
|
+
}
|
|
138
|
+
function listIntegrations() {
|
|
139
|
+
return Object.keys(integrations);
|
|
140
|
+
}
|
|
141
|
+
export {
|
|
142
|
+
getIntegration,
|
|
143
|
+
listIntegrations
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=integrate-WUPLRJD3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/integrate.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, chmodSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nexport interface IntegrationResult {\n success: boolean;\n logs: string[];\n}\n\nexport interface IntegrationItem {\n id: string;\n name: string;\n description: string;\n isInstalled(): boolean;\n install(): Promise<IntegrationResult>;\n uninstall(): Promise<IntegrationResult>;\n}\n\nexport interface AgentIntegration {\n items: IntegrationItem[];\n}\n\n// --- Claude integration ---\n\nconst CLAUDE_DIR = join(homedir(), \".claude\");\nconst HOOKS_DIR = join(CLAUDE_DIR, \"hooks\");\nconst COMMANDS_DIR = join(CLAUDE_DIR, \"commands\");\nconst SETTINGS_FILE = join(CLAUDE_DIR, \"settings.json\");\n\nconst INJECT_HOOK_FILE = join(HOOKS_DIR, \"openacp-inject-session.sh\");\nconst HANDOFF_SCRIPT_FILE = join(HOOKS_DIR, \"openacp-handoff.sh\");\nconst HANDOFF_COMMAND_FILE = join(COMMANDS_DIR, \"openacp:handoff.md\");\n\nconst INJECT_HOOK_CONTENT = `#!/bin/bash\nINPUT=$(cat)\nSESSION_ID=$(echo \"$INPUT\" | jq -r '.session_id')\nCWD=$(echo \"$INPUT\" | jq -r '.cwd')\n\necho \"CLAUDE_SESSION_ID: $SESSION_ID\"\necho \"CLAUDE_WORKING_DIR: $CWD\"\n\nexit 0\n`;\n\nconst HANDOFF_SCRIPT_CONTENT = `#!/bin/bash\nSESSION_ID=$1\nCWD=$2\n\nif [ -z \"$SESSION_ID\" ]; then\n echo \"Usage: openacp-handoff.sh <session_id> [cwd]\"\n exit 1\nfi\n\nopenacp adopt claude \"$SESSION_ID\" \\${CWD:+--cwd \"$CWD\"}\n`;\n\nconst HANDOFF_COMMAND_CONTENT = `---\ndescription: Transfer current session to OpenACP (Telegram)\n---\n\nLook at the context injected at the start of this message to find\nCLAUDE_SESSION_ID and CLAUDE_WORKING_DIR, then run:\n\nbash ~/.claude/hooks/openacp-handoff.sh <CLAUDE_SESSION_ID> <CLAUDE_WORKING_DIR>\n`;\n\nconst HOOK_MARKER = \"openacp-inject-session.sh\";\n\nfunction mergeClaudeSettings(): void {\n let settings: Record<string, unknown> = {};\n\n if (existsSync(SETTINGS_FILE)) {\n const raw = readFileSync(SETTINGS_FILE, \"utf-8\");\n writeFileSync(`${SETTINGS_FILE}.bak`, raw);\n settings = JSON.parse(raw);\n }\n\n const hooks = (settings.hooks ?? {}) as Record<string, unknown[]>;\n settings.hooks = hooks;\n\n const userPromptSubmit = (hooks.UserPromptSubmit ?? []) as Array<{ hooks?: Array<{ type?: string; command?: string }> }>;\n hooks.UserPromptSubmit = userPromptSubmit;\n\n const alreadyInstalled = userPromptSubmit.some((group) =>\n group.hooks?.some((h) => h.command?.includes(HOOK_MARKER)),\n );\n\n if (!alreadyInstalled) {\n userPromptSubmit.push({\n hooks: [\n {\n type: \"command\",\n command: INJECT_HOOK_FILE,\n },\n ],\n });\n }\n\n writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2) + \"\\n\");\n}\n\nfunction removeClaudeSettings(): void {\n if (!existsSync(SETTINGS_FILE)) return;\n\n const raw = readFileSync(SETTINGS_FILE, \"utf-8\");\n const settings = JSON.parse(raw);\n\n const hooks = settings.hooks as Record<string, unknown[]> | undefined;\n if (!hooks?.UserPromptSubmit) return;\n\n hooks.UserPromptSubmit = (hooks.UserPromptSubmit as Array<{ hooks?: Array<{ command?: string }> }>).filter(\n (group) => !group.hooks?.some((h) => h.command?.includes(\"openacp-\")),\n );\n\n if (hooks.UserPromptSubmit.length === 0) {\n delete hooks.UserPromptSubmit;\n }\n\n writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2) + \"\\n\");\n}\n\nconst claudeHandoffItem: IntegrationItem = {\n id: \"handoff\",\n name: \"Handoff\",\n description: \"Transfer sessions between terminal and Telegram\",\n\n isInstalled(): boolean {\n return (\n existsSync(INJECT_HOOK_FILE) &&\n existsSync(HANDOFF_SCRIPT_FILE) &&\n existsSync(HANDOFF_COMMAND_FILE)\n );\n },\n\n async install(): Promise<IntegrationResult> {\n const logs: string[] = [];\n try {\n mkdirSync(HOOKS_DIR, { recursive: true });\n mkdirSync(COMMANDS_DIR, { recursive: true });\n\n writeFileSync(INJECT_HOOK_FILE, INJECT_HOOK_CONTENT);\n chmodSync(INJECT_HOOK_FILE, 0o755);\n logs.push(`Created ${INJECT_HOOK_FILE}`);\n\n writeFileSync(HANDOFF_SCRIPT_FILE, HANDOFF_SCRIPT_CONTENT);\n chmodSync(HANDOFF_SCRIPT_FILE, 0o755);\n logs.push(`Created ${HANDOFF_SCRIPT_FILE}`);\n\n writeFileSync(HANDOFF_COMMAND_FILE, HANDOFF_COMMAND_CONTENT);\n logs.push(`Created ${HANDOFF_COMMAND_FILE}`);\n\n mergeClaudeSettings();\n logs.push(`Updated ${SETTINGS_FILE}`);\n\n return { success: true, logs };\n } catch (err) {\n logs.push(`Error: ${err instanceof Error ? err.message : String(err)}`);\n return { success: false, logs };\n }\n },\n\n async uninstall(): Promise<IntegrationResult> {\n const logs: string[] = [];\n try {\n for (const file of [INJECT_HOOK_FILE, HANDOFF_SCRIPT_FILE, HANDOFF_COMMAND_FILE]) {\n if (existsSync(file)) {\n unlinkSync(file);\n logs.push(`Removed ${file}`);\n }\n }\n\n removeClaudeSettings();\n logs.push(`Updated ${SETTINGS_FILE}`);\n\n return { success: true, logs };\n } catch (err) {\n logs.push(`Error: ${err instanceof Error ? err.message : String(err)}`);\n return { success: false, logs };\n }\n },\n};\n\nconst claudeIntegration: AgentIntegration = {\n items: [claudeHandoffItem],\n};\n\n// --- Registry ---\n\nconst integrations: Record<string, AgentIntegration> = {\n claude: claudeIntegration,\n};\n\nexport function getIntegration(agentName: string): AgentIntegration | undefined {\n return integrations[agentName];\n}\n\nexport function listIntegrations(): string[] {\n return Object.keys(integrations);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -4,17 +4,17 @@ import {
|
|
|
4
4
|
OpenACPCore,
|
|
5
5
|
TelegramAdapter,
|
|
6
6
|
TopicManager
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-BBPWAWE3.js";
|
|
8
|
+
import "./chunk-6MJLVZXV.js";
|
|
9
|
+
import "./chunk-UAUTLC4E.js";
|
|
10
10
|
import "./chunk-VA2M52CM.js";
|
|
11
11
|
import {
|
|
12
12
|
loadAdapterFactory
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-HZD3CGPK.js";
|
|
14
|
+
import "./chunk-C6YIUTGR.js";
|
|
15
15
|
import {
|
|
16
16
|
ConfigManager
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-ZRFBLD3W.js";
|
|
18
18
|
import "./chunk-MRKYJ422.js";
|
|
19
19
|
import {
|
|
20
20
|
cleanupOldSessionLogs,
|
|
@@ -28,7 +28,7 @@ var RESTART_EXIT_CODE = 75;
|
|
|
28
28
|
var shuttingDown = false;
|
|
29
29
|
async function startServer() {
|
|
30
30
|
if (process.argv.includes("--daemon-child")) {
|
|
31
|
-
const { writePidFile, readPidFile, getPidPath, shouldAutoStart } = await import("./daemon-
|
|
31
|
+
const { writePidFile, readPidFile, getPidPath, shouldAutoStart } = await import("./daemon-VF6HJQXD.js");
|
|
32
32
|
if (!shouldAutoStart()) {
|
|
33
33
|
process.exit(0);
|
|
34
34
|
}
|
|
@@ -47,7 +47,7 @@ async function startServer() {
|
|
|
47
47
|
const configManager = new ConfigManager();
|
|
48
48
|
const configExists = await configManager.exists();
|
|
49
49
|
if (!configExists) {
|
|
50
|
-
const { runSetup } = await import("./setup-
|
|
50
|
+
const { runSetup } = await import("./setup-FCVL75K6.js");
|
|
51
51
|
const shouldStart = await runSetup(configManager);
|
|
52
52
|
if (!shouldStart) process.exit(0);
|
|
53
53
|
}
|
|
@@ -105,13 +105,13 @@ async function startServer() {
|
|
|
105
105
|
}
|
|
106
106
|
const isDaemon = process.argv.includes("--daemon-child");
|
|
107
107
|
if (isDaemon) {
|
|
108
|
-
const { removePidFile, getPidPath } = await import("./daemon-
|
|
108
|
+
const { removePidFile, getPidPath } = await import("./daemon-VF6HJQXD.js");
|
|
109
109
|
removePidFile(getPidPath());
|
|
110
110
|
}
|
|
111
111
|
if (exitCode === RESTART_EXIT_CODE) {
|
|
112
112
|
if (isDaemon) {
|
|
113
113
|
const { spawn: spawnChild } = await import("child_process");
|
|
114
|
-
const { expandHome } = await import("./config-
|
|
114
|
+
const { expandHome } = await import("./config-H2DSEHNW.js");
|
|
115
115
|
const fs = await import("fs");
|
|
116
116
|
const pathMod = await import("path");
|
|
117
117
|
const cliPath = pathMod.resolve(process.argv[1]);
|
|
@@ -181,4 +181,4 @@ export {
|
|
|
181
181
|
RESTART_EXIT_CODE,
|
|
182
182
|
startServer
|
|
183
183
|
};
|
|
184
|
-
//# sourceMappingURL=main-
|
|
184
|
+
//# sourceMappingURL=main-NV7YN3VY.js.map
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
validateBotAdmin,
|
|
10
10
|
validateBotToken,
|
|
11
11
|
validateChatId
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-UAUTLC4E.js";
|
|
13
|
+
import "./chunk-ZRFBLD3W.js";
|
|
14
14
|
import "./chunk-LYKCQTH5.js";
|
|
15
15
|
export {
|
|
16
16
|
detectAgents,
|
|
@@ -24,4 +24,4 @@ export {
|
|
|
24
24
|
validateBotToken,
|
|
25
25
|
validateChatId
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=setup-
|
|
27
|
+
//# sourceMappingURL=setup-FCVL75K6.js.map
|