@marifold/core 0.60.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 (310) hide show
  1. package/LICENSE +674 -0
  2. package/dist/agent/AgentEvents.d.ts +106 -0
  3. package/dist/agent/AgentEvents.d.ts.map +1 -0
  4. package/dist/agent/AgentEvents.js +3 -0
  5. package/dist/agent/AgentEvents.js.map +1 -0
  6. package/dist/agent/AgentHistory.d.ts +27 -0
  7. package/dist/agent/AgentHistory.d.ts.map +1 -0
  8. package/dist/agent/AgentHistory.js +42 -0
  9. package/dist/agent/AgentHistory.js.map +1 -0
  10. package/dist/agent/AgentRunner.d.ts +149 -0
  11. package/dist/agent/AgentRunner.d.ts.map +1 -0
  12. package/dist/agent/AgentRunner.js +727 -0
  13. package/dist/agent/AgentRunner.js.map +1 -0
  14. package/dist/agent/ApprovalPolicy.d.ts +71 -0
  15. package/dist/agent/ApprovalPolicy.d.ts.map +1 -0
  16. package/dist/agent/ApprovalPolicy.js +29 -0
  17. package/dist/agent/ApprovalPolicy.js.map +1 -0
  18. package/dist/agent/ControlBlockTools.d.ts +9 -0
  19. package/dist/agent/ControlBlockTools.d.ts.map +1 -0
  20. package/dist/agent/ControlBlockTools.js +49 -0
  21. package/dist/agent/ControlBlockTools.js.map +1 -0
  22. package/dist/agent/RunWorkspace.d.ts +92 -0
  23. package/dist/agent/RunWorkspace.d.ts.map +1 -0
  24. package/dist/agent/RunWorkspace.js +328 -0
  25. package/dist/agent/RunWorkspace.js.map +1 -0
  26. package/dist/agent/ScopedProcess.d.ts +35 -0
  27. package/dist/agent/ScopedProcess.d.ts.map +1 -0
  28. package/dist/agent/ScopedProcess.js +280 -0
  29. package/dist/agent/ScopedProcess.js.map +1 -0
  30. package/dist/agent/ToolRegistry.d.ts +80 -0
  31. package/dist/agent/ToolRegistry.d.ts.map +1 -0
  32. package/dist/agent/ToolRegistry.js +45 -0
  33. package/dist/agent/ToolRegistry.js.map +1 -0
  34. package/dist/agent/UserInput.d.ts +59 -0
  35. package/dist/agent/UserInput.d.ts.map +1 -0
  36. package/dist/agent/UserInput.js +203 -0
  37. package/dist/agent/UserInput.js.map +1 -0
  38. package/dist/agent/tools/AskUserTool.d.ts +71 -0
  39. package/dist/agent/tools/AskUserTool.d.ts.map +1 -0
  40. package/dist/agent/tools/AskUserTool.js +70 -0
  41. package/dist/agent/tools/AskUserTool.js.map +1 -0
  42. package/dist/agent/tools/DelegateTool.d.ts +49 -0
  43. package/dist/agent/tools/DelegateTool.d.ts.map +1 -0
  44. package/dist/agent/tools/DelegateTool.js +62 -0
  45. package/dist/agent/tools/DelegateTool.js.map +1 -0
  46. package/dist/agent/tools/InspectAttachmentTool.d.ts +25 -0
  47. package/dist/agent/tools/InspectAttachmentTool.d.ts.map +1 -0
  48. package/dist/agent/tools/InspectAttachmentTool.js +129 -0
  49. package/dist/agent/tools/InspectAttachmentTool.js.map +1 -0
  50. package/dist/agent/tools/PythonPackageTool.d.ts +26 -0
  51. package/dist/agent/tools/PythonPackageTool.d.ts.map +1 -0
  52. package/dist/agent/tools/PythonPackageTool.js +105 -0
  53. package/dist/agent/tools/PythonPackageTool.js.map +1 -0
  54. package/dist/agent/tools/ReadFileTool.d.ts +24 -0
  55. package/dist/agent/tools/ReadFileTool.d.ts.map +1 -0
  56. package/dist/agent/tools/ReadFileTool.js +112 -0
  57. package/dist/agent/tools/ReadFileTool.js.map +1 -0
  58. package/dist/agent/tools/ShellExecTool.d.ts +23 -0
  59. package/dist/agent/tools/ShellExecTool.d.ts.map +1 -0
  60. package/dist/agent/tools/ShellExecTool.js +75 -0
  61. package/dist/agent/tools/ShellExecTool.js.map +1 -0
  62. package/dist/agent/tools/WebSearchTool.d.ts +26 -0
  63. package/dist/agent/tools/WebSearchTool.d.ts.map +1 -0
  64. package/dist/agent/tools/WebSearchTool.js +52 -0
  65. package/dist/agent/tools/WebSearchTool.js.map +1 -0
  66. package/dist/agent/tools/WriteFileTool.d.ts +30 -0
  67. package/dist/agent/tools/WriteFileTool.d.ts.map +1 -0
  68. package/dist/agent/tools/WriteFileTool.js +155 -0
  69. package/dist/agent/tools/WriteFileTool.js.map +1 -0
  70. package/dist/app/AppActionResolver.d.ts +15 -0
  71. package/dist/app/AppActionResolver.d.ts.map +1 -0
  72. package/dist/app/AppActionResolver.js +98 -0
  73. package/dist/app/AppActionResolver.js.map +1 -0
  74. package/dist/app/AppSchema.d.ts +83 -0
  75. package/dist/app/AppSchema.d.ts.map +1 -0
  76. package/dist/app/AppSchema.js +17 -0
  77. package/dist/app/AppSchema.js.map +1 -0
  78. package/dist/app/AppStore.d.ts +14 -0
  79. package/dist/app/AppStore.d.ts.map +1 -0
  80. package/dist/app/AppStore.js +146 -0
  81. package/dist/app/AppStore.js.map +1 -0
  82. package/dist/app/AppValidator.d.ts +10 -0
  83. package/dist/app/AppValidator.d.ts.map +1 -0
  84. package/dist/app/AppValidator.js +503 -0
  85. package/dist/app/AppValidator.js.map +1 -0
  86. package/dist/app/SkillAppCompiler.d.ts +5 -0
  87. package/dist/app/SkillAppCompiler.d.ts.map +1 -0
  88. package/dist/app/SkillAppCompiler.js +632 -0
  89. package/dist/app/SkillAppCompiler.js.map +1 -0
  90. package/dist/app/SkillAppDsl.d.ts +93 -0
  91. package/dist/app/SkillAppDsl.d.ts.map +1 -0
  92. package/dist/app/SkillAppDsl.js +72 -0
  93. package/dist/app/SkillAppDsl.js.map +1 -0
  94. package/dist/app/SkillAppInstanceRegistry.d.ts +25 -0
  95. package/dist/app/SkillAppInstanceRegistry.d.ts.map +1 -0
  96. package/dist/app/SkillAppInstanceRegistry.js +218 -0
  97. package/dist/app/SkillAppInstanceRegistry.js.map +1 -0
  98. package/dist/app/SkillAppResolver.d.ts +12 -0
  99. package/dist/app/SkillAppResolver.d.ts.map +1 -0
  100. package/dist/app/SkillAppResolver.js +89 -0
  101. package/dist/app/SkillAppResolver.js.map +1 -0
  102. package/dist/app/SkillAppSchema.d.ts +116 -0
  103. package/dist/app/SkillAppSchema.d.ts.map +1 -0
  104. package/dist/app/SkillAppSchema.js +5 -0
  105. package/dist/app/SkillAppSchema.js.map +1 -0
  106. package/dist/channels/TelegramBridge.d.ts +103 -0
  107. package/dist/channels/TelegramBridge.d.ts.map +1 -0
  108. package/dist/channels/TelegramBridge.js +565 -0
  109. package/dist/channels/TelegramBridge.js.map +1 -0
  110. package/dist/channels/respond.d.ts +46 -0
  111. package/dist/channels/respond.d.ts.map +1 -0
  112. package/dist/channels/respond.js +41 -0
  113. package/dist/channels/respond.js.map +1 -0
  114. package/dist/config/ChatGptTokenRefresh.d.ts +18 -0
  115. package/dist/config/ChatGptTokenRefresh.d.ts.map +1 -0
  116. package/dist/config/ChatGptTokenRefresh.js +63 -0
  117. package/dist/config/ChatGptTokenRefresh.js.map +1 -0
  118. package/dist/config/ConfigBackup.d.ts +20 -0
  119. package/dist/config/ConfigBackup.d.ts.map +1 -0
  120. package/dist/config/ConfigBackup.js +197 -0
  121. package/dist/config/ConfigBackup.js.map +1 -0
  122. package/dist/config/ConfigLoader.d.ts +28 -0
  123. package/dist/config/ConfigLoader.d.ts.map +1 -0
  124. package/dist/config/ConfigLoader.js +335 -0
  125. package/dist/config/ConfigLoader.js.map +1 -0
  126. package/dist/config/ConfigManager.d.ts +55 -0
  127. package/dist/config/ConfigManager.d.ts.map +1 -0
  128. package/dist/config/ConfigManager.js +707 -0
  129. package/dist/config/ConfigManager.js.map +1 -0
  130. package/dist/config/ConfigSchema.d.ts +231 -0
  131. package/dist/config/ConfigSchema.d.ts.map +1 -0
  132. package/dist/config/ConfigSchema.js +15 -0
  133. package/dist/config/ConfigSchema.js.map +1 -0
  134. package/dist/config/GitHubCopilotAuth.d.ts +7 -0
  135. package/dist/config/GitHubCopilotAuth.d.ts.map +1 -0
  136. package/dist/config/GitHubCopilotAuth.js +40 -0
  137. package/dist/config/GitHubCopilotAuth.js.map +1 -0
  138. package/dist/config/MarifoldOpenAICompatProvider.d.ts +39 -0
  139. package/dist/config/MarifoldOpenAICompatProvider.d.ts.map +1 -0
  140. package/dist/config/MarifoldOpenAICompatProvider.js +158 -0
  141. package/dist/config/MarifoldOpenAICompatProvider.js.map +1 -0
  142. package/dist/config/OpenAICompatUrls.d.ts +7 -0
  143. package/dist/config/OpenAICompatUrls.d.ts.map +1 -0
  144. package/dist/config/OpenAICompatUrls.js +47 -0
  145. package/dist/config/OpenAICompatUrls.js.map +1 -0
  146. package/dist/config/ProviderFactory.d.ts +12 -0
  147. package/dist/config/ProviderFactory.d.ts.map +1 -0
  148. package/dist/config/ProviderFactory.js +61 -0
  149. package/dist/config/ProviderFactory.js.map +1 -0
  150. package/dist/config/ProviderInspector.d.ts +46 -0
  151. package/dist/config/ProviderInspector.d.ts.map +1 -0
  152. package/dist/config/ProviderInspector.js +356 -0
  153. package/dist/config/ProviderInspector.js.map +1 -0
  154. package/dist/config/ProviderRegistry.d.ts +19 -0
  155. package/dist/config/ProviderRegistry.d.ts.map +1 -0
  156. package/dist/config/ProviderRegistry.js +301 -0
  157. package/dist/config/ProviderRegistry.js.map +1 -0
  158. package/dist/config/XaiTokenRefresh.d.ts +15 -0
  159. package/dist/config/XaiTokenRefresh.d.ts.map +1 -0
  160. package/dist/config/XaiTokenRefresh.js +73 -0
  161. package/dist/config/XaiTokenRefresh.js.map +1 -0
  162. package/dist/errors/MarifoldError.d.ts +34 -0
  163. package/dist/errors/MarifoldError.d.ts.map +1 -0
  164. package/dist/errors/MarifoldError.js +100 -0
  165. package/dist/errors/MarifoldError.js.map +1 -0
  166. package/dist/images/ImageOptimizer.d.ts +34 -0
  167. package/dist/images/ImageOptimizer.d.ts.map +1 -0
  168. package/dist/images/ImageOptimizer.js +225 -0
  169. package/dist/images/ImageOptimizer.js.map +1 -0
  170. package/dist/index.d.ts +96 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +193 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/memory/MemoryControls.d.ts +26 -0
  175. package/dist/memory/MemoryControls.d.ts.map +1 -0
  176. package/dist/memory/MemoryControls.js +388 -0
  177. package/dist/memory/MemoryControls.js.map +1 -0
  178. package/dist/memory/MemoryStore.d.ts +122 -0
  179. package/dist/memory/MemoryStore.d.ts.map +1 -0
  180. package/dist/memory/MemoryStore.js +1096 -0
  181. package/dist/memory/MemoryStore.js.map +1 -0
  182. package/dist/profiles/ProfileManager.d.ts +139 -0
  183. package/dist/profiles/ProfileManager.d.ts.map +1 -0
  184. package/dist/profiles/ProfileManager.js +475 -0
  185. package/dist/profiles/ProfileManager.js.map +1 -0
  186. package/dist/profiles/ProfileResolver.d.ts +18 -0
  187. package/dist/profiles/ProfileResolver.d.ts.map +1 -0
  188. package/dist/profiles/ProfileResolver.js +280 -0
  189. package/dist/profiles/ProfileResolver.js.map +1 -0
  190. package/dist/runs/RunRegistry.d.ts +140 -0
  191. package/dist/runs/RunRegistry.d.ts.map +1 -0
  192. package/dist/runs/RunRegistry.js +432 -0
  193. package/dist/runs/RunRegistry.js.map +1 -0
  194. package/dist/runtime/MarifoldRuntime.d.ts +244 -0
  195. package/dist/runtime/MarifoldRuntime.d.ts.map +1 -0
  196. package/dist/runtime/MarifoldRuntime.js +1099 -0
  197. package/dist/runtime/MarifoldRuntime.js.map +1 -0
  198. package/dist/runtime/MarifoldTypes.d.ts +70 -0
  199. package/dist/runtime/MarifoldTypes.d.ts.map +1 -0
  200. package/dist/runtime/MarifoldTypes.js +3 -0
  201. package/dist/runtime/MarifoldTypes.js.map +1 -0
  202. package/dist/schedule/ScheduleStore.d.ts +60 -0
  203. package/dist/schedule/ScheduleStore.d.ts.map +1 -0
  204. package/dist/schedule/ScheduleStore.js +212 -0
  205. package/dist/schedule/ScheduleStore.js.map +1 -0
  206. package/dist/schedule/Scheduler.d.ts +28 -0
  207. package/dist/schedule/Scheduler.d.ts.map +1 -0
  208. package/dist/schedule/Scheduler.js +65 -0
  209. package/dist/schedule/Scheduler.js.map +1 -0
  210. package/dist/search/DuckDuckGoBackend.d.ts +18 -0
  211. package/dist/search/DuckDuckGoBackend.d.ts.map +1 -0
  212. package/dist/search/DuckDuckGoBackend.js +37 -0
  213. package/dist/search/DuckDuckGoBackend.js.map +1 -0
  214. package/dist/search/FirecrawlBackend.d.ts +28 -0
  215. package/dist/search/FirecrawlBackend.d.ts.map +1 -0
  216. package/dist/search/FirecrawlBackend.js +76 -0
  217. package/dist/search/FirecrawlBackend.js.map +1 -0
  218. package/dist/search/SearchBackend.d.ts +18 -0
  219. package/dist/search/SearchBackend.d.ts.map +1 -0
  220. package/dist/search/SearchBackend.js +24 -0
  221. package/dist/search/SearchBackend.js.map +1 -0
  222. package/dist/search/createSearchBackend.d.ts +16 -0
  223. package/dist/search/createSearchBackend.d.ts.map +1 -0
  224. package/dist/search/createSearchBackend.js +30 -0
  225. package/dist/search/createSearchBackend.js.map +1 -0
  226. package/dist/sessions/ResponseMetrics.d.ts +17 -0
  227. package/dist/sessions/ResponseMetrics.d.ts.map +1 -0
  228. package/dist/sessions/ResponseMetrics.js +3 -0
  229. package/dist/sessions/ResponseMetrics.js.map +1 -0
  230. package/dist/sessions/SessionResolver.d.ts +135 -0
  231. package/dist/sessions/SessionResolver.d.ts.map +1 -0
  232. package/dist/sessions/SessionResolver.js +1173 -0
  233. package/dist/sessions/SessionResolver.js.map +1 -0
  234. package/dist/skill/BuiltInSkillManager.d.ts +11 -0
  235. package/dist/skill/BuiltInSkillManager.d.ts.map +1 -0
  236. package/dist/skill/BuiltInSkillManager.js +98 -0
  237. package/dist/skill/BuiltInSkillManager.js.map +1 -0
  238. package/dist/skill/SkillInvocation.d.ts +30 -0
  239. package/dist/skill/SkillInvocation.d.ts.map +1 -0
  240. package/dist/skill/SkillInvocation.js +135 -0
  241. package/dist/skill/SkillInvocation.js.map +1 -0
  242. package/dist/skill/SkillSchema.d.ts +37 -0
  243. package/dist/skill/SkillSchema.d.ts.map +1 -0
  244. package/dist/skill/SkillSchema.js +26 -0
  245. package/dist/skill/SkillSchema.js.map +1 -0
  246. package/dist/skill/SkillStore.d.ts +41 -0
  247. package/dist/skill/SkillStore.d.ts.map +1 -0
  248. package/dist/skill/SkillStore.js +184 -0
  249. package/dist/skill/SkillStore.js.map +1 -0
  250. package/dist/skill/SkillTemplater.d.ts +19 -0
  251. package/dist/skill/SkillTemplater.d.ts.map +1 -0
  252. package/dist/skill/SkillTemplater.js +36 -0
  253. package/dist/skill/SkillTemplater.js.map +1 -0
  254. package/dist/skill/SkillValidator.d.ts +10 -0
  255. package/dist/skill/SkillValidator.d.ts.map +1 -0
  256. package/dist/skill/SkillValidator.js +131 -0
  257. package/dist/skill/SkillValidator.js.map +1 -0
  258. package/dist/skill/SkillVars.d.ts +10 -0
  259. package/dist/skill/SkillVars.d.ts.map +1 -0
  260. package/dist/skill/SkillVars.js +65 -0
  261. package/dist/skill/SkillVars.js.map +1 -0
  262. package/dist/skill/index.d.ts +10 -0
  263. package/dist/skill/index.d.ts.map +1 -0
  264. package/dist/skill/index.js +22 -0
  265. package/dist/skill/index.js.map +1 -0
  266. package/dist/skillapp/SkillAppActionResolver.d.ts +13 -0
  267. package/dist/skillapp/SkillAppActionResolver.d.ts.map +1 -0
  268. package/dist/skillapp/SkillAppActionResolver.js +95 -0
  269. package/dist/skillapp/SkillAppActionResolver.js.map +1 -0
  270. package/dist/skillapp/SkillAppSchema.d.ts +79 -0
  271. package/dist/skillapp/SkillAppSchema.d.ts.map +1 -0
  272. package/dist/skillapp/SkillAppSchema.js +20 -0
  273. package/dist/skillapp/SkillAppSchema.js.map +1 -0
  274. package/dist/skillapp/SkillAppStore.d.ts +11 -0
  275. package/dist/skillapp/SkillAppStore.d.ts.map +1 -0
  276. package/dist/skillapp/SkillAppStore.js +98 -0
  277. package/dist/skillapp/SkillAppStore.js.map +1 -0
  278. package/dist/skillapp/SkillAppValidator.d.ts +10 -0
  279. package/dist/skillapp/SkillAppValidator.d.ts.map +1 -0
  280. package/dist/skillapp/SkillAppValidator.js +522 -0
  281. package/dist/skillapp/SkillAppValidator.js.map +1 -0
  282. package/dist/tasks/TaskStore.d.ts +110 -0
  283. package/dist/tasks/TaskStore.d.ts.map +1 -0
  284. package/dist/tasks/TaskStore.js +371 -0
  285. package/dist/tasks/TaskStore.js.map +1 -0
  286. package/dist/util/fetchRetry.d.ts +11 -0
  287. package/dist/util/fetchRetry.d.ts.map +1 -0
  288. package/dist/util/fetchRetry.js +48 -0
  289. package/dist/util/fetchRetry.js.map +1 -0
  290. package/dist/util/idToken.d.ts +12 -0
  291. package/dist/util/idToken.d.ts.map +1 -0
  292. package/dist/util/idToken.js +32 -0
  293. package/dist/util/idToken.js.map +1 -0
  294. package/dist/util/proxy.d.ts +18 -0
  295. package/dist/util/proxy.d.ts.map +1 -0
  296. package/dist/util/proxy.js +28 -0
  297. package/dist/util/proxy.js.map +1 -0
  298. package/dist/workspace/Workspace.d.ts +9 -0
  299. package/dist/workspace/Workspace.d.ts.map +1 -0
  300. package/dist/workspace/Workspace.js +55 -0
  301. package/dist/workspace/Workspace.js.map +1 -0
  302. package/dist/workspace/WorkspaceInitializer.d.ts +40 -0
  303. package/dist/workspace/WorkspaceInitializer.d.ts.map +1 -0
  304. package/dist/workspace/WorkspaceInitializer.js +212 -0
  305. package/dist/workspace/WorkspaceInitializer.js.map +1 -0
  306. package/dist/workspace/WorkspacePaths.d.ts +11 -0
  307. package/dist/workspace/WorkspacePaths.d.ts.map +1 -0
  308. package/dist/workspace/WorkspacePaths.js +82 -0
  309. package/dist/workspace/WorkspacePaths.js.map +1 -0
  310. package/package.json +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStore.d.ts","sourceRoot":"","sources":["../../src/tasks/TaskStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,371 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TaskStore = exports.TASK_STATE_SCHEMA = void 0;
37
+ const crypto = __importStar(require("crypto"));
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const MarifoldError_1 = require("../errors/MarifoldError");
41
+ exports.TASK_STATE_SCHEMA = 'marifold.task-state.v1';
42
+ const SAFE_TASK_ID = /^[A-Za-z0-9_-]+$/;
43
+ const TERMINAL_STATUSES = new Set(['completed', 'failed', 'cancelled']);
44
+ class TaskStore {
45
+ tasksDir;
46
+ constructor(tasksDir) {
47
+ this.tasksDir = tasksDir;
48
+ }
49
+ create(input) {
50
+ const now = new Date().toISOString();
51
+ const objective = requiredText(input.objective, 'objective');
52
+ const status = normalizeTaskStatus(input.status ?? 'running');
53
+ const task = {
54
+ schema: exports.TASK_STATE_SCHEMA,
55
+ id: this.createTaskId(),
56
+ title: optionalText(input.title) ?? titleFromObjective(objective),
57
+ objective,
58
+ status,
59
+ tags: normalizeTags(input.tags),
60
+ plan: normalizePlan(input.plan ?? [], now),
61
+ events: [],
62
+ createdAt: now,
63
+ updatedAt: now,
64
+ ...(TERMINAL_STATUSES.has(status) ? { completedAt: now } : {}),
65
+ ...optionalField('profile', input.profile),
66
+ ...optionalField('sessionId', input.sessionId),
67
+ ...optionalField('summary', input.summary),
68
+ ...optionalField('nextAction', input.nextAction),
69
+ };
70
+ assertPlanInvariant(task.plan);
71
+ this.write(task);
72
+ return task;
73
+ }
74
+ list(options = {}) {
75
+ const limit = normalizeLimit(options.limit);
76
+ const status = options.status ? normalizeTaskStatus(options.status) : undefined;
77
+ if (!fs.existsSync(this.tasksDir))
78
+ return [];
79
+ const tasks = fs.readdirSync(this.tasksDir, { withFileTypes: true })
80
+ .filter(entry => entry.isFile() && entry.name.endsWith('.json'))
81
+ .map(entry => this.readFile(path.join(this.tasksDir, entry.name)))
82
+ .filter(task => status === undefined || task.status === status)
83
+ .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))
84
+ .slice(0, limit);
85
+ return tasks.map(task => this.toSummary(task));
86
+ }
87
+ get(taskId) {
88
+ this.assertSafeTaskId(taskId);
89
+ const taskPath = this.taskPath(taskId);
90
+ if (!fs.existsSync(taskPath))
91
+ return undefined;
92
+ return this.readFile(taskPath);
93
+ }
94
+ require(taskId) {
95
+ const task = this.get(taskId);
96
+ if (!task)
97
+ throw MarifoldError_1.MarifoldError.taskNotFound(taskId);
98
+ return task;
99
+ }
100
+ update(taskId, input) {
101
+ const task = this.require(taskId);
102
+ const now = new Date().toISOString();
103
+ if (input.title !== undefined)
104
+ task.title = requiredText(input.title, 'title');
105
+ if (input.objective !== undefined)
106
+ task.objective = requiredText(input.objective, 'objective');
107
+ if (input.status !== undefined) {
108
+ task.status = normalizeTaskStatus(input.status);
109
+ if (TERMINAL_STATUSES.has(task.status))
110
+ task.completedAt = now;
111
+ else
112
+ delete task.completedAt;
113
+ }
114
+ if (input.plan !== undefined)
115
+ task.plan = normalizePlan(input.plan, now);
116
+ assignOptional(task, 'profile', input.profile);
117
+ assignOptional(task, 'sessionId', input.sessionId);
118
+ assignOptional(task, 'summary', input.summary);
119
+ assignOptional(task, 'nextAction', input.nextAction);
120
+ if (input.tags !== undefined)
121
+ task.tags = normalizeTags(input.tags);
122
+ task.updatedAt = now;
123
+ assertPlanInvariant(task.plan);
124
+ this.write(task);
125
+ return task;
126
+ }
127
+ appendEvent(taskId, input) {
128
+ const task = this.require(taskId);
129
+ const now = new Date().toISOString();
130
+ const event = {
131
+ id: this.createEventId(),
132
+ kind: normalizeEventKind(input.kind ?? 'progress'),
133
+ message: requiredText(input.message, 'message'),
134
+ createdAt: now,
135
+ ...optionalField('stepId', input.stepId),
136
+ ...(input.metadata ? { metadata: normalizeMetadata(input.metadata) } : {}),
137
+ };
138
+ if (event.stepId && !task.plan.some(item => item.id === event.stepId)) {
139
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Task plan step not found: ${event.stepId}`, taskId);
140
+ }
141
+ task.events.push(event);
142
+ task.updatedAt = now;
143
+ this.write(task);
144
+ return task;
145
+ }
146
+ delete(taskId) {
147
+ this.assertSafeTaskId(taskId);
148
+ const taskPath = this.taskPath(taskId);
149
+ if (!fs.existsSync(taskPath))
150
+ return false;
151
+ fs.rmSync(taskPath);
152
+ return true;
153
+ }
154
+ toSummary(task) {
155
+ return {
156
+ id: task.id,
157
+ title: task.title,
158
+ objective: task.objective,
159
+ status: task.status,
160
+ tags: [...task.tags],
161
+ createdAt: task.createdAt,
162
+ updatedAt: task.updatedAt,
163
+ planCounts: countPlan(task.plan),
164
+ ...(task.profile ? { profile: task.profile } : {}),
165
+ ...(task.sessionId ? { sessionId: task.sessionId } : {}),
166
+ ...(task.summary ? { summary: task.summary } : {}),
167
+ ...(task.nextAction ? { nextAction: task.nextAction } : {}),
168
+ ...(task.completedAt ? { completedAt: task.completedAt } : {}),
169
+ ...(task.events.length > 0 ? { lastEvent: task.events[task.events.length - 1] } : {}),
170
+ };
171
+ }
172
+ createTaskId() {
173
+ for (let attempt = 0; attempt < 10; attempt += 1) {
174
+ const stamp = new Date().toISOString().replace(/[-:.TZ]/g, '').slice(0, 14);
175
+ const id = `task_${stamp}_${crypto.randomBytes(4).toString('hex')}`;
176
+ if (!fs.existsSync(this.taskPath(id)))
177
+ return id;
178
+ }
179
+ throw MarifoldError_1.MarifoldError.taskInvalid('Could not create a unique task id.');
180
+ }
181
+ createEventId() {
182
+ return `evt_${crypto.randomBytes(8).toString('hex')}`;
183
+ }
184
+ taskPath(taskId) {
185
+ this.assertSafeTaskId(taskId);
186
+ return path.join(this.tasksDir, `${taskId}.json`);
187
+ }
188
+ assertSafeTaskId(taskId) {
189
+ if (!SAFE_TASK_ID.test(taskId)) {
190
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Invalid task id '${taskId}'.`, taskId);
191
+ }
192
+ }
193
+ readFile(taskPath) {
194
+ try {
195
+ const parsed = JSON.parse(fs.readFileSync(taskPath, 'utf-8'));
196
+ return normalizeTaskState(parsed, taskPath);
197
+ }
198
+ catch (error) {
199
+ if (error instanceof MarifoldError_1.MarifoldError)
200
+ throw error;
201
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Could not read task ${taskPath}: ${String(error)}`);
202
+ }
203
+ }
204
+ write(task) {
205
+ fs.mkdirSync(this.tasksDir, { recursive: true });
206
+ const taskPath = this.taskPath(task.id);
207
+ const tempPath = `${taskPath}.${process.pid}.${crypto.randomBytes(4).toString('hex')}.tmp`;
208
+ fs.writeFileSync(tempPath, `${JSON.stringify(task, null, 2)}\n`);
209
+ fs.renameSync(tempPath, taskPath);
210
+ }
211
+ }
212
+ exports.TaskStore = TaskStore;
213
+ function normalizeTaskState(value, taskPath) {
214
+ if (value.schema !== exports.TASK_STATE_SCHEMA) {
215
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Task file ${taskPath} has an unsupported schema.`);
216
+ }
217
+ const now = new Date().toISOString();
218
+ const task = {
219
+ schema: exports.TASK_STATE_SCHEMA,
220
+ id: requiredText(value.id, 'id'),
221
+ title: requiredText(value.title, 'title'),
222
+ objective: requiredText(value.objective, 'objective'),
223
+ status: normalizeTaskStatus(value.status ?? 'running'),
224
+ tags: normalizeTags(value.tags),
225
+ plan: normalizePlan(value.plan ?? [], now),
226
+ events: normalizeEvents(value.events ?? []),
227
+ createdAt: requiredText(value.createdAt, 'createdAt'),
228
+ updatedAt: requiredText(value.updatedAt, 'updatedAt'),
229
+ ...optionalField('profile', value.profile),
230
+ ...optionalField('sessionId', value.sessionId),
231
+ ...optionalField('summary', value.summary),
232
+ ...optionalField('nextAction', value.nextAction),
233
+ ...optionalField('completedAt', value.completedAt),
234
+ };
235
+ assertPlanInvariant(task.plan);
236
+ return task;
237
+ }
238
+ function normalizePlan(items, timestamp) {
239
+ if (!Array.isArray(items))
240
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task plan must be an array.');
241
+ return items.map((item, index) => {
242
+ const id = optionalText(item.id) ?? `step_${index + 1}`;
243
+ const stored = item;
244
+ if (!SAFE_TASK_ID.test(id))
245
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Invalid plan step id '${id}'.`);
246
+ return {
247
+ id,
248
+ text: requiredText(item.text, `plan[${index}].text`),
249
+ status: normalizeStepStatus(item.status ?? 'pending'),
250
+ createdAt: optionalText(stored.createdAt) ?? timestamp,
251
+ updatedAt: optionalText(stored.updatedAt) ?? timestamp,
252
+ };
253
+ });
254
+ }
255
+ function normalizeEvents(events) {
256
+ if (!Array.isArray(events))
257
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task events must be an array.');
258
+ return events.map((event, index) => ({
259
+ id: requiredText(event.id, `events[${index}].id`),
260
+ kind: normalizeEventKind(event.kind),
261
+ message: requiredText(event.message, `events[${index}].message`),
262
+ createdAt: requiredText(event.createdAt, `events[${index}].createdAt`),
263
+ ...optionalField('stepId', event.stepId),
264
+ ...(event.metadata ? { metadata: normalizeMetadata(event.metadata) } : {}),
265
+ }));
266
+ }
267
+ function assertPlanInvariant(plan) {
268
+ const ids = new Set();
269
+ let activeCount = 0;
270
+ for (const item of plan) {
271
+ if (ids.has(item.id))
272
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Duplicate plan step id '${item.id}'.`);
273
+ ids.add(item.id);
274
+ if (item.status === 'in_progress')
275
+ activeCount += 1;
276
+ }
277
+ if (activeCount > 1) {
278
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task plan can have at most one in-progress step.');
279
+ }
280
+ }
281
+ function countPlan(plan) {
282
+ const counts = {
283
+ pending: 0,
284
+ in_progress: 0,
285
+ completed: 0,
286
+ skipped: 0,
287
+ cancelled: 0,
288
+ };
289
+ for (const item of plan)
290
+ counts[item.status] += 1;
291
+ return counts;
292
+ }
293
+ function titleFromObjective(objective) {
294
+ const firstLine = objective.split(/\r?\n/)[0]?.trim() ?? objective;
295
+ return firstLine.length <= 80 ? firstLine : `${firstLine.slice(0, 77)}...`;
296
+ }
297
+ function requiredText(value, label) {
298
+ const text = optionalText(value);
299
+ if (text === undefined)
300
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Task ${label} cannot be empty.`);
301
+ return text;
302
+ }
303
+ function optionalText(value) {
304
+ if (value === undefined)
305
+ return undefined;
306
+ if (typeof value !== 'string')
307
+ throw MarifoldError_1.MarifoldError.taskInvalid('Expected task text fields to be strings.');
308
+ const trimmed = value.trim();
309
+ return trimmed ? trimmed : undefined;
310
+ }
311
+ function optionalField(key, value) {
312
+ const text = optionalText(value);
313
+ return text === undefined ? {} : { [key]: text };
314
+ }
315
+ function assignOptional(task, key, value) {
316
+ if (value === undefined)
317
+ return;
318
+ const text = optionalText(value);
319
+ if (text === undefined)
320
+ delete task[key];
321
+ else
322
+ task[key] = text;
323
+ }
324
+ function normalizeTags(value) {
325
+ if (value === undefined)
326
+ return [];
327
+ if (!Array.isArray(value))
328
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task tags must be an array of strings.');
329
+ return [...new Set(value.map(tag => requiredText(tag, 'tag')))].sort((a, b) => a.localeCompare(b));
330
+ }
331
+ function normalizeMetadata(value) {
332
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
333
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task event metadata must be an object.');
334
+ }
335
+ const normalized = {};
336
+ for (const [key, item] of Object.entries(value)) {
337
+ if (!key.trim())
338
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task event metadata keys cannot be empty.');
339
+ if (typeof item !== 'string')
340
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task event metadata values must be strings.');
341
+ normalized[key] = item;
342
+ }
343
+ return normalized;
344
+ }
345
+ function normalizeTaskStatus(value) {
346
+ if (value === 'running' || value === 'blocked' || value === 'completed' || value === 'failed' || value === 'cancelled') {
347
+ return value;
348
+ }
349
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Invalid task status '${String(value)}'.`);
350
+ }
351
+ function normalizeStepStatus(value) {
352
+ if (value === 'pending' || value === 'in_progress' || value === 'completed' || value === 'skipped' || value === 'cancelled') {
353
+ return value;
354
+ }
355
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Invalid task step status '${String(value)}'.`);
356
+ }
357
+ function normalizeEventKind(value) {
358
+ if (value === 'progress' || value === 'decision' || value === 'observation' || value === 'blocker' || value === 'verification' || value === 'note') {
359
+ return value;
360
+ }
361
+ throw MarifoldError_1.MarifoldError.taskInvalid(`Invalid task event kind '${String(value)}'.`);
362
+ }
363
+ function normalizeLimit(value) {
364
+ if (value === undefined)
365
+ return 50;
366
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 1) {
367
+ throw MarifoldError_1.MarifoldError.taskInvalid('Task list limit must be a positive integer.');
368
+ }
369
+ return value;
370
+ }
371
+ //# sourceMappingURL=TaskStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStore.js","sourceRoot":"","sources":["../../src/tasks/TaskStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface TransientFetchRetryOptions {
2
+ attempts?: number;
3
+ delayMs?: number;
4
+ fetchImpl?: typeof fetch;
5
+ }
6
+ /** Retry fetch rejections caused by transient network failures. HTTP responses
7
+ * are returned untouched: callers decide whether an application-level request
8
+ * is safe to repeat. */
9
+ export declare function fetchWithTransientRetry(input: RequestInfo | URL, init?: RequestInit, options?: TransientFetchRetryOptions): Promise<Response>;
10
+ export declare function isTransientFetchError(error: unknown): boolean;
11
+ //# sourceMappingURL=fetchRetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchRetry.d.ts","sourceRoot":"","sources":["../../src/util/fetchRetry.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;wBAEwB;AACxB,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,QAAQ,CAAC,CAanB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ7D"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchWithTransientRetry = fetchWithTransientRetry;
4
+ exports.isTransientFetchError = isTransientFetchError;
5
+ const TRANSIENT_NETWORK_CODES = new Set([
6
+ 'EAI_AGAIN',
7
+ 'ECONNABORTED',
8
+ 'ECONNRESET',
9
+ 'EHOSTUNREACH',
10
+ 'ENETDOWN',
11
+ 'ENETRESET',
12
+ 'ENETUNREACH',
13
+ 'ETIMEDOUT',
14
+ 'UND_ERR_CONNECT_TIMEOUT',
15
+ 'UND_ERR_SOCKET',
16
+ ]);
17
+ /** Retry fetch rejections caused by transient network failures. HTTP responses
18
+ * are returned untouched: callers decide whether an application-level request
19
+ * is safe to repeat. */
20
+ async function fetchWithTransientRetry(input, init, options = {}) {
21
+ const attempts = Math.max(1, options.attempts ?? 3);
22
+ const delayMs = Math.max(0, options.delayMs ?? 250);
23
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
24
+ for (let attempt = 1;; attempt += 1) {
25
+ try {
26
+ return await fetchImpl(input, init);
27
+ }
28
+ catch (error) {
29
+ if (attempt >= attempts || init?.signal?.aborted || !isTransientFetchError(error))
30
+ throw error;
31
+ await delay(delayMs * attempt);
32
+ }
33
+ }
34
+ }
35
+ function isTransientFetchError(error) {
36
+ let current = error;
37
+ for (let depth = 0; depth < 4 && current && typeof current === 'object'; depth += 1) {
38
+ const code = current.code;
39
+ if (typeof code === 'string' && TRANSIENT_NETWORK_CODES.has(code))
40
+ return true;
41
+ current = current.cause;
42
+ }
43
+ return false;
44
+ }
45
+ function delay(ms) {
46
+ return ms === 0 ? Promise.resolve() : new Promise(resolve => setTimeout(resolve, ms));
47
+ }
48
+ //# sourceMappingURL=fetchRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchRetry.js","sourceRoot":"","sources":["../../src/util/fetchRetry.ts"],"names":[],"mappings":";;;;AAAA,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,WAAW;IACX,cAAc;IACd,YAAY;IACZ,cAAc;IACd,UAAU;IACV,WAAW;IACX,aAAa;IACb,WAAW;IACX,yBAAyB;IACzB,gBAAgB;CACjB,CAAC,CAAC;AAQH;;wBAEwB;AACjB,KAAK,kCACV,KAAwB,EACxB,IAAkB,EAClB,OAAO,GAA+B,EAAE;IAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IAExD,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,QAAQ,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/F,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,+BAAsC,KAAc;IAClD,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,GAAI,OAA8B,CAAC,IAAI,CAAC;QAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/E,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Read `chatgpt_account_id` from an OpenAI id_token's `https://api.openai.com/auth`
3
+ * claim. Decodes the JWT payload locally (no signature check — we only read a
4
+ * claim from a token we already obtained over TLS from our own exchange).
5
+ * Returns undefined when the token is malformed or the claim is absent.
6
+ *
7
+ * Subscription (ChatGPT plan) accounts carry no platform organization, so this
8
+ * account id — not a platform API key — is what authorizes Codex-backend calls
9
+ * (sent as the `chatgpt-account-id` header alongside the OAuth access token).
10
+ */
11
+ export declare function accountIdFromIdToken(idToken: string): string | undefined;
12
+ //# sourceMappingURL=idToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idToken.d.ts","sourceRoot":"","sources":["../../src/util/idToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAcxE"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.accountIdFromIdToken = accountIdFromIdToken;
4
+ /**
5
+ * Read `chatgpt_account_id` from an OpenAI id_token's `https://api.openai.com/auth`
6
+ * claim. Decodes the JWT payload locally (no signature check — we only read a
7
+ * claim from a token we already obtained over TLS from our own exchange).
8
+ * Returns undefined when the token is malformed or the claim is absent.
9
+ *
10
+ * Subscription (ChatGPT plan) accounts carry no platform organization, so this
11
+ * account id — not a platform API key — is what authorizes Codex-backend calls
12
+ * (sent as the `chatgpt-account-id` header alongside the OAuth access token).
13
+ */
14
+ function accountIdFromIdToken(idToken) {
15
+ const parts = idToken.split('.');
16
+ if (parts.length !== 3)
17
+ return undefined;
18
+ try {
19
+ const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8'));
20
+ const auth = payload['https://api.openai.com/auth'];
21
+ if (auth && typeof auth === 'object') {
22
+ const id = auth.chatgpt_account_id;
23
+ if (typeof id === 'string' && id)
24
+ return id;
25
+ }
26
+ }
27
+ catch {
28
+ // Malformed token — treat as no account id.
29
+ }
30
+ return undefined;
31
+ }
32
+ //# sourceMappingURL=idToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idToken.js","sourceRoot":"","sources":["../../src/util/idToken.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,8BAAqC,OAAe;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA4B,CAAC;QAC3G,MAAM,IAAI,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACpD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,EAAE,GAAI,IAAgC,CAAC,kBAAkB,CAAC;YAChE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE;gBAAE,OAAO,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { ProxyAgent } from 'undici';
2
+ /**
3
+ * Build an undici proxy dispatcher from an explicit proxy URL or, when omitted,
4
+ * the `HTTP(S)_PROXY` environment variables. Returns undefined when no proxy is
5
+ * configured, so `fetch` goes direct.
6
+ *
7
+ * Node's built-in `fetch` ignores `HTTPS_PROXY` by default (unlike Python or
8
+ * `NODE_USE_ENV_PROXY=1` at startup), so a request that must traverse a proxy
9
+ * has to pass this as `fetch(url, { dispatcher: proxyDispatcher() })`. It proxies
10
+ * every request sent through it — use it only for calls that should always go
11
+ * via the proxy (e.g. an external OAuth/API host), not local traffic.
12
+ *
13
+ * Keep the `undici` dependency on the same dispatcher protocol as Node's
14
+ * built-in fetch. Node 24 bundles undici 7; an undici 8 ProxyAgent passed to
15
+ * Node 24's global fetch fails with `UND_ERR_INVALID_ARG`.
16
+ */
17
+ export declare function proxyDispatcher(proxy?: string): ProxyAgent | undefined;
18
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/util/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAOtE"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.proxyDispatcher = proxyDispatcher;
4
+ const undici_1 = require("undici");
5
+ /**
6
+ * Build an undici proxy dispatcher from an explicit proxy URL or, when omitted,
7
+ * the `HTTP(S)_PROXY` environment variables. Returns undefined when no proxy is
8
+ * configured, so `fetch` goes direct.
9
+ *
10
+ * Node's built-in `fetch` ignores `HTTPS_PROXY` by default (unlike Python or
11
+ * `NODE_USE_ENV_PROXY=1` at startup), so a request that must traverse a proxy
12
+ * has to pass this as `fetch(url, { dispatcher: proxyDispatcher() })`. It proxies
13
+ * every request sent through it — use it only for calls that should always go
14
+ * via the proxy (e.g. an external OAuth/API host), not local traffic.
15
+ *
16
+ * Keep the `undici` dependency on the same dispatcher protocol as Node's
17
+ * built-in fetch. Node 24 bundles undici 7; an undici 8 ProxyAgent passed to
18
+ * Node 24's global fetch fails with `UND_ERR_INVALID_ARG`.
19
+ */
20
+ function proxyDispatcher(proxy) {
21
+ // `||` (not `??`) so an empty-string env var counts as unset — some proxy
22
+ // tools set the lowercase `https_proxy` and leave `HTTPS_PROXY=""`.
23
+ const url = proxy
24
+ || process.env.HTTPS_PROXY || process.env.https_proxy
25
+ || process.env.HTTP_PROXY || process.env.http_proxy;
26
+ return url ? new undici_1.ProxyAgent(url) : undefined;
27
+ }
28
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/util/proxy.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC;;;;;;;;;;;;;;GAcG;AACH,yBAAgC,KAAc;IAC5C,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,GAAG,GAAG,KAAK;WACZ,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;WAClD,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,mBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { MarifoldConfig } from '../config/ConfigSchema';
2
+ export declare class Workspace {
3
+ readonly config: MarifoldConfig;
4
+ constructor(config: MarifoldConfig);
5
+ get profilesDir(): string;
6
+ get sessionsDb(): string;
7
+ ensureSessionDirectory(): void;
8
+ }
9
+ //# sourceMappingURL=Workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Workspace.d.ts","sourceRoot":"","sources":["../../src/workspace/Workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,SAAS;IACR,QAAQ,CAAC,MAAM,EAAE,cAAc;IAA3C,YAAqB,MAAM,EAAE,cAAc,EAAI;IAE/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,sBAAsB,IAAI,IAAI,CAE7B;CACF"}