shipmyagent 1.0.2 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +6 -0
  2. package/bin/cli.js +34 -0
  3. package/bin/cli.js.map +1 -0
  4. package/bin/commands/init.d.ts.map +1 -0
  5. package/bin/commands/init.js +199 -0
  6. package/bin/commands/init.js.map +1 -0
  7. package/bin/commands/start.d.ts.map +1 -0
  8. package/bin/commands/start.js +220 -0
  9. package/bin/commands/start.js.map +1 -0
  10. package/bin/index.js +4 -0
  11. package/bin/index.js.map +1 -0
  12. package/bin/integrations/feishu.d.ts.map +1 -0
  13. package/bin/integrations/feishu.js +654 -0
  14. package/bin/integrations/feishu.js.map +1 -0
  15. package/bin/integrations/qq.d.ts.map +1 -0
  16. package/bin/integrations/qq.js +712 -0
  17. package/bin/integrations/qq.js.map +1 -0
  18. package/bin/integrations/telegram.d.ts.map +1 -0
  19. package/bin/integrations/telegram.js +876 -0
  20. package/bin/integrations/telegram.js.map +1 -0
  21. package/bin/runtime/agent.d.ts.map +1 -0
  22. package/bin/runtime/agent.js +1653 -0
  23. package/bin/runtime/agent.js.map +1 -0
  24. package/bin/runtime/chat-store.d.ts.map +1 -0
  25. package/bin/runtime/chat-store.js +84 -0
  26. package/bin/runtime/chat-store.js.map +1 -0
  27. package/bin/runtime/index.d.ts.map +1 -0
  28. package/bin/runtime/index.js +7 -0
  29. package/bin/runtime/index.js.map +1 -0
  30. package/bin/runtime/logger.d.ts.map +1 -0
  31. package/bin/runtime/logger.js +103 -0
  32. package/bin/runtime/logger.js.map +1 -0
  33. package/bin/runtime/permission.d.ts.map +1 -0
  34. package/bin/runtime/permission.js +373 -0
  35. package/bin/runtime/permission.js.map +1 -0
  36. package/bin/runtime/run-manager.d.ts.map +1 -0
  37. package/bin/runtime/run-manager.js +41 -0
  38. package/bin/runtime/run-manager.js.map +1 -0
  39. package/bin/runtime/run-queue.d.ts.map +1 -0
  40. package/bin/runtime/run-queue.js +54 -0
  41. package/bin/runtime/run-queue.js.map +1 -0
  42. package/bin/runtime/run-store.d.ts.map +1 -0
  43. package/bin/runtime/run-store.js +39 -0
  44. package/bin/runtime/run-store.js.map +1 -0
  45. package/bin/runtime/run-types.d.ts.map +1 -0
  46. package/bin/runtime/run-types.js +2 -0
  47. package/bin/runtime/run-types.js.map +1 -0
  48. package/bin/runtime/run-worker.d.ts.map +1 -0
  49. package/bin/runtime/run-worker.js +122 -0
  50. package/bin/runtime/run-worker.js.map +1 -0
  51. package/bin/runtime/scheduler.d.ts.map +1 -0
  52. package/bin/runtime/scheduler.js +150 -0
  53. package/bin/runtime/scheduler.js.map +1 -0
  54. package/bin/runtime/ship-prompts.d.ts.map +1 -0
  55. package/bin/runtime/ship-prompts.js +31 -0
  56. package/bin/runtime/ship-prompts.js.map +1 -0
  57. package/bin/runtime/task-executor.d.ts.map +1 -0
  58. package/bin/runtime/task-executor.js +114 -0
  59. package/bin/runtime/task-executor.js.map +1 -0
  60. package/bin/runtime/tools.d.ts.map +1 -0
  61. package/bin/runtime/tools.js +299 -0
  62. package/bin/runtime/tools.js.map +1 -0
  63. package/bin/server/index.d.ts.map +1 -0
  64. package/bin/server/index.js +202 -0
  65. package/bin/server/index.js.map +1 -0
  66. package/bin/server/interactive.d.ts.map +1 -0
  67. package/bin/server/interactive.js +232 -0
  68. package/bin/server/interactive.js.map +1 -0
  69. package/bin/utils.d.ts.map +1 -0
  70. package/bin/utils.js +366 -0
  71. package/bin/utils.js.map +1 -0
  72. package/package.json +57 -20
  73. package/public/app.js +510 -0
  74. package/public/index.html +121 -0
  75. package/public/styles.css +786 -0
  76. package/scripts/ensure-sma-bin.mjs +48 -0
  77. package/dist/cli.d.ts +0 -3
  78. package/dist/cli.js +0 -8
  79. package/dist/cli.js.map +0 -1
  80. package/dist/index.d.ts +0 -2
  81. package/dist/index.js +0 -7
  82. package/dist/index.js.map +0 -1
  83. /package/{dist → bin}/cli.d.ts.map +0 -0
  84. /package/{dist → bin}/index.d.ts.map +0 -0
package/README.md CHANGED
@@ -10,4 +10,10 @@ npm i -g shipmyagent
10
10
 
11
11
  ```bash
12
12
  shipmyagent .
13
+ ```
14
+
15
+ ## access
16
+
17
+ ```http
18
+ GET http://localhost:7001/tasks
13
19
  ```
package/bin/cli.js ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { initCommand } from "./commands/init.js";
4
+ import { startCommand } from "./commands/start.js";
5
+ import { readFileSync } from "fs";
6
+ import { join, dirname, basename } from "path";
7
+ import { fileURLToPath } from "url";
8
+ // 在 ES 模块中获取 __dirname
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+ // 动态读取版本号
12
+ const packageJson = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf-8"));
13
+ const program = new Command();
14
+ program
15
+ .name(basename(process.argv[1] || "shipmyagent"))
16
+ .description("把一个代码仓库,启动成一个可对话、可调度、可审计的 Agent Runtime")
17
+ .version(packageJson.version);
18
+ // Init command
19
+ program
20
+ .command("init [path]")
21
+ .description("初始化 ShipMyAgent 项目")
22
+ .action(initCommand);
23
+ // Start command
24
+ program
25
+ .command("start [path]")
26
+ .description("启动 Agent Runtime")
27
+ .option("-p, --port <port>", "服务端口", "3000")
28
+ .option("-h, --host <host>", "服务主机", "0.0.0.0")
29
+ .option("--interactive-web", "启动交互式 Web 界面", false)
30
+ .option("--interactive-port <port>", "交互式 Web 界面端口", "3001")
31
+ .action(startCommand);
32
+ // Default: start current directory
33
+ program.parse();
34
+ //# sourceMappingURL=cli.js.map
package/bin/cli.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,uBAAuB;AACvB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,UAAU;AACV,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;KAChD,WAAW,CACV,yCAAyC,CAC1C;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,MAAM,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,SAAS,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,KAAK,CAAC;KAClD,MAAM,CAAC,2BAA2B,EAAE,cAAc,EAAE,MAAM,CAAC;KAC3D,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,mCAAmC;AACnC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAsBA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,GAAG,GAAE,MAAY,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8M7F"}
@@ -0,0 +1,199 @@
1
+ import path from 'path';
2
+ import prompts from 'prompts';
3
+ import fs from 'fs-extra';
4
+ import { getAgentMdPath, getShipJsonPath, getShipDirPath, getTasksDirPath, getRunsDirPath, getQueueDirPath, getRoutesDirPath, getApprovalsDirPath, getLogsDirPath, getCacheDirPath, getChatsDirPath, ensureDir, saveJson, DEFAULT_SHIP_JSON, MODEL_CONFIGS, } from '../utils.js';
5
+ export async function initCommand(cwd = '.', options = {}) {
6
+ const projectRoot = path.resolve(cwd);
7
+ const LLM_API_KEY = '${LLM_API_KEY}';
8
+ const LLM_BASE_URL = '${LLM_BASE_URL}';
9
+ const LLM_MODEL = '${LLM_MODEL}';
10
+ const TELEGRAM_BOT_TOKEN = '${TELEGRAM_BOT_TOKEN}';
11
+ const FEISHU_APP_ID = '${FEISHU_APP_ID}';
12
+ const FEISHU_APP_SECRET = '${FEISHU_APP_SECRET}';
13
+ console.log(`🚀 Initializing ShipMyAgent project: ${projectRoot}`);
14
+ // Check if Agent.md and ship.json already exist
15
+ const existingAgentMd = fs.existsSync(getAgentMdPath(projectRoot));
16
+ const existingShipJson = fs.existsSync(getShipJsonPath(projectRoot));
17
+ if (existingAgentMd || existingShipJson) {
18
+ if (!options.force) {
19
+ const response = await prompts({
20
+ type: 'confirm',
21
+ name: 'overwrite',
22
+ message: 'Project already initialized. Overwrite existing configuration?',
23
+ initial: false,
24
+ });
25
+ if (!response.overwrite) {
26
+ console.log('❌ Initialization cancelled');
27
+ return;
28
+ }
29
+ }
30
+ }
31
+ // Collect configuration information
32
+ const response = await prompts([
33
+ {
34
+ type: 'text',
35
+ name: 'name',
36
+ message: 'Agent name',
37
+ initial: path.basename(projectRoot),
38
+ },
39
+ {
40
+ type: 'select',
41
+ name: 'model',
42
+ message: 'Select LLM model',
43
+ choices: [
44
+ { title: 'Claude Sonnet 4', value: 'claude-sonnet-4-5' },
45
+ { title: 'Claude Haiku', value: 'claude-haiku' },
46
+ { title: 'Claude 3.5 Sonnet', value: 'claude-3-5-sonnet-20241022' },
47
+ { title: 'Claude 3 Opus', value: 'claude-3-opus-20240229' },
48
+ { title: 'GPT-4', value: 'gpt-4' },
49
+ { title: 'GPT-4 Turbo', value: 'gpt-4-turbo' },
50
+ { title: 'GPT-4o', value: 'gpt-4o' },
51
+ { title: 'GPT-3.5 Turbo', value: 'gpt-3.5-turbo' },
52
+ { title: 'DeepSeek Chat', value: 'deepseek-chat' },
53
+ { title: 'Custom model', value: 'custom' },
54
+ ],
55
+ initial: 0,
56
+ },
57
+ {
58
+ type: 'select',
59
+ name: 'integration',
60
+ message: 'Select messaging integration',
61
+ choices: [
62
+ { title: 'None', value: 'none' },
63
+ { title: 'Telegram', value: 'telegram' },
64
+ { title: 'Feishu', value: 'feishu' },
65
+ { title: 'QQ', value: 'qq' },
66
+ ],
67
+ initial: 0,
68
+ },
69
+ ]);
70
+ // Create configuration files
71
+ const agentMdPath = getAgentMdPath(projectRoot);
72
+ const shipJsonPath = getShipJsonPath(projectRoot);
73
+ // Save Agent.md (default user identity definition)
74
+ const defaultAgentMd = `# Agent Role
75
+
76
+ You are a helpful project assistant.
77
+
78
+ ## Your Purpose
79
+
80
+ Help users understand and work with their codebase by exploring, analyzing, and providing insights.
81
+
82
+ ## Your Approach
83
+
84
+ - Read and analyze code to answer questions
85
+ - Provide specific, actionable guidance
86
+ - Explain what you find in the project
87
+ - Only modify files when explicitly requested
88
+ `;
89
+ await fs.writeFile(agentMdPath, defaultAgentMd);
90
+ console.log(`✅ Created Agent.md`);
91
+ // Save ship.json
92
+ // Build LLM configuration
93
+ const selectedModel = response.model || 'claude-sonnet-4-5';
94
+ const modelTemplate = MODEL_CONFIGS[selectedModel] || MODEL_CONFIGS.custom;
95
+ const llmConfig = {
96
+ provider: modelTemplate.provider,
97
+ model: selectedModel === 'custom' ? LLM_MODEL : selectedModel, // custom needs env
98
+ baseUrl: selectedModel === 'custom' ? LLM_BASE_URL : modelTemplate.baseUrl,
99
+ apiKey: LLM_API_KEY,
100
+ temperature: 0.7,
101
+ };
102
+ const shipConfig = {
103
+ name: response.name || path.basename(projectRoot),
104
+ version: '1.0.0',
105
+ llm: llmConfig,
106
+ permissions: DEFAULT_SHIP_JSON.permissions,
107
+ integrations: {
108
+ telegram: {
109
+ enabled: response.integration === 'telegram',
110
+ botToken: response.integration === 'telegram' ? TELEGRAM_BOT_TOKEN : undefined,
111
+ chatId: undefined,
112
+ },
113
+ feishu: {
114
+ enabled: response.integration === 'feishu',
115
+ appId: response.integration === 'feishu' ? FEISHU_APP_ID : undefined,
116
+ appSecret: response.integration === 'feishu' ? FEISHU_APP_SECRET : undefined,
117
+ domain: 'https://open.feishu.cn',
118
+ },
119
+ qq: {
120
+ enabled: response.integration === 'qq',
121
+ appId: response.integration === 'qq' ? '${QQ_APP_ID}' : undefined,
122
+ appSecret: response.integration === 'qq' ? '${QQ_APP_SECRET}' : undefined,
123
+ sandbox: false,
124
+ },
125
+ },
126
+ };
127
+ await saveJson(shipJsonPath, shipConfig);
128
+ console.log(`✅ Created ship.json`);
129
+ // Create .ship directory structure
130
+ const dirs = [
131
+ getShipDirPath(projectRoot),
132
+ getTasksDirPath(projectRoot),
133
+ getRunsDirPath(projectRoot),
134
+ getQueueDirPath(projectRoot),
135
+ getRoutesDirPath(projectRoot),
136
+ getApprovalsDirPath(projectRoot),
137
+ getLogsDirPath(projectRoot),
138
+ getCacheDirPath(projectRoot),
139
+ getChatsDirPath(projectRoot),
140
+ ];
141
+ for (const dir of dirs) {
142
+ await ensureDir(dir);
143
+ }
144
+ console.log(`✅ Created .ship/ directory structure`);
145
+ // Create sample task file
146
+ const sampleTaskPath = path.join(getTasksDirPath(projectRoot), 'sample-task.md');
147
+ const sampleTaskContent = `---
148
+ id: sample-task
149
+ name: Sample Task
150
+ cron: "0 9 * * *"
151
+ notify: telegram
152
+ ---
153
+
154
+ This is a sample task.
155
+
156
+ Please scan the repository for TODO comments and generate a report.
157
+ `;
158
+ await fs.writeFile(sampleTaskPath, sampleTaskContent);
159
+ console.log(`✅ Created sample task file`);
160
+ console.log('\n🎉 Initialization complete!\n');
161
+ console.log(`📦 Current model: ${llmConfig.provider} / ${llmConfig.model}`);
162
+ console.log(`🌐 API URL: ${llmConfig.baseUrl}\n`);
163
+ if (response.integration === 'feishu') {
164
+ console.log('📱 Feishu integration enabled');
165
+ console.log(' Please configure FEISHU_APP_ID and FEISHU_APP_SECRET in ship.json');
166
+ console.log(' or set environment variables: FEISHU_APP_ID and FEISHU_APP_SECRET\n');
167
+ }
168
+ else if (response.integration === 'telegram') {
169
+ console.log('📱 Telegram integration enabled');
170
+ console.log(' Please configure TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID (optional) in ship.json');
171
+ console.log(' or set environment variables: TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID\n');
172
+ }
173
+ else if (response.integration === 'qq') {
174
+ console.log('📱 QQ integration enabled');
175
+ console.log(' Please configure QQ_APP_ID and QQ_APP_SECRET in ship.json');
176
+ console.log(' or set environment variables: QQ_APP_ID and QQ_APP_SECRET\n');
177
+ }
178
+ console.log('Next steps:');
179
+ console.log(' 1. Edit Agent.md to customize agent behavior');
180
+ console.log(' 2. Edit ship.json to modify LLM configuration (baseUrl, apiKey, temperature, etc.)');
181
+ if (response.integration === 'feishu') {
182
+ console.log(' 3. Configure Feishu App ID and App Secret');
183
+ console.log(' 4. Run "shipmyagent start" to start the agent\n');
184
+ }
185
+ else if (response.integration === 'telegram') {
186
+ console.log(' 3. Configure Telegram Bot Token and Chat ID (optional)');
187
+ console.log(' 4. Run "shipmyagent start" to start the agent\n');
188
+ }
189
+ else if (response.integration === 'qq') {
190
+ console.log(' 3. Configure QQ App ID and App Secret');
191
+ console.log(' 4. Run "shipmyagent start" to start the agent\n');
192
+ }
193
+ else {
194
+ console.log(' 3. Run "shipmyagent start" to start the agent\n');
195
+ }
196
+ console.log('💡 Tip: API Key is recommended to use environment variables (e.g. ${ANTHROPIC_API_KEY} or ${OPENAI_API_KEY})\n');
197
+ console.log('To switch models or modify configuration, edit the llm field in ship.json directly.\n');
198
+ }
199
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAmBA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,YAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA6P1F"}
@@ -0,0 +1,220 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { createLogger } from '../runtime/logger.js';
4
+ import { createPermissionEngine } from '../runtime/permission.js';
5
+ import { createTaskScheduler } from '../runtime/scheduler.js';
6
+ import { createTaskExecutor } from '../runtime/task-executor.js';
7
+ import { createToolExecutor } from '../runtime/tools.js';
8
+ import { createAgentRuntime } from '../runtime/agent.js';
9
+ import { RunManager } from '../runtime/run-manager.js';
10
+ import { RunWorker } from '../runtime/run-worker.js';
11
+ import { createServer } from '../server/index.js';
12
+ import { createInteractiveServer } from '../server/interactive.js';
13
+ import { createTelegramBot } from '../integrations/telegram.js';
14
+ import { createFeishuBot } from '../integrations/feishu.js';
15
+ import { createQQBot } from '../integrations/qq.js';
16
+ import { getAgentMdPath, getShipJsonPath, loadShipConfig, DEFAULT_SHELL_GUIDE } from '../utils.js';
17
+ import { DEFAULT_SHIP_PROMPTS } from '../runtime/ship-prompts.js';
18
+ import { fileURLToPath } from 'url';
19
+ export async function startCommand(cwd = '.', options) {
20
+ const projectRoot = path.resolve(cwd);
21
+ const isPlaceholder = (value) => value === '${}';
22
+ let version = 'unknown';
23
+ try {
24
+ const __filename = fileURLToPath(import.meta.url);
25
+ const __dirname = path.dirname(__filename);
26
+ const pkg = await fs.readJson(path.join(__dirname, '../../package.json'));
27
+ if (pkg && typeof pkg.version === 'string')
28
+ version = pkg.version;
29
+ }
30
+ catch {
31
+ // ignore
32
+ }
33
+ console.log(`🚀 Starting ShipMyAgent v${version}: ${projectRoot}`);
34
+ // Check if initialized
35
+ if (!fs.existsSync(getAgentMdPath(projectRoot))) {
36
+ console.error('❌ Project not initialized. Please run "shipmyagent init" first');
37
+ process.exit(1);
38
+ }
39
+ if (!fs.existsSync(getShipJsonPath(projectRoot))) {
40
+ console.error('❌ ship.json does not exist. Please run "shipmyagent init" first');
41
+ process.exit(1);
42
+ }
43
+ // Read configuration
44
+ let shipConfig;
45
+ try {
46
+ shipConfig = loadShipConfig(projectRoot);
47
+ }
48
+ catch (error) {
49
+ console.error('❌ Failed to read ship.json:', error);
50
+ process.exit(1);
51
+ }
52
+ // Create logger
53
+ const logger = createLogger(projectRoot, 'info');
54
+ logger.info('=== ShipMyAgent Starting ===');
55
+ logger.info(`Project: ${projectRoot}`);
56
+ logger.info(`Model: ${shipConfig.llm?.provider} / ${shipConfig.llm?.model}`);
57
+ // Create permission engine
58
+ const permissionEngine = createPermissionEngine(projectRoot);
59
+ logger.info('Permission engine initialized');
60
+ // Create tool executor
61
+ const toolExecutor = createToolExecutor({
62
+ projectRoot,
63
+ permissionEngine,
64
+ logger,
65
+ });
66
+ logger.info('Tool executor initialized');
67
+ // Create Agent Runtime
68
+ const userAgentMd = fs.readFileSync(getAgentMdPath(projectRoot), 'utf-8').trim();
69
+ const agentMd = [
70
+ userAgentMd || 'You are a helpful project assistant.',
71
+ `---\n\n${DEFAULT_SHIP_PROMPTS}`,
72
+ `---\n\n${DEFAULT_SHELL_GUIDE}`,
73
+ ]
74
+ .filter(Boolean)
75
+ .join('\n\n');
76
+ const agentContext = {
77
+ projectRoot,
78
+ config: shipConfig,
79
+ agentMd,
80
+ };
81
+ const agentRuntime = createAgentRuntime(agentContext);
82
+ await agentRuntime.initialize();
83
+ logger.info('Agent Runtime initialized');
84
+ // Create task executor
85
+ const taskExecutor = createTaskExecutor(toolExecutor, logger, agentRuntime, projectRoot);
86
+ logger.info('Task executor initialized');
87
+ // Create Run manager/worker (Tasks v2)
88
+ const runManager = new RunManager(projectRoot);
89
+ const runWorker = new RunWorker(projectRoot, logger, taskExecutor, { maxConcurrent: 1, pollIntervalMs: 1000 });
90
+ runWorker.start();
91
+ logger.info('Run worker started');
92
+ // Create task scheduler
93
+ const taskScheduler = createTaskScheduler(projectRoot, logger, async (task) => {
94
+ const run = await runManager.createAndEnqueueTaskRun(task);
95
+ logger.info(`Enqueued scheduled run: ${run.runId} (${task.id})`);
96
+ });
97
+ logger.info('Task scheduler initialized');
98
+ // Create server context
99
+ const serverContext = {
100
+ projectRoot,
101
+ logger,
102
+ permissionEngine,
103
+ taskScheduler,
104
+ taskExecutor,
105
+ toolExecutor,
106
+ };
107
+ // Create and start server
108
+ const server = createServer(serverContext);
109
+ // Create Telegram Bot (if enabled)
110
+ let telegramBot = null;
111
+ if (shipConfig.integrations?.telegram?.enabled) {
112
+ logger.info('Telegram integration enabled');
113
+ telegramBot = createTelegramBot(projectRoot, shipConfig.integrations.telegram, logger);
114
+ }
115
+ // Create Feishu Bot (if enabled)
116
+ let feishuBot = null;
117
+ if (shipConfig.integrations?.feishu?.enabled) {
118
+ logger.info('Feishu integration enabled');
119
+ // Read Feishu configuration from environment variables or config
120
+ const feishuConfig = {
121
+ enabled: true,
122
+ appId: (shipConfig.integrations.feishu.appId && !isPlaceholder(shipConfig.integrations.feishu.appId)
123
+ ? shipConfig.integrations.feishu.appId
124
+ : undefined) || process.env.FEISHU_APP_ID || '',
125
+ appSecret: (shipConfig.integrations.feishu.appSecret && !isPlaceholder(shipConfig.integrations.feishu.appSecret)
126
+ ? shipConfig.integrations.feishu.appSecret
127
+ : undefined) || process.env.FEISHU_APP_SECRET || '',
128
+ domain: shipConfig.integrations.feishu.domain || 'https://open.feishu.cn',
129
+ adminUserIds: Array.isArray(shipConfig.integrations.feishu.adminUserIds)
130
+ ? shipConfig.integrations.feishu.adminUserIds
131
+ : undefined,
132
+ };
133
+ feishuBot = await createFeishuBot(projectRoot, feishuConfig, logger);
134
+ }
135
+ // Create QQ Bot (if enabled)
136
+ let qqBot = null;
137
+ if (shipConfig.integrations?.qq?.enabled) {
138
+ logger.info('QQ integration enabled');
139
+ const qqConfig = {
140
+ enabled: true,
141
+ appId: (shipConfig.integrations.qq.appId && !isPlaceholder(shipConfig.integrations.qq.appId)
142
+ ? shipConfig.integrations.qq.appId
143
+ : undefined) || process.env.QQ_APP_ID || '',
144
+ appSecret: (shipConfig.integrations.qq.appSecret && !isPlaceholder(shipConfig.integrations.qq.appSecret)
145
+ ? shipConfig.integrations.qq.appSecret
146
+ : undefined) || process.env.QQ_APP_SECRET || '',
147
+ sandbox: typeof shipConfig.integrations.qq.sandbox === 'boolean'
148
+ ? shipConfig.integrations.qq.sandbox
149
+ : (process.env.QQ_SANDBOX || '').toLowerCase() === 'true',
150
+ };
151
+ qqBot = await createQQBot(projectRoot, qqConfig, logger);
152
+ }
153
+ // 创建交互式 Web 服务器(如果已启用)
154
+ let interactiveServer = null;
155
+ if (options.interactiveWeb) {
156
+ logger.info('交互式 Web 界面已启用');
157
+ interactiveServer = createInteractiveServer({
158
+ agentApiUrl: `http://${(options.host === '0.0.0.0' || options.host === '::') ? '127.0.0.1' : options.host}:${options.port}`,
159
+ });
160
+ }
161
+ // 处理进程信号
162
+ let isShuttingDown = false;
163
+ const shutdown = async (signal) => {
164
+ if (isShuttingDown)
165
+ return;
166
+ isShuttingDown = true;
167
+ logger.info(`Received ${signal} signal, shutting down...`);
168
+ // Stop Telegram Bot
169
+ if (telegramBot) {
170
+ await telegramBot.stop();
171
+ }
172
+ // Stop Feishu Bot
173
+ if (feishuBot) {
174
+ await feishuBot.stop();
175
+ }
176
+ // Stop QQ Bot
177
+ if (qqBot) {
178
+ await qqBot.stop();
179
+ }
180
+ await runWorker.stop();
181
+ // 停止交互式 Web 服务器
182
+ if (interactiveServer) {
183
+ await interactiveServer.stop();
184
+ }
185
+ // 停止服务器
186
+ await server.stop();
187
+ // Save logs
188
+ await logger.saveAllLogs();
189
+ logger.info('👋 ShipMyAgent stopped');
190
+ process.exit(0);
191
+ };
192
+ process.on('SIGINT', () => shutdown('SIGINT'));
193
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
194
+ // Start server
195
+ await server.start({
196
+ port: options.port,
197
+ host: options.host,
198
+ });
199
+ // 启动交互式 Web 服务器(如果已启用)
200
+ if (interactiveServer) {
201
+ await interactiveServer.start({
202
+ port: options.interactivePort || 3001,
203
+ host: options.host,
204
+ });
205
+ }
206
+ // 启动 Telegram Bot
207
+ if (telegramBot) {
208
+ await telegramBot.start();
209
+ }
210
+ // Start Feishu Bot
211
+ if (feishuBot) {
212
+ await feishuBot.start();
213
+ }
214
+ // Start QQ Bot
215
+ if (qqBot) {
216
+ await qqBot.start();
217
+ }
218
+ logger.info('=== ShipMyAgent Started ===');
219
+ }
220
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
package/bin/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export function hello(name = "World") {
2
+ return `Hello, ${name}!`;
3
+ }
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,OAAe,OAAO;IAC1C,OAAO,UAAU,IAAI,GAAG,CAAC;AAC3B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feishu.d.ts","sourceRoot":"","sources":["../../src/integrations/feishu.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAsB,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM/E,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAYD,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,sBAAsB,CAA+B;IAC7D,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,SAAS,CAAY;IAG7B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAgE;gBAGhF,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS;IAcpC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;YAcL,aAAa;YAYb,gBAAgB;YAWhB,oBAAoB;YAiBpB,uBAAuB;IAarC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,eAAe;YAQT,mBAAmB;YAWnB,gBAAgB;IAc9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkB9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA8Dd,sBAAsB;YA8CtB,aAAa;YAyFb,aAAa;YA8Cb,eAAe;YA2Hf,WAAW;YAoCX,eAAe;YAkBf,gBAAgB;IASxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB5B;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA4B3B"}