omnara 0.1.4 → 0.1.6

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 (86) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +6357 -50
  3. package/dist/cli.js.map +7 -1
  4. package/dist/orchestrator/agent-orchestrator.d.ts +4 -1
  5. package/dist/orchestrator/orchestrator-prompt.d.ts +8 -2
  6. package/dist/orchestrator/{types.d.ts → orchestrator-types.d.ts} +14 -0
  7. package/dist/orchestrator/session.d.ts +1 -1
  8. package/dist/orchestrator/tools/worker-tools.d.ts +1 -0
  9. package/dist/orchestrator/utils/session-logger.d.ts +1 -1
  10. package/dist/relay/relay-bridge.d.ts +1 -0
  11. package/dist/utils/browser.d.ts +1 -0
  12. package/dist/utils/claude-code-check.d.ts +21 -0
  13. package/dist/utils/logger.d.ts +127 -0
  14. package/dist/utils/version-check.d.ts +9 -0
  15. package/package.json +12 -5
  16. package/scripts/preinstall.js +141 -0
  17. package/scripts/test-preinstall.js +125 -0
  18. package/dist/auth/auth-provider.js +0 -56
  19. package/dist/auth/auth-provider.js.map +0 -1
  20. package/dist/auth/cli-auth-service.js +0 -44
  21. package/dist/auth/cli-auth-service.js.map +0 -1
  22. package/dist/auth/credential-manager.js +0 -71
  23. package/dist/auth/credential-manager.js.map +0 -1
  24. package/dist/auth/credentials-store.js +0 -69
  25. package/dist/auth/credentials-store.js.map +0 -1
  26. package/dist/auth/login-flow.js +0 -196
  27. package/dist/auth/login-flow.js.map +0 -1
  28. package/dist/auth/loopback-listener.js +0 -155
  29. package/dist/auth/loopback-listener.js.map +0 -1
  30. package/dist/auth/pkce.js +0 -15
  31. package/dist/auth/pkce.js.map +0 -1
  32. package/dist/auth/supabase-client.js +0 -10
  33. package/dist/auth/supabase-client.js.map +0 -1
  34. package/dist/auth/supabase-config.js +0 -21
  35. package/dist/auth/supabase-config.js.map +0 -1
  36. package/dist/commands/agent.js +0 -172
  37. package/dist/commands/agent.js.map +0 -1
  38. package/dist/commands/auth.js +0 -84
  39. package/dist/commands/auth.js.map +0 -1
  40. package/dist/commands/index.js +0 -3
  41. package/dist/commands/index.js.map +0 -1
  42. package/dist/http/api-client.js +0 -118
  43. package/dist/http/api-client.js.map +0 -1
  44. package/dist/http/user-sessions.js +0 -9
  45. package/dist/http/user-sessions.js.map +0 -1
  46. package/dist/orchestrator/agent-orchestrator.js +0 -592
  47. package/dist/orchestrator/agent-orchestrator.js.map +0 -1
  48. package/dist/orchestrator/ai-client.js +0 -77
  49. package/dist/orchestrator/ai-client.js.map +0 -1
  50. package/dist/orchestrator/orchestrator-prompt.js +0 -13
  51. package/dist/orchestrator/orchestrator-prompt.js.map +0 -1
  52. package/dist/orchestrator/session.js +0 -295
  53. package/dist/orchestrator/session.js.map +0 -1
  54. package/dist/orchestrator/tools/worker-status-tool.js +0 -41
  55. package/dist/orchestrator/tools/worker-status-tool.js.map +0 -1
  56. package/dist/orchestrator/tools/worker-tools.js +0 -149
  57. package/dist/orchestrator/tools/worker-tools.js.map +0 -1
  58. package/dist/orchestrator/types.js +0 -30
  59. package/dist/orchestrator/types.js.map +0 -1
  60. package/dist/orchestrator/utils/async-queue.js +0 -70
  61. package/dist/orchestrator/utils/async-queue.js.map +0 -1
  62. package/dist/orchestrator/utils/session-logger.js +0 -47
  63. package/dist/orchestrator/utils/session-logger.js.map +0 -1
  64. package/dist/orchestrator/worker-manager.js +0 -418
  65. package/dist/orchestrator/worker-manager.js.map +0 -1
  66. package/dist/relay/relay-bridge.js +0 -601
  67. package/dist/relay/relay-bridge.js.map +0 -1
  68. package/dist/relay/relay-service.js +0 -23
  69. package/dist/relay/relay-service.js.map +0 -1
  70. package/dist/repl/terminal-repl.js +0 -262
  71. package/dist/repl/terminal-repl.js.map +0 -1
  72. package/dist/schemas/generated.d.ts +0 -244
  73. package/dist/schemas/generated.js +0 -5
  74. package/dist/schemas/generated.js.map +0 -1
  75. package/dist/schemas/index.js +0 -2
  76. package/dist/schemas/index.js.map +0 -1
  77. package/dist/scripts/generate-schema-types.d.ts +0 -1
  78. package/dist/scripts/generate-schema-types.js +0 -53
  79. package/dist/scripts/generate-schema-types.js.map +0 -1
  80. package/dist/scripts/sync-schemas.d.ts +0 -1
  81. package/dist/scripts/sync-schemas.js +0 -28
  82. package/dist/scripts/sync-schemas.js.map +0 -1
  83. package/dist/utils/prompt.js +0 -13
  84. package/dist/utils/prompt.js.map +0 -1
  85. package/dist/voice/voice-service.js +0 -25
  86. package/dist/voice/voice-service.js.map +0 -1
@@ -1,172 +0,0 @@
1
- import { Command } from 'commander';
2
- import { AgentOrchestrator } from '../orchestrator/agent-orchestrator.js';
3
- import { CredentialsStore } from '../auth/credentials-store.js';
4
- import { RelayBridge } from '../relay/relay-bridge.js';
5
- import { runTerminalRepl } from '../repl/terminal-repl.js';
6
- import { ApiClient } from '../http/api-client.js';
7
- import { registerRelaySession } from '../relay/relay-service.js';
8
- import { launchVoiceForSession } from '../voice/voice-service.js';
9
- import { createAuthProvider } from '../auth/auth-provider.js';
10
- import { resolveBackendUrl, resolveFrontendUrl } from '../auth/login-flow.js';
11
- export function buildAgentCommand() {
12
- const agent = new Command('agent').description('Utilities for interacting with the Omnara Claude agent.');
13
- agent
14
- .command('orchestrator')
15
- .alias('server')
16
- .description('Start the Omnara agent orchestrator.')
17
- .option('--backend-url <url>', 'Override backend API base URL used for login')
18
- .option('--frontend-url <url>', 'Override frontend URL opened during login')
19
- .action(async (options) => {
20
- await runAgentOrchestrator(options);
21
- });
22
- agent
23
- .command('repl')
24
- .description('Start the Omnara agent REPL connected through the backend relay.')
25
- .requiredOption('--session-id <id>', 'Connect to an existing parent agent session')
26
- .requiredOption('--user-session-id <id>', 'User session that owns the agent session')
27
- .option('--backend-url <url>', 'Override backend API base URL used for login')
28
- .option('--frontend-url <url>', 'Override frontend URL opened during login')
29
- .action(async (options) => {
30
- await runRepl(options);
31
- });
32
- agent
33
- .command('voice')
34
- .description('Dispatch the LiveKit voice agent for an existing session.')
35
- .requiredOption('--session-id <id>', 'Agent session to connect the voice worker to')
36
- .option('--backend-url <url>', 'Override backend API base URL used for login')
37
- .option('--frontend-url <url>', 'Override frontend URL opened during login')
38
- .option('--room-name <name>', 'Override the LiveKit room name used for the call')
39
- .option('--force', 'Launch even if the CLI relay is offline')
40
- .action(async (options) => {
41
- await runVoice(options);
42
- });
43
- return agent;
44
- }
45
- export async function runAgentOrchestrator(options = {}) {
46
- const orchestrator = new AgentOrchestrator();
47
- await orchestrator.start();
48
- const backendUrl = resolveBackendUrl(options.backendUrl);
49
- const frontendUrl = resolveFrontendUrl(options.frontendUrl);
50
- const store = new CredentialsStore();
51
- const bridge = new RelayBridge(orchestrator, {
52
- store,
53
- logger: console,
54
- backendUrl,
55
- frontendUrl,
56
- });
57
- const stop = async () => {
58
- await bridge.stop();
59
- await orchestrator.stop();
60
- };
61
- const signalHandler = createSignalHandler(stop);
62
- process.on('SIGINT', signalHandler.handler);
63
- process.on('SIGTERM', signalHandler.handler);
64
- try {
65
- await bridge.start();
66
- }
67
- catch (error) {
68
- console.error(`Relay orchestrator terminated: ${extractErrorMessage(error)}`);
69
- process.exitCode = process.exitCode || 1;
70
- }
71
- finally {
72
- await stop();
73
- signalHandler.remove();
74
- }
75
- }
76
- function createSignalHandler(onStop) {
77
- let stopping = false;
78
- const handler = (signal) => {
79
- if (stopping) {
80
- return;
81
- }
82
- stopping = true;
83
- console.log(`\nReceived ${signal}. Shutting down agent orchestrator...`);
84
- void onStop()
85
- .catch((error) => {
86
- console.error('Error while shutting down agent orchestrator:', error);
87
- });
88
- };
89
- const remove = () => {
90
- process.removeListener('SIGINT', handler);
91
- process.removeListener('SIGTERM', handler);
92
- };
93
- return { handler, remove };
94
- }
95
- function extractErrorMessage(error) {
96
- if (error instanceof Error) {
97
- return error.message;
98
- }
99
- return String(error);
100
- }
101
- async function runRepl(options) {
102
- const backendUrl = resolveBackendUrl(options.backendUrl);
103
- const frontendUrl = resolveFrontendUrl(options.frontendUrl);
104
- const store = new CredentialsStore();
105
- const authProvider = await createAuthProvider({
106
- store,
107
- backendUrl,
108
- frontendUrl,
109
- logger: console,
110
- });
111
- const client = new ApiClient({ baseUrl: backendUrl });
112
- const accessToken = await authProvider.getAccessToken();
113
- const registration = await registerRelaySession(client, accessToken, {
114
- userSessionId: options.userSessionId,
115
- clientKind: 'cli',
116
- });
117
- const wsUrl = buildRelayWebsocketUrl(backendUrl, registration.relayWsPath);
118
- console.log(`Using agent session ${options.sessionId} (user session ${registration.userSessionId})`);
119
- await runTerminalRepl({
120
- url: wsUrl,
121
- headers: {
122
- authorization: `Bearer ${accessToken}`,
123
- 'x-relay-token': registration.relayToken,
124
- },
125
- initialSessionId: options.sessionId,
126
- });
127
- }
128
- async function runVoice(options) {
129
- const backendUrl = resolveBackendUrl(options.backendUrl);
130
- const frontendUrl = resolveFrontendUrl(options.frontendUrl);
131
- const store = new CredentialsStore();
132
- const authProvider = await createAuthProvider({
133
- store,
134
- backendUrl,
135
- frontendUrl,
136
- logger: console,
137
- });
138
- const client = new ApiClient({ baseUrl: backendUrl });
139
- const launch = await launchVoiceForSession(client, await authProvider.getAccessToken(), {
140
- sessionId: options.sessionId,
141
- force: options.force ?? false,
142
- roomName: options.roomName,
143
- });
144
- console.log('\nVoice agent dispatched successfully.');
145
- console.log(`Session ID: ${launch.sessionId}`);
146
- console.log(`LiveKit URL: ${launch.livekitUrl}`);
147
- console.log(`Room name: ${launch.roomName}`);
148
- console.log(`Participant identity: ${launch.accessTokenIdentity}`);
149
- console.log('\nUse this token to join the room:');
150
- console.log(launch.accessToken);
151
- console.log('\nOnce connected (for example via the LiveKit Agents playground),');
152
- console.log('the voice worker will coordinate with the CLI coding agent through the relay.');
153
- console.log(`Relay websocket: ${launch.relayWsUrl}`);
154
- console.log(`Relay token (expires in ${launch.relayTokenExpiresIn}s):`);
155
- console.log(launch.relayToken);
156
- console.log('\nKeep this information secure—tokens grant access to your agent session.');
157
- }
158
- function buildRelayWebsocketUrl(baseUrl, path) {
159
- const url = new URL(baseUrl);
160
- url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
161
- url.search = '';
162
- url.hash = '';
163
- if (path.startsWith('/')) {
164
- url.pathname = path;
165
- }
166
- else {
167
- const basePath = url.pathname.endsWith('/') ? url.pathname : `${url.pathname}/`;
168
- url.pathname = `${basePath}${path}`;
169
- }
170
- return url.toString();
171
- }
172
- //# sourceMappingURL=agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -1,84 +0,0 @@
1
- import { Command } from 'commander';
2
- import { CredentialsStore } from '../auth/credentials-store.js';
3
- import { ApiError } from '../http/api-client.js';
4
- import { performVerificationLogin, resolveBackendUrl, formatDuration } from '../auth/login-flow.js';
5
- export function buildAuthCommand() {
6
- const auth = new Command('auth').description('Authenticate the Omnara CLI.');
7
- auth
8
- .command('login')
9
- .description('Authenticate via the browser-based verification flow.')
10
- .option('--backend-url <url>', 'Backend base URL')
11
- .option('--frontend-url <url>', 'Frontend URL to open for verification')
12
- .action(async (options) => {
13
- const store = new CredentialsStore();
14
- const backendUrl = resolveBackendUrl(options.backendUrl);
15
- try {
16
- await performVerificationLogin({
17
- backendUrlOption: backendUrl,
18
- frontendUrlOption: options.frontendUrl,
19
- store,
20
- });
21
- }
22
- catch (error) {
23
- if (error instanceof ApiError) {
24
- console.error(`\nRequest failed (HTTP ${error.status}): ${error.message}`);
25
- }
26
- else {
27
- console.error(`\nLogin failed: ${extractErrorMessage(error)}`);
28
- }
29
- process.exitCode = 1;
30
- }
31
- });
32
- auth
33
- .command('logout')
34
- .description('Remove stored CLI credentials.')
35
- .action(async () => {
36
- const store = new CredentialsStore();
37
- await store.clear();
38
- console.log('Credentials cleared.');
39
- });
40
- auth
41
- .command('status')
42
- .description('Show stored CLI credential details.')
43
- .action(async () => {
44
- const store = new CredentialsStore();
45
- const credentials = await store.load();
46
- if (!credentials) {
47
- console.log('No credentials stored.');
48
- return;
49
- }
50
- printStatus(credentials);
51
- });
52
- return auth;
53
- }
54
- function printStatus(credentials) {
55
- if (credentials.accessToken) {
56
- const accessStatus = describeExpiry(credentials.accessTokenExpiresAt);
57
- const refreshStatus = credentials.refreshTokenExpiresAt
58
- ? describeExpiry(credentials.refreshTokenExpiresAt)
59
- : 'unknown expiry';
60
- console.log(`Authentication: Supabase access token (${accessStatus}), Refresh token (${refreshStatus})`);
61
- return;
62
- }
63
- console.log('Authentication: Not configured');
64
- }
65
- function describeExpiry(iso) {
66
- if (!iso) {
67
- return 'unknown expiry';
68
- }
69
- const timestamp = Date.parse(iso);
70
- if (Number.isNaN(timestamp)) {
71
- return 'invalid timestamp';
72
- }
73
- const diff = timestamp - Date.now();
74
- const abs = Math.abs(diff);
75
- const descriptor = formatDuration(abs);
76
- return diff >= 0 ? `expires in ${descriptor}` : `expired ${descriptor} ago`;
77
- }
78
- function extractErrorMessage(error) {
79
- if (error instanceof Error) {
80
- return error.message;
81
- }
82
- return String(error);
83
- }
84
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export { buildAgentCommand, runAgentOrchestrator } from './agent.js';
2
- export { buildAuthCommand } from './auth.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAA4B,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -1,118 +0,0 @@
1
- export class ApiError extends Error {
2
- status;
3
- details;
4
- constructor(status, message, details) {
5
- super(message);
6
- this.status = status;
7
- this.details = details;
8
- }
9
- }
10
- export class ApiClient {
11
- baseUrl;
12
- constructor(options) {
13
- this.baseUrl = normalizeBaseUrl(options.baseUrl);
14
- }
15
- async getJson(path, options) {
16
- const url = resolveUrl(this.baseUrl, path);
17
- const headers = this.buildHeaders(options);
18
- const response = await fetch(url, {
19
- method: 'GET',
20
- headers,
21
- signal: options?.signal,
22
- });
23
- return await this.handleResponse(response);
24
- }
25
- async postJson(path, body, options) {
26
- const url = resolveUrl(this.baseUrl, path);
27
- const headers = this.buildHeaders(options, { includeJson: true });
28
- const response = await fetch(url, {
29
- method: 'POST',
30
- headers,
31
- body: JSON.stringify(body ?? {}),
32
- signal: options?.signal,
33
- });
34
- return await this.handleResponse(response);
35
- }
36
- buildHeaders(options, extras) {
37
- const headers = new Headers();
38
- if (extras?.includeJson) {
39
- headers.set('content-type', 'application/json');
40
- }
41
- if (options?.headers) {
42
- for (const [key, value] of Object.entries(options.headers)) {
43
- headers.set(key, value);
44
- }
45
- }
46
- if (options?.accessToken) {
47
- headers.set('authorization', `Bearer ${options.accessToken}`);
48
- }
49
- else if (options?.apiKey) {
50
- headers.set('authorization', `Bearer ${options.apiKey}`);
51
- }
52
- return headers;
53
- }
54
- async handleResponse(response) {
55
- const contentType = response.headers.get('content-type');
56
- const isJson = contentType?.includes('application/json');
57
- let payload = undefined;
58
- if (isJson) {
59
- try {
60
- payload = await response.json();
61
- }
62
- catch (error) {
63
- if (response.ok) {
64
- throw new ApiError(response.status, `Failed to parse JSON response: ${extractErrorMessage(error)}`);
65
- }
66
- }
67
- }
68
- else if (response.ok) {
69
- payload = await response.text();
70
- }
71
- if (!response.ok) {
72
- const detail = extractDetail(payload);
73
- throw new ApiError(response.status, detail ?? `HTTP ${response.status}`, payload);
74
- }
75
- return payload;
76
- }
77
- }
78
- export function normalizeBaseUrl(raw) {
79
- if (!raw) {
80
- throw new Error('Backend URL cannot be empty.');
81
- }
82
- return raw.endsWith('/') ? raw : `${raw}/`;
83
- }
84
- export function resolveUrl(base, path) {
85
- const baseUrl = new URL(base);
86
- if (!path.startsWith('/')) {
87
- path = `/${path}`;
88
- }
89
- const resolved = new URL(path, baseUrl);
90
- return resolved.toString();
91
- }
92
- function extractDetail(payload) {
93
- if (!payload) {
94
- return null;
95
- }
96
- if (typeof payload === 'string') {
97
- return payload;
98
- }
99
- if (typeof payload === 'object' && payload !== null) {
100
- const record = payload;
101
- const detail = record.detail;
102
- if (typeof detail === 'string') {
103
- return detail;
104
- }
105
- const message = record.message;
106
- if (typeof message === 'string') {
107
- return message;
108
- }
109
- }
110
- return null;
111
- }
112
- function extractErrorMessage(error) {
113
- if (error instanceof Error) {
114
- return error.message;
115
- }
116
- return String(error);
117
- }
118
- //# sourceMappingURL=api-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/http/api-client.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { ApiClient } from './api-client.js';
2
- export async function createUserSession(client, accessToken, options = {}) {
3
- const body = {
4
- name: options.name ?? null,
5
- metadata: options.metadata ?? null,
6
- };
7
- return await client.postJson('/api/v1/user-sessions', body, { accessToken });
8
- }
9
- //# sourceMappingURL=user-sessions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user-sessions.js","sourceRoot":"","sources":["../../src/http/user-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgB5C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiB,EACjB,WAAmB,EACnB,UAAiE,EAAE;IAEnE,MAAM,IAAI,GAAiC;QACzC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;KACnC,CAAC;IAEF,OAAO,MAAM,MAAM,CAAC,QAAQ,CAC1B,uBAAuB,EACvB,IAAI,EACJ,EAAE,WAAW,EAAE,CAChB,CAAC;AACJ,CAAC"}