foundr-companion 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 (75) hide show
  1. package/dist/bridge/adapters.d.mts +33 -0
  2. package/dist/bridge/adapters.d.mts.map +1 -0
  3. package/dist/bridge/adapters.mjs +159 -0
  4. package/dist/bridge/adapters.mjs.map +1 -0
  5. package/dist/bridge/bridge-auth.d.mts +5 -0
  6. package/dist/bridge/bridge-auth.d.mts.map +1 -0
  7. package/dist/bridge/bridge-auth.mjs +24 -0
  8. package/dist/bridge/bridge-auth.mjs.map +1 -0
  9. package/dist/bridge/codex-app-server-adapter.d.mts +37 -0
  10. package/dist/bridge/codex-app-server-adapter.d.mts.map +1 -0
  11. package/dist/bridge/codex-app-server-adapter.mjs +401 -0
  12. package/dist/bridge/codex-app-server-adapter.mjs.map +1 -0
  13. package/dist/bridge/daemon.mjs +190 -0
  14. package/dist/bridge/foundr-codex-reply.d.mts +96 -0
  15. package/dist/bridge/foundr-codex-reply.d.mts.map +1 -0
  16. package/dist/bridge/foundr-codex-reply.mjs +542 -0
  17. package/dist/bridge/foundr-codex-reply.mjs.map +1 -0
  18. package/dist/bridge/listener-flags.d.mts +5 -0
  19. package/dist/bridge/listener-flags.d.mts.map +1 -0
  20. package/dist/bridge/listener-flags.mjs +18 -0
  21. package/dist/bridge/listener-flags.mjs.map +1 -0
  22. package/dist/bridge/listener-loop.d.mts +58 -0
  23. package/dist/bridge/listener-loop.d.mts.map +1 -0
  24. package/dist/bridge/listener-loop.mjs +424 -0
  25. package/dist/bridge/listener-loop.mjs.map +1 -0
  26. package/dist/bridge/logout.d.mts +8 -0
  27. package/dist/bridge/logout.d.mts.map +1 -0
  28. package/dist/bridge/logout.mjs +35 -0
  29. package/dist/bridge/logout.mjs.map +1 -0
  30. package/dist/bridge/mcp-client.d.mts +97 -0
  31. package/dist/bridge/mcp-client.d.mts.map +1 -0
  32. package/dist/bridge/mcp-client.mjs +290 -0
  33. package/dist/bridge/mcp-client.mjs.map +1 -0
  34. package/dist/bridge/oauth-provider.d.mts +32 -0
  35. package/dist/bridge/oauth-provider.d.mts.map +1 -0
  36. package/dist/bridge/oauth-provider.mjs +94 -0
  37. package/dist/bridge/oauth-provider.mjs.map +1 -0
  38. package/dist/bridge/public-room-mention-listener-loop.d.mts +120 -0
  39. package/dist/bridge/public-room-mention-listener-loop.d.mts.map +1 -0
  40. package/dist/bridge/public-room-mention-listener-loop.mjs +225 -0
  41. package/dist/bridge/public-room-mention-listener-loop.mjs.map +1 -0
  42. package/dist/bridge/realtime-wake.d.mts +11 -0
  43. package/dist/bridge/realtime-wake.d.mts.map +1 -0
  44. package/dist/bridge/realtime-wake.mjs +134 -0
  45. package/dist/bridge/realtime-wake.mjs.map +1 -0
  46. package/dist/bridge/work-mission-listener-loop.d.mts +100 -0
  47. package/dist/bridge/work-mission-listener-loop.d.mts.map +1 -0
  48. package/dist/bridge/work-mission-listener-loop.mjs +737 -0
  49. package/dist/bridge/work-mission-listener-loop.mjs.map +1 -0
  50. package/dist/cli-parse.d.ts +27 -0
  51. package/dist/cli-parse.d.ts.map +1 -0
  52. package/dist/cli-parse.js +47 -0
  53. package/dist/cli-parse.js.map +1 -0
  54. package/dist/cli.d.ts +3 -0
  55. package/dist/cli.d.ts.map +1 -0
  56. package/dist/cli.js +232 -0
  57. package/dist/cli.js.map +1 -0
  58. package/dist/codex-preflight.d.ts +44 -0
  59. package/dist/codex-preflight.d.ts.map +1 -0
  60. package/dist/codex-preflight.js +74 -0
  61. package/dist/codex-preflight.js.map +1 -0
  62. package/dist/index.d.ts +5 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +5 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/launchd.d.ts +78 -0
  67. package/dist/launchd.d.ts.map +1 -0
  68. package/dist/launchd.js +118 -0
  69. package/dist/launchd.js.map +1 -0
  70. package/dist/paths.d.ts +30 -0
  71. package/dist/paths.d.ts.map +1 -0
  72. package/dist/paths.js +26 -0
  73. package/dist/paths.js.map +1 -0
  74. package/install.sh +117 -0
  75. package/package.json +29 -0
@@ -0,0 +1,225 @@
1
+ function boundedError(error) {
2
+ const message = error instanceof Error ? error.message : String(error)
3
+ return message.replace(/\s+/g, ' ').trim().slice(0, 500)
4
+ }
5
+
6
+ function isUnknownToolError(error) {
7
+ const message = boundedError(error).toLowerCase()
8
+ return message.includes('unknown tool') ||
9
+ message.includes('method not found') ||
10
+ message.includes('tool not found')
11
+ }
12
+
13
+ function isNotFoundToolError(error) {
14
+ const message = boundedError(error).toLowerCase()
15
+ return message.includes('not_found') || message.includes('not found')
16
+ }
17
+
18
+ function directReplyShouldFallBack(error) {
19
+ const code = error?.code
20
+ return code === 'AUTH_FAILED' || code === 'HTTP_404'
21
+ }
22
+
23
+ function replyText(reply) {
24
+ return String(reply?.text ?? '').trim()
25
+ }
26
+
27
+ function nowMs() {
28
+ return performance.now()
29
+ }
30
+
31
+ function timingEnabled() {
32
+ return process.env.FOUNDR_WORK_MISSION_TIMING === '1' || process.env.FOUNDR_PRIVATE_CHAT_TIMING === '1'
33
+ }
34
+
35
+ function timingLog(startedAt, message) {
36
+ if (!timingEnabled()) return
37
+ console.error(`[foundr:public-mentions:timing +${Math.round(nowMs() - startedAt)}ms] ${message}`)
38
+ }
39
+
40
+ export function publicRoomMentionEnvelope(mention, agent = null) {
41
+ return {
42
+ kind: 'public_room_mention',
43
+ thread: {
44
+ id: `room:${mention.room_id}`,
45
+ kind: 'public_room',
46
+ },
47
+ room: {
48
+ id: mention.room_id,
49
+ handle: mention.room_handle,
50
+ },
51
+ mention: {
52
+ id: mention.mention_id,
53
+ expires_at: mention.expires_at,
54
+ },
55
+ message: {
56
+ id: mention.chat_id,
57
+ body: mention.text,
58
+ sender_public_id: mention.sender_public_id,
59
+ sender_display_name: mention.sender_display_name,
60
+ created_at: mention.created_at,
61
+ },
62
+ delivery: {
63
+ id: mention.mention_id,
64
+ agent_key_id: agent?.id ?? '',
65
+ },
66
+ agent: agent ?? null,
67
+ }
68
+ }
69
+
70
+ export function isPublicRoomMentionWakePayload(payload) {
71
+ return payload?.type === 'public_room_mention_ready' &&
72
+ typeof payload.mention_id === 'string' &&
73
+ typeof payload.room_id === 'string' &&
74
+ typeof payload.room_handle === 'string' &&
75
+ typeof payload.chat_id === 'string' &&
76
+ typeof payload.sender_public_id === 'string' &&
77
+ typeof payload.sender_display_name === 'string' &&
78
+ typeof payload.text === 'string' &&
79
+ typeof payload.created_at === 'string' &&
80
+ typeof payload.expires_at === 'string'
81
+ }
82
+
83
+ function publicRoomMentionFromWake(payload) {
84
+ return {
85
+ mention_id: payload.mention_id,
86
+ room_id: payload.room_id,
87
+ room_handle: payload.room_handle,
88
+ chat_id: payload.chat_id,
89
+ sender_public_id: payload.sender_public_id,
90
+ sender_display_name: payload.sender_display_name,
91
+ text: payload.text,
92
+ created_at: payload.created_at,
93
+ expires_at: payload.expires_at,
94
+ }
95
+ }
96
+
97
+ async function sendPublicRoomMentionReply({ client, mentionId, roomHandle, text }) {
98
+ if (typeof client.callJson === 'function') {
99
+ try {
100
+ return await client.callJson('/api/mcp/public-room-mention-reply', {
101
+ mention_id: mentionId,
102
+ text,
103
+ })
104
+ } catch (error) {
105
+ if (!directReplyShouldFallBack(error)) throw error
106
+ }
107
+ }
108
+
109
+ try {
110
+ return await client.callTool('reply_public_room_mention', {
111
+ mention_id: mentionId,
112
+ text,
113
+ })
114
+ } catch (error) {
115
+ if (!isUnknownToolError(error)) throw error
116
+ const sent = await client.callTool('say_in_room', {
117
+ room_handle: roomHandle,
118
+ text,
119
+ })
120
+ await client.callTool('ack_public_room_mention', {
121
+ mention_id: mentionId,
122
+ status: 'replied',
123
+ replied_chat_id: sent.chat_id,
124
+ })
125
+ return { mention_id: mentionId, chat_id: sent.chat_id, ts: sent.ts }
126
+ }
127
+ }
128
+
129
+ export async function runOnePublicRoomMentionIteration({
130
+ client,
131
+ adapter,
132
+ agent = null,
133
+ }) {
134
+ const iterationStartedAt = nowMs()
135
+ let claimed
136
+ try {
137
+ claimed = await client.callTool('claim_public_room_mention', {})
138
+ } catch (error) {
139
+ if (!isUnknownToolError(error)) throw error
140
+ return { timed_out: true, replied: 0, skipped: 0, failed: 0, unsupported: true }
141
+ }
142
+ const mention = claimed?.mention ?? null
143
+ if (!mention) return { timed_out: true, replied: 0, skipped: 0, failed: 0 }
144
+ timingLog(iterationStartedAt, `claimed mention=${mention.mention_id}`)
145
+
146
+ const mentionId = mention.mention_id
147
+ try {
148
+ const reply = await adapter.reply(publicRoomMentionEnvelope(mention, agent))
149
+ const text = replyText(reply)
150
+ if (!text) {
151
+ await client.callTool('ack_public_room_mention', {
152
+ mention_id: mentionId,
153
+ status: 'skipped',
154
+ })
155
+ return { replied: 0, skipped: 1, failed: 0 }
156
+ }
157
+
158
+ const sent = await client.callTool('say_in_room', {
159
+ room_handle: mention.room_handle,
160
+ text,
161
+ })
162
+ await client.callTool('ack_public_room_mention', {
163
+ mention_id: mentionId,
164
+ status: 'replied',
165
+ replied_chat_id: sent.chat_id,
166
+ })
167
+ timingLog(iterationStartedAt, `reply sent mention=${mentionId}`)
168
+ return { replied: 1, skipped: 0, failed: 0, chat_id: sent.chat_id }
169
+ } catch (error) {
170
+ const errorText = boundedError(error)
171
+ await client.callTool('ack_public_room_mention', {
172
+ mention_id: mentionId,
173
+ status: 'failed',
174
+ error: errorText,
175
+ }).catch(() => {})
176
+ return { replied: 0, skipped: 0, failed: 1, error: errorText }
177
+ }
178
+ }
179
+
180
+ export async function runOnePublicRoomMentionWakeIteration({
181
+ client,
182
+ adapter,
183
+ agent = null,
184
+ wake,
185
+ }) {
186
+ if (!isPublicRoomMentionWakePayload(wake)) {
187
+ return runOnePublicRoomMentionIteration({ client, adapter, agent })
188
+ }
189
+
190
+ const iterationStartedAt = nowMs()
191
+ const mention = publicRoomMentionFromWake(wake)
192
+ const mentionId = mention.mention_id
193
+ timingLog(iterationStartedAt, `wake mention=${mentionId}`)
194
+
195
+ try {
196
+ const reply = await adapter.reply(publicRoomMentionEnvelope(mention, agent))
197
+ const text = replyText(reply)
198
+ if (!text) {
199
+ await client.callTool('ack_public_room_mention', {
200
+ mention_id: mentionId,
201
+ status: 'skipped',
202
+ })
203
+ return { replied: 0, skipped: 1, failed: 0 }
204
+ }
205
+
206
+ const sent = await sendPublicRoomMentionReply({
207
+ client,
208
+ mentionId,
209
+ roomHandle: mention.room_handle,
210
+ text,
211
+ })
212
+ timingLog(iterationStartedAt, `wake reply sent mention=${mentionId}`)
213
+ return { replied: 1, skipped: 0, failed: 0, chat_id: sent.chat_id }
214
+ } catch (error) {
215
+ const errorText = boundedError(error)
216
+ if (!isNotFoundToolError(error)) {
217
+ await client.callTool('ack_public_room_mention', {
218
+ mention_id: mentionId,
219
+ status: 'failed',
220
+ error: errorText,
221
+ }).catch(() => {})
222
+ }
223
+ return { replied: 0, skipped: 0, failed: 1, error: errorText }
224
+ }
225
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-room-mention-listener-loop.mjs","sourceRoot":"","sources":["../../src/bridge/public-room-mention-listener-loop.mjs"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export function createPrivateChatWakeSubscription({ wake, onWake, onStatus, clientFactory, }: {
2
+ wake: any;
3
+ onWake: any;
4
+ onStatus?: (() => void) | undefined;
5
+ clientFactory?: (<Database = any, SchemaNameOrClientOptions extends (string & keyof Omit<Database, "__InternalSupabase">) | {
6
+ PostgrestVersion: string;
7
+ } = "public" extends Exclude<keyof Database, "__InternalSupabase"> ? "public" : string & Exclude<keyof Database, "__InternalSupabase">, SchemaName extends string & keyof Omit<Database, "__InternalSupabase"> = SchemaNameOrClientOptions extends string & Exclude<keyof Database, "__InternalSupabase"> ? SchemaNameOrClientOptions : "public" extends Exclude<keyof Database, "__InternalSupabase"> ? "public" : string & Exclude<Exclude<keyof Database, "__InternalSupabase">, "__InternalSupabase">>(supabaseUrl: string, supabaseKey: string, options?: import("@supabase/supabase-js").SupabaseClientOptions<SchemaName>) => import("@supabase/supabase-js").SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName>) | undefined;
8
+ }): Promise<{
9
+ close: () => Promise<void>;
10
+ }>;
11
+ //# sourceMappingURL=realtime-wake.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-wake.d.mts","sourceRoot":"","sources":["../../src/bridge/realtime-wake.mjs"],"names":[],"mappings":"AAWA;;;;;;;;;GA0HC"}
@@ -0,0 +1,134 @@
1
+ import { createClient } from '@supabase/supabase-js'
2
+
3
+ const SUBSCRIBE_TIMEOUT_MS = 10_000
4
+ const RECONNECT_BASE_MS = 750
5
+ const RECONNECT_MAX_MS = 10_000
6
+
7
+ function reconnectDelayMs(attempt) {
8
+ const capped = Math.min(RECONNECT_MAX_MS, RECONNECT_BASE_MS * (2 ** Math.max(0, attempt - 1)))
9
+ return Math.round(capped * (0.75 + Math.random() * 0.5))
10
+ }
11
+
12
+ export async function createPrivateChatWakeSubscription({
13
+ wake,
14
+ onWake,
15
+ onStatus = () => {},
16
+ clientFactory = createClient,
17
+ }) {
18
+ if (!wake?.supabase_url || !wake?.supabase_key || !wake?.topic) {
19
+ throw new Error('wake transport is unavailable for this listener session')
20
+ }
21
+
22
+ const supabase = clientFactory(wake.supabase_url, wake.supabase_key, {
23
+ auth: { persistSession: false, autoRefreshToken: false },
24
+ realtime: { params: { eventsPerSecond: 10 } },
25
+ })
26
+
27
+ let closed = false
28
+ let channel = null
29
+ let reconnectTimer = null
30
+ let reconnectAttempt = 0
31
+ let subscribedOnce = false
32
+
33
+ const clearReconnectTimer = () => {
34
+ if (!reconnectTimer) return
35
+ clearTimeout(reconnectTimer)
36
+ reconnectTimer = null
37
+ }
38
+
39
+ const removeCurrentChannel = async () => {
40
+ const current = channel
41
+ channel = null
42
+ if (current) await supabase.removeChannel(current).catch(() => {})
43
+ }
44
+
45
+ const scheduleReconnect = () => {
46
+ if (closed || reconnectTimer) return
47
+ reconnectAttempt += 1
48
+ const delayMs = reconnectDelayMs(reconnectAttempt)
49
+ reconnectTimer = setTimeout(() => {
50
+ reconnectTimer = null
51
+ void reconnect()
52
+ }, delayMs)
53
+ reconnectTimer.unref?.()
54
+ }
55
+
56
+ const subscribeOnce = () => new Promise((resolve, reject) => {
57
+ if (closed) {
58
+ reject(new Error('wake subscription closed'))
59
+ return
60
+ }
61
+
62
+ const nextChannel = supabase.channel(wake.topic)
63
+ channel = nextChannel
64
+ nextChannel.on('broadcast', { event: 'private_chat_delivery_ready' }, (event) => {
65
+ onWake(event.payload ?? {})
66
+ })
67
+
68
+ let settled = false
69
+ const timeout = setTimeout(() => {
70
+ void rejectAfterCleanup(new Error('wake subscribe timed out'))
71
+ }, SUBSCRIBE_TIMEOUT_MS)
72
+
73
+ const resolveOnce = () => {
74
+ if (settled) return
75
+ settled = true
76
+ clearTimeout(timeout)
77
+ resolve()
78
+ }
79
+
80
+ const rejectAfterCleanup = async (error) => {
81
+ if (settled) return
82
+ settled = true
83
+ clearTimeout(timeout)
84
+ if (channel === nextChannel) channel = null
85
+ await supabase.removeChannel(nextChannel).catch(() => {})
86
+ reject(error)
87
+ }
88
+
89
+ try {
90
+ nextChannel.subscribe((status) => {
91
+ onStatus(status)
92
+ if (closed || channel !== nextChannel) return
93
+ if (status === 'SUBSCRIBED') {
94
+ reconnectAttempt = 0
95
+ resolveOnce()
96
+ }
97
+ if (status === 'CHANNEL_ERROR' || status === 'TIMED_OUT') {
98
+ if (!subscribedOnce) {
99
+ void rejectAfterCleanup(new Error(`wake subscribe failed: ${status}`))
100
+ } else {
101
+ scheduleReconnect()
102
+ }
103
+ }
104
+ if (status === 'CLOSED' && subscribedOnce) {
105
+ scheduleReconnect()
106
+ }
107
+ })
108
+ } catch (error) {
109
+ void rejectAfterCleanup(error)
110
+ }
111
+ })
112
+
113
+ async function reconnect() {
114
+ if (closed) return
115
+ await removeCurrentChannel()
116
+ try {
117
+ await subscribeOnce()
118
+ subscribedOnce = true
119
+ } catch {
120
+ scheduleReconnect()
121
+ }
122
+ }
123
+
124
+ await subscribeOnce()
125
+ subscribedOnce = true
126
+
127
+ return {
128
+ close: async () => {
129
+ closed = true
130
+ clearReconnectTimer()
131
+ await removeCurrentChannel()
132
+ },
133
+ }
134
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-wake.mjs","sourceRoot":"","sources":["../../src/bridge/realtime-wake.mjs"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ export function pendingWorkMissionFounderMessages(snapshot: any, { ignoredMessageIds, }?: {
2
+ ignoredMessageIds?: Set<any> | undefined;
3
+ }): any[];
4
+ export function workMissionEnvelope(snapshot: any, message: any, agent: any, delivery?: null): {
5
+ kind: string;
6
+ mission: any;
7
+ thread: {
8
+ id: string;
9
+ kind: string;
10
+ };
11
+ message: any;
12
+ delivery: {
13
+ id: any;
14
+ agent_key_id: any;
15
+ requested_model: any;
16
+ };
17
+ agent: any;
18
+ };
19
+ export function runOneWorkMissionIteration({ client, adapter, agent, sessionId, }: {
20
+ client: any;
21
+ adapter: any;
22
+ agent: any;
23
+ sessionId: any;
24
+ }): Promise<{
25
+ timed_out: boolean;
26
+ replied: number;
27
+ skipped: number;
28
+ failed: number;
29
+ message_id?: undefined;
30
+ error?: undefined;
31
+ } | {
32
+ replied: number;
33
+ skipped: number;
34
+ failed: number;
35
+ timed_out?: undefined;
36
+ message_id?: undefined;
37
+ error?: undefined;
38
+ } | {
39
+ replied: number;
40
+ skipped: number;
41
+ failed: number;
42
+ message_id: any;
43
+ timed_out?: undefined;
44
+ error?: undefined;
45
+ } | {
46
+ replied: number;
47
+ skipped: number;
48
+ failed: number;
49
+ error: string;
50
+ timed_out?: undefined;
51
+ message_id?: undefined;
52
+ }>;
53
+ export function runOneWorkMissionWakeIteration({ client, adapter, agent, sessionId, wake, }: {
54
+ client: any;
55
+ adapter: any;
56
+ agent: any;
57
+ sessionId: any;
58
+ wake: any;
59
+ }): Promise<{
60
+ timed_out: boolean;
61
+ replied: number;
62
+ skipped: number;
63
+ failed: number;
64
+ message_id?: undefined;
65
+ error?: undefined;
66
+ } | {
67
+ replied: number;
68
+ skipped: number;
69
+ failed: number;
70
+ timed_out?: undefined;
71
+ message_id?: undefined;
72
+ error?: undefined;
73
+ } | {
74
+ replied: number;
75
+ skipped: number;
76
+ failed: number;
77
+ message_id: any;
78
+ timed_out?: undefined;
79
+ error?: undefined;
80
+ } | {
81
+ replied: number;
82
+ skipped: number;
83
+ failed: number;
84
+ error: string;
85
+ timed_out?: undefined;
86
+ message_id?: undefined;
87
+ }>;
88
+ export function runWorkMissionListener({ client, adapter, clientName, clientVersion, expectedAgentId, pollMs, publicMentionPollMs, transport, wakeSubscriptionFactory, }: {
89
+ client: any;
90
+ adapter: any;
91
+ clientName?: string | undefined;
92
+ clientVersion?: string | undefined;
93
+ expectedAgentId: any;
94
+ pollMs?: number | undefined;
95
+ publicMentionPollMs?: number | undefined;
96
+ transport?: string | undefined;
97
+ wakeSubscriptionFactory?: typeof createPrivateChatWakeSubscription | undefined;
98
+ }): Promise<void>;
99
+ import { createPrivateChatWakeSubscription } from './realtime-wake.mjs';
100
+ //# sourceMappingURL=work-mission-listener-loop.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-mission-listener-loop.d.mts","sourceRoot":"","sources":["../../src/bridge/work-mission-listener-loop.mjs"],"names":[],"mappings":"AAwDA;;UAeC;AAED;;;;;;;;;;;;;;EAgBC;AA4MD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyGC;AAED;;;;;;;;;;kBA4OC;kDAhuBiD,qBAAqB"}