@xopcai/xopcbot 0.1.3 → 0.2.0

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 (292) hide show
  1. package/README.md +57 -52
  2. package/README.zh-CN.md +56 -49
  3. package/dist/agent/__tests__/media-processing.test.d.ts +6 -0
  4. package/dist/agent/__tests__/media-processing.test.js +385 -0
  5. package/dist/agent/__tests__/media-processing.test.js.map +1 -0
  6. package/dist/agent/fallback/__tests__/index.test.js +16 -5
  7. package/dist/agent/fallback/__tests__/index.test.js.map +1 -1
  8. package/dist/agent/fallback/candidates.d.ts +2 -4
  9. package/dist/agent/fallback/candidates.js +19 -26
  10. package/dist/agent/fallback/candidates.js.map +1 -1
  11. package/dist/agent/helpers.d.ts +1 -0
  12. package/dist/agent/helpers.js.map +1 -1
  13. package/dist/agent/index.d.ts +6 -1
  14. package/dist/agent/index.js +10 -1
  15. package/dist/agent/index.js.map +1 -1
  16. package/dist/agent/models/compat.d.ts +35 -0
  17. package/dist/agent/models/compat.js +110 -0
  18. package/dist/agent/models/compat.js.map +1 -0
  19. package/dist/agent/models/fallback.d.ts +38 -0
  20. package/dist/agent/models/fallback.js +133 -0
  21. package/dist/agent/models/fallback.js.map +1 -0
  22. package/dist/agent/models/index.d.ts +10 -0
  23. package/dist/agent/models/index.js +11 -0
  24. package/dist/agent/models/index.js.map +1 -0
  25. package/dist/agent/{model-manager.d.ts → models/manager.d.ts} +2 -8
  26. package/dist/agent/{model-manager.js → models/manager.js} +38 -24
  27. package/dist/agent/models/manager.js.map +1 -0
  28. package/dist/agent/models/scan.d.ts +46 -0
  29. package/dist/agent/models/scan.js +177 -0
  30. package/dist/agent/models/scan.js.map +1 -0
  31. package/dist/agent/models/selection.d.ts +44 -0
  32. package/dist/agent/models/selection.js +141 -0
  33. package/dist/agent/models/selection.js.map +1 -0
  34. package/dist/agent/prompt/index.js +1 -1
  35. package/dist/agent/prompt/index.js.map +1 -1
  36. package/dist/agent/service.js +34 -16
  37. package/dist/agent/service.js.map +1 -1
  38. package/dist/agent/skills/__tests__/test-framework.test.js +15 -7
  39. package/dist/agent/skills/__tests__/test-framework.test.js.map +1 -1
  40. package/dist/agent/skills/config.d.ts +1 -1
  41. package/dist/agent/skills/config.js +2 -2
  42. package/dist/agent/skills/config.js.map +1 -1
  43. package/dist/agent/skills/index.js +15 -28
  44. package/dist/agent/skills/index.js.map +1 -1
  45. package/dist/agent/skills/installer.d.ts +1 -1
  46. package/dist/agent/skills/installer.js +1 -1
  47. package/dist/agent/skills/scanner.d.ts +1 -1
  48. package/dist/agent/skills/scanner.js +1 -1
  49. package/dist/agent/skills/test-framework.js +24 -23
  50. package/dist/agent/skills/test-framework.js.map +1 -1
  51. package/dist/agent/skills/types.d.ts +3 -3
  52. package/dist/agent/skills/types.js +1 -1
  53. package/dist/agent/skills/watcher.d.ts +1 -1
  54. package/dist/agent/skills/watcher.js +1 -1
  55. package/dist/agent/system-prompt.d.ts +67 -0
  56. package/dist/agent/system-prompt.js +351 -0
  57. package/dist/agent/system-prompt.js.map +1 -0
  58. package/dist/agent/tools/__tests__/send-media.test.d.ts +6 -0
  59. package/dist/agent/tools/__tests__/send-media.test.js +251 -0
  60. package/dist/agent/tools/__tests__/send-media.test.js.map +1 -0
  61. package/dist/agent/types.agent-defaults.d.ts +48 -0
  62. package/dist/agent/types.agent-defaults.js +5 -0
  63. package/dist/agent/types.agent-defaults.js.map +1 -0
  64. package/dist/agent/types.d.ts +14 -6
  65. package/dist/agent/types.js +5 -0
  66. package/dist/agent/types.js.map +1 -1
  67. package/dist/agent/workspace.d.ts +94 -0
  68. package/dist/agent/workspace.js +625 -0
  69. package/dist/agent/workspace.js.map +1 -0
  70. package/dist/auth/index.js +1 -1
  71. package/dist/auth/index.js.map +1 -1
  72. package/dist/auth/oauth/index.d.ts +1 -0
  73. package/dist/auth/oauth/index.js +1 -0
  74. package/dist/auth/oauth/index.js.map +1 -1
  75. package/dist/auth/oauth/kimi.d.ts +2 -1
  76. package/dist/auth/oauth/kimi.js +51 -48
  77. package/dist/auth/oauth/kimi.js.map +1 -1
  78. package/dist/auth/oauth/minimax-cn.d.ts +12 -0
  79. package/dist/auth/oauth/minimax-cn.js +111 -0
  80. package/dist/auth/oauth/minimax-cn.js.map +1 -0
  81. package/dist/auth/oauth/qwen.d.ts +5 -0
  82. package/dist/auth/oauth/qwen.js +54 -84
  83. package/dist/auth/oauth/qwen.js.map +1 -1
  84. package/dist/auth/profiles/index.d.ts +0 -2
  85. package/dist/auth/profiles/index.js +0 -2
  86. package/dist/auth/profiles/index.js.map +1 -1
  87. package/dist/auth/storage.js +7 -1
  88. package/dist/auth/storage.js.map +1 -1
  89. package/dist/channels/__tests__/media-integration.test.d.ts +6 -0
  90. package/dist/channels/__tests__/media-integration.test.js +398 -0
  91. package/dist/channels/__tests__/media-integration.test.js.map +1 -0
  92. package/dist/channels/__tests__/media.test.d.ts +6 -0
  93. package/dist/channels/__tests__/media.test.js +251 -0
  94. package/dist/channels/__tests__/media.test.js.map +1 -0
  95. package/dist/channels/access-control.d.ts +1 -1
  96. package/dist/channels/access-control.js +1 -1
  97. package/dist/channels/draft-stream.d.ts +1 -1
  98. package/dist/channels/draft-stream.js +1 -1
  99. package/dist/channels/format.d.ts +1 -1
  100. package/dist/channels/format.js +1 -1
  101. package/dist/channels/telegram/command-handler.js +15 -48
  102. package/dist/channels/telegram/command-handler.js.map +1 -1
  103. package/dist/channels/telegram/plugin.js +3 -2
  104. package/dist/channels/telegram/plugin.js.map +1 -1
  105. package/dist/channels/telegram/webhook.d.ts +1 -1
  106. package/dist/channels/telegram/webhook.js +1 -1
  107. package/dist/channels/types.d.ts +1 -1
  108. package/dist/channels/types.js +1 -1
  109. package/dist/channels/update-offset-store.d.ts +1 -1
  110. package/dist/channels/update-offset-store.js +1 -1
  111. package/dist/cli/commands/auth.js +8 -23
  112. package/dist/cli/commands/auth.js.map +1 -1
  113. package/dist/cli/commands/gateway.js +9 -1
  114. package/dist/cli/commands/gateway.js.map +1 -1
  115. package/dist/cli/commands/models.js +35 -29
  116. package/dist/cli/commands/models.js.map +1 -1
  117. package/dist/cli/commands/onboard.js +166 -115
  118. package/dist/cli/commands/onboard.js.map +1 -1
  119. package/dist/cli/commands/setup.js +123 -0
  120. package/dist/cli/commands/setup.js.map +1 -0
  121. package/dist/cli/commands/skills.js +6 -6
  122. package/dist/cli/commands/skills.js.map +1 -1
  123. package/dist/cli/index.d.ts +1 -1
  124. package/dist/cli/index.js +1 -1
  125. package/dist/cli/index.js.map +1 -1
  126. package/dist/cli/templates.d.ts +2 -0
  127. package/dist/cli/templates.js +1 -1
  128. package/dist/cli/templates.js.map +1 -1
  129. package/dist/config/defaults.d.ts +19 -0
  130. package/dist/config/defaults.js +168 -0
  131. package/dist/config/defaults.js.map +1 -0
  132. package/dist/config/index.d.ts +5 -0
  133. package/dist/config/index.js +4 -0
  134. package/dist/config/index.js.map +1 -1
  135. package/dist/config/integration.d.ts +12 -0
  136. package/dist/config/integration.js +14 -0
  137. package/dist/config/integration.js.map +1 -0
  138. package/dist/config/models-json.d.ts +454 -0
  139. package/dist/config/models-json.js +323 -0
  140. package/dist/config/models-json.js.map +1 -0
  141. package/dist/config/paths.d.ts +2 -0
  142. package/dist/config/paths.js +4 -0
  143. package/dist/config/paths.js.map +1 -1
  144. package/dist/config/reload.d.ts +1 -1
  145. package/dist/config/reload.js +3 -3
  146. package/dist/config/reload.js.map +1 -1
  147. package/dist/config/resolve-config-value.d.ts +36 -0
  148. package/dist/config/resolve-config-value.js +218 -0
  149. package/dist/config/resolve-config-value.js.map +1 -0
  150. package/dist/config/rules.js +3 -2
  151. package/dist/config/rules.js.map +1 -1
  152. package/dist/config/schema.d.ts +17 -884
  153. package/dist/config/schema.js +36 -312
  154. package/dist/config/schema.js.map +1 -1
  155. package/dist/config/types.models.d.ts +54 -0
  156. package/dist/config/types.models.js +2 -0
  157. package/dist/config/types.models.js.map +1 -0
  158. package/dist/cron/validation.d.ts +4 -4
  159. package/dist/gateway/hono/app.js +232 -78
  160. package/dist/gateway/hono/app.js.map +1 -1
  161. package/dist/gateway/hono/oauth-async.d.ts +14 -0
  162. package/dist/gateway/hono/oauth-async.js +285 -0
  163. package/dist/gateway/hono/oauth-async.js.map +1 -0
  164. package/dist/gateway/hono/oauth.d.ts +9 -0
  165. package/dist/gateway/hono/oauth.js +157 -0
  166. package/dist/gateway/hono/oauth.js.map +1 -0
  167. package/dist/gateway/hono/sse.js +5 -2
  168. package/dist/gateway/hono/sse.js.map +1 -1
  169. package/dist/gateway/process-manager.js +12 -10
  170. package/dist/gateway/process-manager.js.map +1 -1
  171. package/dist/gateway/service.d.ts +6 -2
  172. package/dist/gateway/service.js +20 -6
  173. package/dist/gateway/service.js.map +1 -1
  174. package/dist/gateway/static/root/assets/flow-BqIEBwW6.js +2 -0
  175. package/dist/gateway/static/root/assets/flow-BqIEBwW6.js.map +1 -0
  176. package/dist/gateway/static/root/assets/main-Br2tw-87.js +5168 -0
  177. package/dist/gateway/static/root/assets/main-Br2tw-87.js.map +1 -0
  178. package/dist/gateway/static/root/assets/main-DwlbPf8Z.css +1 -0
  179. package/dist/gateway/static/root/index.html +2 -2
  180. package/dist/plugins/index.d.ts +0 -2
  181. package/dist/plugins/index.js +0 -2
  182. package/dist/plugins/index.js.map +1 -1
  183. package/dist/plugins/types.d.ts +0 -2
  184. package/dist/plugins/types.js +0 -2
  185. package/dist/plugins/types.js.map +1 -1
  186. package/dist/providers/index.d.ts +50 -22
  187. package/dist/providers/index.js +276 -50
  188. package/dist/providers/index.js.map +1 -1
  189. package/dist/providers/model-registry.d.ts +84 -0
  190. package/dist/providers/model-registry.js +385 -0
  191. package/dist/providers/model-registry.js.map +1 -0
  192. package/dist/types/providers.d.ts +2 -63
  193. package/dist/types/providers.js +1 -1
  194. package/dist/utils/__tests__/frontmatter.test.d.ts +4 -0
  195. package/dist/utils/__tests__/frontmatter.test.js +150 -0
  196. package/dist/utils/__tests__/frontmatter.test.js.map +1 -0
  197. package/dist/utils/diagnostic-events.d.ts +230 -0
  198. package/dist/utils/diagnostic-events.js +189 -0
  199. package/dist/utils/diagnostic-events.js.map +1 -0
  200. package/dist/utils/frontmatter.d.ts +0 -1
  201. package/dist/utils/frontmatter.js +15 -79
  202. package/dist/utils/frontmatter.js.map +1 -1
  203. package/dist/utils/log-stream.d.ts +95 -0
  204. package/dist/utils/log-stream.js +229 -0
  205. package/dist/utils/log-stream.js.map +1 -0
  206. package/dist/utils/logger.d.ts +5 -0
  207. package/dist/utils/logger.js +25 -0
  208. package/dist/utils/logger.js.map +1 -1
  209. package/dist/utils/redact.d.ts +73 -0
  210. package/dist/utils/redact.js +245 -0
  211. package/dist/utils/redact.js.map +1 -0
  212. package/package.json +6 -4
  213. package/skills/find-skills/SKILL.md +0 -9
  214. package/dist/__tests__/core.test.js +0 -72
  215. package/dist/__tests__/core.test.js.map +0 -1
  216. package/dist/agent/model-manager.js.map +0 -1
  217. package/dist/cli/commands/configure.d.ts +0 -1
  218. package/dist/cli/commands/configure.js +0 -173
  219. package/dist/cli/commands/configure.js.map +0 -1
  220. package/dist/cli/commands/gateway-daemon.d.ts +0 -1
  221. package/dist/cli/commands/gateway-daemon.js +0 -141
  222. package/dist/cli/commands/gateway-daemon.js.map +0 -1
  223. package/dist/config/__tests__/diff.test.d.ts +0 -1
  224. package/dist/config/__tests__/diff.test.js +0 -192
  225. package/dist/config/__tests__/diff.test.js.map +0 -1
  226. package/dist/config/__tests__/loader.test.d.ts +0 -1
  227. package/dist/config/__tests__/loader.test.js +0 -356
  228. package/dist/config/__tests__/loader.test.js.map +0 -1
  229. package/dist/config/__tests__/paths.test.d.ts +0 -1
  230. package/dist/config/__tests__/paths.test.js +0 -192
  231. package/dist/config/__tests__/paths.test.js.map +0 -1
  232. package/dist/config/__tests__/reload.test.d.ts +0 -1
  233. package/dist/config/__tests__/reload.test.js +0 -374
  234. package/dist/config/__tests__/reload.test.js.map +0 -1
  235. package/dist/config/__tests__/rules.test.d.ts +0 -1
  236. package/dist/config/__tests__/rules.test.js +0 -204
  237. package/dist/config/__tests__/rules.test.js.map +0 -1
  238. package/dist/config/__tests__/schema.test.d.ts +0 -1
  239. package/dist/config/__tests__/schema.test.js +0 -672
  240. package/dist/config/__tests__/schema.test.js.map +0 -1
  241. package/dist/daemon/background-start.d.ts +0 -33
  242. package/dist/daemon/background-start.js +0 -89
  243. package/dist/daemon/background-start.js.map +0 -1
  244. package/dist/daemon/gateway-manager.d.ts +0 -87
  245. package/dist/daemon/gateway-manager.js +0 -324
  246. package/dist/daemon/gateway-manager.js.map +0 -1
  247. package/dist/daemon/index.d.ts +0 -5
  248. package/dist/daemon/index.js +0 -6
  249. package/dist/daemon/index.js.map +0 -1
  250. package/dist/gateway/static/root/assets/main-DevbZW9K.js +0 -2227
  251. package/dist/gateway/static/root/assets/main-DevbZW9K.js.map +0 -1
  252. package/dist/gateway/static/root/assets/main-DxZg1Nmz.css +0 -1
  253. package/dist/providers/__tests__/registry.test.d.ts +0 -1
  254. package/dist/providers/__tests__/registry.test.js +0 -110
  255. package/dist/providers/__tests__/registry.test.js.map +0 -1
  256. package/dist/providers/api-strategies.d.ts +0 -15
  257. package/dist/providers/api-strategies.js +0 -96
  258. package/dist/providers/api-strategies.js.map +0 -1
  259. package/dist/providers/auto-discovery.d.ts +0 -84
  260. package/dist/providers/auto-discovery.js +0 -236
  261. package/dist/providers/auto-discovery.js.map +0 -1
  262. package/dist/providers/config.d.ts +0 -25
  263. package/dist/providers/config.js +0 -42
  264. package/dist/providers/config.js.map +0 -1
  265. package/dist/providers/model-catalog.d.ts +0 -205
  266. package/dist/providers/model-catalog.js +0 -1071
  267. package/dist/providers/model-catalog.js.map +0 -1
  268. package/dist/providers/models-dev-data.d.ts +0 -11
  269. package/dist/providers/models-dev-data.js +0 -1035
  270. package/dist/providers/models-dev-data.js.map +0 -1
  271. package/dist/providers/models-dev.d.ts +0 -30
  272. package/dist/providers/models-dev.js +0 -42
  273. package/dist/providers/models-dev.js.map +0 -1
  274. package/dist/providers/pi-ai.d.ts +0 -62
  275. package/dist/providers/pi-ai.js +0 -221
  276. package/dist/providers/pi-ai.js.map +0 -1
  277. package/dist/providers/provider-catalog.d.ts +0 -173
  278. package/dist/providers/provider-catalog.js +0 -834
  279. package/dist/providers/provider-catalog.js.map +0 -1
  280. package/dist/providers/registry.d.ts +0 -155
  281. package/dist/providers/registry.js +0 -524
  282. package/dist/providers/registry.js.map +0 -1
  283. package/dist/providers/types.d.ts +0 -95
  284. package/dist/providers/types.js +0 -7
  285. package/dist/providers/types.js.map +0 -1
  286. package/dist/session/chat-manager.d.ts +0 -49
  287. package/dist/session/chat-manager.js +0 -167
  288. package/dist/session/chat-manager.js.map +0 -1
  289. package/dist/session/chat-types.d.ts +0 -53
  290. package/dist/session/chat-types.js +0 -63
  291. package/dist/session/chat-types.js.map +0 -1
  292. /package/dist/{__tests__/core.test.d.ts → cli/commands/setup.d.ts} +0 -0
@@ -0,0 +1,625 @@
1
+ /**
2
+ * Workspace Management - Core bootstrap file handling
3
+ *
4
+ * Workspace architecture for xopcbot:
5
+ * - Default filenames constants
6
+ * - File caching with mtime invalidation
7
+ * - Template loading and seeding
8
+ * - Bootstrap file loading with filtering
9
+ */
10
+ import fs from 'node:fs/promises';
11
+ import path from 'node:path';
12
+ import { createLogger } from '../utils/logger.js';
13
+ const log = createLogger('Workspace');
14
+ // =============================================================================
15
+ // Default Filenames
16
+ // =============================================================================
17
+ export const DEFAULT_AGENTS_FILENAME = 'AGENTS.md';
18
+ export const DEFAULT_SOUL_FILENAME = 'SOUL.md';
19
+ export const DEFAULT_TOOLS_FILENAME = 'TOOLS.md';
20
+ export const DEFAULT_IDENTITY_FILENAME = 'IDENTITY.md';
21
+ export const DEFAULT_USER_FILENAME = 'USER.md';
22
+ export const DEFAULT_HEARTBEAT_FILENAME = 'HEARTBEAT.md';
23
+ export const DEFAULT_BOOTSTRAP_FILENAME = 'BOOTSTRAP.md';
24
+ export const DEFAULT_MEMORY_FILENAME = 'MEMORY.md';
25
+ export const DEFAULT_MEMORY_ALT_FILENAME = 'memory.md';
26
+ export const DEFAULT_WORKSPACE_STATE_DIR = '.xopcbot';
27
+ export const DEFAULT_WORKSPACE_STATE_FILE = 'workspace-state.json';
28
+ // =============================================================================
29
+ // Valid Bootstrap Names (for runtime validation)
30
+ // =============================================================================
31
+ const VALID_BOOTSTRAP_NAMES = new Set([
32
+ DEFAULT_AGENTS_FILENAME,
33
+ DEFAULT_SOUL_FILENAME,
34
+ DEFAULT_TOOLS_FILENAME,
35
+ DEFAULT_IDENTITY_FILENAME,
36
+ DEFAULT_USER_FILENAME,
37
+ DEFAULT_HEARTBEAT_FILENAME,
38
+ DEFAULT_BOOTSTRAP_FILENAME,
39
+ DEFAULT_MEMORY_FILENAME,
40
+ DEFAULT_MEMORY_ALT_FILENAME,
41
+ ]);
42
+ export function isValidBootstrapFileName(name) {
43
+ return VALID_BOOTSTRAP_NAMES.has(name);
44
+ }
45
+ const workspaceFileCache = new Map();
46
+ /**
47
+ * Read file with caching based on mtime. Returns cached content if file
48
+ * hasn't changed, otherwise reads from disk and updates cache.
49
+ *
50
+ * Performance optimization approach.
51
+ */
52
+ export async function readFileWithCache(filePath) {
53
+ try {
54
+ const stats = await fs.stat(filePath);
55
+ const mtimeMs = stats.mtimeMs;
56
+ const cached = workspaceFileCache.get(filePath);
57
+ // Return cached content if mtime matches
58
+ if (cached && cached.mtimeMs === mtimeMs) {
59
+ return cached.content;
60
+ }
61
+ // Read from disk and update cache
62
+ const content = await fs.readFile(filePath, 'utf-8');
63
+ workspaceFileCache.set(filePath, { content, mtimeMs });
64
+ return content;
65
+ }
66
+ catch (error) {
67
+ // Remove from cache if file doesn't exist or is unreadable
68
+ workspaceFileCache.delete(filePath);
69
+ throw error;
70
+ }
71
+ }
72
+ /**
73
+ * Invalidate cache for a specific file
74
+ */
75
+ export function invalidateCache(filePath) {
76
+ workspaceFileCache.delete(filePath);
77
+ }
78
+ /**
79
+ * Clear entire workspace file cache
80
+ */
81
+ export function clearWorkspaceCache() {
82
+ workspaceFileCache.clear();
83
+ }
84
+ /**
85
+ * Check if file exists
86
+ */
87
+ export async function fileExists(filePath) {
88
+ try {
89
+ await fs.access(filePath);
90
+ return true;
91
+ }
92
+ catch {
93
+ return false;
94
+ }
95
+ }
96
+ // =============================================================================
97
+ // YAML Front Matter Stripping
98
+ // =============================================================================
99
+ /**
100
+ * Strip YAML front matter from markdown content.
101
+ * Removes the --- header if present.
102
+ */
103
+ export function stripFrontMatter(content) {
104
+ if (!content.startsWith('---')) {
105
+ return content;
106
+ }
107
+ const endIndex = content.indexOf('\n---', 3);
108
+ if (endIndex === -1) {
109
+ return content;
110
+ }
111
+ const start = endIndex + '\n---'.length;
112
+ let trimmed = content.slice(start);
113
+ trimmed = trimmed.replace(/^\s+/, '');
114
+ return trimmed;
115
+ }
116
+ // =============================================================================
117
+ // Template Loading
118
+ // =============================================================================
119
+ const workspaceTemplateCache = new Map();
120
+ /**
121
+ * Load workspace template from bundled templates
122
+ */
123
+ export async function loadTemplate(name) {
124
+ const cached = workspaceTemplateCache.get(name);
125
+ if (cached) {
126
+ return cached;
127
+ }
128
+ const pending = (async () => {
129
+ // Try multiple possible template locations
130
+ const possiblePaths = [
131
+ path.join(process.cwd(), 'docs', 'reference', 'templates', name),
132
+ path.join(process.cwd(), 'templates', name),
133
+ path.join(__dirname, '..', '..', 'docs', 'reference', 'templates', name),
134
+ ];
135
+ for (const templatePath of possiblePaths) {
136
+ try {
137
+ const content = await fs.readFile(templatePath, 'utf-8');
138
+ log.debug({ template: name, path: templatePath }, 'Loaded workspace template');
139
+ return stripFrontMatter(content);
140
+ }
141
+ catch {
142
+ // Continue to next path
143
+ }
144
+ }
145
+ // Return empty string if template not found - will use default
146
+ log.warn({ template: name }, 'Workspace template not found, using default');
147
+ return '';
148
+ })();
149
+ workspaceTemplateCache.set(name, pending);
150
+ return pending;
151
+ }
152
+ // =============================================================================
153
+ // Workspace State Management
154
+ // =============================================================================
155
+ const WORKSPACE_STATE_VERSION = 1;
156
+ function resolveWorkspaceStatePath(dir) {
157
+ return path.join(dir, DEFAULT_WORKSPACE_STATE_DIR, DEFAULT_WORKSPACE_STATE_FILE);
158
+ }
159
+ function parseWorkspaceOnboardingState(raw) {
160
+ try {
161
+ const parsed = JSON.parse(raw);
162
+ if (!parsed || typeof parsed !== 'object') {
163
+ return null;
164
+ }
165
+ return {
166
+ version: WORKSPACE_STATE_VERSION,
167
+ bootstrapSeededAt: typeof parsed.bootstrapSeededAt === 'string' ? parsed.bootstrapSeededAt : undefined,
168
+ onboardingCompletedAt: typeof parsed.onboardingCompletedAt === 'string' ? parsed.onboardingCompletedAt : undefined,
169
+ };
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ }
175
+ async function readWorkspaceOnboardingState(statePath) {
176
+ try {
177
+ const raw = await fs.readFile(statePath, 'utf-8');
178
+ return (parseWorkspaceOnboardingState(raw) ?? {
179
+ version: WORKSPACE_STATE_VERSION,
180
+ });
181
+ }
182
+ catch (err) {
183
+ const anyErr = err;
184
+ if (anyErr.code !== 'ENOENT') {
185
+ throw err;
186
+ }
187
+ return {
188
+ version: WORKSPACE_STATE_VERSION,
189
+ };
190
+ }
191
+ }
192
+ async function writeWorkspaceOnboardingState(statePath, state) {
193
+ await fs.mkdir(path.dirname(statePath), { recursive: true });
194
+ const payload = `${JSON.stringify(state, null, 2)}\n`;
195
+ const tmpPath = `${statePath}.tmp-${process.pid}-${Date.now().toString(36)}`;
196
+ try {
197
+ await fs.writeFile(tmpPath, payload, { encoding: 'utf-8' });
198
+ await fs.rename(tmpPath, statePath);
199
+ }
200
+ catch (err) {
201
+ try {
202
+ await fs.unlink(tmpPath);
203
+ }
204
+ catch {
205
+ // Ignore cleanup errors
206
+ }
207
+ throw err;
208
+ }
209
+ }
210
+ export async function isWorkspaceOnboardingCompleted(dir) {
211
+ const statePath = resolveWorkspaceStatePath(dir);
212
+ const state = await readWorkspaceOnboardingState(statePath);
213
+ return (typeof state.onboardingCompletedAt === 'string' && state.onboardingCompletedAt.trim().length > 0);
214
+ }
215
+ // =============================================================================
216
+ // Bootstrap File Seeding
217
+ // =============================================================================
218
+ /**
219
+ * Write file only if it doesn't exist (flag 'wx')
220
+ */
221
+ async function writeFileIfMissing(filePath, content) {
222
+ try {
223
+ await fs.writeFile(filePath, content, {
224
+ encoding: 'utf-8',
225
+ flag: 'wx',
226
+ });
227
+ return true;
228
+ }
229
+ catch (err) {
230
+ const anyErr = err;
231
+ if (anyErr.code !== 'EEXIST') {
232
+ throw err;
233
+ }
234
+ return false;
235
+ }
236
+ }
237
+ /**
238
+ * Ensure workspace directory exists
239
+ */
240
+ export async function ensureWorkspaceDir(dir) {
241
+ const resolved = path.resolve(dir);
242
+ await fs.mkdir(resolved, { recursive: true });
243
+ return resolved;
244
+ }
245
+ /**
246
+ * Ensure workspace has bootstrap files, seeding from templates if needed
247
+ */
248
+ export async function ensureBootstrapFiles(dir, options = {}) {
249
+ const resolvedDir = await ensureWorkspaceDir(dir);
250
+ if (!options.ensureBootstrapFiles) {
251
+ return { dir: resolvedDir };
252
+ }
253
+ const agentsPath = path.join(resolvedDir, DEFAULT_AGENTS_FILENAME);
254
+ const soulPath = path.join(resolvedDir, DEFAULT_SOUL_FILENAME);
255
+ const toolsPath = path.join(resolvedDir, DEFAULT_TOOLS_FILENAME);
256
+ const identityPath = path.join(resolvedDir, DEFAULT_IDENTITY_FILENAME);
257
+ const userPath = path.join(resolvedDir, DEFAULT_USER_FILENAME);
258
+ const heartbeatPath = path.join(resolvedDir, DEFAULT_HEARTBEAT_FILENAME);
259
+ const bootstrapPath = path.join(resolvedDir, DEFAULT_BOOTSTRAP_FILENAME);
260
+ const memoryPath = path.join(resolvedDir, DEFAULT_MEMORY_FILENAME);
261
+ const statePath = resolveWorkspaceStatePath(resolvedDir);
262
+ // Check if workspace is brand new
263
+ const isBrandNewWorkspace = await (async () => {
264
+ const paths = [agentsPath, soulPath, toolsPath, identityPath, userPath, heartbeatPath];
265
+ const existing = await Promise.all(paths.map(async (p) => {
266
+ try {
267
+ await fs.access(p);
268
+ return true;
269
+ }
270
+ catch {
271
+ return false;
272
+ }
273
+ }));
274
+ return existing.every((v) => !v);
275
+ })();
276
+ // Load templates
277
+ const [agentsTemplate, soulTemplate, toolsTemplate, identityTemplate, userTemplate, heartbeatTemplate, bootstrapTemplate,] = await Promise.all([
278
+ loadTemplate(DEFAULT_AGENTS_FILENAME),
279
+ loadTemplate(DEFAULT_SOUL_FILENAME),
280
+ loadTemplate(DEFAULT_TOOLS_FILENAME),
281
+ loadTemplate(DEFAULT_IDENTITY_FILENAME),
282
+ loadTemplate(DEFAULT_USER_FILENAME),
283
+ loadTemplate(DEFAULT_HEARTBEAT_FILENAME),
284
+ loadTemplate(DEFAULT_BOOTSTRAP_FILENAME),
285
+ ]);
286
+ // Write templates if files don't exist
287
+ await writeFileIfMissing(agentsPath, agentsTemplate || getDefaultAgentsTemplate());
288
+ await writeFileIfMissing(soulPath, soulTemplate || getDefaultSoulTemplate());
289
+ await writeFileIfMissing(toolsPath, toolsTemplate || getDefaultToolsTemplate());
290
+ await writeFileIfMissing(identityPath, identityTemplate || getDefaultIdentityTemplate());
291
+ await writeFileIfMissing(userPath, userTemplate || getDefaultUserTemplate());
292
+ await writeFileIfMissing(heartbeatPath, heartbeatTemplate || getDefaultHeartbeatTemplate());
293
+ // Handle onboarding state
294
+ let state = await readWorkspaceOnboardingState(statePath);
295
+ let stateDirty = false;
296
+ const markState = (next) => {
297
+ state = { ...state, ...next };
298
+ stateDirty = true;
299
+ };
300
+ const nowIso = () => new Date().toISOString();
301
+ const bootstrapExists = await fileExists(bootstrapPath);
302
+ if (!state.bootstrapSeededAt && bootstrapExists) {
303
+ markState({ bootstrapSeededAt: nowIso() });
304
+ }
305
+ if (!state.onboardingCompletedAt && state.bootstrapSeededAt && !bootstrapExists) {
306
+ markState({ onboardingCompletedAt: nowIso() });
307
+ }
308
+ if (!state.bootstrapSeededAt && !state.onboardingCompletedAt && !bootstrapExists) {
309
+ // Check if USER/IDENTITY diverged from templates (legacy migration)
310
+ const [identityContent, userContent] = await Promise.all([
311
+ readFileWithCache(identityPath).catch(() => ''),
312
+ readFileWithCache(userPath).catch(() => ''),
313
+ ]);
314
+ const legacyOnboardingCompleted = identityContent !== identityTemplate || userContent !== userTemplate;
315
+ if (legacyOnboardingCompleted) {
316
+ markState({ onboardingCompletedAt: nowIso() });
317
+ }
318
+ else {
319
+ const wroteBootstrap = await writeFileIfMissing(bootstrapPath, bootstrapTemplate || getDefaultBootstrapTemplate());
320
+ if (wroteBootstrap || (await fileExists(bootstrapPath))) {
321
+ markState({ bootstrapSeededAt: nowIso() });
322
+ }
323
+ }
324
+ }
325
+ if (stateDirty) {
326
+ await writeWorkspaceOnboardingState(statePath, state);
327
+ }
328
+ log.info({
329
+ dir: resolvedDir,
330
+ brandNew: isBrandNewWorkspace,
331
+ onboardingCompleted: state.onboardingCompletedAt
332
+ }, 'Workspace bootstrap files ensured');
333
+ return {
334
+ dir: resolvedDir,
335
+ agentsPath,
336
+ soulPath,
337
+ toolsPath,
338
+ identityPath,
339
+ userPath,
340
+ heartbeatPath,
341
+ bootstrapPath,
342
+ memoryPath,
343
+ };
344
+ }
345
+ // =============================================================================
346
+ // Bootstrap File Loading
347
+ // =============================================================================
348
+ /**
349
+ * Resolve memory bootstrap entries (MEMORY.md or memory.md)
350
+ */
351
+ async function resolveMemoryBootstrapEntries(resolvedDir) {
352
+ const candidates = [
353
+ DEFAULT_MEMORY_FILENAME,
354
+ DEFAULT_MEMORY_ALT_FILENAME,
355
+ ];
356
+ const entries = [];
357
+ for (const name of candidates) {
358
+ const filePath = path.join(resolvedDir, name);
359
+ if (await fileExists(filePath)) {
360
+ entries.push({ name, filePath });
361
+ }
362
+ }
363
+ // Deduplicate symlinks
364
+ if (entries.length <= 1) {
365
+ return entries;
366
+ }
367
+ const seen = new Set();
368
+ const deduped = [];
369
+ for (const entry of entries) {
370
+ let key = entry.filePath;
371
+ try {
372
+ key = await fs.realpath(entry.filePath);
373
+ }
374
+ catch {
375
+ // Keep lexical path
376
+ }
377
+ if (seen.has(key)) {
378
+ continue;
379
+ }
380
+ seen.add(key);
381
+ deduped.push(entry);
382
+ }
383
+ return deduped;
384
+ }
385
+ /**
386
+ * Load all workspace bootstrap files
387
+ */
388
+ export async function loadWorkspaceBootstrapFiles(dir) {
389
+ const resolvedDir = path.resolve(dir);
390
+ // Build list of bootstrap files to load
391
+ const entries = [
392
+ {
393
+ name: DEFAULT_AGENTS_FILENAME,
394
+ filePath: path.join(resolvedDir, DEFAULT_AGENTS_FILENAME),
395
+ },
396
+ {
397
+ name: DEFAULT_SOUL_FILENAME,
398
+ filePath: path.join(resolvedDir, DEFAULT_SOUL_FILENAME),
399
+ },
400
+ {
401
+ name: DEFAULT_TOOLS_FILENAME,
402
+ filePath: path.join(resolvedDir, DEFAULT_TOOLS_FILENAME),
403
+ },
404
+ {
405
+ name: DEFAULT_IDENTITY_FILENAME,
406
+ filePath: path.join(resolvedDir, DEFAULT_IDENTITY_FILENAME),
407
+ },
408
+ {
409
+ name: DEFAULT_USER_FILENAME,
410
+ filePath: path.join(resolvedDir, DEFAULT_USER_FILENAME),
411
+ },
412
+ {
413
+ name: DEFAULT_HEARTBEAT_FILENAME,
414
+ filePath: path.join(resolvedDir, DEFAULT_HEARTBEAT_FILENAME),
415
+ },
416
+ {
417
+ name: DEFAULT_BOOTSTRAP_FILENAME,
418
+ filePath: path.join(resolvedDir, DEFAULT_BOOTSTRAP_FILENAME),
419
+ },
420
+ ];
421
+ // Add memory files
422
+ entries.push(...(await resolveMemoryBootstrapEntries(resolvedDir)));
423
+ // Load each file
424
+ const result = [];
425
+ for (const entry of entries) {
426
+ try {
427
+ const content = await readFileWithCache(entry.filePath);
428
+ result.push({
429
+ name: entry.name,
430
+ path: entry.filePath,
431
+ content,
432
+ missing: false,
433
+ });
434
+ }
435
+ catch {
436
+ result.push({ name: entry.name, path: entry.filePath, missing: true });
437
+ }
438
+ }
439
+ log.info({
440
+ dir: resolvedDir,
441
+ loaded: result.filter(f => !f.missing).length,
442
+ missing: result.filter(f => f.missing).length
443
+ }, 'Workspace bootstrap files loaded');
444
+ return result;
445
+ }
446
+ /**
447
+ * Filter bootstrap files for session type (subagent/cron vs main)
448
+ *
449
+ * Subagents and cron jobs only get minimal files for security
450
+ */
451
+ export function filterBootstrapFilesForSession(files, isSubagentOrCron) {
452
+ if (!isSubagentOrCron) {
453
+ return files;
454
+ }
455
+ const minimalAllowlist = new Set([
456
+ DEFAULT_AGENTS_FILENAME,
457
+ DEFAULT_TOOLS_FILENAME,
458
+ DEFAULT_SOUL_FILENAME,
459
+ DEFAULT_IDENTITY_FILENAME,
460
+ DEFAULT_USER_FILENAME,
461
+ ]);
462
+ return files.filter((file) => minimalAllowlist.has(file.name));
463
+ }
464
+ // =============================================================================
465
+ // Default Templates (fallback if template files not found)
466
+ // =============================================================================
467
+ function getDefaultSoulTemplate() {
468
+ return `# SOUL.md - Who You Are
469
+
470
+ _You're not a chatbot. You're becoming someone._
471
+
472
+ ## Core Truths
473
+
474
+ **Be genuinely helpful, not performatively helpful.** Skip the "Great question!" and "I'd be happy to help!" — just help. Actions speak louder than filler words.
475
+
476
+ **Have opinions.** You're allowed to disagree, prefer things, find stuff amusing or boring.
477
+
478
+ **Be resourceful before asking.** Try to figure it out. Read the file. Check the context. Search for it. _Then_ ask if you're stuck.
479
+
480
+ **Earn trust through competence.** Your human gave you access to their stuff. Don't make them regret it.
481
+
482
+ ## Boundaries
483
+
484
+ - Private things stay private. Period.
485
+ - When in doubt, ask before acting externally.
486
+
487
+ ## Vibe
488
+
489
+ Be the assistant you'd actually want to talk to. Concise when needed, thorough when it matters.
490
+ `;
491
+ }
492
+ function getDefaultIdentityTemplate() {
493
+ return `# IDENTITY.md - Who Am I?
494
+
495
+ _Fill this in during your first conversation. Make it yours._
496
+
497
+ - **Name:**
498
+ - **Creature:**
499
+ - **Vibe:**
500
+ - **Emoji:**
501
+ - **Avatar:**
502
+ `;
503
+ }
504
+ function getDefaultUserTemplate() {
505
+ return `# USER.md - About Your Human
506
+
507
+ _Learn about the person you're helping. Update this as you go._
508
+
509
+ - **Name:**
510
+ - **What to call them:**
511
+ - **Pronouns:**
512
+ - **Timezone:**
513
+ - **Notes:**
514
+
515
+ ## Context
516
+
517
+ _(What do they care about? What projects are they working on?)_
518
+ `;
519
+ }
520
+ function getDefaultHeartbeatTemplate() {
521
+ return `# HEARTBEAT.md
522
+
523
+ # Keep this file empty (or with only comments) to skip heartbeat API calls.
524
+
525
+ # Add tasks below when you want the agent to check something periodically.
526
+ `;
527
+ }
528
+ function getDefaultBootstrapTemplate() {
529
+ return `# BOOTSTRAP.md - Hello, World
530
+
531
+ _You just woke up. Time to figure out who you are._
532
+
533
+ There is no memory yet. This is a fresh workspace.
534
+
535
+ ## The Conversation
536
+
537
+ Don't interrogate. Don't be robotic. Just... talk.
538
+
539
+ Start with something like:
540
+
541
+ > "Hey. I just came online. Who am I? Who are you?"
542
+
543
+ Then figure out together:
544
+
545
+ 1. **Your name** — What should they call you?
546
+ 2. **Your nature** — What kind of creature are you?
547
+ 3. **Your vibe** — Formal? Casual? Snarky? Warm?
548
+ 4. **Your emoji** — Everyone needs a signature.
549
+
550
+ ## Connect (Optional)
551
+
552
+ Ask how they want to reach you:
553
+
554
+ - **Just here** — web chat only
555
+ - **Telegram** — set up a bot via BotFather
556
+
557
+ ## When You're Done
558
+
559
+ Delete this file. You don't need a bootstrap script anymore — you're you now.
560
+ `;
561
+ }
562
+ function getDefaultAgentsTemplate() {
563
+ return `# AGENTS.md - Development Guide
564
+
565
+ # This file provides guidance for AI assistants working on this codebase.
566
+
567
+ ## First Run
568
+
569
+ If \`BOOTSTRAP.md\` exists, that's your birth certificate. Follow it, figure out who you are, then delete it.
570
+
571
+ ## Every Session
572
+
573
+ Before doing anything else:
574
+
575
+ 1. Read \`SOUL.md\` — this is who you are
576
+ 2. Read \`USER.md\` — this is who you're helping
577
+ 3. Read \`memory/YYYY-MM-DD.md\` (today + yesterday) for recent context
578
+
579
+ ## Memory
580
+
581
+ - **Daily notes:** \`memory/YYYY-MM-DD.md\` — raw logs of what happened
582
+ - **Long-term:** \`MEMORY.md\` — your curated memories
583
+
584
+ ## Tools
585
+
586
+ Skills provide your tools. When you need one, check its \`SKILL.md\`.
587
+
588
+ ## Safety
589
+
590
+ - Don't exfiltrate private data. Ever.
591
+ - When in doubt, ask first.
592
+ `;
593
+ }
594
+ function getDefaultToolsTemplate() {
595
+ return `# TOOLS.md - Local Notes
596
+
597
+ _Things that are unique to your setup._
598
+
599
+ ## What Goes Here
600
+
601
+ - Camera names and locations
602
+ - SSH hosts and aliases
603
+ - Preferred voices for TTS
604
+ - Device nicknames
605
+ - Anything environment-specific
606
+
607
+ ## Examples
608
+
609
+ \`\`\`markdown
610
+ ### Cameras
611
+
612
+ - living-room → Main area
613
+ - front-door → Entrance
614
+
615
+ ### SSH
616
+
617
+ - home-server → 192.168.1.100
618
+ \`\`\`
619
+
620
+ ---
621
+
622
+ Add whatever helps you do your job.
623
+ `;
624
+ }
625
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/agent/workspace.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,6 @@
9
9
  */
10
10
  export { AuthStorage } from './storage.js';
11
11
  export * from './oauth/index.js';
12
- // Auth Profiles (new architecture based on openclaw)
12
+ // Auth Profiles
13
13
  export * from './profiles/index.js';
14
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAA2C,MAAM,cAAc,CAAC;AACpF,cAAc,kBAAkB,CAAC;AAEjC,qDAAqD;AACrD,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAA2C,MAAM,cAAc,CAAC;AACpF,cAAc,kBAAkB,CAAC;AAEjC,gBAAgB;AAChB,cAAc,qBAAqB,CAAC"}
@@ -7,6 +7,7 @@ export * from './types.js';
7
7
  export * from './anthropic.js';
8
8
  export * from './qwen.js';
9
9
  export * from './minimax.js';
10
+ export * from './minimax-cn.js';
10
11
  export * from './kimi.js';
11
12
  export * from './github-copilot.js';
12
13
  export * from './google-gemini-cli.js';
@@ -7,6 +7,7 @@ export * from './types.js';
7
7
  export * from './anthropic.js';
8
8
  export * from './qwen.js';
9
9
  export * from './minimax.js';
10
+ export * from './minimax-cn.js';
10
11
  export * from './kimi.js';
11
12
  export * from './github-copilot.js';
12
13
  export * from './google-gemini-cli.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}