agent-world 0.13.0 → 0.15.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 (263) hide show
  1. package/README.md +90 -17
  2. package/dist/cli/commands.d.ts +7 -1
  3. package/dist/cli/commands.js +27 -10
  4. package/dist/cli/hitl.d.ts +4 -1
  5. package/dist/cli/hitl.js +55 -20
  6. package/dist/cli/index.js +249 -97
  7. package/dist/cli/system-events.d.ts +27 -0
  8. package/dist/cli/system-events.js +63 -0
  9. package/dist/core/activity-tracker.d.ts +26 -0
  10. package/dist/core/activity-tracker.d.ts.map +1 -1
  11. package/dist/core/activity-tracker.js +21 -4
  12. package/dist/core/activity-tracker.js.map +1 -1
  13. package/dist/core/anthropic-direct.d.ts +2 -0
  14. package/dist/core/anthropic-direct.d.ts.map +1 -1
  15. package/dist/core/anthropic-direct.js +43 -1
  16. package/dist/core/anthropic-direct.js.map +1 -1
  17. package/dist/core/chat-constants.d.ts +12 -0
  18. package/dist/core/chat-constants.d.ts.map +1 -1
  19. package/dist/core/chat-constants.js +5 -0
  20. package/dist/core/chat-constants.js.map +1 -1
  21. package/dist/core/create-agent-tool.d.ts +5 -0
  22. package/dist/core/create-agent-tool.d.ts.map +1 -1
  23. package/dist/core/create-agent-tool.js +57 -34
  24. package/dist/core/create-agent-tool.js.map +1 -1
  25. package/dist/core/events/index.d.ts +5 -2
  26. package/dist/core/events/index.d.ts.map +1 -1
  27. package/dist/core/events/index.js +5 -2
  28. package/dist/core/events/index.js.map +1 -1
  29. package/dist/core/events/memory-manager.d.ts +26 -1
  30. package/dist/core/events/memory-manager.d.ts.map +1 -1
  31. package/dist/core/events/memory-manager.js +877 -72
  32. package/dist/core/events/memory-manager.js.map +1 -1
  33. package/dist/core/events/orchestrator.d.ts +8 -0
  34. package/dist/core/events/orchestrator.d.ts.map +1 -1
  35. package/dist/core/events/orchestrator.js +203 -36
  36. package/dist/core/events/orchestrator.js.map +1 -1
  37. package/dist/core/events/persistence.d.ts +21 -14
  38. package/dist/core/events/persistence.d.ts.map +1 -1
  39. package/dist/core/events/persistence.js +100 -35
  40. package/dist/core/events/persistence.js.map +1 -1
  41. package/dist/core/events/publishers.d.ts +13 -7
  42. package/dist/core/events/publishers.d.ts.map +1 -1
  43. package/dist/core/events/publishers.js +53 -37
  44. package/dist/core/events/publishers.js.map +1 -1
  45. package/dist/core/events/subscribers.d.ts +17 -14
  46. package/dist/core/events/subscribers.d.ts.map +1 -1
  47. package/dist/core/events/subscribers.js +61 -148
  48. package/dist/core/events/subscribers.js.map +1 -1
  49. package/dist/core/events/title-scheduler.d.ts +27 -0
  50. package/dist/core/events/title-scheduler.d.ts.map +1 -0
  51. package/dist/core/events/title-scheduler.js +135 -0
  52. package/dist/core/events/title-scheduler.js.map +1 -0
  53. package/dist/core/events/tool-bridge-logging.d.ts +4 -1
  54. package/dist/core/events/tool-bridge-logging.d.ts.map +1 -1
  55. package/dist/core/events/tool-bridge-logging.js +112 -13
  56. package/dist/core/events/tool-bridge-logging.js.map +1 -1
  57. package/dist/core/events-metadata.d.ts.map +1 -1
  58. package/dist/core/events-metadata.js +8 -4
  59. package/dist/core/events-metadata.js.map +1 -1
  60. package/dist/core/export.d.ts +1 -1
  61. package/dist/core/export.d.ts.map +1 -1
  62. package/dist/core/export.js +2 -15
  63. package/dist/core/export.js.map +1 -1
  64. package/dist/core/feature-path-logging.d.ts +50 -0
  65. package/dist/core/feature-path-logging.d.ts.map +1 -0
  66. package/dist/core/feature-path-logging.js +130 -0
  67. package/dist/core/feature-path-logging.js.map +1 -0
  68. package/dist/core/file-tools.d.ts +57 -1
  69. package/dist/core/file-tools.d.ts.map +1 -1
  70. package/dist/core/file-tools.js +329 -29
  71. package/dist/core/file-tools.js.map +1 -1
  72. package/dist/core/google-direct.d.ts +6 -1
  73. package/dist/core/google-direct.d.ts.map +1 -1
  74. package/dist/core/google-direct.js +76 -7
  75. package/dist/core/google-direct.js.map +1 -1
  76. package/dist/core/heartbeat.d.ts +34 -0
  77. package/dist/core/heartbeat.d.ts.map +1 -0
  78. package/dist/core/heartbeat.js +153 -0
  79. package/dist/core/heartbeat.js.map +1 -0
  80. package/dist/core/hitl-tool.d.ts +6 -12
  81. package/dist/core/hitl-tool.d.ts.map +1 -1
  82. package/dist/core/hitl-tool.js +66 -88
  83. package/dist/core/hitl-tool.js.map +1 -1
  84. package/dist/core/hitl.d.ts +61 -4
  85. package/dist/core/hitl.d.ts.map +1 -1
  86. package/dist/core/hitl.js +324 -60
  87. package/dist/core/hitl.js.map +1 -1
  88. package/dist/core/index.d.ts +11 -7
  89. package/dist/core/index.d.ts.map +1 -1
  90. package/dist/core/index.js +10 -6
  91. package/dist/core/index.js.map +1 -1
  92. package/dist/core/llm-manager.d.ts +15 -0
  93. package/dist/core/llm-manager.d.ts.map +1 -1
  94. package/dist/core/llm-manager.js +325 -40
  95. package/dist/core/llm-manager.js.map +1 -1
  96. package/dist/core/load-skill-tool.d.ts +36 -3
  97. package/dist/core/load-skill-tool.d.ts.map +1 -1
  98. package/dist/core/load-skill-tool.js +807 -93
  99. package/dist/core/load-skill-tool.js.map +1 -1
  100. package/dist/core/logger.d.ts +14 -0
  101. package/dist/core/logger.d.ts.map +1 -1
  102. package/dist/core/logger.js +15 -0
  103. package/dist/core/logger.js.map +1 -1
  104. package/dist/core/managers.d.ts +18 -50
  105. package/dist/core/managers.d.ts.map +1 -1
  106. package/dist/core/managers.js +340 -502
  107. package/dist/core/managers.js.map +1 -1
  108. package/dist/core/mcp-server-registry.d.ts +16 -1
  109. package/dist/core/mcp-server-registry.d.ts.map +1 -1
  110. package/dist/core/mcp-server-registry.js +162 -12
  111. package/dist/core/mcp-server-registry.js.map +1 -1
  112. package/dist/core/message-cutoff.d.ts +29 -0
  113. package/dist/core/message-cutoff.d.ts.map +1 -0
  114. package/dist/core/message-cutoff.js +63 -0
  115. package/dist/core/message-cutoff.js.map +1 -0
  116. package/dist/core/message-edit-manager.d.ts +54 -0
  117. package/dist/core/message-edit-manager.d.ts.map +1 -0
  118. package/dist/core/message-edit-manager.js +602 -0
  119. package/dist/core/message-edit-manager.js.map +1 -0
  120. package/dist/core/message-prep.d.ts +2 -0
  121. package/dist/core/message-prep.d.ts.map +1 -1
  122. package/dist/core/message-prep.js +39 -12
  123. package/dist/core/message-prep.js.map +1 -1
  124. package/dist/core/message-processing-control.d.ts +1 -0
  125. package/dist/core/message-processing-control.d.ts.map +1 -1
  126. package/dist/core/message-processing-control.js +23 -6
  127. package/dist/core/message-processing-control.js.map +1 -1
  128. package/dist/core/openai-direct.d.ts +9 -3
  129. package/dist/core/openai-direct.d.ts.map +1 -1
  130. package/dist/core/openai-direct.js +267 -33
  131. package/dist/core/openai-direct.js.map +1 -1
  132. package/dist/core/optional-tracers/opik-runtime.d.ts +32 -0
  133. package/dist/core/optional-tracers/opik-runtime.d.ts.map +1 -0
  134. package/dist/core/optional-tracers/opik-runtime.js +141 -0
  135. package/dist/core/optional-tracers/opik-runtime.js.map +1 -0
  136. package/dist/core/queue-manager.d.ts +84 -0
  137. package/dist/core/queue-manager.d.ts.map +1 -0
  138. package/dist/core/queue-manager.js +814 -0
  139. package/dist/core/queue-manager.js.map +1 -0
  140. package/dist/core/reasoning-controls.d.ts +30 -0
  141. package/dist/core/reasoning-controls.d.ts.map +1 -0
  142. package/dist/core/reasoning-controls.js +118 -0
  143. package/dist/core/reasoning-controls.js.map +1 -0
  144. package/dist/core/reliability-config.d.ts +82 -0
  145. package/dist/core/reliability-config.d.ts.map +1 -0
  146. package/dist/core/reliability-config.js +106 -0
  147. package/dist/core/reliability-config.js.map +1 -0
  148. package/dist/core/reliability-runtime.d.ts +53 -0
  149. package/dist/core/reliability-runtime.d.ts.map +1 -0
  150. package/dist/core/reliability-runtime.js +92 -0
  151. package/dist/core/reliability-runtime.js.map +1 -0
  152. package/dist/core/security/guardrails.d.ts +21 -0
  153. package/dist/core/security/guardrails.d.ts.map +1 -0
  154. package/dist/core/security/guardrails.js +111 -0
  155. package/dist/core/security/guardrails.js.map +1 -0
  156. package/dist/core/send-message-tool.d.ts +79 -0
  157. package/dist/core/send-message-tool.d.ts.map +1 -0
  158. package/dist/core/send-message-tool.js +222 -0
  159. package/dist/core/send-message-tool.js.map +1 -0
  160. package/dist/core/shell-cmd-tool.d.ts +82 -1
  161. package/dist/core/shell-cmd-tool.d.ts.map +1 -1
  162. package/dist/core/shell-cmd-tool.js +854 -42
  163. package/dist/core/shell-cmd-tool.js.map +1 -1
  164. package/dist/core/skill-registry.d.ts +2 -0
  165. package/dist/core/skill-registry.d.ts.map +1 -1
  166. package/dist/core/skill-registry.js +52 -2
  167. package/dist/core/skill-registry.js.map +1 -1
  168. package/dist/core/storage/eventStorage/fileEventStorage.d.ts +5 -0
  169. package/dist/core/storage/eventStorage/fileEventStorage.d.ts.map +1 -1
  170. package/dist/core/storage/eventStorage/fileEventStorage.js +61 -0
  171. package/dist/core/storage/eventStorage/fileEventStorage.js.map +1 -1
  172. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts +5 -0
  173. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts.map +1 -1
  174. package/dist/core/storage/eventStorage/memoryEventStorage.js +34 -0
  175. package/dist/core/storage/eventStorage/memoryEventStorage.js.map +1 -1
  176. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts +1 -0
  177. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts.map +1 -1
  178. package/dist/core/storage/eventStorage/sqliteEventStorage.js +19 -2
  179. package/dist/core/storage/eventStorage/sqliteEventStorage.js.map +1 -1
  180. package/dist/core/storage/eventStorage/types.d.ts +6 -0
  181. package/dist/core/storage/eventStorage/types.d.ts.map +1 -1
  182. package/dist/core/storage/eventStorage/types.js +1 -0
  183. package/dist/core/storage/eventStorage/types.js.map +1 -1
  184. package/dist/core/storage/eventStorage/validation.d.ts.map +1 -1
  185. package/dist/core/storage/eventStorage/validation.js +2 -1
  186. package/dist/core/storage/eventStorage/validation.js.map +1 -1
  187. package/dist/core/storage/github-world-import.d.ts +84 -0
  188. package/dist/core/storage/github-world-import.d.ts.map +1 -0
  189. package/dist/core/storage/github-world-import.js +365 -0
  190. package/dist/core/storage/github-world-import.js.map +1 -0
  191. package/dist/core/storage/memory-storage.d.ts +19 -8
  192. package/dist/core/storage/memory-storage.d.ts.map +1 -1
  193. package/dist/core/storage/memory-storage.js +147 -49
  194. package/dist/core/storage/memory-storage.js.map +1 -1
  195. package/dist/core/storage/queue-storage.d.ts +1 -0
  196. package/dist/core/storage/queue-storage.d.ts.map +1 -1
  197. package/dist/core/storage/queue-storage.js +3 -2
  198. package/dist/core/storage/queue-storage.js.map +1 -1
  199. package/dist/core/storage/sqlite-storage.d.ts +14 -9
  200. package/dist/core/storage/sqlite-storage.d.ts.map +1 -1
  201. package/dist/core/storage/sqlite-storage.js +131 -154
  202. package/dist/core/storage/sqlite-storage.js.map +1 -1
  203. package/dist/core/storage/storage-factory.d.ts +3 -0
  204. package/dist/core/storage/storage-factory.d.ts.map +1 -1
  205. package/dist/core/storage/storage-factory.js +175 -89
  206. package/dist/core/storage/storage-factory.js.map +1 -1
  207. package/dist/core/storage/world-storage.d.ts +1 -1
  208. package/dist/core/storage/world-storage.d.ts.map +1 -1
  209. package/dist/core/storage/world-storage.js +5 -1
  210. package/dist/core/storage/world-storage.js.map +1 -1
  211. package/dist/core/storage-init.d.ts +11 -0
  212. package/dist/core/storage-init.d.ts.map +1 -0
  213. package/dist/core/storage-init.js +122 -0
  214. package/dist/core/storage-init.js.map +1 -0
  215. package/dist/core/subscription.d.ts +8 -1
  216. package/dist/core/subscription.d.ts.map +1 -1
  217. package/dist/core/subscription.js +130 -23
  218. package/dist/core/subscription.js.map +1 -1
  219. package/dist/core/tool-approval.d.ts +45 -0
  220. package/dist/core/tool-approval.d.ts.map +1 -0
  221. package/dist/core/tool-approval.js +223 -0
  222. package/dist/core/tool-approval.js.map +1 -0
  223. package/dist/core/tool-execution-envelope.d.ts +87 -0
  224. package/dist/core/tool-execution-envelope.d.ts.map +1 -0
  225. package/dist/core/tool-execution-envelope.js +168 -0
  226. package/dist/core/tool-execution-envelope.js.map +1 -0
  227. package/dist/core/tool-utils.d.ts +7 -2
  228. package/dist/core/tool-utils.d.ts.map +1 -1
  229. package/dist/core/tool-utils.js +81 -17
  230. package/dist/core/tool-utils.js.map +1 -1
  231. package/dist/core/types.d.ts +67 -19
  232. package/dist/core/types.d.ts.map +1 -1
  233. package/dist/core/types.js +3 -0
  234. package/dist/core/types.js.map +1 -1
  235. package/dist/core/utils.d.ts +7 -0
  236. package/dist/core/utils.d.ts.map +1 -1
  237. package/dist/core/utils.js +71 -21
  238. package/dist/core/utils.js.map +1 -1
  239. package/dist/core/web-fetch-tool.d.ts +72 -0
  240. package/dist/core/web-fetch-tool.d.ts.map +1 -0
  241. package/dist/core/web-fetch-tool.js +491 -0
  242. package/dist/core/web-fetch-tool.js.map +1 -0
  243. package/dist/core/world-registry.d.ts +84 -0
  244. package/dist/core/world-registry.d.ts.map +1 -0
  245. package/dist/core/world-registry.js +247 -0
  246. package/dist/core/world-registry.js.map +1 -0
  247. package/dist/public/assets/index-Be-1xtV-.js +104 -0
  248. package/dist/public/assets/index-tsDdiXDU.css +1 -0
  249. package/dist/public/index.html +2 -2
  250. package/dist/public/mcp-sandbox-proxy.html +148 -0
  251. package/dist/server/api.js +260 -18
  252. package/dist/server/error-response.d.ts +27 -0
  253. package/dist/server/error-response.js +77 -0
  254. package/dist/server/index.d.ts +2 -1
  255. package/dist/server/index.js +6 -2
  256. package/dist/server/sse-handler.d.ts +11 -1
  257. package/dist/server/sse-handler.js +194 -34
  258. package/migrations/0015_add_message_queue.sql +36 -0
  259. package/migrations/0016_add_world_heartbeat.sql +13 -0
  260. package/migrations/0017_add_title_provenance.sql +7 -0
  261. package/package.json +31 -10
  262. package/dist/public/assets/index-BW41BxMy.css +0 -1
  263. package/dist/public/assets/index-kO6UJFwK.js +0 -96
@@ -0,0 +1,365 @@
1
+ /**
2
+ * GitHub World Import Utilities
3
+ *
4
+ * Purpose:
5
+ * - Resolve supported GitHub shorthand world sources for import flows.
6
+ * - Safely fetch and stage remote world folders into a temporary local directory.
7
+ *
8
+ * Key Features:
9
+ * - Supports legacy `@awesome-agent-world/<world-name>` world shorthand mapping.
10
+ * - Requires explicit `owner/repo` input for generic GitHub repo imports.
11
+ * - Enforces strict alias allowlist and world-path derivation.
12
+ * - Applies safety checks for unsupported entry types and unsafe paths.
13
+ * - Enforces bounded file-count and byte limits during staging.
14
+ * - Returns source metadata including commit SHA when available.
15
+ *
16
+ * Implementation Notes:
17
+ * - Uses GitHub REST contents API with recursive traversal.
18
+ * - Treats remote content as untrusted and validates every staged path.
19
+ * - Uses temp directories and explicit cleanup callbacks.
20
+ *
21
+ * Recent Changes:
22
+ * - 2026-02-25: Added shorthand resolver and secure GitHub staging for world import.
23
+ */
24
+ import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
25
+ import * as os from 'node:os';
26
+ import * as path from 'node:path';
27
+ const GITHUB_API_BASE = 'https://api.github.com';
28
+ const DEFAULT_BRANCH = 'main';
29
+ const DEFAULT_REQUEST_TIMEOUT_MS = 15_000;
30
+ const DEFAULT_MAX_FILE_COUNT = 5_000;
31
+ const DEFAULT_MAX_TOTAL_BYTES = 50 * 1024 * 1024;
32
+ const ALLOWED_ALIAS_MAPPINGS = [
33
+ {
34
+ alias: 'awesome-agent-world',
35
+ owner: 'yysun',
36
+ repo: 'awesome-agent-world',
37
+ branch: DEFAULT_BRANCH
38
+ }
39
+ ];
40
+ export class GitHubWorldImportError extends Error {
41
+ code;
42
+ details;
43
+ constructor(code, message, details) {
44
+ super(message);
45
+ this.name = 'GitHubWorldImportError';
46
+ this.code = code;
47
+ this.details = details;
48
+ }
49
+ }
50
+ function sanitizeWorldName(worldName) {
51
+ return worldName.trim();
52
+ }
53
+ function encodeGithubPathSegments(value) {
54
+ return value
55
+ .split('/')
56
+ .filter(Boolean)
57
+ .map((segment) => encodeURIComponent(segment))
58
+ .join('/');
59
+ }
60
+ function getAbortSignal(timeoutMs) {
61
+ if (typeof AbortSignal.timeout === 'function') {
62
+ return AbortSignal.timeout(timeoutMs);
63
+ }
64
+ const controller = new AbortController();
65
+ setTimeout(() => controller.abort(), timeoutMs);
66
+ return controller.signal;
67
+ }
68
+ async function fetchJson(url, timeoutMs) {
69
+ try {
70
+ return await fetch(url, {
71
+ headers: {
72
+ Accept: 'application/vnd.github+json',
73
+ 'User-Agent': 'agent-world-import'
74
+ },
75
+ signal: getAbortSignal(timeoutMs)
76
+ });
77
+ }
78
+ catch (error) {
79
+ const err = error;
80
+ throw new GitHubWorldImportError('fetch-failed', `Failed to fetch GitHub source: ${err.message || 'Unknown network error'}`, { url });
81
+ }
82
+ }
83
+ async function fetchCommitSha(owner, repo, branch, timeoutMs) {
84
+ const url = `${GITHUB_API_BASE}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/commits/${encodeURIComponent(branch)}`;
85
+ const response = await fetchJson(url, timeoutMs);
86
+ if (!response.ok) {
87
+ return null;
88
+ }
89
+ const data = await response.json();
90
+ return typeof data.sha === 'string' && data.sha ? data.sha : null;
91
+ }
92
+ function normalizeRelativePath(worldPath, fullPath) {
93
+ const prefix = `${worldPath}/`;
94
+ if (fullPath === worldPath) {
95
+ return '';
96
+ }
97
+ if (!fullPath.startsWith(prefix)) {
98
+ throw new GitHubWorldImportError('unsafe-path', 'Fetched file path does not match resolved world path.', {
99
+ fullPath,
100
+ worldPath
101
+ });
102
+ }
103
+ return fullPath.slice(prefix.length);
104
+ }
105
+ export function ensureSafeRelativePath(relativePath) {
106
+ const normalized = relativePath.replace(/\\/g, '/').trim();
107
+ if (!normalized) {
108
+ throw new GitHubWorldImportError('unsafe-path', 'Fetched path is empty.');
109
+ }
110
+ if (path.isAbsolute(normalized)) {
111
+ throw new GitHubWorldImportError('unsafe-path', 'Absolute paths are not allowed in fetched world content.', {
112
+ relativePath
113
+ });
114
+ }
115
+ const segments = normalized.split('/');
116
+ if (segments.some((segment) => !segment || segment === '.' || segment === '..')) {
117
+ throw new GitHubWorldImportError('unsafe-path', 'Fetched content contains unsupported path segments.', {
118
+ relativePath
119
+ });
120
+ }
121
+ return normalized;
122
+ }
123
+ async function listGithubFilesRecursively(owner, repo, branch, directoryPath, timeoutMs, collector) {
124
+ const encodedPath = encodeGithubPathSegments(directoryPath);
125
+ const url = `${GITHUB_API_BASE}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/contents/${encodedPath}?ref=${encodeURIComponent(branch)}`;
126
+ const response = await fetchJson(url, timeoutMs);
127
+ if (response.status === 404) {
128
+ throw new GitHubWorldImportError('source-not-found', `GitHub world path not found: ${owner}/${repo}/${directoryPath}@${branch}`, {
129
+ owner,
130
+ repo,
131
+ branch,
132
+ worldPath: directoryPath
133
+ });
134
+ }
135
+ if (!response.ok) {
136
+ throw new GitHubWorldImportError('fetch-failed', `GitHub responded with ${response.status} while listing world path.`, {
137
+ owner,
138
+ repo,
139
+ branch,
140
+ worldPath: directoryPath,
141
+ status: response.status
142
+ });
143
+ }
144
+ const payload = await response.json();
145
+ const entries = Array.isArray(payload) ? payload : [payload];
146
+ for (const entry of entries) {
147
+ if (entry.type === 'dir') {
148
+ await listGithubFilesRecursively(owner, repo, branch, entry.path, timeoutMs, collector);
149
+ continue;
150
+ }
151
+ if (entry.type === 'file') {
152
+ collector.push(entry);
153
+ continue;
154
+ }
155
+ throw new GitHubWorldImportError('unsupported-entry-type', `Unsupported GitHub entry type '${entry.type}' in world source.`, {
156
+ entryType: entry.type,
157
+ path: entry.path
158
+ });
159
+ }
160
+ }
161
+ async function downloadFileBytes(url, timeoutMs) {
162
+ try {
163
+ const response = await fetch(url, {
164
+ headers: {
165
+ 'User-Agent': 'agent-world-import'
166
+ },
167
+ signal: getAbortSignal(timeoutMs)
168
+ });
169
+ if (!response.ok) {
170
+ throw new GitHubWorldImportError('fetch-failed', `GitHub file download failed with status ${response.status}.`, {
171
+ url,
172
+ status: response.status
173
+ });
174
+ }
175
+ const arrayBuffer = await response.arrayBuffer();
176
+ return new Uint8Array(arrayBuffer);
177
+ }
178
+ catch (error) {
179
+ if (error instanceof GitHubWorldImportError) {
180
+ throw error;
181
+ }
182
+ const err = error;
183
+ throw new GitHubWorldImportError('fetch-failed', `Failed to download GitHub file: ${err.message || 'Unknown error'}`, { url });
184
+ }
185
+ }
186
+ export function resolveGitHubWorldShorthand(source) {
187
+ const trimmed = String(source || '').trim();
188
+ const match = trimmed.match(/^@([^/\s]+)\/([^/\s]+)$/);
189
+ if (!match) {
190
+ throw new GitHubWorldImportError('invalid-shorthand', "GitHub world shorthand must use format '@<repo-alias>/<world-name>'.", { source: trimmed });
191
+ }
192
+ const alias = String(match[1] || '').trim();
193
+ const worldName = sanitizeWorldName(String(match[2] || ''));
194
+ if (!alias || !worldName) {
195
+ throw new GitHubWorldImportError('invalid-shorthand', 'GitHub world shorthand must include alias and world name.', {
196
+ source: trimmed
197
+ });
198
+ }
199
+ const mapping = ALLOWED_ALIAS_MAPPINGS.find((item) => item.alias === alias);
200
+ if (!mapping) {
201
+ throw new GitHubWorldImportError('unsupported-alias', `Unsupported GitHub shorthand alias '${alias}'. Supported alias: @awesome-agent-world/<world-name>.`, { alias });
202
+ }
203
+ return {
204
+ shorthand: trimmed,
205
+ alias,
206
+ worldName,
207
+ owner: mapping.owner,
208
+ repo: mapping.repo,
209
+ branch: mapping.branch,
210
+ worldPath: `data/worlds/${worldName}`
211
+ };
212
+ }
213
+ export function resolveGitHubRepoSource(repoInput) {
214
+ const trimmed = String(repoInput || '').trim();
215
+ if (!trimmed) {
216
+ throw new GitHubWorldImportError('invalid-shorthand', 'GitHub repo is required.', {
217
+ repoInput: trimmed,
218
+ });
219
+ }
220
+ const withoutScheme = trimmed.replace(/^https?:\/\/github\.com\//i, '');
221
+ const [repoPart, branchPart] = withoutScheme.split('#', 2);
222
+ const normalizedRepoPart = String(repoPart || '').trim().replace(/^\/+|\/+$/g, '');
223
+ const requestedBranch = String(branchPart || '').trim();
224
+ if (!normalizedRepoPart) {
225
+ throw new GitHubWorldImportError('invalid-shorthand', 'GitHub repo is required.', {
226
+ repoInput: trimmed,
227
+ });
228
+ }
229
+ const directMatch = normalizedRepoPart.match(/^([^/\s]+)\/([^/\s]+)$/);
230
+ if (directMatch) {
231
+ return {
232
+ repoInput: trimmed,
233
+ owner: String(directMatch[1] || '').trim(),
234
+ repo: String(directMatch[2] || '').trim(),
235
+ branch: requestedBranch || DEFAULT_BRANCH,
236
+ };
237
+ }
238
+ throw new GitHubWorldImportError('unsupported-alias', `Unsupported GitHub repo '${trimmed}'. Use explicit 'owner/repo' syntax.`, { repoInput: trimmed });
239
+ }
240
+ export async function stageGitHubFolderFromRepo(repoInput, folderPath, options = {}) {
241
+ const maxFileCount = Number.isFinite(options.maxFileCount) ? Math.max(1, Number(options.maxFileCount)) : DEFAULT_MAX_FILE_COUNT;
242
+ const maxTotalBytes = Number.isFinite(options.maxTotalBytes) ? Math.max(1, Number(options.maxTotalBytes)) : DEFAULT_MAX_TOTAL_BYTES;
243
+ const requestTimeoutMs = Number.isFinite(options.requestTimeoutMs)
244
+ ? Math.max(1, Number(options.requestTimeoutMs))
245
+ : DEFAULT_REQUEST_TIMEOUT_MS;
246
+ const tempPrefix = String(options.tempPrefix || 'agent-world-github-import-');
247
+ const resolvedRepo = resolveGitHubRepoSource(repoInput);
248
+ const normalizedFolderPath = String(folderPath || '').trim().replace(/^\/+|\/+$/g, '');
249
+ if (!normalizedFolderPath) {
250
+ throw new GitHubWorldImportError('invalid-shorthand', 'GitHub folder path is required.', {
251
+ repoInput,
252
+ folderPath,
253
+ });
254
+ }
255
+ ensureSafeRelativePath(normalizedFolderPath);
256
+ const requestedFolderName = String(options.folderName || path.basename(normalizedFolderPath)).trim();
257
+ const folderName = requestedFolderName || path.basename(normalizedFolderPath);
258
+ if (!folderName) {
259
+ throw new GitHubWorldImportError('invalid-shorthand', 'GitHub folder name is required.', {
260
+ repoInput,
261
+ folderPath: normalizedFolderPath,
262
+ });
263
+ }
264
+ const stagingRootPath = await mkdtemp(path.join(os.tmpdir(), tempPrefix));
265
+ const stagedFolderPath = path.join(stagingRootPath, folderName);
266
+ const stagedFolderRealPath = path.resolve(stagedFolderPath);
267
+ const cleanup = async () => {
268
+ await rm(stagingRootPath, { recursive: true, force: true });
269
+ };
270
+ let totalBytes = 0;
271
+ try {
272
+ const commitSha = await fetchCommitSha(resolvedRepo.owner, resolvedRepo.repo, resolvedRepo.branch, requestTimeoutMs);
273
+ const files = [];
274
+ await listGithubFilesRecursively(resolvedRepo.owner, resolvedRepo.repo, resolvedRepo.branch, normalizedFolderPath, requestTimeoutMs, files);
275
+ if (files.length === 0) {
276
+ throw new GitHubWorldImportError('source-not-found', `No files were found in GitHub path '${normalizedFolderPath}'.`, {
277
+ owner: resolvedRepo.owner,
278
+ repo: resolvedRepo.repo,
279
+ branch: resolvedRepo.branch,
280
+ folderPath: normalizedFolderPath,
281
+ });
282
+ }
283
+ if (files.length > maxFileCount) {
284
+ throw new GitHubWorldImportError('limits-exceeded', `GitHub source exceeds file-count limit (${files.length}/${maxFileCount}).`, {
285
+ fileCount: files.length,
286
+ maxFileCount,
287
+ });
288
+ }
289
+ for (const fileEntry of files) {
290
+ if (!fileEntry.download_url) {
291
+ throw new GitHubWorldImportError('fetch-failed', 'GitHub file entry does not include a download URL.', {
292
+ path: fileEntry.path,
293
+ });
294
+ }
295
+ const relativePath = ensureSafeRelativePath(normalizeRelativePath(normalizedFolderPath, fileEntry.path));
296
+ const targetPath = path.resolve(stagedFolderPath, relativePath);
297
+ const allowedPrefix = `${stagedFolderRealPath}${path.sep}`;
298
+ if (targetPath !== stagedFolderRealPath && !targetPath.startsWith(allowedPrefix)) {
299
+ throw new GitHubWorldImportError('unsafe-path', 'Fetched content attempted to escape the staging folder.', {
300
+ relativePath,
301
+ });
302
+ }
303
+ const fileBytes = await downloadFileBytes(fileEntry.download_url, requestTimeoutMs);
304
+ totalBytes += fileBytes.byteLength;
305
+ if (totalBytes > maxTotalBytes) {
306
+ throw new GitHubWorldImportError('limits-exceeded', `GitHub source exceeds byte limit (${totalBytes}/${maxTotalBytes}).`, {
307
+ totalBytes,
308
+ maxTotalBytes,
309
+ });
310
+ }
311
+ await mkdir(path.dirname(targetPath), { recursive: true });
312
+ await writeFile(targetPath, fileBytes);
313
+ }
314
+ return {
315
+ stagingRootPath,
316
+ folderPath: stagedFolderPath,
317
+ source: {
318
+ repoInput: resolvedRepo.repoInput,
319
+ owner: resolvedRepo.owner,
320
+ repo: resolvedRepo.repo,
321
+ branch: resolvedRepo.branch,
322
+ folderPath: normalizedFolderPath,
323
+ commitSha,
324
+ },
325
+ cleanup,
326
+ };
327
+ }
328
+ catch (error) {
329
+ await cleanup();
330
+ if (error instanceof GitHubWorldImportError) {
331
+ throw error;
332
+ }
333
+ const err = error;
334
+ throw new GitHubWorldImportError('fetch-failed', err.message || 'Failed to stage GitHub source.');
335
+ }
336
+ }
337
+ export async function stageGitHubWorldFromShorthand(shorthand, options = {}) {
338
+ const resolved = resolveGitHubWorldShorthand(shorthand);
339
+ try {
340
+ const staged = await stageGitHubFolderFromRepo(`${resolved.owner}/${resolved.repo}#${resolved.branch}`, resolved.worldPath, {
341
+ ...options,
342
+ folderName: resolved.worldName,
343
+ });
344
+ return {
345
+ stagingRootPath: staged.stagingRootPath,
346
+ worldFolderPath: staged.folderPath,
347
+ source: {
348
+ shorthand: resolved.shorthand,
349
+ owner: resolved.owner,
350
+ repo: resolved.repo,
351
+ branch: resolved.branch,
352
+ worldPath: resolved.worldPath,
353
+ commitSha: staged.source.commitSha,
354
+ },
355
+ cleanup: staged.cleanup,
356
+ };
357
+ }
358
+ catch (error) {
359
+ if (error instanceof GitHubWorldImportError) {
360
+ throw error;
361
+ }
362
+ const err = error;
363
+ throw new GitHubWorldImportError('fetch-failed', err.message || 'Failed to stage GitHub world source.');
364
+ }
365
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-world-import.js","sourceRoot":"","sources":["../../../core/storage/github-world-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACjD,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AASjD,MAAM,sBAAsB,GAAyB;IACnD;QACE,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,cAAc;KACvB;CACF,CAAC;AAWF,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,IAAI,CAA6B;IACjC,OAAO,CAA2B;IAElC,YAAY,IAAgC,EAAE,OAAe,EAAE,OAAiC;QAC9F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AA6DD,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACvC,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC9C,OAAO,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,SAAiB;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE;YACtB,OAAO,EAAE;gBACP,MAAM,EAAE,6BAA6B;gBACrC,YAAY,EAAE,oBAAoB;aACnC;YACD,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,MAAM,IAAI,sBAAsB,CAC9B,cAAc,EACd,kCAAkC,GAAG,CAAC,OAAO,IAAI,uBAAuB,EAAE,EAC1E,EAAE,GAAG,EAAE,CACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,IAAY,EAAE,MAAc,EAAE,SAAiB;IAC1F,MAAM,GAAG,GAAG,GAAG,eAAe,UAAU,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IACtI,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAsB,CAAC;IACvD,OAAO,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC;IAC/B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,sBAAsB,CAAC,aAAa,EAAE,uDAAuD,EAAE;YACvG,QAAQ;YACR,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,YAAoB;IACzD,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,sBAAsB,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,sBAAsB,CAAC,aAAa,EAAE,0DAA0D,EAAE;YAC1G,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,sBAAsB,CAAC,aAAa,EAAE,qDAAqD,EAAE;YACrG,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,KAAa,EACb,IAAY,EACZ,MAAc,EACd,aAAqB,EACrB,SAAiB,EACjB,SAAgC;IAEhC,MAAM,WAAW,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,GAAG,eAAe,UAAU,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,aAAa,WAAW,QAAQ,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1J,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,gCAAgC,KAAK,IAAI,IAAI,IAAI,aAAa,IAAI,MAAM,EAAE,EAAE;YAC/H,KAAK;YACL,IAAI;YACJ,MAAM;YACN,SAAS,EAAE,aAAa;SACzB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,yBAAyB,QAAQ,CAAC,MAAM,4BAA4B,EAAE;YACrH,KAAK;YACL,IAAI;YACJ,MAAM;YACN,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAiD,CAAC;IACrF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxF,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,sBAAsB,CAC9B,wBAAwB,EACxB,kCAAkC,KAAK,CAAC,IAAI,oBAAoB,EAChE;YACE,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,SAAiB;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE;gBACP,YAAY,EAAE,oBAAoB;aACnC;YACD,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,2CAA2C,QAAQ,CAAC,MAAM,GAAG,EAAE;gBAC9G,GAAG;gBACH,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,MAAM,IAAI,sBAAsB,CAC9B,cAAc,EACd,mCAAmC,GAAG,CAAC,OAAO,IAAI,eAAe,EAAE,EACnE,EAAE,GAAG,EAAE,CACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,sBAAsB,CAC9B,mBAAmB,EACnB,sEAAsE,EACtE,EAAE,MAAM,EAAE,OAAO,EAAE,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,2DAA2D,EAAE;YACjH,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,sBAAsB,CAC9B,mBAAmB,EACnB,uCAAuC,KAAK,wDAAwD,EACpG,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO;QAClB,KAAK;QACL,SAAS;QACT,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,eAAe,SAAS,EAAE;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,0BAA0B,EAAE;YAChF,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAExD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,0BAA0B,EAAE;YAChF,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC1C,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACzC,MAAM,EAAE,eAAe,IAAI,cAAc;SAC1C,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,sBAAsB,CAC9B,mBAAmB,EACnB,4BAA4B,OAAO,sCAAsC,EACzE,EAAE,SAAS,EAAE,OAAO,EAAE,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EACjB,UAAkB,EAClB,UAA6D,EAAE;IAE/D,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAChI,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC;IACpI,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAChE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC,CAAC,0BAA0B,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,4BAA4B,CAAC,CAAC;IAE9E,MAAM,YAAY,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,iCAAiC,EAAE;YACvF,SAAS;YACT,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;IAE7C,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrG,MAAM,UAAU,GAAG,mBAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,iCAAiC,EAAE;YACvF,SAAS;YACT,UAAU,EAAE,oBAAoB;SACjC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,EAAE,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACrH,MAAM,KAAK,GAA0B,EAAE,CAAC;QACxC,MAAM,0BAA0B,CAC9B,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,IAAI,EACjB,YAAY,CAAC,MAAM,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,CACN,CAAC;QAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,uCAAuC,oBAAoB,IAAI,EAAE;gBACpH,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,UAAU,EAAE,oBAAoB;aACjC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,sBAAsB,CAAC,iBAAiB,EAAE,2CAA2C,KAAK,CAAC,MAAM,IAAI,YAAY,IAAI,EAAE;gBAC/H,SAAS,EAAE,KAAK,CAAC,MAAM;gBACvB,YAAY;aACb,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,oDAAoD,EAAE;oBACrG,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACzG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAChE,MAAM,aAAa,GAAG,GAAG,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3D,IAAI,UAAU,KAAK,oBAAoB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjF,MAAM,IAAI,sBAAsB,CAAC,aAAa,EAAE,yDAAyD,EAAE;oBACzG,YAAY;iBACb,CAAC,CAAC;YACL,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YACpF,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC;YACnC,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;gBAC/B,MAAM,IAAI,sBAAsB,CAAC,iBAAiB,EAAE,qCAAqC,UAAU,IAAI,aAAa,IAAI,EAAE;oBACxH,UAAU;oBACV,aAAa;iBACd,CAAC,CAAC;YACL,CAAC;YAED,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,OAAO;YACL,eAAe;YACf,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE;gBACN,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,UAAU,EAAE,oBAAoB;gBAChC,SAAS;aACV;YACD,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,SAAiB,EACjB,UAAmC,EAAE;IAErC,MAAM,QAAQ,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EACvD,QAAQ,CAAC,SAAS,EAClB;YACE,GAAG,OAAO;YACV,UAAU,EAAE,QAAQ,CAAC,SAAS;SAC/B,CACF,CAAC;QACF,OAAO;YACL,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,UAAU;YAClC,MAAM,EAAE;gBACN,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;aACnC;YACD,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,sCAAsC,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC"}
@@ -21,10 +21,12 @@
21
21
  * - Complete chat lifecycle management with parent-child relationships
22
22
  * - Cross-agent memory aggregation for world-level contexts
23
23
  * - Data integrity through cascade deletion
24
+ * - In-memory queue row persistence for user-turn queue workflows in tests
24
25
  * - Runtime property exclusion: eventEmitter, agents, chats, eventStorage are not persisted
25
26
  *
26
27
  * Changes:
27
28
  * - 2026-02-13: Added compare-and-set chat title update helper (`updateChatNameIfCurrent`) for race-safe title commits.
29
+ * - 2026-03-12: Removed dormant world-chat snapshot storage; chats persist as metadata plus aggregated agent memory only.
28
30
  * - 2025-11-01: Exclude runtime properties from saveWorld to prevent storing EventEmitter and Map instances
29
31
  * - Batch operations with atomic-like behavior
30
32
  * - Memory archiving and cleanup operations
@@ -44,7 +46,7 @@
44
46
  * - 2025-08-09: Added agentId to getMemory response for storage compatibility
45
47
  * - 2025-10-31: Updated to structured logging (storage.memory category)
46
48
  */
47
- import type { StorageAPI, World, Agent, Chat, UpdateChatParams, WorldChat, AgentMessage } from '../types.js';
49
+ import type { StorageAPI, World, Agent, Chat, UpdateChatParams, AgentMessage, EditErrorLog, QueueMessageStatus, QueuedMessage } from '../types.js';
48
50
  /**
49
51
  * Memory-based storage implementation
50
52
  */
@@ -52,8 +54,10 @@ export declare class MemoryStorage implements StorageAPI {
52
54
  private worlds;
53
55
  private agents;
54
56
  private chats;
55
- private worldChats;
56
57
  private archivedMemory;
58
+ private editErrors;
59
+ private queuedMessages;
60
+ private nextQueueRowId;
57
61
  saveWorld(worldData: World): Promise<void>;
58
62
  loadWorld(worldId: string): Promise<World | null>;
59
63
  deleteWorld(worldId: string): Promise<boolean>;
@@ -74,18 +78,25 @@ export declare class MemoryStorage implements StorageAPI {
74
78
  saveChatData(worldId: string, chat: Chat): Promise<void>;
75
79
  loadChatData(worldId: string, chatId: string): Promise<Chat | null>;
76
80
  deleteChatData(worldId: string, chatId: string): Promise<boolean>;
81
+ getQueuedMessages(worldId: string, chatId: string): Promise<QueuedMessage[]>;
82
+ addQueuedMessage(worldId: string, chatId: string, messageId: string, content: string, sender: string): Promise<void>;
83
+ updateMessageQueueStatus(messageId: string, status: QueueMessageStatus): Promise<void>;
84
+ incrementQueueMessageRetry(messageId: string): Promise<number>;
85
+ removeQueuedMessage(messageId: string): Promise<void>;
86
+ resetQueueMessageForRetry(messageId: string): Promise<void>;
87
+ cancelQueuedMessages(worldId: string, chatId: string): Promise<number>;
88
+ recoverSendingMessages(): Promise<number>;
89
+ deleteQueueForChat(worldId: string, chatId: string): Promise<number>;
77
90
  listChats(worldId: string): Promise<Chat[]>;
78
91
  updateChatData(worldId: string, chatId: string, updates: UpdateChatParams): Promise<Chat | null>;
79
- updateChatNameIfCurrent(worldId: string, chatId: string, expectedName: string, nextName: string): Promise<boolean>;
80
- saveWorldChat(worldId: string, chatId: string, chat: WorldChat): Promise<void>;
81
- loadWorldChat(worldId: string, chatId: string): Promise<WorldChat | null>;
82
- loadWorldChatFull(worldId: string, chatId: string): Promise<WorldChat | null>;
83
- restoreFromWorldChat(worldId: string, chat: WorldChat): Promise<boolean>;
92
+ updateChatNameIfCurrent(worldId: string, chatId: string, expectedName: string, nextName: string, nextProvenance?: import('../chat-constants.js').TitleProvenance): Promise<boolean>;
84
93
  validateIntegrity(worldId: string, agentId?: string): Promise<boolean>;
85
94
  repairData(worldId: string, agentId?: string): Promise<boolean>;
86
95
  /**
87
96
  * Clear all stored data - useful for test cleanup
88
97
  */
98
+ saveEditErrors(worldId: string, errors: EditErrorLog[]): Promise<void>;
99
+ loadEditErrors(worldId: string): Promise<EditErrorLog[]>;
89
100
  clear(): Promise<void>;
90
101
  /**
91
102
  * Get storage statistics - useful for debugging
@@ -94,8 +105,8 @@ export declare class MemoryStorage implements StorageAPI {
94
105
  worlds: number;
95
106
  totalAgents: number;
96
107
  totalChats: number;
97
- totalWorldChats: number;
98
108
  totalArchivedMemory: number;
109
+ totalQueuedMessages: number;
99
110
  };
100
111
  }
101
112
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../../../core/storage/memory-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../../../core/storage/memory-storage.ts"],"names":[],"mappings":"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"}