imperium-crawl 2.5.3 → 2.6.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 (235) hide show
  1. package/README.md +15 -14
  2. package/dist/batch/job-store.js +1 -1
  3. package/dist/batch/job-store.js.map +1 -1
  4. package/dist/brave-api/index.js +1 -1
  5. package/dist/brave-api/index.js.map +1 -1
  6. package/dist/cli/config.d.ts +21 -0
  7. package/dist/cli/config.d.ts.map +1 -0
  8. package/dist/cli/config.js +51 -0
  9. package/dist/cli/config.js.map +1 -0
  10. package/dist/cli/engine.d.ts +17 -0
  11. package/dist/cli/engine.d.ts.map +1 -0
  12. package/dist/cli/engine.js +440 -0
  13. package/dist/cli/engine.js.map +1 -0
  14. package/dist/cli/explore.d.ts +30 -0
  15. package/dist/cli/explore.d.ts.map +1 -0
  16. package/dist/cli/explore.js +427 -0
  17. package/dist/cli/explore.js.map +1 -0
  18. package/dist/cli/onboarding.d.ts +10 -0
  19. package/dist/cli/onboarding.d.ts.map +1 -0
  20. package/dist/cli/onboarding.js +128 -0
  21. package/dist/cli/onboarding.js.map +1 -0
  22. package/dist/cli/recorder.d.ts +44 -0
  23. package/dist/cli/recorder.d.ts.map +1 -0
  24. package/dist/cli/recorder.js +67 -0
  25. package/dist/cli/recorder.js.map +1 -0
  26. package/dist/cli/tui.d.ts +12 -0
  27. package/dist/cli/tui.d.ts.map +1 -0
  28. package/dist/cli/tui.js +945 -0
  29. package/dist/cli/tui.js.map +1 -0
  30. package/dist/cli/ui.d.ts +26 -0
  31. package/dist/cli/ui.d.ts.map +1 -0
  32. package/dist/cli/ui.js +58 -0
  33. package/dist/cli/ui.js.map +1 -0
  34. package/dist/core/action-executor.d.ts +66 -0
  35. package/dist/core/action-executor.d.ts.map +1 -0
  36. package/dist/core/action-executor.js +403 -0
  37. package/dist/core/action-executor.js.map +1 -0
  38. package/dist/core/config.d.ts +16 -0
  39. package/dist/core/config.d.ts.map +1 -0
  40. package/dist/core/config.js +56 -0
  41. package/dist/core/config.js.map +1 -0
  42. package/dist/core/constants.d.ts +40 -0
  43. package/dist/core/constants.d.ts.map +1 -0
  44. package/dist/core/constants.js +86 -0
  45. package/dist/core/constants.js.map +1 -0
  46. package/dist/core/formatters.d.ts +36 -0
  47. package/dist/core/formatters.d.ts.map +1 -0
  48. package/dist/core/formatters.js +147 -0
  49. package/dist/core/formatters.js.map +1 -0
  50. package/dist/engines/camofox.d.ts +27 -0
  51. package/dist/engines/camofox.d.ts.map +1 -0
  52. package/dist/engines/camofox.js +432 -0
  53. package/dist/engines/camofox.js.map +1 -0
  54. package/dist/engines/index.d.ts +13 -0
  55. package/dist/engines/index.d.ts.map +1 -0
  56. package/dist/engines/index.js +41 -0
  57. package/dist/engines/index.js.map +1 -0
  58. package/dist/engines/types.d.ts +63 -0
  59. package/dist/engines/types.d.ts.map +1 -0
  60. package/dist/engines/types.js +8 -0
  61. package/dist/engines/types.js.map +1 -0
  62. package/dist/flows/engine.js +3 -3
  63. package/dist/flows/engine.js.map +1 -1
  64. package/dist/flows/storage.js +1 -1
  65. package/dist/flows/storage.js.map +1 -1
  66. package/dist/flows/templates.js +1 -1
  67. package/dist/flows/templates.js.map +1 -1
  68. package/dist/flows/types.d.ts +405 -405
  69. package/dist/index.js +4 -4
  70. package/dist/index.js.map +1 -1
  71. package/dist/knowledge/store.js +1 -1
  72. package/dist/knowledge/store.js.map +1 -1
  73. package/dist/network/index.d.ts +3 -0
  74. package/dist/network/index.d.ts.map +1 -0
  75. package/dist/network/index.js +2 -0
  76. package/dist/network/index.js.map +1 -0
  77. package/dist/recipes/data/crypto-websocket.json +11 -0
  78. package/dist/recipes/data/ecommerce-product.json +25 -0
  79. package/dist/recipes/data/github-trending.json +19 -0
  80. package/dist/recipes/data/hn-top-stories.json +22 -0
  81. package/dist/recipes/data/influencer-competitor-spy.json +14 -0
  82. package/dist/recipes/data/influencer-content-scout.json +14 -0
  83. package/dist/recipes/data/influencer-hashtag-scout.json +14 -0
  84. package/dist/recipes/data/influencer-niche-discovery.json +14 -0
  85. package/dist/recipes/data/job-listings-greenhouse.json +17 -0
  86. package/dist/recipes/data/news-article-reader.json +9 -0
  87. package/dist/recipes/data/product-reviews.json +33 -0
  88. package/dist/recipes/data/reddit-posts.json +8 -0
  89. package/dist/recipes/data/seo-page-audit.json +26 -0
  90. package/dist/recipes/data/social-media-mentions.json +31 -0
  91. package/dist/recipes/index.d.ts +1 -1
  92. package/dist/recipes/index.d.ts.map +1 -1
  93. package/dist/recipes/index.js +14 -14
  94. package/dist/recipes/index.js.map +1 -1
  95. package/dist/security/auth-vault.js +1 -1
  96. package/dist/security/auth-vault.js.map +1 -1
  97. package/dist/security/index.d.ts +6 -0
  98. package/dist/security/index.d.ts.map +1 -0
  99. package/dist/security/index.js +4 -0
  100. package/dist/security/index.js.map +1 -0
  101. package/dist/sessions/browser-state.js +1 -1
  102. package/dist/sessions/browser-state.js.map +1 -1
  103. package/dist/sessions/encryption.js +1 -1
  104. package/dist/sessions/encryption.js.map +1 -1
  105. package/dist/sessions/manager.js +1 -1
  106. package/dist/sessions/manager.js.map +1 -1
  107. package/dist/skills/detector.js +1 -1
  108. package/dist/skills/detector.js.map +1 -1
  109. package/dist/skills/index.d.ts +9 -0
  110. package/dist/skills/index.d.ts.map +1 -0
  111. package/dist/skills/index.js +6 -0
  112. package/dist/skills/index.js.map +1 -0
  113. package/dist/skills/manager.js +1 -1
  114. package/dist/skills/manager.js.map +1 -1
  115. package/dist/snapshot/store.js +1 -1
  116. package/dist/snapshot/store.js.map +1 -1
  117. package/dist/social/index.d.ts +7 -0
  118. package/dist/social/index.d.ts.map +1 -0
  119. package/dist/social/index.js +4 -0
  120. package/dist/social/index.js.map +1 -0
  121. package/dist/stealth/browser-pool.js +1 -1
  122. package/dist/stealth/browser-pool.js.map +1 -1
  123. package/dist/stealth/browser.js +2 -2
  124. package/dist/stealth/browser.js.map +1 -1
  125. package/dist/stealth/chrome-profile.js +2 -2
  126. package/dist/stealth/chrome-profile.js.map +1 -1
  127. package/dist/stealth/index.js +2 -2
  128. package/dist/stealth/index.js.map +1 -1
  129. package/dist/tools/ai-extract.js +1 -1
  130. package/dist/tools/ai-extract.js.map +1 -1
  131. package/dist/tools/batch-download.d.ts +1 -1
  132. package/dist/tools/batch-download.js +1 -1
  133. package/dist/tools/batch-download.js.map +1 -1
  134. package/dist/tools/batch-scrape.d.ts +2 -2
  135. package/dist/tools/batch-scrape.js +1 -1
  136. package/dist/tools/batch-scrape.js.map +1 -1
  137. package/dist/tools/browser.d.ts +8 -8
  138. package/dist/tools/browser.js +4 -4
  139. package/dist/tools/browser.js.map +1 -1
  140. package/dist/tools/camofox-status.d.ts +14 -0
  141. package/dist/tools/camofox-status.d.ts.map +1 -0
  142. package/dist/tools/camofox-status.js +61 -0
  143. package/dist/tools/camofox-status.js.map +1 -0
  144. package/dist/tools/camofox-update.d.ts +29 -0
  145. package/dist/tools/camofox-update.d.ts.map +1 -0
  146. package/dist/tools/camofox-update.js +108 -0
  147. package/dist/tools/camofox-update.js.map +1 -0
  148. package/dist/tools/crawl.d.ts +2 -2
  149. package/dist/tools/crawl.js +1 -1
  150. package/dist/tools/crawl.js.map +1 -1
  151. package/dist/tools/create-skill.js +3 -3
  152. package/dist/tools/create-skill.js.map +1 -1
  153. package/dist/tools/discover-apis.d.ts +1 -1
  154. package/dist/tools/discover-apis.js +1 -1
  155. package/dist/tools/discover-apis.js.map +1 -1
  156. package/dist/tools/download.d.ts +7 -7
  157. package/dist/tools/download.js +1 -1
  158. package/dist/tools/download.js.map +1 -1
  159. package/dist/tools/extract.d.ts +1 -1
  160. package/dist/tools/extract.js +1 -1
  161. package/dist/tools/extract.js.map +1 -1
  162. package/dist/tools/image-search.d.ts +1 -1
  163. package/dist/tools/image-search.js +2 -2
  164. package/dist/tools/image-search.js.map +1 -1
  165. package/dist/tools/index.d.ts.map +1 -1
  166. package/dist/tools/index.js +5 -0
  167. package/dist/tools/index.js.map +1 -1
  168. package/dist/tools/instagram.d.ts +1 -1
  169. package/dist/tools/instagram.js +3 -3
  170. package/dist/tools/instagram.js.map +1 -1
  171. package/dist/tools/interact.d.ts +86 -86
  172. package/dist/tools/interact.js +5 -5
  173. package/dist/tools/interact.js.map +1 -1
  174. package/dist/tools/knowledge.js +1 -1
  175. package/dist/tools/knowledge.js.map +1 -1
  176. package/dist/tools/list-skills.js +1 -1
  177. package/dist/tools/list-skills.js.map +1 -1
  178. package/dist/tools/manifest.d.ts.map +1 -1
  179. package/dist/tools/manifest.js +9 -0
  180. package/dist/tools/manifest.js.map +1 -1
  181. package/dist/tools/map.js +1 -1
  182. package/dist/tools/map.js.map +1 -1
  183. package/dist/tools/monitor-websocket.d.ts +1 -1
  184. package/dist/tools/monitor-websocket.js +1 -1
  185. package/dist/tools/monitor-websocket.js.map +1 -1
  186. package/dist/tools/monitor.d.ts +2 -2
  187. package/dist/tools/news-search.d.ts +1 -1
  188. package/dist/tools/news-search.js +2 -2
  189. package/dist/tools/news-search.js.map +1 -1
  190. package/dist/tools/query-api.d.ts +5 -5
  191. package/dist/tools/query-api.js +1 -1
  192. package/dist/tools/query-api.js.map +1 -1
  193. package/dist/tools/readability.js +1 -1
  194. package/dist/tools/readability.js.map +1 -1
  195. package/dist/tools/record-flow.d.ts +2 -2
  196. package/dist/tools/record-flow.js +3 -3
  197. package/dist/tools/record-flow.js.map +1 -1
  198. package/dist/tools/reddit.d.ts +2 -2
  199. package/dist/tools/reddit.js +3 -3
  200. package/dist/tools/reddit.js.map +1 -1
  201. package/dist/tools/rss.js +1 -1
  202. package/dist/tools/rss.js.map +1 -1
  203. package/dist/tools/run-flow.d.ts +6 -6
  204. package/dist/tools/run-skill.d.ts +6 -6
  205. package/dist/tools/run-skill.js +2 -2
  206. package/dist/tools/run-skill.js.map +1 -1
  207. package/dist/tools/scrape.d.ts +4 -4
  208. package/dist/tools/scrape.js +1 -1
  209. package/dist/tools/scrape.js.map +1 -1
  210. package/dist/tools/screenshot.js +1 -1
  211. package/dist/tools/screenshot.js.map +1 -1
  212. package/dist/tools/search.d.ts +1 -1
  213. package/dist/tools/search.js +2 -2
  214. package/dist/tools/search.js.map +1 -1
  215. package/dist/tools/snapshot.d.ts +5 -5
  216. package/dist/tools/snapshot.js +2 -2
  217. package/dist/tools/snapshot.js.map +1 -1
  218. package/dist/tools/video-search.d.ts +1 -1
  219. package/dist/tools/video-search.js +2 -2
  220. package/dist/tools/video-search.js.map +1 -1
  221. package/dist/tools/watch.d.ts +2 -2
  222. package/dist/tools/watch.js +1 -1
  223. package/dist/tools/watch.js.map +1 -1
  224. package/dist/tools/youtube.d.ts +1 -1
  225. package/dist/tools/youtube.js +4 -4
  226. package/dist/tools/youtube.js.map +1 -1
  227. package/dist/types.d.ts +14 -0
  228. package/dist/types.d.ts.map +1 -0
  229. package/dist/types.js +5 -0
  230. package/dist/types.js.map +1 -0
  231. package/dist/utils/fetcher.js +1 -1
  232. package/dist/utils/fetcher.js.map +1 -1
  233. package/dist/utils/robots.js +1 -1
  234. package/dist/utils/robots.js.map +1 -1
  235. package/package.json +7 -3
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Interactive setup wizard for imperium-crawl CLI.
3
+ *
4
+ * Usage: imperium-crawl setup
5
+ *
6
+ * Guides the user through configuring API keys and saves them to
7
+ * ~/.imperium-crawl/config.json for persistent use.
8
+ */
9
+ import chalk from "chalk";
10
+ import { input, select, confirm } from "@inquirer/prompts";
11
+ import { loadCliConfig, saveCliConfig, getCliConfigPath } from "./config.js";
12
+ const BANNER = chalk.cyan(`
13
+ ██╗███╗ ███╗██████╗ ███████╗██████╗ ██╗██╗ ██╗███╗ ███╗
14
+ ██║████╗ ████║██╔══██╗██╔════╝██╔══██╗██║██║ ██║████╗ ████║
15
+ ██║██╔████╔██║██████╔╝█████╗ ██████╔╝██║██║ ██║██╔████╔██║
16
+ ██║██║╚██╔╝██║██╔═══╝ ██╔══╝ ██╔══██╗██║██║ ██║██║╚██╔╝██║
17
+ ██║██║ ╚═╝ ██║██║ ███████╗██║ ██║██║╚██████╔╝██║ ╚═╝ ██║
18
+ ╚═╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═╝
19
+ `);
20
+ export async function runSetup() {
21
+ console.log(BANNER);
22
+ console.log(chalk.bold(" API Key Setup\n"));
23
+ const existing = loadCliConfig();
24
+ const config = { ...existing };
25
+ // ── Brave Search ──────────────────────────────────────────────────
26
+ const hasBrave = !!(process.env.BRAVE_API_KEY || existing.BRAVE_API_KEY);
27
+ if (hasBrave) {
28
+ console.log(chalk.green(" ✓ BRAVE_API_KEY") +
29
+ chalk.dim(" — already configured (search, news_search, image_search, video_search)"));
30
+ }
31
+ else {
32
+ console.log(chalk.dim(" Brave Search enables 4 search tools. Free tier: https://brave.com/search/api/\n"));
33
+ const braveKey = await input({
34
+ message: "Brave Search API key (press Enter to skip):",
35
+ });
36
+ if (braveKey.trim())
37
+ config.BRAVE_API_KEY = braveKey.trim();
38
+ }
39
+ console.log();
40
+ // ── LLM Provider ─────────────────────────────────────────────────
41
+ const hasLLM = !!(process.env.LLM_API_KEY || existing.LLM_API_KEY);
42
+ if (hasLLM) {
43
+ const currentProvider = process.env.LLM_PROVIDER || existing.LLM_PROVIDER || "anthropic";
44
+ console.log(chalk.green(` ✓ LLM_API_KEY (${currentProvider})`) +
45
+ chalk.dim(" — already configured (ai_extract tool)"));
46
+ }
47
+ else {
48
+ console.log(chalk.dim(" LLM key enables the ai_extract tool — natural language data extraction.\n"));
49
+ const provider = await select({
50
+ message: "LLM provider (for ai_extract tool):",
51
+ choices: [
52
+ {
53
+ name: "Anthropic (Claude Haiku — default)",
54
+ value: "anthropic",
55
+ description: "Fast, affordable. Get key: https://console.anthropic.com",
56
+ },
57
+ {
58
+ name: "OpenAI (GPT-4o mini — default)",
59
+ value: "openai",
60
+ description: "Widely used. Get key: https://platform.openai.com",
61
+ },
62
+ {
63
+ name: "MiniMax (M2.5 — 200K context, reasoning)",
64
+ value: "minimax",
65
+ description: "Strong model, OpenAI-compatible API.",
66
+ },
67
+ {
68
+ name: "Skip for now",
69
+ value: "skip",
70
+ description: "Configure later via env vars or run setup again.",
71
+ },
72
+ ],
73
+ });
74
+ if (provider !== "skip") {
75
+ config.LLM_PROVIDER = provider;
76
+ const providerLabel = provider === "anthropic" ? "Anthropic" : provider === "openai" ? "OpenAI" : "MiniMax";
77
+ const llmKey = await input({
78
+ message: `${providerLabel} API key:`,
79
+ });
80
+ if (llmKey.trim())
81
+ config.LLM_API_KEY = llmKey.trim();
82
+ }
83
+ }
84
+ console.log();
85
+ // ── 2Captcha ─────────────────────────────────────────────────────
86
+ const hasCaptcha = !!(process.env.TWOCAPTCHA_API_KEY ||
87
+ process.env.TWO_CAPTCHA_API_KEY ||
88
+ existing.TWOCAPTCHA_API_KEY);
89
+ if (hasCaptcha) {
90
+ console.log(chalk.green(" ✓ TWOCAPTCHA_API_KEY") +
91
+ chalk.dim(" — already configured (auto CAPTCHA solving in stealth level 3)"));
92
+ }
93
+ else {
94
+ const wantCaptcha = await confirm({
95
+ message: "Configure 2Captcha for automatic CAPTCHA solving? (optional)",
96
+ default: false,
97
+ });
98
+ if (wantCaptcha) {
99
+ const captchaKey = await input({
100
+ message: "2Captcha API key (https://2captcha.com):",
101
+ });
102
+ if (captchaKey.trim())
103
+ config.TWOCAPTCHA_API_KEY = captchaKey.trim();
104
+ }
105
+ }
106
+ // ── Save + Summary ────────────────────────────────────────────────
107
+ saveCliConfig(config);
108
+ console.log("\n" + chalk.bold(" ─────────────────────────────────────────"));
109
+ const enabledTools = [];
110
+ if (config.BRAVE_API_KEY || process.env.BRAVE_API_KEY) {
111
+ enabledTools.push("search, news_search, image_search, video_search");
112
+ }
113
+ if (config.LLM_API_KEY || process.env.LLM_API_KEY) {
114
+ enabledTools.push("ai_extract");
115
+ }
116
+ if (config.TWOCAPTCHA_API_KEY || process.env.TWOCAPTCHA_API_KEY) {
117
+ enabledTools.push("CAPTCHA auto-solve (stealth lvl 3)");
118
+ }
119
+ if (enabledTools.length > 0) {
120
+ console.log(chalk.green(`\n 🚀 Ready! Extra tools enabled: ${enabledTools.join(", ")}`));
121
+ }
122
+ else {
123
+ console.log(chalk.yellow("\n ⚠ No API keys configured.") +
124
+ chalk.dim(" Basic scraping tools work without keys."));
125
+ }
126
+ console.log(chalk.dim(`\n Config saved → ${getCliConfigPath()}\n`));
127
+ }
128
+ //# sourceMappingURL=onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/cli/onboarding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Action Recorder — captures browser actions during an explore REPL session.
3
+ *
4
+ * Records every action the user performs, supports undo, and can export
5
+ * the captured sequence as an InteractSkillConfig JSON file.
6
+ *
7
+ * Usage: instantiate one per explore session, call record() after each action,
8
+ * call toSkillConfig() at the end to get a saveable skill.
9
+ */
10
+ import type { ActionInput } from "../core/action-executor.js";
11
+ import type { InteractSkillConfig } from "../skills/index.js";
12
+ import type { SkillParameters } from "../skills/index.js";
13
+ export interface RecordedAction {
14
+ action: ActionInput;
15
+ rawCommand: string;
16
+ pageUrl: string;
17
+ timestamp: number;
18
+ }
19
+ export declare class ActionRecorder {
20
+ private history;
21
+ private startUrl;
22
+ constructor(startUrl: string);
23
+ /** Record an action after it was successfully executed. */
24
+ record(action: ActionInput, rawCommand: string, pageUrl: string): void;
25
+ /** Remove the last recorded action. */
26
+ undo(): RecordedAction | null;
27
+ /** Current number of recorded actions. */
28
+ get count(): number;
29
+ /** List all recorded actions for display. */
30
+ getHistory(): RecordedAction[];
31
+ /** Clear all recorded actions. */
32
+ clear(): void;
33
+ /**
34
+ * Heuristically detect fields that should be parameterized.
35
+ * Returns suggested SkillParameters — user reviews and adjusts.
36
+ */
37
+ detectParameters(): SkillParameters;
38
+ /**
39
+ * Export recorded session to InteractSkillConfig.
40
+ * Ready to save with skills/manager.ts save().
41
+ */
42
+ toSkillConfig(name: string, description: string, sessionId?: string, parameters?: SkillParameters): InteractSkillConfig;
43
+ }
44
+ //# sourceMappingURL=recorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/cli/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAI5B,2DAA2D;IAC3D,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAStE,uCAAuC;IACvC,IAAI,IAAI,cAAc,GAAG,IAAI;IAI7B,0CAA0C;IAC1C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,6CAA6C;IAC7C,UAAU,IAAI,cAAc,EAAE;IAI9B,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,gBAAgB,IAAI,eAAe;IAKnC;;;OAGG;IACH,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,eAAe,GAC3B,mBAAmB;CAYvB"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Action Recorder — captures browser actions during an explore REPL session.
3
+ *
4
+ * Records every action the user performs, supports undo, and can export
5
+ * the captured sequence as an InteractSkillConfig JSON file.
6
+ *
7
+ * Usage: instantiate one per explore session, call record() after each action,
8
+ * call toSkillConfig() at the end to get a saveable skill.
9
+ */
10
+ import { detectParameterCandidates } from "../skills/index.js";
11
+ export class ActionRecorder {
12
+ history = [];
13
+ startUrl;
14
+ constructor(startUrl) {
15
+ this.startUrl = startUrl;
16
+ }
17
+ /** Record an action after it was successfully executed. */
18
+ record(action, rawCommand, pageUrl) {
19
+ this.history.push({
20
+ action,
21
+ rawCommand,
22
+ pageUrl,
23
+ timestamp: Date.now(),
24
+ });
25
+ }
26
+ /** Remove the last recorded action. */
27
+ undo() {
28
+ return this.history.pop() ?? null;
29
+ }
30
+ /** Current number of recorded actions. */
31
+ get count() {
32
+ return this.history.length;
33
+ }
34
+ /** List all recorded actions for display. */
35
+ getHistory() {
36
+ return [...this.history];
37
+ }
38
+ /** Clear all recorded actions. */
39
+ clear() {
40
+ this.history = [];
41
+ }
42
+ /**
43
+ * Heuristically detect fields that should be parameterized.
44
+ * Returns suggested SkillParameters — user reviews and adjusts.
45
+ */
46
+ detectParameters() {
47
+ const actions = this.history.map((r) => r.action);
48
+ return detectParameterCandidates(actions);
49
+ }
50
+ /**
51
+ * Export recorded session to InteractSkillConfig.
52
+ * Ready to save with skills/manager.ts save().
53
+ */
54
+ toSkillConfig(name, description, sessionId, parameters) {
55
+ return {
56
+ name,
57
+ description,
58
+ tool: "interact",
59
+ url: this.startUrl,
60
+ created_at: new Date().toISOString(),
61
+ session_id: sessionId,
62
+ actions: this.history.map((r) => ({ ...r.action })),
63
+ ...(parameters && Object.keys(parameters).length > 0 && { parameters }),
64
+ };
65
+ }
66
+ }
67
+ //# sourceMappingURL=recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/cli/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAS/D,MAAM,OAAO,cAAc;IACjB,OAAO,GAAqB,EAAE,CAAC;IAC/B,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,2DAA2D;IAC3D,MAAM,CAAC,MAAmB,EAAE,UAAkB,EAAE,OAAe;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,MAAM;YACN,UAAU;YACV,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;IACpC,CAAC;IAED,0CAA0C;IAC1C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,6CAA6C;IAC7C,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,kCAAkC;IAClC,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAC;QAC7E,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,aAAa,CACX,IAAY,EACZ,WAAmB,EACnB,SAAkB,EAClB,UAA4B;QAE5B,OAAO;YACL,IAAI;YACJ,WAAW;YACX,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;SACxE,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Full TUI (Terminal User Interface) for imperium-crawl — v3
3
+ *
4
+ * Slash-command-driven UX (Claude Code aesthetic).
5
+ * readline for main prompt, @clack/prompts for param collection only.
6
+ *
7
+ * Activated when: no CLI args AND process.stdout.isTTY.
8
+ * Non-TTY mode (pipe/CI/agents) shows --help output.
9
+ * CLI subcommands (scrape, crawl, etc.) are unaffected — they bypass this.
10
+ */
11
+ export declare function runTui(): Promise<void>;
12
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/cli/tui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgjCH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAsB5C"}