@duckmind/dm-windows-x64 0.62.3 → 0.63.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 (93) hide show
  1. package/dm.exe +0 -0
  2. package/extensions/.dm-extensions.json +43 -183
  3. package/extensions/dm-context/src/context.js +1 -2
  4. package/extensions/dm-context/src/index.js +1 -2
  5. package/extensions/{greedysearch-dm/bin/cdp.mjs → dm-cua/bin/browser-cdp.mjs} +3 -3
  6. package/extensions/dm-cua/bin/browser-cua.mjs +1 -1
  7. package/extensions/{greedysearch-dm/bin/launch.mjs → dm-cua/bin/browser-launch.mjs} +12 -11
  8. package/extensions/dm-cua/index.js +1 -1
  9. package/extensions/dm-cua/src/browser-cua-lib.mjs +17 -12
  10. package/extensions/{greedysearch-dm/src/search → dm-cua/src/browser-helpers}/constants.mjs +11 -11
  11. package/extensions/{greedysearch-dm/src/utils → dm-cua/src/browser-helpers}/node-runtime.mjs +1 -1
  12. package/extensions/{greedysearch-dm/src/search → dm-cua/src/browser-helpers}/port-pid.mjs +1 -1
  13. package/extensions/dm-ponytail/extensions/ponytail.mjs +186 -0
  14. package/extensions/dm-ponytail/hooks/claude-codex-hooks.json +41 -0
  15. package/extensions/dm-ponytail/hooks/copilot-hooks.json +21 -0
  16. package/extensions/dm-ponytail/hooks/ponytail-activate.js +59 -0
  17. package/extensions/dm-ponytail/hooks/ponytail-config.js +116 -0
  18. package/extensions/dm-ponytail/hooks/ponytail-instructions.js +81 -0
  19. package/extensions/dm-ponytail/hooks/ponytail-mode-tracker.js +96 -0
  20. package/extensions/dm-ponytail/hooks/ponytail-runtime.js +79 -0
  21. package/extensions/dm-ponytail/hooks/ponytail-statusline.ps1 +24 -0
  22. package/extensions/dm-ponytail/hooks/ponytail-statusline.sh +18 -0
  23. package/extensions/dm-ponytail/hooks/ponytail-subagent.js +50 -0
  24. package/extensions/dm-ponytail/hooks/qoder-hooks.json +26 -0
  25. package/extensions/dm-ponytail/package.json +19 -0
  26. package/extensions/dm-ponytail/pi-extension/index.js +186 -0
  27. package/extensions/dm-ponytail/pi-extension/package.json +8 -0
  28. package/extensions/dm-ponytail/skills/ponytail/SKILL.md +120 -0
  29. package/extensions/dm-ponytail/skills/ponytail-audit/SKILL.md +41 -0
  30. package/extensions/dm-ponytail/skills/ponytail-debt/SKILL.md +44 -0
  31. package/extensions/dm-ponytail/skills/ponytail-gain/SKILL.md +50 -0
  32. package/extensions/dm-ponytail/skills/ponytail-help/SKILL.md +71 -0
  33. package/extensions/dm-ponytail/skills/ponytail-review/SKILL.md +57 -0
  34. package/package.json +2 -6
  35. package/extensions/dm-caveman/extensions/caveman.js +0 -300
  36. package/extensions/dm-caveman/package.json +0 -20
  37. package/extensions/dm-goal/package.json +0 -23
  38. package/extensions/dm-goal/src/goal.js +0 -914
  39. package/extensions/greedysearch-dm/bin/cdp-greedy.mjs +0 -40
  40. package/extensions/greedysearch-dm/bin/cdp-headless.mjs +0 -5
  41. package/extensions/greedysearch-dm/bin/cdp-visible.mjs +0 -5
  42. package/extensions/greedysearch-dm/bin/gschrome.mjs +0 -30
  43. package/extensions/greedysearch-dm/bin/kill-visible.mjs +0 -7
  44. package/extensions/greedysearch-dm/bin/launch-visible.mjs +0 -13
  45. package/extensions/greedysearch-dm/bin/mcp.mjs +0 -400
  46. package/extensions/greedysearch-dm/bin/search.mjs +0 -635
  47. package/extensions/greedysearch-dm/bin/visible.mjs +0 -22
  48. package/extensions/greedysearch-dm/extractors/bing-copilot.mjs +0 -344
  49. package/extensions/greedysearch-dm/extractors/chatgpt.mjs +0 -354
  50. package/extensions/greedysearch-dm/extractors/common.mjs +0 -794
  51. package/extensions/greedysearch-dm/extractors/consensus.mjs +0 -527
  52. package/extensions/greedysearch-dm/extractors/consent.mjs +0 -449
  53. package/extensions/greedysearch-dm/extractors/gemini.mjs +0 -291
  54. package/extensions/greedysearch-dm/extractors/google-ai.mjs +0 -86
  55. package/extensions/greedysearch-dm/extractors/logically.mjs +0 -589
  56. package/extensions/greedysearch-dm/extractors/perplexity.mjs +0 -370
  57. package/extensions/greedysearch-dm/extractors/selectors.mjs +0 -32
  58. package/extensions/greedysearch-dm/extractors/semantic-scholar.mjs +0 -199
  59. package/extensions/greedysearch-dm/index.js +0 -123
  60. package/extensions/greedysearch-dm/package.json +0 -27
  61. package/extensions/greedysearch-dm/skills/greedy-search/skill.md +0 -18
  62. package/extensions/greedysearch-dm/src/fetcher.mjs +0 -577
  63. package/extensions/greedysearch-dm/src/formatters/results.js +0 -95
  64. package/extensions/greedysearch-dm/src/formatters/sources.js +0 -57
  65. package/extensions/greedysearch-dm/src/formatters/synthesis.js +0 -49
  66. package/extensions/greedysearch-dm/src/github.mjs +0 -228
  67. package/extensions/greedysearch-dm/src/reddit.mjs +0 -154
  68. package/extensions/greedysearch-dm/src/search/browser-lifecycle.mjs +0 -340
  69. package/extensions/greedysearch-dm/src/search/challenge-detect.mjs +0 -156
  70. package/extensions/greedysearch-dm/src/search/chrome.mjs +0 -510
  71. package/extensions/greedysearch-dm/src/search/defaults.mjs +0 -10
  72. package/extensions/greedysearch-dm/src/search/engines.mjs +0 -79
  73. package/extensions/greedysearch-dm/src/search/fetch-source.mjs +0 -470
  74. package/extensions/greedysearch-dm/src/search/file-sources.mjs +0 -31
  75. package/extensions/greedysearch-dm/src/search/output.mjs +0 -51
  76. package/extensions/greedysearch-dm/src/search/paths.mjs +0 -48
  77. package/extensions/greedysearch-dm/src/search/pdf.mjs +0 -64
  78. package/extensions/greedysearch-dm/src/search/progress.mjs +0 -109
  79. package/extensions/greedysearch-dm/src/search/query.mjs +0 -21
  80. package/extensions/greedysearch-dm/src/search/recovery.mjs +0 -49
  81. package/extensions/greedysearch-dm/src/search/research.mjs +0 -2255
  82. package/extensions/greedysearch-dm/src/search/scale-aware.mjs +0 -61
  83. package/extensions/greedysearch-dm/src/search/simple-research.mjs +0 -418
  84. package/extensions/greedysearch-dm/src/search/sources.mjs +0 -412
  85. package/extensions/greedysearch-dm/src/search/synthesis-runner.mjs +0 -127
  86. package/extensions/greedysearch-dm/src/search/synthesis.mjs +0 -202
  87. package/extensions/greedysearch-dm/src/tools/greedy-search-handler.js +0 -209
  88. package/extensions/greedysearch-dm/src/tools/shared.js +0 -226
  89. package/extensions/greedysearch-dm/src/types.js +0 -0
  90. package/extensions/greedysearch-dm/src/utils/content.mjs +0 -38
  91. package/extensions/greedysearch-dm/src/utils/helpers.js +0 -22
  92. /package/extensions/{greedysearch-dm/src/search → dm-cua/src/browser-helpers}/minimize.mjs +0 -0
  93. /package/extensions/{greedysearch-dm/src/utils → dm-cua/src/browser-helpers}/system-cmds.mjs +0 -0
@@ -1,123 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { nodeRuntimeCommand } from "./src/utils/node-runtime.mjs";
3
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
- import { homedir } from "node:os";
5
- import { dirname, join } from "node:path";
6
- import { fileURLToPath } from "node:url";
7
- import { registerGreedySearchTool } from "./src/tools/greedy-search-handler.js";
8
- import { cdpAvailable } from "./src/tools/shared.js";
9
- const __dir = dirname(fileURLToPath(import.meta.url));
10
- export default function greedySearchExtension(dm) {
11
- dm.on("session_start", async (_event, ctx) => {
12
- if (!cdpAvailable(__dir)) {
13
- ctx.ui.notify("GreedySearch: cdp.mjs missing from package directory — try reinstalling: pi install git:github.com/apmantza/greedysearch-dm", "warning");
14
- }
15
- });
16
- registerGreedySearchTool(dm, __dir);
17
- dm.registerCommand("greedy-visible", {
18
- description: "Launch GreedySearch Chrome in visible mode for captcha/login/cookie setup.",
19
- handler: async (_args, ctx) => {
20
- await runChromeCommand([], ctx, "Visible GreedySearch Chrome launched.");
21
- }
22
- });
23
- dm.registerCommand("greedy-status", {
24
- description: "Show GreedySearch Chrome status.",
25
- handler: async (_args, ctx) => {
26
- await runChromeCommand(["--status"], ctx);
27
- }
28
- });
29
- dm.registerCommand("greedy-kill", {
30
- description: "Stop GreedySearch Chrome.",
31
- handler: async (_args, ctx) => {
32
- await runChromeCommand(["--kill"], ctx, "GreedySearch Chrome stopped.");
33
- }
34
- });
35
- dm.registerCommand("set-greedy-locale", {
36
- description: "Set default locale for GreedySearch results (e.g., /set-greedy-locale de, /set-greedy-locale --clear, /set-greedy-locale --show)",
37
- handler: async (args, ctx) => {
38
- const arg = args.trim() || "--show";
39
- if (arg === "--show") {
40
- const config = loadUserConfig();
41
- if (config.locale) {
42
- ctx.ui.notify(`Default locale: ${config.locale}`, "info");
43
- } else {
44
- ctx.ui.notify("No default locale (uses: en)", "info");
45
- }
46
- return;
47
- }
48
- if (arg === "--clear") {
49
- const config = loadUserConfig();
50
- delete config.locale;
51
- saveUserConfig(config);
52
- ctx.ui.notify("Default locale cleared (now uses: en).", "info");
53
- return;
54
- }
55
- const locale = arg.toLowerCase();
56
- const VALID_LOCALES = [
57
- "en",
58
- "de",
59
- "fr",
60
- "es",
61
- "it",
62
- "pt",
63
- "nl",
64
- "pl",
65
- "ru",
66
- "ja",
67
- "ko",
68
- "zh",
69
- "ar",
70
- "hi",
71
- "tr",
72
- "sv",
73
- "da",
74
- "no",
75
- "fi",
76
- "cs",
77
- "hu",
78
- "ro",
79
- "el"
80
- ];
81
- if (!VALID_LOCALES.includes(locale)) {
82
- ctx.ui.notify(`Invalid locale "${locale}". Valid: ${VALID_LOCALES.join(", ")}`, "error");
83
- return;
84
- }
85
- const config = loadUserConfig();
86
- config.locale = locale;
87
- saveUserConfig(config);
88
- ctx.ui.notify(`Default locale set to: ${locale}`, "info");
89
- }
90
- });
91
- }
92
- const USER_CONFIG_DIR = join(homedir(), ".config", "greedysearch");
93
- const USER_CONFIG_FILE = join(USER_CONFIG_DIR, "config.json");
94
- async function runChromeCommand(args, ctx, successMessage) {
95
- const visibleBin = join(__dir, "bin", "visible.mjs");
96
- const { code, output } = await new Promise((resolve) => {
97
- const proc = spawn(nodeRuntimeCommand(), [visibleBin, ...args], {
98
- stdio: ["ignore", "pipe", "pipe"],
99
- env: { ...process.env, GREEDY_SEARCH_VISIBLE: "1" }
100
- });
101
- let output = "";
102
- proc.stdout.on("data", (d) => output += d.toString());
103
- proc.stderr.on("data", (d) => output += d.toString());
104
- proc.on("close", (code) => resolve({ code, output }));
105
- });
106
- if (code === 0) {
107
- ctx.ui.notify((successMessage || output.trim() || "Done.").trim(), "info");
108
- } else {
109
- ctx.ui.notify(output.trim() || `GreedySearch Chrome command failed (${code})`, "error");
110
- }
111
- }
112
- function loadUserConfig() {
113
- try {
114
- if (existsSync(USER_CONFIG_FILE)) {
115
- return JSON.parse(readFileSync(USER_CONFIG_FILE, "utf8"));
116
- }
117
- } catch {}
118
- return {};
119
- }
120
- function saveUserConfig(config) {
121
- mkdirSync(USER_CONFIG_DIR, { recursive: true });
122
- writeFileSync(USER_CONFIG_FILE, JSON.stringify(config, null, 2), "utf8");
123
- }
@@ -1,27 +0,0 @@
1
- {
2
- "name": "greedysearch-dm",
3
- "version": "2.1.6",
4
- "description": "DM extension for headless multi-engine browser search, grounded source fetching, synthesis, and research",
5
- "type": "module",
6
- "keywords": [
7
- "duckmind",
8
- "dm",
9
- "greedysearch",
10
- "web-search",
11
- "browser-automation",
12
- "headless"
13
- ],
14
- "author": "Apostolos Mantzaris",
15
- "license": "MIT",
16
- "engines": {
17
- "node": ">=20.11.0"
18
- },
19
- "dm": {
20
- "extensions": [
21
- "./index.js"
22
- ],
23
- "skills": [
24
- "./skills"
25
- ]
26
- }
27
- }
@@ -1,18 +0,0 @@
1
- ---
2
- name: greedy-search
3
- description: Headless-first web and research search through DM using Perplexity, Google AI, ChatGPT, Gemini, Semantic Scholar, Logically, and signed-in Bing Copilot. Grounded all-engine search fetches sources by default; synthesis and deep research are opt-in. Engine and synthesizer settings use ~/.dm/greedyconfig. Not for local codebase search.
4
- ---
5
-
6
- `greedy_search({ query, engine?: "all"|"perplexity"|"google"|"chatgpt"|"gemini"|"semantic-scholar"|"logically"|"bing", synthesize?: bool, synthesizer?: "gemini"|"chatgpt", depth?: "research", breadth?: 1-5, iterations?: 1-3, maxSources?: 3-12, researchOutDir?: string, writeResearchBundle?: bool, fullAnswer?: bool, headless?: bool, visible?: bool, alwaysVisible?: bool })`
7
-
8
- **Browser mode:** Headless is the default. Set `headless:false`, `visible:true`, or `alwaysVisible:true` only when a visible browser is required. `GREEDY_SEARCH_VISIBLE=1` is the explicit global visible-mode override.
9
-
10
- **Search modes:** Use one engine for a direct search. Use `engine:"all"` for configured multi-engine fan-out with fetched sources. Add `synthesize:true` for a combined answer. Use `depth:"research"` for iterative planning, source fetching, citation checks, and a structured research report.
11
-
12
- **Configuration:** `~/.dm/greedyconfig` controls the `engine:"all"` list and default synthesizer, for example `{ "engines": ["perplexity", "google", "chatgpt", "gemini"], "synthesizer": "gemini" }`.
13
-
14
- **Research output:** `depth:"research"` writes a structured bundle under `.dm/greedysearch-research/<timestamp>_<query>/` by default. Set `researchOutDir` to choose another directory or `writeResearchBundle:false` to disable disk output.
15
-
16
- **Compatibility:** Legacy `depth:"fast"|"standard"|"deep"` remains accepted by the imported runtime. Prefer `synthesize:true` and `depth:"research"` in new calls.
17
-
18
- **CDP safety:** Use the bundled `bin/cdp-greedy.mjs` lane. Browser state is scoped through the DM-provided port, profile, PID, and mode environment variables. The launcher refuses to kill a listener unless its command line matches both the expected profile and debugging port.