@indianic/dialout 1.1.1 → 1.2.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 (224) hide show
  1. package/README.md +429 -16
  2. package/bin/AGENTS.md +44 -0
  3. package/bin/devdash-agent.js +2 -0
  4. package/dist/ai-adapters/claude.d.ts +3 -0
  5. package/dist/ai-adapters/claude.d.ts.map +1 -0
  6. package/dist/ai-adapters/claude.js +98 -0
  7. package/dist/ai-adapters/claude.js.map +1 -0
  8. package/dist/ai-adapters/codex.d.ts +3 -0
  9. package/dist/ai-adapters/codex.d.ts.map +1 -0
  10. package/dist/ai-adapters/codex.js +147 -0
  11. package/dist/ai-adapters/codex.js.map +1 -0
  12. package/dist/ai-adapters/grok.d.ts +3 -0
  13. package/dist/ai-adapters/grok.d.ts.map +1 -0
  14. package/dist/ai-adapters/grok.js +164 -0
  15. package/dist/ai-adapters/grok.js.map +1 -0
  16. package/dist/ai-adapters/index.d.ts +5 -0
  17. package/dist/ai-adapters/index.d.ts.map +1 -0
  18. package/dist/ai-adapters/index.js +30 -0
  19. package/dist/ai-adapters/index.js.map +1 -0
  20. package/dist/ai-adapters/types.d.ts +3 -0
  21. package/dist/ai-adapters/types.d.ts.map +1 -0
  22. package/dist/ai-adapters/types.js +7 -0
  23. package/dist/ai-adapters/types.js.map +1 -0
  24. package/dist/ai-capabilities/claude.d.ts +4 -0
  25. package/dist/ai-capabilities/claude.d.ts.map +1 -0
  26. package/dist/ai-capabilities/claude.js +174 -0
  27. package/dist/ai-capabilities/claude.js.map +1 -0
  28. package/dist/ai-capabilities/describe.d.ts +2 -0
  29. package/dist/ai-capabilities/describe.d.ts.map +1 -0
  30. package/dist/ai-capabilities/describe.js +31 -0
  31. package/dist/ai-capabilities/describe.js.map +1 -0
  32. package/dist/ai-capabilities/fsdeps.d.ts +3 -0
  33. package/dist/ai-capabilities/fsdeps.d.ts.map +1 -0
  34. package/dist/ai-capabilities/fsdeps.js +71 -0
  35. package/dist/ai-capabilities/fsdeps.js.map +1 -0
  36. package/dist/ai-capabilities/grok.d.ts +5 -0
  37. package/dist/ai-capabilities/grok.d.ts.map +1 -0
  38. package/dist/ai-capabilities/grok.js +145 -0
  39. package/dist/ai-capabilities/grok.js.map +1 -0
  40. package/dist/ai-capabilities/index.d.ts +4 -0
  41. package/dist/ai-capabilities/index.d.ts.map +1 -0
  42. package/dist/ai-capabilities/index.js +94 -0
  43. package/dist/ai-capabilities/index.js.map +1 -0
  44. package/dist/ai-capabilities/redact.d.ts +2 -0
  45. package/dist/ai-capabilities/redact.d.ts.map +1 -0
  46. package/dist/ai-capabilities/redact.js +27 -0
  47. package/dist/ai-capabilities/redact.js.map +1 -0
  48. package/dist/ai-capabilities/types.d.ts +11 -0
  49. package/dist/ai-capabilities/types.d.ts.map +1 -0
  50. package/dist/ai-capabilities/types.js +3 -0
  51. package/dist/ai-capabilities/types.js.map +1 -0
  52. package/dist/ai-launch.d.ts +35 -0
  53. package/dist/ai-launch.d.ts.map +1 -0
  54. package/dist/ai-launch.js +211 -0
  55. package/dist/ai-launch.js.map +1 -0
  56. package/dist/ai-session-detector.d.ts +19 -0
  57. package/dist/ai-session-detector.d.ts.map +1 -0
  58. package/dist/ai-session-detector.js +79 -0
  59. package/dist/ai-session-detector.js.map +1 -0
  60. package/dist/ai-sessions.d.ts +36 -0
  61. package/dist/ai-sessions.d.ts.map +1 -0
  62. package/dist/ai-sessions.js +309 -0
  63. package/dist/ai-sessions.js.map +1 -0
  64. package/dist/ai-status.d.ts +6 -0
  65. package/dist/ai-status.d.ts.map +1 -0
  66. package/dist/ai-status.js +40 -0
  67. package/dist/ai-status.js.map +1 -0
  68. package/dist/ai-transcript-locator.d.ts +35 -0
  69. package/dist/ai-transcript-locator.d.ts.map +1 -0
  70. package/dist/ai-transcript-locator.js +268 -0
  71. package/dist/ai-transcript-locator.js.map +1 -0
  72. package/dist/ai-transcript-tail.d.ts +17 -0
  73. package/dist/ai-transcript-tail.d.ts.map +1 -0
  74. package/dist/ai-transcript-tail.js +120 -0
  75. package/dist/ai-transcript-tail.js.map +1 -0
  76. package/dist/checklist.d.ts +20 -0
  77. package/dist/checklist.d.ts.map +1 -0
  78. package/dist/checklist.js +51 -0
  79. package/dist/checklist.js.map +1 -0
  80. package/dist/cli.d.ts +2 -0
  81. package/dist/cli.d.ts.map +1 -0
  82. package/dist/cli.js +1427 -0
  83. package/dist/cli.js.map +1 -0
  84. package/dist/command-runner.d.ts +15 -0
  85. package/dist/command-runner.d.ts.map +1 -0
  86. package/dist/command-runner.js +84 -0
  87. package/dist/command-runner.js.map +1 -0
  88. package/dist/config.d.ts +41 -0
  89. package/dist/config.d.ts.map +1 -0
  90. package/dist/config.js +152 -0
  91. package/dist/config.js.map +1 -0
  92. package/dist/cowork.d.ts +26 -0
  93. package/dist/cowork.d.ts.map +1 -0
  94. package/dist/cowork.js +370 -0
  95. package/dist/cowork.js.map +1 -0
  96. package/dist/fs-browser.d.ts +6 -0
  97. package/dist/fs-browser.d.ts.map +1 -0
  98. package/dist/fs-browser.js +61 -0
  99. package/dist/fs-browser.js.map +1 -0
  100. package/dist/has-command.d.ts +12 -0
  101. package/dist/has-command.d.ts.map +1 -0
  102. package/dist/has-command.js +24 -0
  103. package/dist/has-command.js.map +1 -0
  104. package/dist/heartbeat.d.ts +7 -0
  105. package/dist/heartbeat.d.ts.map +1 -0
  106. package/dist/heartbeat.js +50 -0
  107. package/dist/heartbeat.js.map +1 -0
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +56 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/port-scanner.d.ts +4 -0
  113. package/dist/port-scanner.d.ts.map +1 -0
  114. package/dist/port-scanner.js +75 -0
  115. package/dist/port-scanner.js.map +1 -0
  116. package/dist/project-scanner.d.ts +15 -0
  117. package/dist/project-scanner.d.ts.map +1 -0
  118. package/dist/project-scanner.js +333 -0
  119. package/dist/project-scanner.js.map +1 -0
  120. package/dist/pty-manager.d.ts +28 -0
  121. package/dist/pty-manager.d.ts.map +1 -0
  122. package/dist/pty-manager.js +506 -0
  123. package/dist/pty-manager.js.map +1 -0
  124. package/dist/service-installer.d.ts +95 -0
  125. package/dist/service-installer.d.ts.map +1 -0
  126. package/dist/service-installer.js +911 -0
  127. package/dist/service-installer.js.map +1 -0
  128. package/dist/single-instance.d.ts +20 -0
  129. package/dist/single-instance.d.ts.map +1 -0
  130. package/dist/single-instance.js +151 -0
  131. package/dist/single-instance.js.map +1 -0
  132. package/dist/ssh-local-network.d.ts +26 -0
  133. package/dist/ssh-local-network.d.ts.map +1 -0
  134. package/dist/ssh-local-network.js +169 -0
  135. package/dist/ssh-local-network.js.map +1 -0
  136. package/dist/terminal-detect.d.ts +52 -0
  137. package/dist/terminal-detect.d.ts.map +1 -0
  138. package/dist/terminal-detect.js +147 -0
  139. package/dist/terminal-detect.js.map +1 -0
  140. package/dist/terminal-markers.d.ts +52 -0
  141. package/dist/terminal-markers.d.ts.map +1 -0
  142. package/dist/terminal-markers.js +174 -0
  143. package/dist/terminal-markers.js.map +1 -0
  144. package/dist/tmux-manager.d.ts +35 -0
  145. package/dist/tmux-manager.d.ts.map +1 -0
  146. package/dist/tmux-manager.js +274 -0
  147. package/dist/tmux-manager.js.map +1 -0
  148. package/dist/update-check.d.ts +3 -0
  149. package/dist/update-check.d.ts.map +1 -0
  150. package/dist/update-check.js +202 -0
  151. package/dist/update-check.js.map +1 -0
  152. package/dist/websocket.d.ts +8 -0
  153. package/dist/websocket.d.ts.map +1 -0
  154. package/dist/websocket.js +472 -0
  155. package/dist/websocket.js.map +1 -0
  156. package/node_modules/@dialout/shared/README.md +16 -0
  157. package/node_modules/@dialout/shared/dist/ai-chat-prefs.d.ts +8 -0
  158. package/node_modules/@dialout/shared/dist/ai-chat-prefs.d.ts.map +1 -0
  159. package/node_modules/@dialout/shared/dist/ai-chat-prefs.js +41 -0
  160. package/node_modules/@dialout/shared/dist/capabilities.d.ts +25 -0
  161. package/node_modules/@dialout/shared/dist/capabilities.d.ts.map +1 -0
  162. package/node_modules/@dialout/shared/dist/capabilities.js +2 -0
  163. package/node_modules/@dialout/shared/dist/chat-blocks.d.ts +33 -0
  164. package/node_modules/@dialout/shared/dist/chat-blocks.d.ts.map +1 -0
  165. package/node_modules/@dialout/shared/dist/chat-blocks.js +61 -0
  166. package/node_modules/@dialout/shared/dist/command-filter.d.ts +4 -0
  167. package/node_modules/@dialout/shared/dist/command-filter.d.ts.map +1 -0
  168. package/node_modules/@dialout/shared/dist/command-filter.js +49 -0
  169. package/node_modules/@dialout/shared/dist/composer-behaviour.d.ts +6 -0
  170. package/node_modules/@dialout/shared/dist/composer-behaviour.d.ts.map +1 -0
  171. package/node_modules/@dialout/shared/dist/composer-behaviour.js +24 -0
  172. package/node_modules/@dialout/shared/dist/events.d.ts +37 -0
  173. package/node_modules/@dialout/shared/dist/events.d.ts.map +1 -0
  174. package/node_modules/@dialout/shared/dist/events.js +13 -0
  175. package/node_modules/@dialout/shared/dist/index.d.ts +21 -0
  176. package/node_modules/@dialout/shared/dist/index.d.ts.map +1 -0
  177. package/node_modules/@dialout/shared/dist/index.js +37 -0
  178. package/node_modules/@dialout/shared/dist/kinds.d.ts +2 -0
  179. package/node_modules/@dialout/shared/dist/kinds.d.ts.map +1 -0
  180. package/node_modules/@dialout/shared/dist/kinds.js +2 -0
  181. package/node_modules/@dialout/shared/dist/notify.d.ts +3 -0
  182. package/node_modules/@dialout/shared/dist/notify.d.ts.map +1 -0
  183. package/node_modules/@dialout/shared/dist/notify.js +31 -0
  184. package/node_modules/@dialout/shared/dist/permission.d.ts +4 -0
  185. package/node_modules/@dialout/shared/dist/permission.d.ts.map +1 -0
  186. package/node_modules/@dialout/shared/dist/permission.js +8 -0
  187. package/node_modules/@dialout/shared/dist/scroll-pin.d.ts +3 -0
  188. package/node_modules/@dialout/shared/dist/scroll-pin.d.ts.map +1 -0
  189. package/node_modules/@dialout/shared/dist/scroll-pin.js +11 -0
  190. package/node_modules/@dialout/shared/dist/session.d.ts +19 -0
  191. package/node_modules/@dialout/shared/dist/session.d.ts.map +1 -0
  192. package/node_modules/@dialout/shared/dist/session.js +6 -0
  193. package/node_modules/@dialout/shared/dist/terminal-name.d.ts +25 -0
  194. package/node_modules/@dialout/shared/dist/terminal-name.d.ts.map +1 -0
  195. package/node_modules/@dialout/shared/dist/terminal-name.js +63 -0
  196. package/node_modules/@dialout/shared/dist/tool-appearance.d.ts +9 -0
  197. package/node_modules/@dialout/shared/dist/tool-appearance.d.ts.map +1 -0
  198. package/node_modules/@dialout/shared/dist/tool-appearance.js +30 -0
  199. package/node_modules/@dialout/shared/package.json +37 -0
  200. package/node_modules/@dialout/shared/src/ai-chat-prefs.test.ts +40 -0
  201. package/node_modules/@dialout/shared/src/ai-chat-prefs.ts +39 -0
  202. package/node_modules/@dialout/shared/src/capabilities.ts +30 -0
  203. package/node_modules/@dialout/shared/src/chat-blocks.test.ts +65 -0
  204. package/node_modules/@dialout/shared/src/chat-blocks.ts +79 -0
  205. package/node_modules/@dialout/shared/src/command-filter.test.ts +76 -0
  206. package/node_modules/@dialout/shared/src/command-filter.ts +45 -0
  207. package/node_modules/@dialout/shared/src/composer-behaviour.test.ts +31 -0
  208. package/node_modules/@dialout/shared/src/composer-behaviour.ts +22 -0
  209. package/node_modules/@dialout/shared/src/events.ts +27 -0
  210. package/node_modules/@dialout/shared/src/index.ts +32 -0
  211. package/node_modules/@dialout/shared/src/kinds.ts +5 -0
  212. package/node_modules/@dialout/shared/src/notify.test.ts +49 -0
  213. package/node_modules/@dialout/shared/src/notify.ts +30 -0
  214. package/node_modules/@dialout/shared/src/permission.ts +10 -0
  215. package/node_modules/@dialout/shared/src/scroll-pin.test.ts +23 -0
  216. package/node_modules/@dialout/shared/src/scroll-pin.ts +13 -0
  217. package/node_modules/@dialout/shared/src/session.ts +25 -0
  218. package/node_modules/@dialout/shared/src/terminal-name.ts +82 -0
  219. package/node_modules/@dialout/shared/src/tool-appearance.test.ts +41 -0
  220. package/node_modules/@dialout/shared/src/tool-appearance.ts +39 -0
  221. package/package.json +54 -14
  222. package/scripts/postinstall.js +79 -0
  223. package/scripts/prepack.js +45 -0
  224. package/bin/dialout.js +0 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/ai-capabilities/describe.ts"],"names":[],"mappings":";;AAUA,0CAmBC;AA7BD,MAAM,GAAG,GAAG,GAAG,CAAC;AAEhB,SAAS,KAAK,CAAC,CAAS;IACtB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC;AAED,gFAAgF;AAChF,8EAA8E;AAC9E,sDAAsD;AACtD,SAAgB,eAAe,CAAC,QAAgB;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAEpC,6EAA6E;IAC7E,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC1D,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAChD,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,OAAO;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CapabilityDeps } from './types';
2
+ export declare function resolveDeps(deps: CapabilityDeps): Required<CapabilityDeps>;
3
+ //# sourceMappingURL=fsdeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fsdeps.d.ts","sourceRoot":"","sources":["../../src/ai-capabilities/fsdeps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAQ1E"}
@@ -0,0 +1,71 @@
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.resolveDeps = resolveDeps;
37
+ const fs = __importStar(require("fs"));
38
+ const os = __importStar(require("os"));
39
+ // Real-filesystem defaults. Every one swallows its errors: discovery reporting
40
+ // nothing for a source is correct, throwing is not.
41
+ function resolveDeps(deps) {
42
+ return {
43
+ homeDir: deps.homeDir || (() => os.homedir()),
44
+ readFile: deps.readFile || ((p) => { try {
45
+ return fs.readFileSync(p, 'utf8');
46
+ }
47
+ catch {
48
+ return null;
49
+ } }),
50
+ readDir: deps.readDir || ((p) => { try {
51
+ return fs.readdirSync(p);
52
+ }
53
+ catch {
54
+ return [];
55
+ } }),
56
+ isDir: deps.isDir || ((p) => { try {
57
+ return fs.statSync(p).isDirectory();
58
+ }
59
+ catch {
60
+ return false;
61
+ } }),
62
+ exists: deps.exists || ((p) => { try {
63
+ fs.accessSync(p);
64
+ return true;
65
+ }
66
+ catch {
67
+ return false;
68
+ } }),
69
+ };
70
+ }
71
+ //# sourceMappingURL=fsdeps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fsdeps.js","sourceRoot":"","sources":["../../src/ai-capabilities/fsdeps.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,kCAQC;AAdD,uCAAyB;AACzB,uCAAyB;AAGzB,+EAA+E;AAC/E,oDAAoD;AACpD,SAAgB,WAAW,CAAC,IAAoB;IAC9C,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;YAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QACzG,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;YAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;YAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QACtG,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;KACnG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AiCommand, McpServerInfo, CapabilityDeps } from './types';
2
+ export declare function parseGrokCommandTable(readme: string): AiCommand[];
3
+ export declare function grokCommands(deps?: CapabilityDeps): AiCommand[];
4
+ export declare function grokMcpServers(cwd: string, repoRoot: string, deps?: CapabilityDeps): McpServerInfo[];
5
+ //# sourceMappingURL=grok.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../src/ai-capabilities/grok.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAcxE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAyBjE;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,cAAmB,GAAG,SAAS,EAAE,CAKnE;AA2BD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,cAAmB,GACxB,aAAa,EAAE,CAqBjB"}
@@ -0,0 +1,145 @@
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.parseGrokCommandTable = parseGrokCommandTable;
37
+ exports.grokCommands = grokCommands;
38
+ exports.grokMcpServers = grokMcpServers;
39
+ const path = __importStar(require("path"));
40
+ const smol_toml_1 = require("smol-toml");
41
+ const redact_1 = require("./redact");
42
+ const fsdeps_1 = require("./fsdeps");
43
+ const MIN_ROWS = 3;
44
+ function cell(s) {
45
+ return s.replace(/`/g, '').trim();
46
+ }
47
+ // Grok has no user commands directory: its slash commands are built in, and
48
+ // the README that ships beside the binary is the only machine-readable list.
49
+ // Parsing it at runtime means the menu tracks the installed version instead of
50
+ // rotting in our source — the trade is that a restructure breaks the parse, so
51
+ // failure is all-or-nothing and loud rather than a silently partial menu.
52
+ function parseGrokCommandTable(readme) {
53
+ const text = String(readme || '');
54
+ const start = text.search(/^#{2,4}\s+Slash Commands\s*$/m);
55
+ if (start === -1)
56
+ return [];
57
+ const rest = text.slice(start).split('\n').slice(1);
58
+ const out = [];
59
+ for (const line of rest) {
60
+ if (/^#{1,6}\s/.test(line))
61
+ break; // next heading ends the section
62
+ if (!line.trim().startsWith('|'))
63
+ continue;
64
+ const cols = line.split('|').slice(1, -1).map(cell);
65
+ if (cols.length < 3)
66
+ continue;
67
+ const m = cols[0].match(/^\/([A-Za-z0-9-]+)/);
68
+ if (!m)
69
+ continue; // header and --- rows
70
+ const alias = cols[1].match(/^\/([A-Za-z0-9-]+)/);
71
+ out.push({
72
+ name: m[1],
73
+ alias: alias ? alias[1] : undefined,
74
+ description: cols[2],
75
+ source: 'builtin',
76
+ });
77
+ }
78
+ return out.length >= MIN_ROWS ? out : [];
79
+ }
80
+ function grokCommands(deps = {}) {
81
+ const d = (0, fsdeps_1.resolveDeps)(deps);
82
+ let readme = null;
83
+ try {
84
+ readme = d.readFile(path.join(d.homeDir(), '.grok', 'README.md'));
85
+ }
86
+ catch {
87
+ readme = null;
88
+ }
89
+ return readme ? parseGrokCommandTable(readme) : [];
90
+ }
91
+ function readToml(file, d) {
92
+ let raw = null;
93
+ try {
94
+ raw = d.readFile(file);
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ if (!raw)
100
+ return null;
101
+ try {
102
+ return (0, smol_toml_1.parse)(raw);
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
108
+ function toGrokServer(name, cfg, scope, origin) {
109
+ const http = !!(cfg && (cfg.url || cfg.headers));
110
+ return {
111
+ name,
112
+ scope,
113
+ origin,
114
+ transport: http ? 'http' : 'stdio',
115
+ enabled: cfg?.enabled !== false,
116
+ command: http ? undefined : (cfg?.command ? String(cfg.command) : undefined),
117
+ args: http ? undefined : (0, redact_1.redactArgs)(cfg?.args),
118
+ };
119
+ }
120
+ // Documented precedence: ~/.grok < <repo-root>/.grok < <cwd>/.grok, and a
121
+ // same-named project server REPLACES the global entirely — fields are not
122
+ // merged, so an omitted field takes its default rather than inheriting.
123
+ // Implemented literally, because showing a server with a command it does not
124
+ // actually run is worse than showing none.
125
+ function grokMcpServers(cwd, repoRoot, deps = {}) {
126
+ const d = (0, fsdeps_1.resolveDeps)(deps);
127
+ const merged = new Map();
128
+ const layers = [
129
+ [path.join(d.homeDir(), '.grok', 'config.toml'), 'global'],
130
+ [path.join(repoRoot, '.grok', 'config.toml'), 'project'],
131
+ [path.join(cwd, '.grok', 'config.toml'), 'project'],
132
+ ];
133
+ for (const [file, scope] of layers) {
134
+ const cfg = readToml(file, d);
135
+ const servers = cfg?.mcp_servers;
136
+ if (!servers || typeof servers !== 'object')
137
+ continue;
138
+ for (const [name, entry] of Object.entries(servers)) {
139
+ // set() replaces wholesale — which is exactly the documented rule.
140
+ merged.set(name, toGrokServer(name, entry, scope, file));
141
+ }
142
+ }
143
+ return Array.from(merged.values());
144
+ }
145
+ //# sourceMappingURL=grok.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/ai-capabilities/grok.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AiCapabilities, CapabilityDeps } from './types';
2
+ export * from './types';
3
+ export declare function discoverCapabilities(kind: string, cwd: string, deps?: CapabilityDeps): AiCapabilities;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9D,cAAc,SAAS,CAAC;AAmBxB,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,cAAmB,GACxB,cAAc,CA+BhB"}
@@ -0,0 +1,94 @@
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
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.discoverCapabilities = discoverCapabilities;
40
+ const path = __importStar(require("path"));
41
+ const claude_1 = require("./claude");
42
+ const grok_1 = require("./grok");
43
+ const fsdeps_1 = require("./fsdeps");
44
+ __exportStar(require("./types"), exports);
45
+ // Walk up to the nearest directory containing .git. Grok's project config
46
+ // resolution is defined in terms of the repo root, so this has to agree with
47
+ // it; a cwd outside any repo simply resolves to itself.
48
+ function repoRootOf(cwd, d) {
49
+ let dir = cwd;
50
+ for (let i = 0; i < 40; i++) {
51
+ if (d.exists(path.join(dir, '.git')))
52
+ return dir;
53
+ const parent = path.dirname(dir);
54
+ if (parent === dir)
55
+ break;
56
+ dir = parent;
57
+ }
58
+ return cwd;
59
+ }
60
+ // One shape, two genuinely different problems behind it: Claude discovers from
61
+ // the filesystem, Grok reads a table shipped beside its binary. Adding a vendor
62
+ // is a new branch here plus its own module — never a change to callers.
63
+ function discoverCapabilities(kind, cwd, deps = {}) {
64
+ const d = (0, fsdeps_1.resolveDeps)(deps);
65
+ const scannedAt = new Date().toISOString();
66
+ try {
67
+ if (kind === 'claude') {
68
+ return {
69
+ kind: 'claude',
70
+ commands: (0, claude_1.claudeCommands)(cwd, deps),
71
+ mcpServers: (0, claude_1.claudeMcpServers)(cwd, deps),
72
+ scannedAt,
73
+ };
74
+ }
75
+ if (kind === 'grok') {
76
+ return {
77
+ kind: 'grok',
78
+ commands: (0, grok_1.grokCommands)(deps),
79
+ mcpServers: (0, grok_1.grokMcpServers)(cwd, repoRootOf(cwd, d), deps),
80
+ scannedAt,
81
+ };
82
+ }
83
+ }
84
+ catch {
85
+ // Discovery is a convenience. It must never take the poll down with it.
86
+ }
87
+ return {
88
+ kind: kind,
89
+ commands: [],
90
+ mcpServers: [],
91
+ scannedAt,
92
+ };
93
+ }
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai-capabilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,oDAmCC;AA5DD,2CAA6B;AAC7B,qCAA4D;AAC5D,iCAAsD;AACtD,qCAAuC;AAGvC,0CAAwB;AAExB,0EAA0E;AAC1E,6EAA6E;AAC7E,wDAAwD;AACxD,SAAS,UAAU,CAAC,GAAW,EAAE,CAAiC;IAChE,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,wEAAwE;AACxE,SAAgB,oBAAoB,CAClC,IAAY,EACZ,GAAW,EACX,OAAuB,EAAE;IAEzB,MAAM,CAAC,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO;gBACL,IAAI,EAAE,QAAkC;gBACxC,QAAQ,EAAE,IAAA,uBAAc,EAAC,GAAG,EAAE,IAAI,CAAC;gBACnC,UAAU,EAAE,IAAA,yBAAgB,EAAC,GAAG,EAAE,IAAI,CAAC;gBACvC,SAAS;aACV,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO;gBACL,IAAI,EAAE,MAAgC;gBACtC,QAAQ,EAAE,IAAA,mBAAY,EAAC,IAAI,CAAC;gBAC5B,UAAU,EAAE,IAAA,qBAAc,EAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;gBACzD,SAAS;aACV,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAA8B;QACpC,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function redactArgs(args?: string[]): string[] | undefined;
2
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/ai-capabilities/redact.ts"],"names":[],"mappings":"AASA,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAgBhE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ // MCP `env` and `headers` never leave the machine at all. `args` do, because
3
+ // the detail row shows how a server is launched — and a token passed as a CLI
4
+ // argument would ride along with it. Redaction is deliberately eager: a
5
+ // redacted argument costs the reader nothing, a leaked one costs a key.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.redactArgs = redactArgs;
8
+ const SECRET_FLAG = /(token|key|secret|password|passwd|auth|credential)/i;
9
+ // Long, unbroken, high-entropy-ish: the shape of a credential rather than a path.
10
+ const TOKEN_SHAPE = /^[A-Za-z0-9_\-.]{24,}$/;
11
+ function redactArgs(args) {
12
+ if (!Array.isArray(args))
13
+ return undefined;
14
+ return args.map((raw, i) => {
15
+ const arg = String(raw);
16
+ const inline = arg.match(/^([A-Za-z0-9_]+)=(.+)$/);
17
+ if (inline && SECRET_FLAG.test(inline[1]))
18
+ return `${inline[1]}=[redacted]`;
19
+ const prev = i > 0 ? String(args[i - 1]) : '';
20
+ if (prev.startsWith('-') && SECRET_FLAG.test(prev))
21
+ return '[redacted]';
22
+ if (TOKEN_SHAPE.test(arg) && !arg.includes('/'))
23
+ return '[redacted]';
24
+ return arg;
25
+ });
26
+ }
27
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/ai-capabilities/redact.ts"],"names":[],"mappings":";AAAA,6EAA6E;AAC7E,8EAA8E;AAC9E,wEAAwE;AACxE,wEAAwE;;AAMxE,gCAgBC;AApBD,MAAM,WAAW,GAAG,qDAAqD,CAAC;AAC1E,kFAAkF;AAClF,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,SAAgB,UAAU,CAAC,IAAe;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAExB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACnD,IAAI,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;QAE5E,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QAExE,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QAErE,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { AiKind } from '@dialout/shared';
2
+ export type { CommandSource, AiCommand, McpServerInfo, AiCapabilities } from '@dialout/shared';
3
+ export interface CapabilityDeps {
4
+ homeDir?: () => string;
5
+ readFile?: (path: string) => string | null;
6
+ readDir?: (path: string) => string[];
7
+ isDir?: (path: string) => boolean;
8
+ exists?: (path: string) => boolean;
9
+ }
10
+ export type { AiKind };
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai-capabilities/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG/F,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED,YAAY,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai-capabilities/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { AiKind, PermissionMode, PERMISSION_MODES } from '@dialout/shared';
2
+ export type { PermissionMode };
3
+ export { PERMISSION_MODES };
4
+ export interface LaunchedRecord {
5
+ sessionId: string;
6
+ kind: AiKind;
7
+ cwd: string;
8
+ title: string;
9
+ permissionMode: PermissionMode;
10
+ configHome: string;
11
+ createdAt: number;
12
+ }
13
+ export declare function launchId(sessionId: string): string;
14
+ export declare function isLaunchId(id: string): boolean;
15
+ export declare function parseLaunchId(id: string): string | null;
16
+ export declare function buildLaunchArgs(rec: LaunchedRecord, firstTurn: boolean): string[];
17
+ export interface RegistryDeps {
18
+ read?: () => string;
19
+ write?: (text: string) => void;
20
+ }
21
+ export declare function listRecords(deps?: RegistryDeps): LaunchedRecord[];
22
+ export declare function addRecord(rec: LaunchedRecord, deps?: RegistryDeps): void;
23
+ export declare function removeRecord(sessionId: string, deps?: RegistryDeps): void;
24
+ export declare function isTurnRunning(sessionId: string): boolean;
25
+ export declare function runningSessionIds(): string[];
26
+ export interface RunTurnDeps {
27
+ spawnTurn?: (rec: LaunchedRecord, args: string[], input: string) => {
28
+ on: (event: string, cb: (...a: any[]) => void) => void;
29
+ kill: () => void;
30
+ };
31
+ }
32
+ export declare function runTurn(rec: LaunchedRecord, text: string, firstTurn: boolean, onDone?: (ok: boolean) => void, deps?: RunTurnDeps): void;
33
+ export declare function stopTurn(sessionId: string): void;
34
+ export declare function stopAllTurns(): void;
35
+ //# sourceMappingURL=ai-launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-launch.d.ts","sourceRoot":"","sources":["../src/ai-launch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,YAAY,EAAE,cAAc,EAAE,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAuB5B,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvD;AAQD,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAejF;AAOD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAgBD,wBAAgB,WAAW,CAAC,IAAI,GAAE,YAAiB,GAAG,cAAc,EAAE,CAUrE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAI5E;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAG7E;AAQD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK;QAClE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;QACvD,IAAI,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;CACH;AAKD,wBAAgB,OAAO,CACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,EAC9B,IAAI,GAAE,WAAgB,GACrB,IAAI,CAgDN;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGhD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}