codex-anywhere 0.1.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 (104) hide show
  1. package/CONTRIBUTING.md +98 -0
  2. package/LICENSE +73 -0
  3. package/README.md +163 -0
  4. package/dist/agentMessageStreams.d.ts +3 -0
  5. package/dist/agentMessageStreams.d.ts.map +1 -0
  6. package/dist/agentMessageStreams.js +10 -0
  7. package/dist/agentMessageStreams.js.map +1 -0
  8. package/dist/app.d.ts +17 -0
  9. package/dist/app.d.ts.map +1 -0
  10. package/dist/app.js +18 -0
  11. package/dist/app.js.map +1 -0
  12. package/dist/approval.d.ts +12 -0
  13. package/dist/approval.d.ts.map +1 -0
  14. package/dist/approval.js +42 -0
  15. package/dist/approval.js.map +1 -0
  16. package/dist/bootstrap.d.ts +22 -0
  17. package/dist/bootstrap.d.ts.map +1 -0
  18. package/dist/bootstrap.js +31 -0
  19. package/dist/bootstrap.js.map +1 -0
  20. package/dist/bridge.d.ts +22 -0
  21. package/dist/bridge.d.ts.map +1 -0
  22. package/dist/bridge.js +2861 -0
  23. package/dist/bridge.js.map +1 -0
  24. package/dist/cli.d.ts +3 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +58 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/codexAppServer.d.ts +13 -0
  29. package/dist/codexAppServer.d.ts.map +1 -0
  30. package/dist/codexAppServer.js +115 -0
  31. package/dist/codexAppServer.js.map +1 -0
  32. package/dist/configuration.d.ts +17 -0
  33. package/dist/configuration.d.ts.map +1 -0
  34. package/dist/configuration.js +27 -0
  35. package/dist/configuration.js.map +1 -0
  36. package/dist/harnessState.d.ts +15 -0
  37. package/dist/harnessState.d.ts.map +1 -0
  38. package/dist/harnessState.js +55 -0
  39. package/dist/harnessState.js.map +1 -0
  40. package/dist/harnessStateCli.d.ts +3 -0
  41. package/dist/harnessStateCli.d.ts.map +1 -0
  42. package/dist/harnessStateCli.js +13 -0
  43. package/dist/harnessStateCli.js.map +1 -0
  44. package/dist/interactive.d.ts +8 -0
  45. package/dist/interactive.d.ts.map +1 -0
  46. package/dist/interactive.js +24 -0
  47. package/dist/interactive.js.map +1 -0
  48. package/dist/localCommandInteractions.d.ts +22 -0
  49. package/dist/localCommandInteractions.d.ts.map +1 -0
  50. package/dist/localCommandInteractions.js +412 -0
  51. package/dist/localCommandInteractions.js.map +1 -0
  52. package/dist/omxCommands.d.ts +10 -0
  53. package/dist/omxCommands.d.ts.map +1 -0
  54. package/dist/omxCommands.js +146 -0
  55. package/dist/omxCommands.js.map +1 -0
  56. package/dist/onboarding.d.ts +3 -0
  57. package/dist/onboarding.d.ts.map +1 -0
  58. package/dist/onboarding.js +41 -0
  59. package/dist/onboarding.js.map +1 -0
  60. package/dist/paths.d.ts +3 -0
  61. package/dist/paths.d.ts.map +1 -0
  62. package/dist/paths.js +22 -0
  63. package/dist/paths.js.map +1 -0
  64. package/dist/persistence.d.ts +6 -0
  65. package/dist/persistence.d.ts.map +1 -0
  66. package/dist/persistence.js +61 -0
  67. package/dist/persistence.js.map +1 -0
  68. package/dist/preflight.d.ts +3 -0
  69. package/dist/preflight.d.ts.map +1 -0
  70. package/dist/preflight.js +25 -0
  71. package/dist/preflight.js.map +1 -0
  72. package/dist/service.d.ts +58 -0
  73. package/dist/service.d.ts.map +1 -0
  74. package/dist/service.js +322 -0
  75. package/dist/service.js.map +1 -0
  76. package/dist/sessions.d.ts +7 -0
  77. package/dist/sessions.d.ts.map +1 -0
  78. package/dist/sessions.js +20 -0
  79. package/dist/sessions.js.map +1 -0
  80. package/dist/slashCommands.d.ts +13 -0
  81. package/dist/slashCommands.d.ts.map +1 -0
  82. package/dist/slashCommands.js +150 -0
  83. package/dist/slashCommands.js.map +1 -0
  84. package/dist/telegram.d.ts +21 -0
  85. package/dist/telegram.d.ts.map +1 -0
  86. package/dist/telegram.js +103 -0
  87. package/dist/telegram.js.map +1 -0
  88. package/dist/telegramFormatting.d.ts +18 -0
  89. package/dist/telegramFormatting.d.ts.map +1 -0
  90. package/dist/telegramFormatting.js +380 -0
  91. package/dist/telegramFormatting.js.map +1 -0
  92. package/dist/threadState.d.ts +3 -0
  93. package/dist/threadState.d.ts.map +1 -0
  94. package/dist/threadState.js +28 -0
  95. package/dist/threadState.js.map +1 -0
  96. package/dist/turnControls.d.ts +7 -0
  97. package/dist/turnControls.d.ts.map +1 -0
  98. package/dist/turnControls.js +20 -0
  99. package/dist/turnControls.js.map +1 -0
  100. package/dist/types.d.ts +121 -0
  101. package/dist/types.d.ts.map +1 -0
  102. package/dist/types.js +2 -0
  103. package/dist/types.js.map +1 -0
  104. package/package.json +62 -0
@@ -0,0 +1,322 @@
1
+ import { execFile as execFileCallback } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import fs from "node:fs/promises";
4
+ import { createRequire } from "node:module";
5
+ import os from "node:os";
6
+ import path from "node:path";
7
+ import process from "node:process";
8
+ import { fileURLToPath } from "node:url";
9
+ import { promisify } from "node:util";
10
+ import { prepareCodexAnywhereConfig } from "./configuration.js";
11
+ import { getStoragePaths } from "./paths.js";
12
+ import { loadConfig } from "./persistence.js";
13
+ const execFileAsync = promisify(execFileCallback);
14
+ const require = createRequire(import.meta.url);
15
+ const LAUNCH_AGENT_DOMAIN = "gui";
16
+ const LAUNCH_AGENT_LABEL_PREFIX = "ai.mempat.codex-anywhere";
17
+ export function buildMacosLaunchAgentSpec(options) {
18
+ const serviceId = buildServiceId(options.storageRoot);
19
+ const label = `${LAUNCH_AGENT_LABEL_PREFIX}.${serviceId}`;
20
+ const launchAgentsDir = path.join(options.homeDir, "Library", "LaunchAgents");
21
+ const domainTarget = `${LAUNCH_AGENT_DOMAIN}/${options.uid}`;
22
+ const serviceTarget = `${domainTarget}/${label}`;
23
+ const logDir = path.join(options.storageRoot, "logs");
24
+ const environmentVariables = sanitizeEnvironmentVariables({
25
+ PATH: options.pathEnv,
26
+ CODEX_ANYWHERE_HOME: options.storageRoot,
27
+ ...options.extraEnv,
28
+ });
29
+ return {
30
+ label,
31
+ domainTarget,
32
+ serviceTarget,
33
+ plistPath: path.join(launchAgentsDir, `${label}.plist`),
34
+ stdoutPath: path.join(logDir, "launchd.stdout.log"),
35
+ stderrPath: path.join(logDir, "launchd.stderr.log"),
36
+ workingDirectory: options.repoCwd,
37
+ storageRoot: options.storageRoot,
38
+ programArguments: options.programArguments,
39
+ environmentVariables,
40
+ };
41
+ }
42
+ export function renderLaunchAgentPlist(spec) {
43
+ const programArguments = spec.programArguments
44
+ .map((argument) => ` <string>${escapeXml(argument)}</string>`)
45
+ .join("\n");
46
+ const environmentVariables = Object.entries(spec.environmentVariables)
47
+ .sort(([left], [right]) => left.localeCompare(right))
48
+ .map(([key, value]) => ` <key>${escapeXml(key)}</key>\n <string>${escapeXml(value)}</string>`)
49
+ .join("\n");
50
+ return `<?xml version="1.0" encoding="UTF-8"?>
51
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
52
+ <plist version="1.0">
53
+ <dict>
54
+ <key>Label</key>
55
+ <string>${escapeXml(spec.label)}</string>
56
+ <key>ProgramArguments</key>
57
+ <array>
58
+ ${programArguments}
59
+ </array>
60
+ <key>WorkingDirectory</key>
61
+ <string>${escapeXml(spec.workingDirectory)}</string>
62
+ <key>EnvironmentVariables</key>
63
+ <dict>
64
+ ${environmentVariables}
65
+ </dict>
66
+ <key>RunAtLoad</key>
67
+ <true/>
68
+ <key>KeepAlive</key>
69
+ <true/>
70
+ <key>StandardOutPath</key>
71
+ <string>${escapeXml(spec.stdoutPath)}</string>
72
+ <key>StandardErrorPath</key>
73
+ <string>${escapeXml(spec.stderrPath)}</string>
74
+ </dict>
75
+ </plist>
76
+ `;
77
+ }
78
+ export async function runBackgroundServiceCommand(command, options = {}) {
79
+ const platform = options.platform ?? process.platform;
80
+ if (platform !== "darwin") {
81
+ throw new Error(`Background service management is not implemented on ${platform} yet.`);
82
+ }
83
+ const cwd = options.cwd ?? process.cwd();
84
+ const env = options.env ?? process.env;
85
+ const storagePaths = options.storagePaths ?? getStoragePaths(env);
86
+ const storageRoot = path.dirname(storagePaths.configPath);
87
+ const homeDir = options.homeDir ?? os.homedir();
88
+ const uid = options.uid ?? currentUid();
89
+ const execFile = options.execFile ?? execFileAsync;
90
+ const log = options.log ?? console.log;
91
+ const packageRoot = options.packageRoot ?? resolvePackageRoot();
92
+ const existingConfig = (await (options.loadConfig ?? loadConfig)(storagePaths.configPath)) ?? null;
93
+ const programArguments = await resolveServiceProgramArguments({
94
+ packageRoot,
95
+ nodePath: options.nodePath ?? process.execPath,
96
+ tsxCliPath: options.tsxCliPath,
97
+ });
98
+ const spec = buildMacosLaunchAgentSpec({
99
+ repoCwd: packageRoot,
100
+ storageRoot,
101
+ homeDir,
102
+ uid,
103
+ pathEnv: env.PATH ?? "",
104
+ programArguments,
105
+ extraEnv: {
106
+ HOME: env.HOME ?? homeDir,
107
+ LANG: env.LANG,
108
+ LC_ALL: env.LC_ALL,
109
+ TMPDIR: env.TMPDIR,
110
+ USER: env.USER,
111
+ },
112
+ });
113
+ switch (command) {
114
+ case "install-service":
115
+ await prepareCodexAnywhereConfig({
116
+ cwd,
117
+ env,
118
+ storagePaths,
119
+ loadConfig: options.loadConfig,
120
+ saveConfig: options.saveConfig,
121
+ runSetupWizard: options.runSetupWizard,
122
+ runPreflightChecks: options.runPreflightChecks,
123
+ log,
124
+ });
125
+ await installLaunchAgent(spec, execFile);
126
+ log(`Installed LaunchAgent ${spec.label}`);
127
+ log(`Plist: ${spec.plistPath}`);
128
+ log(`Logs: ${spec.stdoutPath}`);
129
+ return;
130
+ case "start-service":
131
+ await assertLaunchAgentInstalled(spec);
132
+ if (!existingConfig) {
133
+ throw new Error("Codex Anywhere is not configured yet. Run `npm run connect` or `pnpm run connect` once before starting the service.");
134
+ }
135
+ await startLaunchAgent(spec, execFile);
136
+ log(`Started LaunchAgent ${spec.label}`);
137
+ return;
138
+ case "stop-service":
139
+ await assertLaunchAgentInstalled(spec);
140
+ await stopLaunchAgent(spec, execFile);
141
+ log(`Stopped LaunchAgent ${spec.label}`);
142
+ return;
143
+ case "service-status":
144
+ await printLaunchAgentStatus(spec, execFile, log);
145
+ return;
146
+ case "uninstall-service":
147
+ await uninstallLaunchAgent(spec, execFile);
148
+ log(`Removed LaunchAgent ${spec.label}`);
149
+ return;
150
+ }
151
+ }
152
+ async function installLaunchAgent(spec, execFile) {
153
+ await fs.mkdir(path.dirname(spec.plistPath), { recursive: true });
154
+ await fs.mkdir(path.dirname(spec.stdoutPath), { recursive: true });
155
+ await fs.writeFile(spec.plistPath, renderLaunchAgentPlist(spec), "utf8");
156
+ await runLaunchctl(execFile, ["enable", spec.serviceTarget], { ignoreFailure: true });
157
+ await runLaunchctl(execFile, ["bootout", spec.domainTarget, spec.plistPath], {
158
+ ignoreFailure: true,
159
+ });
160
+ await runLaunchctl(execFile, ["bootstrap", spec.domainTarget, spec.plistPath]);
161
+ await runLaunchctl(execFile, ["kickstart", "-k", spec.serviceTarget]);
162
+ }
163
+ async function startLaunchAgent(spec, execFile) {
164
+ await runLaunchctl(execFile, ["enable", spec.serviceTarget], { ignoreFailure: true });
165
+ await runLaunchctl(execFile, ["bootout", spec.domainTarget, spec.plistPath], {
166
+ ignoreFailure: true,
167
+ });
168
+ await runLaunchctl(execFile, ["bootstrap", spec.domainTarget, spec.plistPath]);
169
+ await runLaunchctl(execFile, ["kickstart", "-k", spec.serviceTarget]);
170
+ }
171
+ async function stopLaunchAgent(spec, execFile) {
172
+ await runLaunchctl(execFile, ["disable", spec.serviceTarget], { ignoreFailure: true });
173
+ await runLaunchctl(execFile, ["bootout", spec.domainTarget, spec.plistPath], {
174
+ ignoreFailure: true,
175
+ });
176
+ }
177
+ async function uninstallLaunchAgent(spec, execFile) {
178
+ await runLaunchctl(execFile, ["disable", spec.serviceTarget], { ignoreFailure: true });
179
+ await runLaunchctl(execFile, ["bootout", spec.domainTarget, spec.plistPath], {
180
+ ignoreFailure: true,
181
+ });
182
+ await fs.rm(spec.plistPath, { force: true });
183
+ }
184
+ async function printLaunchAgentStatus(spec, execFile, log) {
185
+ const installed = await fileExists(spec.plistPath);
186
+ const loaded = await runLaunchctl(execFile, ["print", spec.serviceTarget], {
187
+ ignoreFailure: true,
188
+ });
189
+ const lines = [
190
+ `platform: darwin`,
191
+ `label: ${spec.label}`,
192
+ `plist: ${spec.plistPath}`,
193
+ `installed: ${installed ? "yes" : "no"}`,
194
+ `loaded: ${loaded.ok ? "yes" : "no"}`,
195
+ `storage-root: ${spec.storageRoot}`,
196
+ `stdout-log: ${spec.stdoutPath}`,
197
+ `stderr-log: ${spec.stderrPath}`,
198
+ ];
199
+ if (loaded.stdout.trim()) {
200
+ lines.push("");
201
+ lines.push("launchctl print:");
202
+ lines.push(loaded.stdout.trim());
203
+ }
204
+ else if (!installed) {
205
+ lines.push("");
206
+ lines.push("LaunchAgent plist is not installed.");
207
+ }
208
+ log(lines.join("\n"));
209
+ }
210
+ async function assertLaunchAgentInstalled(spec) {
211
+ if (!(await fileExists(spec.plistPath))) {
212
+ throw new Error(`LaunchAgent is not installed yet: ${spec.plistPath}\nRun \`npm run service:install\` or \`pnpm run service:install\` first.`);
213
+ }
214
+ }
215
+ async function fileExists(filePath) {
216
+ try {
217
+ await fs.access(filePath);
218
+ return true;
219
+ }
220
+ catch {
221
+ return false;
222
+ }
223
+ }
224
+ function currentUid() {
225
+ if (typeof process.getuid !== "function") {
226
+ throw new Error("Unable to determine the current user id for launchctl.");
227
+ }
228
+ return process.getuid();
229
+ }
230
+ function resolvePackageRoot() {
231
+ return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
232
+ }
233
+ export async function resolveServiceProgramArguments(options) {
234
+ const sourceCliPath = path.join(options.packageRoot, "src", "cli.ts");
235
+ if (await fileExists(sourceCliPath)) {
236
+ return [options.nodePath, options.tsxCliPath ?? resolveTsxCliPath(), sourceCliPath, "connect"];
237
+ }
238
+ const builtCliPath = path.join(options.packageRoot, "dist", "cli.js");
239
+ if (await fileExists(builtCliPath)) {
240
+ return [options.nodePath, builtCliPath, "connect"];
241
+ }
242
+ throw new Error(`Unable to find a runnable Codex Anywhere CLI entrypoint under ${options.packageRoot}. Expected src/cli.ts or dist/cli.js.`);
243
+ }
244
+ function resolveTsxCliPath() {
245
+ try {
246
+ return require.resolve("tsx/cli");
247
+ }
248
+ catch {
249
+ const packageJsonPath = require.resolve("tsx/package.json");
250
+ const packageJson = require(packageJsonPath);
251
+ const binEntry = typeof packageJson.bin === "string"
252
+ ? packageJson.bin
253
+ : packageJson.bin?.tsx;
254
+ if (!binEntry) {
255
+ throw new Error("Unable to resolve the tsx CLI entrypoint.");
256
+ }
257
+ return path.join(path.dirname(packageJsonPath), binEntry);
258
+ }
259
+ }
260
+ function sanitizeEnvironmentVariables(variables) {
261
+ const sanitized = {};
262
+ for (const [key, value] of Object.entries(variables)) {
263
+ if (value) {
264
+ sanitized[key] = value;
265
+ }
266
+ }
267
+ return sanitized;
268
+ }
269
+ function buildServiceId(storageRoot) {
270
+ const basename = path.basename(storageRoot) || "codex-anywhere";
271
+ const slug = basename
272
+ .toLowerCase()
273
+ .replace(/[^a-z0-9]+/g, "-")
274
+ .replace(/^-+|-+$/g, "")
275
+ .slice(0, 48);
276
+ const hash = createHash("sha256").update(storageRoot).digest("hex").slice(0, 12);
277
+ return slug ? `${slug}-${hash}` : hash;
278
+ }
279
+ function escapeXml(value) {
280
+ return value
281
+ .replaceAll("&", "&amp;")
282
+ .replaceAll("<", "&lt;")
283
+ .replaceAll(">", "&gt;")
284
+ .replaceAll('"', "&quot;")
285
+ .replaceAll("'", "&apos;");
286
+ }
287
+ async function runLaunchctl(execFile, args, options = {}) {
288
+ try {
289
+ const result = await execFile("launchctl", args, {
290
+ env: process.env,
291
+ });
292
+ return {
293
+ ok: true,
294
+ stdout: result.stdout,
295
+ stderr: result.stderr,
296
+ };
297
+ }
298
+ catch (error) {
299
+ const stdout = extractProcessOutput(error, "stdout");
300
+ const stderr = extractProcessOutput(error, "stderr");
301
+ if (options.ignoreFailure) {
302
+ return {
303
+ ok: false,
304
+ stdout,
305
+ stderr,
306
+ };
307
+ }
308
+ throw new Error(formatLaunchctlError(args, stderr || stdout));
309
+ }
310
+ }
311
+ function extractProcessOutput(error, key) {
312
+ if (!error || typeof error !== "object" || !(key in error)) {
313
+ return "";
314
+ }
315
+ const value = error[key];
316
+ return typeof value === "string" ? value : "";
317
+ }
318
+ function formatLaunchctlError(args, output) {
319
+ const suffix = output.trim() ? `: ${output.trim()}` : "";
320
+ return `launchctl ${args.join(" ")} failed${suffix}`;
321
+ }
322
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type SessionAction = "takeover" | "status";
2
+ export declare function formatSessionCallbackData(action: SessionAction, threadId: string): string;
3
+ export declare function parseSessionCallbackData(data: string): {
4
+ action: SessionAction;
5
+ threadId: string;
6
+ } | null;
7
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,GACX;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAcpD"}
@@ -0,0 +1,20 @@
1
+ const SESSIONS_PREFIX = "ses";
2
+ export function formatSessionCallbackData(action, threadId) {
3
+ return `${SESSIONS_PREFIX}:${action}:${threadId}`;
4
+ }
5
+ export function parseSessionCallbackData(data) {
6
+ const parts = data.split(":");
7
+ if (parts.length !== 3 || parts[0] !== SESSIONS_PREFIX) {
8
+ return null;
9
+ }
10
+ const action = parts[1];
11
+ const threadId = parts[2];
12
+ if (!threadId || (action !== "takeover" && action !== "status")) {
13
+ return null;
14
+ }
15
+ return {
16
+ action,
17
+ threadId,
18
+ };
19
+ }
20
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,KAAK,CAAC;AAI9B,MAAM,UAAU,yBAAyB,CACvC,MAAqB,EACrB,QAAgB;IAEhB,OAAO,GAAG,eAAe,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface ParsedTelegramSlashCommand {
2
+ name: string;
3
+ args: string;
4
+ }
5
+ export declare function parseTelegramSlashCommand(text: string): ParsedTelegramSlashCommand | null;
6
+ export declare function isRecognizedCodexSlashCommand(name: string): boolean;
7
+ export declare function isSupportedCodexSlashCommand(name: string): boolean;
8
+ export declare function isUnsupportedTelegramOnlyCodexCommand(name: string): boolean;
9
+ export declare function isTaskBlockingSlashCommand(name: string): boolean;
10
+ export declare function normalizeApprovalPolicy(value: string): string | null;
11
+ export declare function normalizeReasoningEffort(value: string): string | null;
12
+ export declare function codexSlashHelpText(): string;
13
+ //# sourceMappingURL=slashCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashCommands.d.ts","sourceRoot":"","sources":["../src/slashCommands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAqED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,GAAG,IAAI,CAUzF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElE;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBhE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAkC3C"}
@@ -0,0 +1,150 @@
1
+ const SUPPORTED_CODEX_COMMANDS = new Set([
2
+ "approvals",
3
+ "agent",
4
+ "apps",
5
+ "clear",
6
+ "collab",
7
+ "compact",
8
+ "copy",
9
+ "diff",
10
+ "esc",
11
+ "experimental",
12
+ "ese",
13
+ "fast",
14
+ "feedback",
15
+ "fork",
16
+ "init",
17
+ "logout",
18
+ "mcp",
19
+ "mention",
20
+ "model",
21
+ "new",
22
+ "personality",
23
+ "plan",
24
+ "permissions",
25
+ "plugins",
26
+ "quit",
27
+ "rename",
28
+ "resume",
29
+ "review",
30
+ "rollout",
31
+ "skills",
32
+ "status",
33
+ "stop",
34
+ "subagents",
35
+ "verbose",
36
+ "clean",
37
+ "exit",
38
+ ]);
39
+ const KNOWN_BUT_UNSUPPORTED_COMMANDS = new Set([
40
+ "debug-config",
41
+ "ps",
42
+ "realtime",
43
+ "sandbox-add-read-dir",
44
+ "settings",
45
+ "setup-default-sandbox",
46
+ "statusline",
47
+ "test-approval",
48
+ "theme",
49
+ "title",
50
+ "debug-m-drop",
51
+ "debug-m-update",
52
+ ]);
53
+ const APPROVAL_POLICY_ALIASES = new Map([
54
+ ["untrusted", "untrusted"],
55
+ ["unless-trusted", "untrusted"],
56
+ ["unless_trusted", "untrusted"],
57
+ ["on-failure", "on-failure"],
58
+ ["onfailure", "on-failure"],
59
+ ["on_failure", "on-failure"],
60
+ ["on-request", "on-request"],
61
+ ["onrequest", "on-request"],
62
+ ["on_request", "on-request"],
63
+ ["never", "never"],
64
+ ]);
65
+ export function parseTelegramSlashCommand(text) {
66
+ const trimmed = text.trim();
67
+ const match = /^\/([^\s@]+)(?:@[^\s]+)?(?:\s+([\s\S]*))?$/.exec(trimmed);
68
+ if (!match) {
69
+ return null;
70
+ }
71
+ return {
72
+ name: match[1].toLowerCase(),
73
+ args: (match[2] ?? "").trim(),
74
+ };
75
+ }
76
+ export function isRecognizedCodexSlashCommand(name) {
77
+ return SUPPORTED_CODEX_COMMANDS.has(name) || KNOWN_BUT_UNSUPPORTED_COMMANDS.has(name);
78
+ }
79
+ export function isSupportedCodexSlashCommand(name) {
80
+ return SUPPORTED_CODEX_COMMANDS.has(name);
81
+ }
82
+ export function isUnsupportedTelegramOnlyCodexCommand(name) {
83
+ return KNOWN_BUT_UNSUPPORTED_COMMANDS.has(name);
84
+ }
85
+ export function isTaskBlockingSlashCommand(name) {
86
+ return new Set([
87
+ "approvals",
88
+ "clear",
89
+ "compact",
90
+ "experimental",
91
+ "fast",
92
+ "fork",
93
+ "init",
94
+ "logout",
95
+ "model",
96
+ "new",
97
+ "personality",
98
+ "plan",
99
+ "permissions",
100
+ "rename",
101
+ "resume",
102
+ "review",
103
+ ]).has(name);
104
+ }
105
+ export function normalizeApprovalPolicy(value) {
106
+ return APPROVAL_POLICY_ALIASES.get(value.trim().toLowerCase()) ?? null;
107
+ }
108
+ export function normalizeReasoningEffort(value) {
109
+ const normalized = value.trim().toLowerCase();
110
+ if (["minimal", "low", "medium", "high"].includes(normalized)) {
111
+ return normalized;
112
+ }
113
+ return null;
114
+ }
115
+ export function codexSlashHelpText() {
116
+ return [
117
+ "Codex Anywhere commands:",
118
+ "/start, /help, /new, /resume, /interrupt, /cancel, /status, /sh <command>, /workspace <path>",
119
+ "Telegram will also show the registered command list when you type /",
120
+ "",
121
+ "Codex slash commands supported in Telegram:",
122
+ "/model [status|reset|<model> [effort]]",
123
+ "/fast [status|on|off]",
124
+ "/personality [friendly|pragmatic|none]",
125
+ "/permissions [status|untrusted|on-failure|on-request|never]",
126
+ "/plan [task]",
127
+ "/collab [mode]",
128
+ "/agent, /subagents",
129
+ "/resume",
130
+ "/review [base <branch>|commit <sha>|<custom instructions>]",
131
+ "/rename <name>, /fork, /compact, /clear",
132
+ "/diff, /copy, /mention <query>, /skills, /mcp, /apps, /plugins, /feedback, /verbose [on|off|status]",
133
+ "/experimental [status|<feature> on|off], /rollout, /logout, /quit, /exit, /stop",
134
+ "/esc (/ese alias) to interrupt the current turn",
135
+ "/omx [args] to run supported oh-my-codex CLI commands",
136
+ "",
137
+ "Interactive prompts:",
138
+ "- approvals and file changes appear as Telegram buttons",
139
+ "- choice prompts are rendered as Telegram cards",
140
+ "- freeform prompts ask you to reply in chat",
141
+ "- some slash commands open Telegram pickers when invoked without args",
142
+ "- send a photo with an optional caption to include image + text in one turn",
143
+ "- while a turn is active, sending a message steers it; use Queue Next to hold the next message",
144
+ "- send /cancel to cancel an active prompt",
145
+ "",
146
+ "Recognized but not meaningful in Telegram yet:",
147
+ "/ps, /theme, /title, /statusline, /realtime, /settings",
148
+ ].join("\n");
149
+ }
150
+ //# sourceMappingURL=slashCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashCommands.js","sourceRoot":"","sources":["../src/slashCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { JsonObject, TelegramBotCommand, TelegramUpdate } from "./types.js";
2
+ import type { TelegramParseMode } from "./telegramFormatting.js";
3
+ export declare class TelegramBotApi {
4
+ #private;
5
+ constructor(token: string);
6
+ getMe(): Promise<Record<string, unknown>>;
7
+ setMyCommands(commands: TelegramBotCommand[]): Promise<void>;
8
+ getUpdates(offset: number | null, timeoutSeconds: number): Promise<TelegramUpdate[]>;
9
+ getFile(fileId: string): Promise<{
10
+ file_path: string;
11
+ }>;
12
+ downloadFile(filePath: string): Promise<Buffer>;
13
+ sendChatAction(chatId: number, action: "typing"): Promise<void>;
14
+ sendMessage(chatId: number, text: string, replyMarkup?: JsonObject, parseMode?: TelegramParseMode): Promise<{
15
+ message_id: number;
16
+ }>;
17
+ editMessageText(chatId: number, messageId: number, text: string, replyMarkup?: JsonObject, parseMode?: TelegramParseMode): Promise<void>;
18
+ answerCallbackQuery(callbackQueryId: string, text: string): Promise<void>;
19
+ deleteMessage(chatId: number, messageId: number): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=telegram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,qBAAa,cAAc;;gBAGb,KAAK,EAAE,MAAM;IAInB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIzC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAWpF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAMvD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ/C,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,WAAW,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,UAAU,EACxB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAc5B,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,UAAU,EACxB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAsBV,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBtE"}