alaska-ai 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 (74) hide show
  1. package/README.md +56 -0
  2. package/dist/adapters/slack.d.ts +130 -0
  3. package/dist/adapters/slack.js +1484 -0
  4. package/dist/adapters/slack.js.map +1 -0
  5. package/dist/backends/claude.d.ts +78 -0
  6. package/dist/backends/claude.js +452 -0
  7. package/dist/backends/claude.js.map +1 -0
  8. package/dist/backends/codex.d.ts +53 -0
  9. package/dist/backends/codex.js +324 -0
  10. package/dist/backends/codex.js.map +1 -0
  11. package/dist/cli/init.d.ts +50 -0
  12. package/dist/cli/init.js +386 -0
  13. package/dist/cli/init.js.map +1 -0
  14. package/dist/cli/prompt.d.ts +31 -0
  15. package/dist/cli/prompt.js +145 -0
  16. package/dist/cli/prompt.js.map +1 -0
  17. package/dist/cli/start.d.ts +28 -0
  18. package/dist/cli/start.js +522 -0
  19. package/dist/cli/start.js.map +1 -0
  20. package/dist/cli.d.ts +2 -0
  21. package/dist/cli.js +65 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js +8 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/mcp/callbacks.d.ts +32 -0
  27. package/dist/mcp/callbacks.js +181 -0
  28. package/dist/mcp/callbacks.js.map +1 -0
  29. package/dist/mcp/config.d.ts +15 -0
  30. package/dist/mcp/config.js +22 -0
  31. package/dist/mcp/config.js.map +1 -0
  32. package/dist/mcp/entry.d.ts +13 -0
  33. package/dist/mcp/entry.js +119 -0
  34. package/dist/mcp/entry.js.map +1 -0
  35. package/dist/mcp/file-browser.d.ts +15 -0
  36. package/dist/mcp/file-browser.js +135 -0
  37. package/dist/mcp/file-browser.js.map +1 -0
  38. package/dist/mcp/ipc-server.d.ts +64 -0
  39. package/dist/mcp/ipc-server.js +380 -0
  40. package/dist/mcp/ipc-server.js.map +1 -0
  41. package/dist/mcp/preview-server.d.ts +33 -0
  42. package/dist/mcp/preview-server.js +254 -0
  43. package/dist/mcp/preview-server.js.map +1 -0
  44. package/dist/mcp/server.d.ts +51 -0
  45. package/dist/mcp/server.js +257 -0
  46. package/dist/mcp/server.js.map +1 -0
  47. package/dist/mcp/tunnel.d.ts +17 -0
  48. package/dist/mcp/tunnel.js +154 -0
  49. package/dist/mcp/tunnel.js.map +1 -0
  50. package/dist/router.d.ts +113 -0
  51. package/dist/router.js +511 -0
  52. package/dist/router.js.map +1 -0
  53. package/dist/sandbox-policy.d.ts +6 -0
  54. package/dist/sandbox-policy.js +46 -0
  55. package/dist/sandbox-policy.js.map +1 -0
  56. package/dist/scheduler.d.ts +42 -0
  57. package/dist/scheduler.js +169 -0
  58. package/dist/scheduler.js.map +1 -0
  59. package/dist/store.d.ts +95 -0
  60. package/dist/store.js +353 -0
  61. package/dist/store.js.map +1 -0
  62. package/dist/types/adapter.d.ts +50 -0
  63. package/dist/types/adapter.js +9 -0
  64. package/dist/types/adapter.js.map +1 -0
  65. package/dist/types/backend.d.ts +73 -0
  66. package/dist/types/backend.js +8 -0
  67. package/dist/types/backend.js.map +1 -0
  68. package/dist/types/events.d.ts +47 -0
  69. package/dist/types/events.js +9 -0
  70. package/dist/types/events.js.map +1 -0
  71. package/dist/utils.d.ts +59 -0
  72. package/dist/utils.js +272 -0
  73. package/dist/utils.js.map +1 -0
  74. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/backends/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Codex CLI backend wrapper.
3
+ *
4
+ * Spawns `codex` CLI in oneshot mode with `--json` output.
5
+ * Parses JSONL output into normalized events. Supports session resume
6
+ * via `codex exec resume` subcommand.
7
+ *
8
+ * Reference: prototype/io-harness/run.js (parseCodexJson)
9
+ */
10
+ import type { Backend, BackendOptions, FileAttachment, McpServerEntry, SendResult } from '../types/backend.js';
11
+ import type { NormalizedEvent } from '../types/events.js';
12
+ export type SandboxMode = 'workspace-write';
13
+ export interface CodexBackendConfig {
14
+ sandbox?: SandboxMode;
15
+ }
16
+ /** Parse Codex CLI JSON output into normalized events. */
17
+ export declare function parseCodexOutput(stdout: string, stderr: string, exitCode: number): {
18
+ events: NormalizedEvent[];
19
+ sessionId: string | null;
20
+ };
21
+ /** Map MIME type to file extension for temp image files. */
22
+ export declare function mimeToExtension(mediaType: string): string;
23
+ /**
24
+ * Save images to temp files and return their paths.
25
+ * Caller is responsible for cleaning up the files.
26
+ */
27
+ export declare function saveImagesToTemp(images: FileAttachment[]): string[];
28
+ /** Clean up temp image files (best-effort, ignores errors). */
29
+ export declare function cleanupTempImages(paths: string[]): void;
30
+ /** Build CLI args for a codex oneshot invocation. */
31
+ export declare function buildCodexArgs(text: string, sessionId: string | null, sandbox: SandboxMode, imagePaths?: string[], mcpConfig?: McpServerEntry): string[];
32
+ /**
33
+ * Write a .codex/config.toml file with the bridge MCP server config.
34
+ * Codex CLI reads project-scoped .codex/config.toml for MCP servers.
35
+ * Uses a minimal TOML serializer (no dependency needed for simple structures).
36
+ */
37
+ export declare function writeCodexMcpConfig(projectDir: string, mcpConfig: McpServerEntry): void;
38
+ export declare class CodexBackend implements Backend {
39
+ private sessionId;
40
+ private projectDir;
41
+ private sandbox;
42
+ private mcpConfig;
43
+ private activeHandle;
44
+ constructor(config?: CodexBackendConfig);
45
+ start(options: BackendOptions): Promise<void>;
46
+ send(text: string, files?: FileAttachment[]): Promise<SendResult>;
47
+ getSessionId(): string | null;
48
+ setSessionId(id: string | null): void;
49
+ setAllowedTools(_tools: string[]): void;
50
+ interrupt(): Promise<void>;
51
+ isAlive(): boolean;
52
+ stop(): Promise<void>;
53
+ }
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Codex CLI backend wrapper.
3
+ *
4
+ * Spawns `codex` CLI in oneshot mode with `--json` output.
5
+ * Parses JSONL output into normalized events. Supports session resume
6
+ * via `codex exec resume` subcommand.
7
+ *
8
+ * Reference: prototype/io-harness/run.js (parseCodexJson)
9
+ */
10
+ import * as fs from 'node:fs';
11
+ import * as os from 'node:os';
12
+ import * as path from 'node:path';
13
+ import { spawnCollect } from './claude.js';
14
+ const SANDBOX_DENIAL_RE = /operation not permitted|permission denied|sandbox.*(?:block|denied|restrict)|read.only.*file.?system/i;
15
+ function parseJsonLine(line) {
16
+ try {
17
+ return JSON.parse(line);
18
+ }
19
+ catch {
20
+ if (line.startsWith('{') || line.startsWith('[')) {
21
+ console.warn(`[codex] malformed JSON line: ${line.slice(0, 200)}`);
22
+ }
23
+ return null;
24
+ }
25
+ }
26
+ /** Parse Codex CLI JSON output into normalized events. */
27
+ export function parseCodexOutput(stdout, stderr, exitCode) {
28
+ const lines = `${stdout}\n${stderr}`.split(/\r?\n/);
29
+ let sessionId = null;
30
+ const events = [];
31
+ for (const line of lines) {
32
+ const trimmed = line.trim();
33
+ if (!trimmed)
34
+ continue;
35
+ const event = parseJsonLine(trimmed);
36
+ if (!event)
37
+ continue;
38
+ // Thread ID from thread.started
39
+ if (event.type === 'thread.started' && typeof event.thread_id === 'string') {
40
+ sessionId = event.thread_id;
41
+ events.push({ type: 'session_started', sessionId });
42
+ continue;
43
+ }
44
+ // Agent message text
45
+ if (event.type === 'item.completed') {
46
+ const item = event.item;
47
+ if (!item)
48
+ continue;
49
+ if (item.type === 'agent_message' && typeof item.text === 'string') {
50
+ const text = item.text;
51
+ events.push({ type: 'assistant_text', text });
52
+ // Check for sandbox denial patterns in agent message
53
+ if (SANDBOX_DENIAL_RE.test(text)) {
54
+ events.push({
55
+ type: 'permission_denied',
56
+ toolName: 'sandbox',
57
+ toolInput: {},
58
+ context: text.slice(0, 500),
59
+ });
60
+ }
61
+ continue;
62
+ }
63
+ // Command execution
64
+ if (item.type === 'command_execution') {
65
+ const command = item.command || '';
66
+ const exitCodeVal = item.exit_code ?? -1;
67
+ const output = item.aggregated_output || '';
68
+ events.push({
69
+ type: 'command_execution',
70
+ command,
71
+ exitCode: exitCodeVal,
72
+ output,
73
+ });
74
+ // Check for sandbox denial in command output (only on non-zero exit)
75
+ if (exitCodeVal !== 0 && SANDBOX_DENIAL_RE.test(output)) {
76
+ events.push({
77
+ type: 'permission_denied',
78
+ toolName: 'sandbox',
79
+ toolInput: { command },
80
+ context: output.slice(0, 500),
81
+ });
82
+ }
83
+ continue;
84
+ }
85
+ // Reasoning events — ignored
86
+ if (item.type === 'reasoning')
87
+ continue;
88
+ }
89
+ // Error events
90
+ if (event.type === 'error' && typeof event.message === 'string') {
91
+ events.push({ type: 'error', message: event.message });
92
+ continue;
93
+ }
94
+ if (event.type === 'turn.failed') {
95
+ const error = event.error;
96
+ const message = error && typeof error.message === 'string'
97
+ ? error.message
98
+ : 'Codex turn failed';
99
+ events.push({ type: 'error', message });
100
+ continue;
101
+ }
102
+ }
103
+ // Non-zero exit with no structured error
104
+ if (exitCode !== 0 && !events.some((e) => e.type === 'error')) {
105
+ events.push({ type: 'error', message: `Codex exited with code ${exitCode}` });
106
+ }
107
+ // Turn completed
108
+ events.push({ type: 'turn_completed' });
109
+ return { events, sessionId };
110
+ }
111
+ /** Map MIME type to file extension for temp image files. */
112
+ export function mimeToExtension(mediaType) {
113
+ const map = {
114
+ 'image/png': '.png',
115
+ 'image/jpeg': '.jpg',
116
+ 'image/gif': '.gif',
117
+ 'image/webp': '.webp',
118
+ };
119
+ return map[mediaType] || '.png';
120
+ }
121
+ /**
122
+ * Save images to temp files and return their paths.
123
+ * Caller is responsible for cleaning up the files.
124
+ */
125
+ export function saveImagesToTemp(images) {
126
+ const tmpDir = os.tmpdir();
127
+ const paths = [];
128
+ for (let i = 0; i < images.length; i++) {
129
+ const ext = mimeToExtension(images[i].mediaType);
130
+ const tmpPath = path.join(tmpDir, `alaska-img-${Date.now()}-${i}${ext}`);
131
+ fs.writeFileSync(tmpPath, Buffer.from(images[i].base64, 'base64'));
132
+ paths.push(tmpPath);
133
+ }
134
+ return paths;
135
+ }
136
+ /** Clean up temp image files (best-effort, ignores errors). */
137
+ export function cleanupTempImages(paths) {
138
+ for (const p of paths) {
139
+ try {
140
+ fs.unlinkSync(p);
141
+ }
142
+ catch (err) {
143
+ if (err.code !== 'ENOENT') {
144
+ console.error(`[codex] failed to clean up temp image ${p}: ${err.message}`);
145
+ }
146
+ }
147
+ }
148
+ }
149
+ /** Build CLI args for a codex oneshot invocation. */
150
+ export function buildCodexArgs(text, sessionId, sandbox, imagePaths, mcpConfig) {
151
+ if (sessionId) {
152
+ // Resume: codex exec resume --skip-git-repo-check --json SESSION_ID -- "prompt"
153
+ // Note: --sandbox, -i, and -c are NOT included in resume (persists from initial invocation)
154
+ return ['exec', 'resume', '--skip-git-repo-check', '--json', sessionId, '--', text];
155
+ }
156
+ const args = ['exec', '--skip-git-repo-check', '--json', '--sandbox', sandbox];
157
+ // Inject MCP server config via -c flag so Codex picks it up at runtime
158
+ if (mcpConfig) {
159
+ const argsToml = mcpConfig.args.map((a) => `"${a}"`).join(', ');
160
+ const configValue = `mcp_servers.alaska={command = "${mcpConfig.command}", args = [${argsToml}]}`;
161
+ args.push('-c', configValue);
162
+ }
163
+ // Attach images via -i/--image flag (Codex CLI multimodal input)
164
+ if (imagePaths) {
165
+ for (const imgPath of imagePaths) {
166
+ args.push('-i', imgPath);
167
+ }
168
+ }
169
+ // Use -- to separate options from the prompt positional argument.
170
+ // Without this, the arg parser can misinterpret the prompt as a flag value.
171
+ args.push('--', text);
172
+ return args;
173
+ }
174
+ /**
175
+ * Write a .codex/config.toml file with the bridge MCP server config.
176
+ * Codex CLI reads project-scoped .codex/config.toml for MCP servers.
177
+ * Uses a minimal TOML serializer (no dependency needed for simple structures).
178
+ */
179
+ export function writeCodexMcpConfig(projectDir, mcpConfig) {
180
+ const codexDir = path.join(projectDir, '.codex');
181
+ if (!fs.existsSync(codexDir)) {
182
+ fs.mkdirSync(codexDir, { recursive: true });
183
+ }
184
+ const configPath = path.join(codexDir, 'config.toml');
185
+ // Read existing config lines (preserve non-MCP settings)
186
+ let existingLines = [];
187
+ try {
188
+ existingLines = fs.readFileSync(configPath, 'utf8').split('\n');
189
+ }
190
+ catch (err) {
191
+ if (err.code !== 'ENOENT') {
192
+ console.error(`[codex] failed to read existing config at ${configPath}: ${err.message}`);
193
+ }
194
+ // ENOENT is expected (file doesn't exist yet) — start fresh
195
+ }
196
+ // Remove any existing alaska MCP server block
197
+ const filtered = [];
198
+ let inAlaskaBlock = false;
199
+ for (const line of existingLines) {
200
+ if (line.trim() === '[mcp_servers.alaska]') {
201
+ inAlaskaBlock = true;
202
+ continue;
203
+ }
204
+ if (inAlaskaBlock && line.startsWith('[')) {
205
+ inAlaskaBlock = false;
206
+ }
207
+ if (!inAlaskaBlock) {
208
+ filtered.push(line);
209
+ }
210
+ }
211
+ // Build the alaska MCP server TOML block
212
+ const argsToml = mcpConfig.args.map((a) => `"${a}"`).join(', ');
213
+ const lines = [
214
+ ...filtered.filter((l) => l.trim() !== ''), // Remove trailing blank lines
215
+ '',
216
+ '[mcp_servers.alaska]',
217
+ `command = "${mcpConfig.command}"`,
218
+ `args = [${argsToml}]`,
219
+ 'enabled = true',
220
+ ];
221
+ if (mcpConfig.env && Object.keys(mcpConfig.env).length > 0) {
222
+ const envEntries = Object.entries(mcpConfig.env)
223
+ .map(([k, v]) => `${k} = "${v}"`)
224
+ .join(', ');
225
+ lines.push(`env = { ${envEntries} }`);
226
+ }
227
+ lines.push('');
228
+ fs.writeFileSync(configPath, lines.join('\n'));
229
+ console.log(`[codex] wrote MCP config to ${configPath}`);
230
+ }
231
+ export class CodexBackend {
232
+ sessionId = null;
233
+ projectDir = '';
234
+ sandbox;
235
+ mcpConfig;
236
+ activeHandle = null;
237
+ constructor(config = {}) {
238
+ this.sandbox = config.sandbox || 'workspace-write';
239
+ }
240
+ async start(options) {
241
+ this.projectDir = options.projectDir;
242
+ this.mcpConfig = options.mcpConfig;
243
+ if (options.sandboxMode === 'workspace-write') {
244
+ this.sandbox = options.sandboxMode;
245
+ }
246
+ // Write MCP config if provided so Codex discovers the bridge tools
247
+ if (this.mcpConfig) {
248
+ writeCodexMcpConfig(this.projectDir, this.mcpConfig);
249
+ }
250
+ console.log(`[codex] initialized for project: ${this.projectDir} (sandbox: ${this.sandbox})`);
251
+ }
252
+ async send(text, files) {
253
+ // Filter to image files for the -i flag (Codex CLI multimodal input)
254
+ const imageFiles = files?.filter((f) => f.kind === 'image');
255
+ let imagePaths;
256
+ let shouldCleanupImages = false;
257
+ if (imageFiles && imageFiles.length > 0) {
258
+ const allHaveStaging = imageFiles.every((img) => !!img.stagingPath);
259
+ if (allHaveStaging) {
260
+ imagePaths = imageFiles.map((img) => img.stagingPath);
261
+ console.log(`[codex] reusing ${imagePaths.length} staging file(s) for -i`);
262
+ }
263
+ else {
264
+ imagePaths = saveImagesToTemp(imageFiles);
265
+ shouldCleanupImages = true;
266
+ console.log(`[codex] saved ${imagePaths.length} image(s) to temp files`);
267
+ }
268
+ }
269
+ const args = buildCodexArgs(text, this.sessionId, this.sandbox, imagePaths, this.mcpConfig);
270
+ console.log(`[codex] spawning: codex ${args.join(' ')}`);
271
+ const handle = spawnCollect('codex', args, this.projectDir);
272
+ this.activeHandle = handle;
273
+ let result;
274
+ try {
275
+ result = await handle.result;
276
+ }
277
+ catch (err) {
278
+ this.activeHandle = null;
279
+ if (imagePaths && shouldCleanupImages)
280
+ cleanupTempImages(imagePaths);
281
+ if (err?.code === 'ENOENT') {
282
+ throw new Error('Codex CLI not found. Install it with: npm install -g @openai/codex');
283
+ }
284
+ throw err;
285
+ }
286
+ this.activeHandle = null;
287
+ if (imagePaths && shouldCleanupImages)
288
+ cleanupTempImages(imagePaths);
289
+ console.log(`[codex] process exited with code ${result.exitCode}`);
290
+ const parsed = parseCodexOutput(result.stdout, result.stderr, result.exitCode);
291
+ if (parsed.sessionId) {
292
+ this.sessionId = parsed.sessionId;
293
+ }
294
+ return {
295
+ events: parsed.events,
296
+ sessionId: this.sessionId,
297
+ };
298
+ }
299
+ getSessionId() {
300
+ return this.sessionId;
301
+ }
302
+ setSessionId(id) {
303
+ this.sessionId = id;
304
+ }
305
+ setAllowedTools(_tools) {
306
+ // Codex uses OS-level sandbox — tool-level approval is not supported
307
+ }
308
+ async interrupt() {
309
+ // CLI backend has no clean interrupt — fall back to stop
310
+ await this.stop();
311
+ }
312
+ isAlive() {
313
+ return this.activeHandle !== null;
314
+ }
315
+ async stop() {
316
+ console.log('[codex] stopping');
317
+ if (this.activeHandle) {
318
+ this.activeHandle.kill();
319
+ this.activeHandle = null;
320
+ }
321
+ this.sessionId = null;
322
+ }
323
+ }
324
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/backends/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * alaska init 鈥?Interactive setup wizard.
3
+ *
4
+ * Guides the user through platform selection, token input (with inline
5
+ * setup instructions and verification), and backend detection. Writes
6
+ * config to .alaska/ and .env.local.
7
+ */
8
+ import { type Store } from '../store.js';
9
+ import { type PromptIO } from './prompt.js';
10
+ export type Platform = 'slack';
11
+ export interface InitConfig {
12
+ platforms: Platform[];
13
+ slackBotToken?: string;
14
+ slackAppToken?: string;
15
+ defaultBackend: string;
16
+ }
17
+ /** Validate a Slack bot token format. */
18
+ export declare function validateSlackBotToken(token: string): string | null;
19
+ /** Validate a Slack app token format. */
20
+ export declare function validateSlackAppToken(token: string): string | null;
21
+ /** Verify a Slack bot token by calling auth.test. Returns bot name on success, null on failure. */
22
+ export declare function verifySlackToken(botToken: string): Promise<string | null>;
23
+ /** Check if a CLI tool is available on PATH. */
24
+ export declare function detectCli(name: string): boolean;
25
+ /** Step 1: Platform selection (P6.2) */
26
+ export declare function selectPlatforms(io: PromptIO | null): Promise<Platform[]>;
27
+ /** Step 2: Token input with inline setup instructions and verification (P6.3) */
28
+ export declare function inputTokens(io: PromptIO | null, platforms: Platform[]): Promise<Pick<InitConfig, 'slackBotToken' | 'slackAppToken'>>;
29
+ /** Step 3: Backend auto-detection (P6.4) */
30
+ export declare function detectBackend(io: PromptIO | null): Promise<string>;
31
+ /** Write tokens to .env.local (P6.6) */
32
+ export declare function writeEnvFile(envPath: string, tokens: Pick<InitConfig, 'slackBotToken' | 'slackAppToken'>): void;
33
+ /** Read existing .env.local, merge new tokens, and write back. */
34
+ export declare function mergeEnvFile(envPath: string, newTokens: Pick<InitConfig, 'slackBotToken' | 'slackAppToken'>): void;
35
+ /** Save platform and backend config to the store (P6.6) */
36
+ export declare function saveConfig(store: Store, platforms: Platform[], defaultBackend: string): Promise<void>;
37
+ /** Detect available tunnel tools on PATH. */
38
+ export declare function detectTunnelTools(): {
39
+ hasCloudflared: boolean;
40
+ hasNgrok: boolean;
41
+ };
42
+ /** Step: File previews setup (tunnel tool detection) */
43
+ export declare function setupFilePreviews(io: PromptIO | null): Promise<void>;
44
+ /** Step: Set sandbox root directory (required). */
45
+ export declare function setProjectsRoot(io: PromptIO | null, store: Store): Promise<void>;
46
+ /**
47
+ * Run the full init wizard.
48
+ * Accepts optional PromptIO for testing (defaults to interactive @clack/prompts).
49
+ */
50
+ export declare function runInit(io?: PromptIO): Promise<void>;