dev3000 0.0.185 → 0.0.187

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 (237) hide show
  1. package/README.md +102 -13
  2. package/bin/dev3000 +1 -2
  3. package/dist/cdp-monitor.d.ts +7 -12
  4. package/dist/cdp-monitor.d.ts.map +1 -1
  5. package/dist/cdp-monitor.js +86 -170
  6. package/dist/cdp-monitor.js.map +1 -1
  7. package/dist/cli.d.ts +1 -2
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +1 -1369
  10. package/dist/cli.js.map +1 -1
  11. package/dist/index.d.ts +1 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +0 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/portless.d.ts +10 -0
  16. package/dist/portless.d.ts.map +1 -1
  17. package/dist/portless.js +44 -1
  18. package/dist/portless.js.map +1 -1
  19. package/dist/runtime/bridge.d.ts +26 -0
  20. package/dist/runtime/bridge.d.ts.map +1 -0
  21. package/dist/runtime/bridge.js +340 -0
  22. package/dist/runtime/bridge.js.map +1 -0
  23. package/dist/runtime/chrome-isolation.d.ts +16 -0
  24. package/dist/runtime/chrome-isolation.d.ts.map +1 -0
  25. package/dist/runtime/chrome-isolation.js +97 -0
  26. package/dist/runtime/chrome-isolation.js.map +1 -0
  27. package/dist/runtime/cli.js +116 -26
  28. package/dist/runtime/cli.js.map +1 -1
  29. package/dist/runtime/event-views.d.ts +21 -0
  30. package/dist/runtime/event-views.d.ts.map +1 -0
  31. package/dist/runtime/event-views.js +53 -0
  32. package/dist/runtime/event-views.js.map +1 -0
  33. package/dist/runtime/harness.d.ts +16 -0
  34. package/dist/runtime/harness.d.ts.map +1 -0
  35. package/dist/runtime/harness.js +68 -0
  36. package/dist/runtime/harness.js.map +1 -0
  37. package/dist/runtime/local-proxy.d.ts +12 -0
  38. package/dist/runtime/local-proxy.d.ts.map +1 -0
  39. package/dist/runtime/local-proxy.js +114 -0
  40. package/dist/runtime/local-proxy.js.map +1 -0
  41. package/dist/runtime/runtime.d.ts +14 -0
  42. package/dist/runtime/runtime.d.ts.map +1 -1
  43. package/dist/runtime/runtime.js +82 -21
  44. package/dist/runtime/runtime.js.map +1 -1
  45. package/dist/runtime/sandbox-agent.d.ts +6 -0
  46. package/dist/runtime/sandbox-agent.d.ts.map +1 -0
  47. package/dist/runtime/sandbox-agent.js +35 -0
  48. package/dist/runtime/sandbox-agent.js.map +1 -0
  49. package/dist/runtime/sandbox-command.d.ts +9 -0
  50. package/dist/runtime/sandbox-command.d.ts.map +1 -0
  51. package/dist/runtime/sandbox-command.js +101 -0
  52. package/dist/runtime/sandbox-command.js.map +1 -0
  53. package/dist/runtime/sandbox-proxy.d.ts +11 -0
  54. package/dist/runtime/sandbox-proxy.d.ts.map +1 -0
  55. package/dist/runtime/sandbox-proxy.js +123 -0
  56. package/dist/runtime/sandbox-proxy.js.map +1 -0
  57. package/dist/runtime/sandbox-sessions.d.ts +31 -0
  58. package/dist/runtime/sandbox-sessions.d.ts.map +1 -0
  59. package/dist/runtime/sandbox-sessions.js +102 -0
  60. package/dist/runtime/sandbox-sessions.js.map +1 -0
  61. package/dist/runtime/sandbox.d.ts +21 -0
  62. package/dist/runtime/sandbox.d.ts.map +1 -0
  63. package/dist/runtime/sandbox.js +481 -0
  64. package/dist/runtime/sandbox.js.map +1 -0
  65. package/dist/utils/agent-browser.d.ts +2 -120
  66. package/dist/utils/agent-browser.d.ts.map +1 -1
  67. package/dist/utils/agent-browser.js +13 -376
  68. package/dist/utils/agent-browser.js.map +1 -1
  69. package/dist/utils/project-name.d.ts +11 -1
  70. package/dist/utils/project-name.d.ts.map +1 -1
  71. package/dist/utils/project-name.js +14 -1
  72. package/dist/utils/project-name.js.map +1 -1
  73. package/package.json +13 -22
  74. package/skills/d3k/SKILL.md +23 -1
  75. package/dist/commands/crawl.d.ts +0 -12
  76. package/dist/commands/crawl.d.ts.map +0 -1
  77. package/dist/commands/crawl.js +0 -101
  78. package/dist/commands/crawl.js.map +0 -1
  79. package/dist/commands/errors.d.ts +0 -14
  80. package/dist/commands/errors.d.ts.map +0 -1
  81. package/dist/commands/errors.js +0 -246
  82. package/dist/commands/errors.js.map +0 -1
  83. package/dist/commands/fix.d.ts +0 -13
  84. package/dist/commands/fix.d.ts.map +0 -1
  85. package/dist/commands/fix.js +0 -219
  86. package/dist/commands/fix.js.map +0 -1
  87. package/dist/commands/logs.d.ts +0 -13
  88. package/dist/commands/logs.d.ts.map +0 -1
  89. package/dist/commands/logs.js +0 -146
  90. package/dist/commands/logs.js.map +0 -1
  91. package/dist/commands/resume.d.ts +0 -11
  92. package/dist/commands/resume.d.ts.map +0 -1
  93. package/dist/commands/resume.js +0 -75
  94. package/dist/commands/resume.js.map +0 -1
  95. package/dist/commands/status.d.ts +0 -21
  96. package/dist/commands/status.d.ts.map +0 -1
  97. package/dist/commands/status.js +0 -44
  98. package/dist/commands/status.js.map +0 -1
  99. package/dist/components/AgentSelector.d.ts +0 -12
  100. package/dist/components/AgentSelector.d.ts.map +0 -1
  101. package/dist/components/AgentSelector.js +0 -99
  102. package/dist/components/AgentSelector.js.map +0 -1
  103. package/dist/components/PackageSelector.d.ts +0 -13
  104. package/dist/components/PackageSelector.d.ts.map +0 -1
  105. package/dist/components/PackageSelector.js +0 -79
  106. package/dist/components/PackageSelector.js.map +0 -1
  107. package/dist/constants/log-colors.d.ts +0 -43
  108. package/dist/constants/log-colors.d.ts.map +0 -1
  109. package/dist/constants/log-colors.js +0 -59
  110. package/dist/constants/log-colors.js.map +0 -1
  111. package/dist/dev-environment.d.ts +0 -187
  112. package/dist/dev-environment.d.ts.map +0 -1
  113. package/dist/dev-environment.js +0 -2248
  114. package/dist/dev-environment.js.map +0 -1
  115. package/dist/screencast-manager.d.ts +0 -78
  116. package/dist/screencast-manager.d.ts.map +0 -1
  117. package/dist/screencast-manager.js +0 -529
  118. package/dist/screencast-manager.js.map +0 -1
  119. package/dist/services/parsers/error-detectors/base.d.ts +0 -24
  120. package/dist/services/parsers/error-detectors/base.d.ts.map +0 -1
  121. package/dist/services/parsers/error-detectors/base.js +0 -44
  122. package/dist/services/parsers/error-detectors/base.js.map +0 -1
  123. package/dist/services/parsers/error-detectors/index.d.ts +0 -6
  124. package/dist/services/parsers/error-detectors/index.d.ts.map +0 -1
  125. package/dist/services/parsers/error-detectors/index.js +0 -6
  126. package/dist/services/parsers/error-detectors/index.js.map +0 -1
  127. package/dist/services/parsers/error-detectors/nextjs.d.ts +0 -9
  128. package/dist/services/parsers/error-detectors/nextjs.d.ts.map +0 -1
  129. package/dist/services/parsers/error-detectors/nextjs.js +0 -52
  130. package/dist/services/parsers/error-detectors/nextjs.js.map +0 -1
  131. package/dist/services/parsers/index.d.ts +0 -9
  132. package/dist/services/parsers/index.d.ts.map +0 -1
  133. package/dist/services/parsers/index.js +0 -10
  134. package/dist/services/parsers/index.js.map +0 -1
  135. package/dist/services/parsers/log-parsers/base.d.ts +0 -26
  136. package/dist/services/parsers/log-parsers/base.d.ts.map +0 -1
  137. package/dist/services/parsers/log-parsers/base.js +0 -6
  138. package/dist/services/parsers/log-parsers/base.js.map +0 -1
  139. package/dist/services/parsers/log-parsers/index.d.ts +0 -6
  140. package/dist/services/parsers/log-parsers/index.d.ts.map +0 -1
  141. package/dist/services/parsers/log-parsers/index.js +0 -5
  142. package/dist/services/parsers/log-parsers/index.js.map +0 -1
  143. package/dist/services/parsers/log-parsers/standard.d.ts +0 -9
  144. package/dist/services/parsers/log-parsers/standard.d.ts.map +0 -1
  145. package/dist/services/parsers/log-parsers/standard.js +0 -17
  146. package/dist/services/parsers/log-parsers/standard.js.map +0 -1
  147. package/dist/services/parsers/output-processor.d.ts +0 -39
  148. package/dist/services/parsers/output-processor.d.ts.map +0 -1
  149. package/dist/services/parsers/output-processor.js +0 -54
  150. package/dist/services/parsers/output-processor.js.map +0 -1
  151. package/dist/skills/d3k/internal-skill.md +0 -32
  152. package/dist/skills/index.d.ts +0 -54
  153. package/dist/skills/index.d.ts.map +0 -1
  154. package/dist/skills/index.js +0 -214
  155. package/dist/skills/index.js.map +0 -1
  156. package/dist/src/tui-interface-impl.tsx +0 -644
  157. package/dist/tui-interface-impl.d.ts +0 -30
  158. package/dist/tui-interface-impl.d.ts.map +0 -1
  159. package/dist/tui-interface-impl.js +0 -403
  160. package/dist/tui-interface-impl.js.map +0 -1
  161. package/dist/tui-interface-opentui.d.ts +0 -33
  162. package/dist/tui-interface-opentui.d.ts.map +0 -1
  163. package/dist/tui-interface-opentui.js +0 -1128
  164. package/dist/tui-interface-opentui.js.map +0 -1
  165. package/dist/tui-interface.d.ts +0 -38
  166. package/dist/tui-interface.d.ts.map +0 -1
  167. package/dist/tui-interface.js +0 -84
  168. package/dist/tui-interface.js.map +0 -1
  169. package/dist/utils/agent-detection.d.ts +0 -17
  170. package/dist/utils/agent-detection.d.ts.map +0 -1
  171. package/dist/utils/agent-detection.js +0 -81
  172. package/dist/utils/agent-detection.js.map +0 -1
  173. package/dist/utils/agent-selection.d.ts +0 -25
  174. package/dist/utils/agent-selection.d.ts.map +0 -1
  175. package/dist/utils/agent-selection.js +0 -73
  176. package/dist/utils/agent-selection.js.map +0 -1
  177. package/dist/utils/browser-command-argv.d.ts +0 -19
  178. package/dist/utils/browser-command-argv.d.ts.map +0 -1
  179. package/dist/utils/browser-command-argv.js +0 -149
  180. package/dist/utils/browser-command-argv.js.map +0 -1
  181. package/dist/utils/build-version.d.ts +0 -2
  182. package/dist/utils/build-version.d.ts.map +0 -1
  183. package/dist/utils/build-version.js +0 -8
  184. package/dist/utils/build-version.js.map +0 -1
  185. package/dist/utils/cli-options.d.ts +0 -5
  186. package/dist/utils/cli-options.d.ts.map +0 -1
  187. package/dist/utils/cli-options.js +0 -36
  188. package/dist/utils/cli-options.js.map +0 -1
  189. package/dist/utils/d3k-dir.d.ts +0 -3
  190. package/dist/utils/d3k-dir.d.ts.map +0 -1
  191. package/dist/utils/d3k-dir.js +0 -12
  192. package/dist/utils/d3k-dir.js.map +0 -1
  193. package/dist/utils/d3k-skill-installer.d.ts +0 -4
  194. package/dist/utils/d3k-skill-installer.d.ts.map +0 -1
  195. package/dist/utils/d3k-skill-installer.js +0 -30
  196. package/dist/utils/d3k-skill-installer.js.map +0 -1
  197. package/dist/utils/log-filename.d.ts +0 -30
  198. package/dist/utils/log-filename.d.ts.map +0 -1
  199. package/dist/utils/log-filename.js +0 -60
  200. package/dist/utils/log-filename.js.map +0 -1
  201. package/dist/utils/project-detector.d.ts +0 -25
  202. package/dist/utils/project-detector.d.ts.map +0 -1
  203. package/dist/utils/project-detector.js +0 -153
  204. package/dist/utils/project-detector.js.map +0 -1
  205. package/dist/utils/project-metadata.d.ts +0 -4
  206. package/dist/utils/project-metadata.d.ts.map +0 -1
  207. package/dist/utils/project-metadata.js +0 -48
  208. package/dist/utils/project-metadata.js.map +0 -1
  209. package/dist/utils/repo-validate.d.ts +0 -2
  210. package/dist/utils/repo-validate.d.ts.map +0 -1
  211. package/dist/utils/repo-validate.js +0 -10
  212. package/dist/utils/repo-validate.js.map +0 -1
  213. package/dist/utils/session.d.ts +0 -19
  214. package/dist/utils/session.d.ts.map +0 -1
  215. package/dist/utils/session.js +0 -65
  216. package/dist/utils/session.js.map +0 -1
  217. package/dist/utils/skill-installer.d.ts +0 -65
  218. package/dist/utils/skill-installer.d.ts.map +0 -1
  219. package/dist/utils/skill-installer.js +0 -265
  220. package/dist/utils/skill-installer.js.map +0 -1
  221. package/dist/utils/timestamp.d.ts +0 -20
  222. package/dist/utils/timestamp.d.ts.map +0 -1
  223. package/dist/utils/timestamp.js +0 -57
  224. package/dist/utils/timestamp.js.map +0 -1
  225. package/dist/utils/tmux-helpers.d.ts +0 -36
  226. package/dist/utils/tmux-helpers.d.ts.map +0 -1
  227. package/dist/utils/tmux-helpers.js +0 -118
  228. package/dist/utils/tmux-helpers.js.map +0 -1
  229. package/dist/utils/user-config.d.ts +0 -12
  230. package/dist/utils/user-config.d.ts.map +0 -1
  231. package/dist/utils/user-config.js +0 -46
  232. package/dist/utils/user-config.js.map +0 -1
  233. package/dist/utils/version-check.d.ts +0 -52
  234. package/dist/utils/version-check.d.ts.map +0 -1
  235. package/dist/utils/version-check.js +0 -304
  236. package/dist/utils/version-check.js.map +0 -1
  237. package/src/tui-interface-impl.tsx +0 -644
@@ -1,8 +0,0 @@
1
- export function formatBuildVersion(version, buildStamp) {
2
- const normalizedBuildStamp = buildStamp?.trim();
3
- if (!version.includes("-canary") || !normalizedBuildStamp) {
4
- return version;
5
- }
6
- return `${version}+${normalizedBuildStamp}`;
7
- }
8
- //# sourceMappingURL=build-version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-version.js","sourceRoot":"","sources":["../../src/utils/build-version.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,UAA0B;IAC5E,MAAM,oBAAoB,GAAG,UAAU,EAAE,IAAI,EAAE,CAAA;IAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,OAAO,GAAG,OAAO,IAAI,oBAAoB,EAAE,CAAA;AAC7C,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare function validatePortOption(port: string): string;
2
- export declare function validatePositiveIntegerOption(name: string, value: string): string;
3
- export declare function validateScriptOption(script: string): string;
4
- export declare function validateDateTimeOption(value: string): "local" | "utc";
5
- //# sourceMappingURL=cli-options.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-options.d.ts","sourceRoot":"","sources":["../../src/utils/cli-options.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASvD;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASjF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAKrE"}
@@ -1,36 +0,0 @@
1
- export function validatePortOption(port) {
2
- if (!/^\d+$/.test(port)) {
3
- throw new Error("--port must be a numeric port number.");
4
- }
5
- const parsed = Number.parseInt(port, 10);
6
- if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65535) {
7
- throw new Error("--port must be between 1 and 65535.");
8
- }
9
- return String(parsed);
10
- }
11
- export function validatePositiveIntegerOption(name, value) {
12
- if (!/^\d+$/.test(value)) {
13
- throw new Error(`${name} must be a positive integer.`);
14
- }
15
- const parsed = Number.parseInt(value, 10);
16
- if (!Number.isInteger(parsed) || parsed <= 0) {
17
- throw new Error(`${name} must be a positive integer.`);
18
- }
19
- return String(parsed);
20
- }
21
- export function validateScriptOption(script) {
22
- if (script.startsWith("-")) {
23
- throw new Error("--script must name a script or file and cannot start with a hyphen.");
24
- }
25
- if (!/^[A-Za-z0-9._:/-]+$/.test(script)) {
26
- throw new Error("--script may only contain letters, numbers, dots, slashes, colons, underscores, and hyphens.");
27
- }
28
- return script;
29
- }
30
- export function validateDateTimeOption(value) {
31
- if (value !== "local" && value !== "utc") {
32
- throw new Error("--date-time must be either 'local' or 'utc'.");
33
- }
34
- return value;
35
- }
36
- //# sourceMappingURL=cli-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../../src/utils/cli-options.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAY,EAAE,KAAa;IACvE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;IACjH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function getD3kHomeDir(): string;
2
- export declare function ensureD3kHomeDir(): string;
3
- //# sourceMappingURL=d3k-dir.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"d3k-dir.d.ts","sourceRoot":"","sources":["../../src/utils/d3k-dir.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC"}
@@ -1,12 +0,0 @@
1
- import { mkdirSync } from "fs";
2
- import { homedir } from "os";
3
- import { join } from "path";
4
- export function getD3kHomeDir() {
5
- return join(homedir(), ".d3k");
6
- }
7
- export function ensureD3kHomeDir() {
8
- const dir = getD3kHomeDir();
9
- mkdirSync(dir, { recursive: true });
10
- return dir;
11
- }
12
- //# sourceMappingURL=d3k-dir.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"d3k-dir.js","sourceRoot":"","sources":["../../src/utils/d3k-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;IAC3B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,4 +0,0 @@
1
- import { type SkillsAgentId } from "./skill-installer.js";
2
- /** Reuse an agent's global d3k skill before installing a project-local fallback. */
3
- export declare function ensureD3kSkill(agentId?: SkillsAgentId): void;
4
- //# sourceMappingURL=d3k-skill-installer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"d3k-skill-installer.d.ts","sourceRoot":"","sources":["../../src/utils/d3k-skill-installer.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEnF,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,OAAO,GAAE,aAAuB,GAAG,IAAI,CAyBrE"}
@@ -1,30 +0,0 @@
1
- import { copyFileSync, existsSync, mkdirSync, readFileSync } from "fs";
2
- import { homedir } from "os";
3
- import { join } from "path";
4
- import { getBundledD3kSkillPath } from "../skills/index.js";
5
- import { getSkillsPathForLocation } from "./skill-installer.js";
6
- /** Reuse an agent's global d3k skill before installing a project-local fallback. */
7
- export function ensureD3kSkill(agentId = "codex") {
8
- try {
9
- const globalSkillsRoot = getSkillsPathForLocation(agentId, "global")?.path || join(homedir(), ".agents", "skills");
10
- if (existsSync(join(globalSkillsRoot, "d3k", "SKILL.md"))) {
11
- return;
12
- }
13
- const bundledSkillPath = getBundledD3kSkillPath();
14
- if (!bundledSkillPath)
15
- return;
16
- const projectSkillsRoot = getSkillsPathForLocation(agentId, "project")?.path || join(process.cwd(), ".agents", "skills");
17
- const skillDir = join(projectSkillsRoot, "d3k");
18
- const skillPath = join(skillDir, "SKILL.md");
19
- const bundledContent = readFileSync(bundledSkillPath, "utf-8");
20
- if (existsSync(skillPath) && readFileSync(skillPath, "utf-8") === bundledContent) {
21
- return;
22
- }
23
- mkdirSync(skillDir, { recursive: true });
24
- copyFileSync(bundledSkillPath, skillPath);
25
- }
26
- catch {
27
- // Skill installation is optional and must not prevent the runtime from starting.
28
- }
29
- }
30
- //# sourceMappingURL=d3k-skill-installer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"d3k-skill-installer.js","sourceRoot":"","sources":["../../src/utils/d3k-skill-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAsB,MAAM,sBAAsB,CAAA;AAEnF,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,OAAO,GAAkB,OAAO;IAC7D,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QAClH,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAM;QACR,CAAC;QAED,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAA;QACjD,IAAI,CAAC,gBAAgB;YAAE,OAAM;QAE7B,MAAM,iBAAiB,GACrB,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAA;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAC5C,MAAM,cAAc,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;QAE9D,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,cAAc,EAAE,CAAC;YACjF,OAAM;QACR,CAAC;QAED,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,iFAAiF;IACnF,CAAC;AACH,CAAC"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Utilities for working with dev3000 log filenames
3
- *
4
- * Log files follow the pattern: <project-name>-<timestamp>.log
5
- * where timestamp is ISO 8601 with special chars replaced by hyphens
6
- * Example: tailwindui-studio-2025-10-27T17-57-15-014Z.log
7
- */
8
- /**
9
- * Extract the project name from a log filename
10
- *
11
- * @param filename - The log filename (e.g., "tailwindui-studio-2025-10-27T17-57-15-014Z.log")
12
- * @returns The project name (e.g., "tailwindui-studio") or null if invalid format
13
- */
14
- export declare function extractProjectNameFromLogFilename(filename: string): string | null;
15
- /**
16
- * Check if a log filename matches a given project name
17
- *
18
- * @param filename - The log filename to check
19
- * @param projectName - The project name to match (supports partial matching)
20
- * @returns true if the filename belongs to this project
21
- */
22
- export declare function logFilenameMatchesProject(filename: string, projectName: string): boolean;
23
- /**
24
- * Extract the timestamp from a log filename
25
- *
26
- * @param filename - The log filename
27
- * @returns ISO 8601 timestamp string or null if invalid format
28
- */
29
- export declare function extractTimestampFromLogFilename(filename: string): string | null;
30
- //# sourceMappingURL=log-filename.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-filename.d.ts","sourceRoot":"","sources":["../../src/utils/log-filename.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAejF;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAQxF;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU/E"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Utilities for working with dev3000 log filenames
3
- *
4
- * Log files follow the pattern: <project-name>-<timestamp>.log
5
- * where timestamp is ISO 8601 with special chars replaced by hyphens
6
- * Example: tailwindui-studio-2025-10-27T17-57-15-014Z.log
7
- */
8
- /**
9
- * Extract the project name from a log filename
10
- *
11
- * @param filename - The log filename (e.g., "tailwindui-studio-2025-10-27T17-57-15-014Z.log")
12
- * @returns The project name (e.g., "tailwindui-studio") or null if invalid format
13
- */
14
- export function extractProjectNameFromLogFilename(filename) {
15
- // Pattern matches: <project-name>-YYYY-MM-DDTHH-MM-SS-SSSZ.log
16
- // The timestamp always starts with YYYY-MM-DD which is a reliable anchor
17
- const timestampMatch = filename.match(/^(.+?)-(\d{4}-\d{2}-\d{2}T[\d-]+Z)\.log$/);
18
- if (timestampMatch) {
19
- return timestampMatch[1];
20
- }
21
- // Also handle current log file pattern: <project-name>-d3k.log
22
- const d3kMatch = filename.match(/^(.+)-d3k\.log$/);
23
- if (d3kMatch) {
24
- return d3kMatch[1];
25
- }
26
- return null;
27
- }
28
- /**
29
- * Check if a log filename matches a given project name
30
- *
31
- * @param filename - The log filename to check
32
- * @param projectName - The project name to match (supports partial matching)
33
- * @returns true if the filename belongs to this project
34
- */
35
- export function logFilenameMatchesProject(filename, projectName) {
36
- const extractedName = extractProjectNameFromLogFilename(filename);
37
- if (!extractedName) {
38
- return false;
39
- }
40
- // Support partial matching (e.g., "studio" matches "tailwindui-studio")
41
- return extractedName.includes(projectName);
42
- }
43
- /**
44
- * Extract the timestamp from a log filename
45
- *
46
- * @param filename - The log filename
47
- * @returns ISO 8601 timestamp string or null if invalid format
48
- */
49
- export function extractTimestampFromLogFilename(filename) {
50
- const match = filename.match(/^.+?-(\d{4}-\d{2}-\d{2}T[\d-]+Z)\.log$/);
51
- if (match) {
52
- // Convert back to proper ISO format (replace hyphens with colons and dots)
53
- const timestamp = match[1];
54
- // Format: 2025-10-27T17-57-15-014Z -> 2025-10-27T17:57:15.014Z
55
- const isoTimestamp = timestamp.replace(/T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z/, "T$1:$2:$3.$4Z");
56
- return isoTimestamp;
57
- }
58
- return null;
59
- }
60
- //# sourceMappingURL=log-filename.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-filename.js","sourceRoot":"","sources":["../../src/utils/log-filename.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAAC,QAAgB;IAChE,+DAA+D;IAC/D,yEAAyE;IACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;IACjF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,WAAmB;IAC7E,MAAM,aAAa,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAA;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,wEAAwE;IACxE,OAAO,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAAC,QAAgB;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACtE,IAAI,KAAK,EAAE,CAAC;QACV,2EAA2E;QAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC1B,+DAA+D;QAC/D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,mCAAmC,EAAE,eAAe,CAAC,CAAA;QAC5F,OAAO,YAAY,CAAA;IACrB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,25 +0,0 @@
1
- export interface ProjectInfo {
2
- /** Project directory path */
3
- path: string;
4
- /** Project name from package.json */
5
- name: string;
6
- /** Git repository URL (without .git suffix) */
7
- repoUrl: string;
8
- /** Git root directory path */
9
- gitRoot: string;
10
- /** Relative path from git root to project (empty string if at root) */
11
- relativePath: string;
12
- /** Current git branch */
13
- branch: string;
14
- /** Development server command */
15
- devCommand: string;
16
- /** Framework detected */
17
- framework?: string;
18
- /** Package manager */
19
- packageManager: "pnpm" | "npm" | "yarn";
20
- }
21
- /**
22
- * Detect project information from current working directory
23
- */
24
- export declare function detectProject(cwd?: string): Promise<ProjectInfo>;
25
- //# sourceMappingURL=project-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAA;IACpB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;CACxC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAgErF"}
@@ -1,153 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { existsSync, readFileSync } from "node:fs";
3
- import { dirname, join } from "node:path";
4
- /**
5
- * Detect project information from current working directory
6
- */
7
- export async function detectProject(cwd = process.cwd()) {
8
- // Check if package.json exists
9
- const packageJsonPath = join(cwd, "package.json");
10
- if (!existsSync(packageJsonPath)) {
11
- throw new Error("No package.json found in current directory");
12
- }
13
- // Read package.json
14
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
15
- // Detect git repository (walk up to find .git directory)
16
- const gitDir = findGitRoot(cwd);
17
- if (!gitDir) {
18
- throw new Error("Not a git repository. Please initialize git first.");
19
- }
20
- // Get git remote URL
21
- let repoUrl;
22
- try {
23
- const remoteUrl = execSync("git config --get remote.origin.url", {
24
- cwd: gitDir,
25
- encoding: "utf-8"
26
- }).trim();
27
- // Normalize repo URL (remove .git suffix, convert SSH to HTTPS)
28
- repoUrl = normalizeRepoUrl(remoteUrl);
29
- }
30
- catch {
31
- throw new Error("No git remote 'origin' found. Please add a remote first.");
32
- }
33
- // Get current branch
34
- let branch;
35
- try {
36
- branch = execSync("git rev-parse --abbrev-ref HEAD", {
37
- cwd: gitDir,
38
- encoding: "utf-8"
39
- }).trim();
40
- }
41
- catch {
42
- throw new Error("Could not determine current git branch");
43
- }
44
- // Detect dev command
45
- const devCommand = detectDevCommand(packageJson);
46
- // Detect framework
47
- const framework = detectFramework(packageJson);
48
- // Detect package manager
49
- const packageManager = detectPackageManager(cwd);
50
- // Calculate relative path from git root to project directory
51
- const relativePath = cwd === gitDir ? "" : cwd.slice(gitDir.length + 1);
52
- return {
53
- path: cwd,
54
- name: packageJson.name || "unknown",
55
- repoUrl,
56
- gitRoot: gitDir,
57
- relativePath,
58
- branch,
59
- devCommand,
60
- framework,
61
- packageManager
62
- };
63
- }
64
- /**
65
- * Find git root directory by walking up from cwd
66
- */
67
- function findGitRoot(startDir) {
68
- let currentDir = startDir;
69
- // Walk up to root looking for .git
70
- while (currentDir !== "/") {
71
- const gitDir = join(currentDir, ".git");
72
- if (existsSync(gitDir)) {
73
- return currentDir;
74
- }
75
- currentDir = dirname(currentDir);
76
- }
77
- return null;
78
- }
79
- /**
80
- * Normalize git repository URL to HTTPS format without .git suffix
81
- */
82
- function normalizeRepoUrl(url) {
83
- let normalized = url;
84
- // Convert SSH to HTTPS (git@github.com:user/repo.git -> https://github.com/user/repo.git)
85
- if (normalized.startsWith("git@")) {
86
- normalized = normalized.replace(/^git@([^:]+):(.+)$/, "https://$1/$2");
87
- }
88
- // Remove .git suffix
89
- if (normalized.endsWith(".git")) {
90
- normalized = normalized.slice(0, -4);
91
- }
92
- return normalized;
93
- }
94
- /**
95
- * Detect the dev server command from package.json scripts
96
- */
97
- function detectDevCommand(packageJson) {
98
- const scripts = packageJson.scripts || {};
99
- // Check common dev script names
100
- if (scripts.dev)
101
- return "dev";
102
- if (scripts.start)
103
- return "start";
104
- if (scripts["dev:server"])
105
- return "dev:server";
106
- if (scripts.develop)
107
- return "develop";
108
- throw new Error("Could not detect dev command. Please ensure your package.json has a 'dev' or 'start' script.");
109
- }
110
- /**
111
- * Detect the framework from package.json dependencies
112
- */
113
- function detectFramework(packageJson) {
114
- const deps = {
115
- ...packageJson.dependencies,
116
- ...packageJson.devDependencies
117
- };
118
- if (deps.next)
119
- return "Next.js";
120
- if (deps.vite)
121
- return "Vite";
122
- if (deps["@remix-run/react"])
123
- return "Remix";
124
- if (deps.gatsby)
125
- return "Gatsby";
126
- if (deps.astro)
127
- return "Astro";
128
- if (deps["react-scripts"])
129
- return "Create React App";
130
- if (deps.vue && deps["@vitejs/plugin-vue"])
131
- return "Vue + Vite";
132
- if (deps.nuxt)
133
- return "Nuxt";
134
- if (deps.svelte)
135
- return "Svelte";
136
- if (deps["@sveltejs/kit"])
137
- return "SvelteKit";
138
- return undefined;
139
- }
140
- /**
141
- * Detect package manager from lock files
142
- */
143
- function detectPackageManager(cwd) {
144
- if (existsSync(join(cwd, "pnpm-lock.yaml")))
145
- return "pnpm";
146
- if (existsSync(join(cwd, "yarn.lock")))
147
- return "yarn";
148
- if (existsSync(join(cwd, "package-lock.json")))
149
- return "npm";
150
- // Default to pnpm
151
- return "pnpm";
152
- }
153
- //# sourceMappingURL=project-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export declare function getProjectMetadataPath(cwd?: string): string;
2
- export declare function readProjectAgentName(cwd?: string): string | null;
3
- export declare function rememberProjectAgentName(agentName: string, cwd?: string): void;
4
- //# sourceMappingURL=project-metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-metadata.d.ts","sourceRoot":"","sources":["../../src/utils/project-metadata.ts"],"names":[],"mappings":"AA4BA,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE1E;AAED,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAW/E;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAmB7F"}
@@ -1,48 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
2
- import { join } from "path";
3
- import { getProjectDir } from "./project-name.js";
4
- function normalizeAgentName(agentName) {
5
- return typeof agentName === "string" && agentName.trim().length > 0 ? agentName.trim() : null;
6
- }
7
- function readJsonFile(filePath) {
8
- if (!existsSync(filePath)) {
9
- return null;
10
- }
11
- try {
12
- return JSON.parse(readFileSync(filePath, "utf-8"));
13
- }
14
- catch {
15
- return null;
16
- }
17
- }
18
- export function getProjectMetadataPath(cwd = process.cwd()) {
19
- return join(getProjectDir(cwd), "project.json");
20
- }
21
- export function readProjectAgentName(cwd = process.cwd()) {
22
- const projectDir = getProjectDir(cwd);
23
- const sessionInfo = readJsonFile(join(projectDir, "session.json"));
24
- const sessionAgentName = normalizeAgentName(sessionInfo?.agentName);
25
- if (sessionAgentName) {
26
- return sessionAgentName;
27
- }
28
- const projectMetadata = readJsonFile(getProjectMetadataPath(cwd));
29
- return normalizeAgentName(projectMetadata?.lastAgentName);
30
- }
31
- export function rememberProjectAgentName(agentName, cwd = process.cwd()) {
32
- const normalizedAgentName = normalizeAgentName(agentName);
33
- if (!normalizedAgentName) {
34
- return;
35
- }
36
- const projectDir = getProjectDir(cwd);
37
- if (!existsSync(projectDir)) {
38
- mkdirSync(projectDir, { recursive: true });
39
- }
40
- const metadataPath = getProjectMetadataPath(cwd);
41
- const existingMetadata = readJsonFile(metadataPath) ?? {};
42
- const metadata = {
43
- ...existingMetadata,
44
- lastAgentName: normalizedAgentName
45
- };
46
- writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
47
- }
48
- //# sourceMappingURL=project-metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-metadata.js","sourceRoot":"","sources":["../../src/utils/project-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAUjD,SAAS,kBAAkB,CAAC,SAAkB;IAC5C,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/F,CAAC;AAED,SAAS,YAAY,CAAI,QAAgB;IACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAG,GAAW,OAAO,CAAC,GAAG,EAAE;IAChE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAG,GAAW,OAAO,CAAC,GAAG,EAAE;IAC9D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAErC,MAAM,WAAW,GAAG,YAAY,CAAqB,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;IACtF,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACnE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAsB,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAA;IACtF,OAAO,kBAAkB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,GAAG,GAAW,OAAO,CAAC,GAAG,EAAE;IACrF,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;IACzD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAM;IACR,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,gBAAgB,GAAG,YAAY,CAA0B,YAAY,CAAC,IAAI,EAAE,CAAA;IAClF,MAAM,QAAQ,GAA4B;QACxC,GAAG,gBAAgB;QACnB,aAAa,EAAE,mBAAmB;KACnC,CAAA;IAED,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAChE,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function isValidRepoArg(repoArg: string): boolean;
2
- //# sourceMappingURL=repo-validate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repo-validate.d.ts","sourceRoot":"","sources":["../../src/utils/repo-validate.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQvD"}
@@ -1,10 +0,0 @@
1
- export function isValidRepoArg(repoArg) {
2
- const normalized = repoArg.trim();
3
- if (!normalized)
4
- return false;
5
- // Allow owner/name or GitHub URL
6
- const repoPattern = /^([^/\s]+)\/([^/\s]+)(?:\.git)?$/;
7
- const urlPattern = /^https?:\/\/github\.com\/([^/\s]+)\/([^/\s]+)(?:\.git)?\/?$/;
8
- return repoPattern.test(normalized) || urlPattern.test(normalized);
9
- }
10
- //# sourceMappingURL=repo-validate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repo-validate.js","sourceRoot":"","sources":["../../src/utils/repo-validate.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IACjC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA;IAE7B,iCAAiC;IACjC,MAAM,WAAW,GAAG,kCAAkC,CAAA;IACtD,MAAM,UAAU,GAAG,6DAA6D,CAAA;IAChF,OAAO,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AACpE,CAAC"}
@@ -1,19 +0,0 @@
1
- export interface Session {
2
- projectName: string;
3
- startTime?: string;
4
- logFilePath?: string;
5
- sessionFile: string;
6
- pid: number;
7
- lastModified: Date;
8
- appPort?: string;
9
- publicUrl?: string | null;
10
- cdpUrl?: string | null;
11
- cwd?: string;
12
- serverCommand?: string | null;
13
- serverPid?: number | null;
14
- portless?: boolean;
15
- ready?: boolean;
16
- }
17
- export declare function findActiveSessions(): Session[];
18
- export declare function findCurrentSession(): Session | null;
19
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,IAAI,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AA+BD,wBAAgB,kBAAkB,IAAI,OAAO,EAAE,CAsB9C;AAED,wBAAgB,kBAAkB,IAAI,OAAO,GAAG,IAAI,CAcnD"}
@@ -1,65 +0,0 @@
1
- import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
- import { homedir } from "node:os";
3
- import { join, resolve } from "node:path";
4
- import { getProjectDir, getProjectName } from "./project-name.js";
5
- function readActiveSession(sessionFile) {
6
- if (!existsSync(sessionFile)) {
7
- return null;
8
- }
9
- try {
10
- const content = JSON.parse(readFileSync(sessionFile, "utf-8"));
11
- if (!content.pid) {
12
- return null;
13
- }
14
- process.kill(content.pid, 0);
15
- const stat = statSync(sessionFile);
16
- return {
17
- ...content,
18
- sessionFile,
19
- lastModified: stat.mtime
20
- };
21
- }
22
- catch {
23
- return null;
24
- }
25
- }
26
- function byNewestSession(a, b) {
27
- const aTime = a.startTime ? new Date(a.startTime).getTime() : a.lastModified.getTime();
28
- const bTime = b.startTime ? new Date(b.startTime).getTime() : b.lastModified.getTime();
29
- return bTime - aTime;
30
- }
31
- export function findActiveSessions() {
32
- const sessionFiles = new Set();
33
- sessionFiles.add(resolve(join(getProjectDir(), "session.json")));
34
- const defaultSessionDir = join(homedir(), ".d3k");
35
- if (existsSync(defaultSessionDir)) {
36
- try {
37
- for (const entry of readdirSync(defaultSessionDir, { withFileTypes: true })) {
38
- if (entry.isDirectory()) {
39
- sessionFiles.add(resolve(join(defaultSessionDir, entry.name, "session.json")));
40
- }
41
- }
42
- }
43
- catch {
44
- // Ignore unreadable session directories.
45
- }
46
- }
47
- return Array.from(sessionFiles)
48
- .map((sessionFile) => readActiveSession(sessionFile))
49
- .filter((session) => session !== null)
50
- .sort(byNewestSession);
51
- }
52
- export function findCurrentSession() {
53
- const sessions = findActiveSessions();
54
- if (sessions.length === 0) {
55
- return null;
56
- }
57
- const exactSessionFile = resolve(join(getProjectDir(), "session.json"));
58
- const exactSession = sessions.find((session) => resolve(session.sessionFile) === exactSessionFile);
59
- if (exactSession) {
60
- return exactSession;
61
- }
62
- const currentProject = getProjectName();
63
- return sessions.find((session) => session.projectName === currentProject) || null;
64
- }
65
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"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"}