@uncensoredcode/openbridge 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 (145) hide show
  1. package/README.md +117 -0
  2. package/bin/openbridge.js +10 -0
  3. package/package.json +85 -0
  4. package/packages/cli/dist/args.d.ts +30 -0
  5. package/packages/cli/dist/args.js +160 -0
  6. package/packages/cli/dist/cli.d.ts +2 -0
  7. package/packages/cli/dist/cli.js +9 -0
  8. package/packages/cli/dist/index.d.ts +26 -0
  9. package/packages/cli/dist/index.js +76 -0
  10. package/packages/runtime/dist/assistant-protocol.d.ts +34 -0
  11. package/packages/runtime/dist/assistant-protocol.js +121 -0
  12. package/packages/runtime/dist/execution/in-process.d.ts +14 -0
  13. package/packages/runtime/dist/execution/in-process.js +45 -0
  14. package/packages/runtime/dist/execution/types.d.ts +49 -0
  15. package/packages/runtime/dist/execution/types.js +20 -0
  16. package/packages/runtime/dist/index.d.ts +86 -0
  17. package/packages/runtime/dist/index.js +60 -0
  18. package/packages/runtime/dist/normalizers/index.d.ts +6 -0
  19. package/packages/runtime/dist/normalizers/index.js +12 -0
  20. package/packages/runtime/dist/normalizers/legacy-packet.d.ts +6 -0
  21. package/packages/runtime/dist/normalizers/legacy-packet.js +131 -0
  22. package/packages/runtime/dist/output-sanitizer.d.ts +23 -0
  23. package/packages/runtime/dist/output-sanitizer.js +78 -0
  24. package/packages/runtime/dist/packet-extractor.d.ts +17 -0
  25. package/packages/runtime/dist/packet-extractor.js +43 -0
  26. package/packages/runtime/dist/packet-normalizer.d.ts +21 -0
  27. package/packages/runtime/dist/packet-normalizer.js +47 -0
  28. package/packages/runtime/dist/prompt-compiler.d.ts +28 -0
  29. package/packages/runtime/dist/prompt-compiler.js +301 -0
  30. package/packages/runtime/dist/protocol.d.ts +44 -0
  31. package/packages/runtime/dist/protocol.js +165 -0
  32. package/packages/runtime/dist/provider-failure.d.ts +52 -0
  33. package/packages/runtime/dist/provider-failure.js +236 -0
  34. package/packages/runtime/dist/provider.d.ts +40 -0
  35. package/packages/runtime/dist/provider.js +1 -0
  36. package/packages/runtime/dist/runtime.d.ts +86 -0
  37. package/packages/runtime/dist/runtime.js +462 -0
  38. package/packages/runtime/dist/session-bound-provider.d.ts +52 -0
  39. package/packages/runtime/dist/session-bound-provider.js +366 -0
  40. package/packages/runtime/dist/tool-name-aliases.d.ts +5 -0
  41. package/packages/runtime/dist/tool-name-aliases.js +13 -0
  42. package/packages/runtime/dist/tools/bash.d.ts +9 -0
  43. package/packages/runtime/dist/tools/bash.js +157 -0
  44. package/packages/runtime/dist/tools/edit.d.ts +9 -0
  45. package/packages/runtime/dist/tools/edit.js +94 -0
  46. package/packages/runtime/dist/tools/index.d.ts +39 -0
  47. package/packages/runtime/dist/tools/index.js +27 -0
  48. package/packages/runtime/dist/tools/list-dir.d.ts +9 -0
  49. package/packages/runtime/dist/tools/list-dir.js +127 -0
  50. package/packages/runtime/dist/tools/read.d.ts +9 -0
  51. package/packages/runtime/dist/tools/read.js +56 -0
  52. package/packages/runtime/dist/tools/registry.d.ts +15 -0
  53. package/packages/runtime/dist/tools/registry.js +38 -0
  54. package/packages/runtime/dist/tools/runtime-path.d.ts +7 -0
  55. package/packages/runtime/dist/tools/runtime-path.js +22 -0
  56. package/packages/runtime/dist/tools/search-files.d.ts +9 -0
  57. package/packages/runtime/dist/tools/search-files.js +149 -0
  58. package/packages/runtime/dist/tools/text-file.d.ts +32 -0
  59. package/packages/runtime/dist/tools/text-file.js +101 -0
  60. package/packages/runtime/dist/tools/workspace-path.d.ts +17 -0
  61. package/packages/runtime/dist/tools/workspace-path.js +70 -0
  62. package/packages/runtime/dist/tools/write.d.ts +9 -0
  63. package/packages/runtime/dist/tools/write.js +59 -0
  64. package/packages/server/dist/bridge/bridge-model-catalog.d.ts +56 -0
  65. package/packages/server/dist/bridge/bridge-model-catalog.js +100 -0
  66. package/packages/server/dist/bridge/bridge-runtime-service.d.ts +61 -0
  67. package/packages/server/dist/bridge/bridge-runtime-service.js +1386 -0
  68. package/packages/server/dist/bridge/chat-completions/chat-completion-service.d.ts +127 -0
  69. package/packages/server/dist/bridge/chat-completions/chat-completion-service.js +1026 -0
  70. package/packages/server/dist/bridge/index.d.ts +335 -0
  71. package/packages/server/dist/bridge/index.js +45 -0
  72. package/packages/server/dist/bridge/live-provider-extraction-canary.d.ts +69 -0
  73. package/packages/server/dist/bridge/live-provider-extraction-canary.js +186 -0
  74. package/packages/server/dist/bridge/providers/generic-provider-transport.d.ts +53 -0
  75. package/packages/server/dist/bridge/providers/generic-provider-transport.js +973 -0
  76. package/packages/server/dist/bridge/providers/provider-session-resolver.d.ts +17 -0
  77. package/packages/server/dist/bridge/providers/provider-session-resolver.js +95 -0
  78. package/packages/server/dist/bridge/providers/provider-streams.d.ts +80 -0
  79. package/packages/server/dist/bridge/providers/provider-streams.js +844 -0
  80. package/packages/server/dist/bridge/providers/provider-transport-profile.d.ts +194 -0
  81. package/packages/server/dist/bridge/providers/provider-transport-profile.js +198 -0
  82. package/packages/server/dist/bridge/providers/web-provider-transport.d.ts +30 -0
  83. package/packages/server/dist/bridge/providers/web-provider-transport.js +151 -0
  84. package/packages/server/dist/bridge/state/file-bridge-state-store.d.ts +36 -0
  85. package/packages/server/dist/bridge/state/file-bridge-state-store.js +164 -0
  86. package/packages/server/dist/bridge/stores/local-session-package-store.d.ts +23 -0
  87. package/packages/server/dist/bridge/stores/local-session-package-store.js +548 -0
  88. package/packages/server/dist/bridge/stores/provider-store.d.ts +94 -0
  89. package/packages/server/dist/bridge/stores/provider-store.js +143 -0
  90. package/packages/server/dist/bridge/stores/session-backed-provider-store.d.ts +7 -0
  91. package/packages/server/dist/bridge/stores/session-backed-provider-store.js +26 -0
  92. package/packages/server/dist/bridge/stores/session-package-store.d.ts +286 -0
  93. package/packages/server/dist/bridge/stores/session-package-store.js +1527 -0
  94. package/packages/server/dist/bridge/stores/session-store.d.ts +120 -0
  95. package/packages/server/dist/bridge/stores/session-store.js +139 -0
  96. package/packages/server/dist/cli/index.d.ts +9 -0
  97. package/packages/server/dist/cli/index.js +6 -0
  98. package/packages/server/dist/cli/main.d.ts +2 -0
  99. package/packages/server/dist/cli/main.js +9 -0
  100. package/packages/server/dist/cli/run-bridge-server-cli.d.ts +54 -0
  101. package/packages/server/dist/cli/run-bridge-server-cli.js +371 -0
  102. package/packages/server/dist/client/bridge-api-client.d.ts +61 -0
  103. package/packages/server/dist/client/bridge-api-client.js +267 -0
  104. package/packages/server/dist/client/index.d.ts +11 -0
  105. package/packages/server/dist/client/index.js +11 -0
  106. package/packages/server/dist/config/bridge-server-config.d.ts +52 -0
  107. package/packages/server/dist/config/bridge-server-config.js +118 -0
  108. package/packages/server/dist/config/index.d.ts +20 -0
  109. package/packages/server/dist/config/index.js +8 -0
  110. package/packages/server/dist/http/bridge-api-route-context.d.ts +14 -0
  111. package/packages/server/dist/http/bridge-api-route-context.js +1 -0
  112. package/packages/server/dist/http/create-bridge-api-server.d.ts +72 -0
  113. package/packages/server/dist/http/create-bridge-api-server.js +225 -0
  114. package/packages/server/dist/http/index.d.ts +5 -0
  115. package/packages/server/dist/http/index.js +5 -0
  116. package/packages/server/dist/http/parse-request.d.ts +6 -0
  117. package/packages/server/dist/http/parse-request.js +27 -0
  118. package/packages/server/dist/http/register-bridge-api-routes.d.ts +7 -0
  119. package/packages/server/dist/http/register-bridge-api-routes.js +17 -0
  120. package/packages/server/dist/http/routes/admin-routes.d.ts +7 -0
  121. package/packages/server/dist/http/routes/admin-routes.js +135 -0
  122. package/packages/server/dist/http/routes/chat-completions-route.d.ts +7 -0
  123. package/packages/server/dist/http/routes/chat-completions-route.js +49 -0
  124. package/packages/server/dist/http/routes/health-routes.d.ts +6 -0
  125. package/packages/server/dist/http/routes/health-routes.js +7 -0
  126. package/packages/server/dist/http/routes/message-routes.d.ts +7 -0
  127. package/packages/server/dist/http/routes/message-routes.js +7 -0
  128. package/packages/server/dist/index.d.ts +85 -0
  129. package/packages/server/dist/index.js +28 -0
  130. package/packages/server/dist/security/bridge-auth.d.ts +9 -0
  131. package/packages/server/dist/security/bridge-auth.js +41 -0
  132. package/packages/server/dist/security/cors-policy.d.ts +5 -0
  133. package/packages/server/dist/security/cors-policy.js +34 -0
  134. package/packages/server/dist/security/index.d.ts +16 -0
  135. package/packages/server/dist/security/index.js +12 -0
  136. package/packages/server/dist/security/redact-sensitive-values.d.ts +19 -0
  137. package/packages/server/dist/security/redact-sensitive-values.js +67 -0
  138. package/packages/server/dist/shared/api-schema.d.ts +133 -0
  139. package/packages/server/dist/shared/api-schema.js +1 -0
  140. package/packages/server/dist/shared/bridge-api-error.d.ts +17 -0
  141. package/packages/server/dist/shared/bridge-api-error.js +19 -0
  142. package/packages/server/dist/shared/index.d.ts +7 -0
  143. package/packages/server/dist/shared/index.js +7 -0
  144. package/packages/server/dist/shared/output.d.ts +5 -0
  145. package/packages/server/dist/shared/output.js +14 -0
@@ -0,0 +1,335 @@
1
+ export declare const bridgeModule: {
2
+ buildModelListResponse: (providers: import("./stores/provider-store.ts").ProviderRecord[]) => {
3
+ object: "list";
4
+ data: {
5
+ id: string;
6
+ object: "model";
7
+ created: number;
8
+ owned_by: string;
9
+ }[];
10
+ };
11
+ createModelRequestSchema: import("zod").ZodObject<{
12
+ provider: import("zod").ZodString;
13
+ model: import("zod").ZodString;
14
+ }, import("zod/v4/core").$strict>;
15
+ defaultModelForProvider: (provider: import("./stores/provider-store.ts").ProviderRecord | null) => string;
16
+ modelMutationResponseSchema: import("zod").ZodObject<{
17
+ ok: import("zod").ZodLiteral<true>;
18
+ providerId: import("zod").ZodString;
19
+ modelId: import("zod").ZodString;
20
+ }, import("zod/v4/core").$strict>;
21
+ resolveBridgeModel: (providers: import("./stores/provider-store.ts").ProviderRecord[], publicModelId: string) => import("./bridge-model-catalog.ts").ResolvedBridgeModel | null;
22
+ createBridgeRuntimeService: (dependencies: import("./bridge-runtime-service.ts").BridgeRuntimeServiceDependencies) => {
23
+ respond(request: import("../index.ts").BridgeMessageRequest, pathSessionId?: string): Promise<import("../index.ts").BridgeMessageResponse>;
24
+ execute(request: {
25
+ sessionId: string;
26
+ input: string;
27
+ providerId: string;
28
+ modelId: string;
29
+ metadata?: Record<string, unknown>;
30
+ toolProfile?: import("../index.ts").BridgeApiToolProfile;
31
+ sessionHistory?: import("@uncensoredcode/openbridge/runtime").BridgeSessionTurn[];
32
+ persistSession?: boolean;
33
+ }): Promise<import("../index.ts").BridgeMessageResponse>;
34
+ completeChatCompletionPacket(request: {
35
+ sessionId: string;
36
+ providerId: string;
37
+ modelId: string;
38
+ messages: import("@uncensoredcode/openbridge/runtime").CompiledProviderMessage[];
39
+ tools: import("../shared/api-schema.ts").BridgeChatCompletionTool[];
40
+ toolChoice?: import("../index.ts").BridgeChatCompletionRequest["tool_choice"];
41
+ continuation: boolean;
42
+ toolFollowUp: boolean;
43
+ metadata?: Record<string, unknown>;
44
+ persistSession?: boolean;
45
+ }): Promise<{
46
+ packet: import("@uncensoredcode/openbridge/runtime").AssistantResponse;
47
+ providerBindingReused: boolean;
48
+ }>;
49
+ streamChatCompletionPacket(request: {
50
+ sessionId: string;
51
+ providerId: string;
52
+ modelId: string;
53
+ messages: import("@uncensoredcode/openbridge/runtime").CompiledProviderMessage[];
54
+ tools: import("../shared/api-schema.ts").BridgeChatCompletionTool[];
55
+ toolChoice?: import("../index.ts").BridgeChatCompletionRequest["tool_choice"];
56
+ continuation: boolean;
57
+ toolFollowUp: boolean;
58
+ metadata?: Record<string, unknown>;
59
+ persistSession?: boolean;
60
+ }): Promise<{
61
+ content: AsyncIterable<import("./providers/provider-streams.ts").ProviderStreamFragment>;
62
+ packet: Promise<import("@uncensoredcode/openbridge/runtime").AssistantResponse>;
63
+ providerBindingReused: boolean;
64
+ }>;
65
+ streamChatCompletion(request: {
66
+ sessionId: string;
67
+ input: string;
68
+ providerId: string;
69
+ modelId: string;
70
+ metadata?: Record<string, unknown>;
71
+ toolProfile?: import("../index.ts").BridgeApiToolProfile;
72
+ sessionHistory?: import("@uncensoredcode/openbridge/runtime").BridgeSessionTurn[];
73
+ persistSession?: boolean;
74
+ }): Promise<AsyncIterable<string>>;
75
+ };
76
+ DEFAULT_LIVE_CANARY_EXPECTED_SUBSTRING: string;
77
+ DEFAULT_LIVE_CANARY_PROMPT: string;
78
+ formatLiveProviderExtractionCanaryResult: (result: import("./live-provider-extraction-canary.ts").LiveProviderExtractionCanaryResult) => string;
79
+ runLiveProviderExtractionCanary: (input: import("./live-provider-extraction-canary.ts").LiveProviderExtractionCanaryInput) => Promise<import("./live-provider-extraction-canary.ts").LiveProviderExtractionCanaryResult>;
80
+ createInMemoryProviderStore: () => import("./stores/provider-store.ts").ProviderStore;
81
+ createProviderRequestSchema: import("zod").ZodObject<{
82
+ id: import("zod").ZodString;
83
+ kind: import("zod").ZodString;
84
+ label: import("zod").ZodString;
85
+ enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
86
+ config: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
87
+ }, import("zod/v4/core").$strict>;
88
+ providerDeleteResponseSchema: import("zod").ZodObject<{
89
+ ok: import("zod").ZodLiteral<true>;
90
+ id: import("zod").ZodString;
91
+ }, import("zod/v4/core").$strip>;
92
+ providerIdParamsSchema: import("zod").ZodObject<{
93
+ id: import("zod").ZodString;
94
+ }, import("zod/v4/core").$strict>;
95
+ providerListResponseSchema: import("zod").ZodObject<{
96
+ providers: import("zod").ZodArray<import("zod").ZodObject<{
97
+ id: import("zod").ZodString;
98
+ kind: import("zod").ZodString;
99
+ label: import("zod").ZodString;
100
+ enabled: import("zod").ZodBoolean;
101
+ config: import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>;
102
+ createdAt: import("zod").ZodString;
103
+ updatedAt: import("zod").ZodString;
104
+ }, import("zod/v4/core").$strip>>;
105
+ }, import("zod/v4/core").$strip>;
106
+ providerResponseSchema: import("zod").ZodObject<{
107
+ provider: import("zod").ZodObject<{
108
+ id: import("zod").ZodString;
109
+ kind: import("zod").ZodString;
110
+ label: import("zod").ZodString;
111
+ enabled: import("zod").ZodBoolean;
112
+ config: import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>;
113
+ createdAt: import("zod").ZodString;
114
+ updatedAt: import("zod").ZodString;
115
+ }, import("zod/v4/core").$strip>;
116
+ }, import("zod/v4/core").$strip>;
117
+ updateProviderRequestSchema: import("zod").ZodObject<{
118
+ kind: import("zod").ZodOptional<import("zod").ZodString>;
119
+ label: import("zod").ZodOptional<import("zod").ZodString>;
120
+ enabled: import("zod").ZodOptional<import("zod").ZodBoolean>;
121
+ config: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
122
+ }, import("zod/v4/core").$strict>;
123
+ createSessionBackedProviderStore: (sessionPackageStore: import("./stores/session-package-store.ts").SessionPackageStore) => import("./stores/provider-store.ts").ProviderStore;
124
+ buildSessionPackageStatus: (providerId: string, stored: import("./stores/session-package-store.ts").SessionPackageMetadata | null) => {
125
+ ok: true;
126
+ providerId: string;
127
+ hasSessionPackage: boolean;
128
+ source?: string | undefined;
129
+ capturedAt?: string | undefined;
130
+ origin?: string | undefined;
131
+ };
132
+ createInMemorySessionPackageStore: () => import("./stores/session-package-store.ts").SessionPackageStore;
133
+ installedProviderPackageSchema: import("zod").ZodObject<{
134
+ provider: import("zod").ZodObject<{
135
+ id: import("zod").ZodString;
136
+ kind: import("zod").ZodString;
137
+ label: import("zod").ZodString;
138
+ enabled: import("zod").ZodBoolean;
139
+ config: import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>;
140
+ createdAt: import("zod").ZodString;
141
+ updatedAt: import("zod").ZodString;
142
+ }, import("zod/v4/core").$strip>;
143
+ session: import("zod").ZodNullable<import("zod").ZodObject<{
144
+ schemaVersion: import("zod").ZodOptional<import("zod").ZodNumber>;
145
+ source: import("zod").ZodString;
146
+ capturedAt: import("zod").ZodString;
147
+ origin: import("zod").ZodString;
148
+ cookies: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>>;
149
+ localStorage: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
150
+ sessionStorage: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
151
+ headers: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
152
+ metadata: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
153
+ integration: import("zod").ZodOptional<import("zod").ZodObject<{
154
+ label: import("zod").ZodOptional<import("zod").ZodString>;
155
+ enabled: import("zod").ZodOptional<import("zod").ZodBoolean>;
156
+ models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
157
+ defaultModel: import("zod").ZodOptional<import("zod").ZodString>;
158
+ }, import("zod/v4/core").$strict>>;
159
+ transport: import("zod").ZodOptional<import("zod").ZodObject<{
160
+ family: import("zod").ZodEnum<{
161
+ "http-sse": "http-sse";
162
+ "http-json": "http-json";
163
+ "http-connect": "http-connect";
164
+ }>;
165
+ prompt: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
166
+ binding: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
167
+ session: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
168
+ request: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
169
+ response: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
170
+ seedBinding: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
171
+ bootstrap: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
172
+ preflight: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
173
+ }, import("zod/v4/core").$strict>>;
174
+ }, import("zod/v4/core").$strict>>;
175
+ }, import("zod/v4/core").$strict>;
176
+ sessionPackageMetadataSchema: import("zod").ZodObject<{
177
+ handle: import("zod").ZodString;
178
+ providerId: import("zod").ZodString;
179
+ source: import("zod").ZodOptional<import("zod").ZodString>;
180
+ capturedAt: import("zod").ZodOptional<import("zod").ZodString>;
181
+ origin: import("zod").ZodOptional<import("zod").ZodString>;
182
+ hasSessionPackage: import("zod").ZodBoolean;
183
+ createdAt: import("zod").ZodString;
184
+ lastUsedAt: import("zod").ZodOptional<import("zod").ZodString>;
185
+ lastVerifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
186
+ idleExpiresAt: import("zod").ZodOptional<import("zod").ZodString>;
187
+ absoluteExpiresAt: import("zod").ZodOptional<import("zod").ZodString>;
188
+ status: import("zod").ZodEnum<{
189
+ active: "active";
190
+ expired: "expired";
191
+ revoked: "revoked";
192
+ invalid: "invalid";
193
+ }>;
194
+ version: import("zod").ZodNumber;
195
+ }, import("zod/v4/core").$strict>;
196
+ sessionPackageDeleteResponseSchema: import("zod").ZodObject<{
197
+ ok: import("zod").ZodLiteral<true>;
198
+ providerId: import("zod").ZodString;
199
+ }, import("zod/v4/core").$strict>;
200
+ sessionPackageSchema: import("zod").ZodObject<{
201
+ schemaVersion: import("zod").ZodOptional<import("zod").ZodNumber>;
202
+ source: import("zod").ZodString;
203
+ capturedAt: import("zod").ZodString;
204
+ origin: import("zod").ZodString;
205
+ cookies: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>>;
206
+ localStorage: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
207
+ sessionStorage: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
208
+ headers: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
209
+ metadata: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
210
+ integration: import("zod").ZodOptional<import("zod").ZodObject<{
211
+ label: import("zod").ZodOptional<import("zod").ZodString>;
212
+ enabled: import("zod").ZodOptional<import("zod").ZodBoolean>;
213
+ models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
214
+ defaultModel: import("zod").ZodOptional<import("zod").ZodString>;
215
+ }, import("zod/v4/core").$strict>>;
216
+ transport: import("zod").ZodOptional<import("zod").ZodObject<{
217
+ family: import("zod").ZodEnum<{
218
+ "http-sse": "http-sse";
219
+ "http-json": "http-json";
220
+ "http-connect": "http-connect";
221
+ }>;
222
+ prompt: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
223
+ binding: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
224
+ session: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
225
+ request: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
226
+ response: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
227
+ seedBinding: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
228
+ bootstrap: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
229
+ preflight: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
230
+ }, import("zod/v4/core").$strict>>;
231
+ }, import("zod/v4/core").$strict>;
232
+ sessionPackageStatusResponseSchema: import("zod").ZodObject<{
233
+ ok: import("zod").ZodLiteral<true>;
234
+ providerId: import("zod").ZodString;
235
+ hasSessionPackage: import("zod").ZodBoolean;
236
+ source: import("zod").ZodOptional<import("zod").ZodString>;
237
+ capturedAt: import("zod").ZodOptional<import("zod").ZodString>;
238
+ origin: import("zod").ZodOptional<import("zod").ZodString>;
239
+ }, import("zod/v4/core").$strict>;
240
+ SessionPackageVaultError: typeof import("./stores/local-session-package-store.ts").SessionPackageVaultError;
241
+ clearLocalSessionVault: (input: {
242
+ vaultPath: string;
243
+ }) => void;
244
+ createLocalSessionPackageStore: (options: import("./stores/local-session-package-store.ts").LocalSessionPackageStoreOptions) => import("./stores/session-package-store.ts").SessionPackageStore;
245
+ createInMemorySessionStore: () => {
246
+ list(): {
247
+ id: string;
248
+ providerId: string | null;
249
+ label: string | null;
250
+ metadata: {
251
+ [x: string]: unknown;
252
+ };
253
+ createdAt: string;
254
+ updatedAt: string;
255
+ }[];
256
+ get(id: string): {
257
+ id: string;
258
+ providerId: string | null;
259
+ label: string | null;
260
+ metadata: {
261
+ [x: string]: unknown;
262
+ };
263
+ createdAt: string;
264
+ updatedAt: string;
265
+ } | null;
266
+ create(input: import("./stores/session-store.ts").CreateSessionRequest): {
267
+ id: string;
268
+ providerId: string | null;
269
+ label: string | null;
270
+ metadata: {
271
+ [x: string]: unknown;
272
+ };
273
+ createdAt: string;
274
+ updatedAt: string;
275
+ };
276
+ update(id: string, patch: import("./stores/session-store.ts").UpdateSessionRequest): {
277
+ id: string;
278
+ providerId: string | null;
279
+ label: string | null;
280
+ metadata: {
281
+ [x: string]: unknown;
282
+ };
283
+ createdAt: string;
284
+ updatedAt: string;
285
+ };
286
+ delete(id: string): {
287
+ ok: true;
288
+ id: string;
289
+ };
290
+ };
291
+ createSessionRequestSchema: import("zod").ZodObject<{
292
+ id: import("zod").ZodString;
293
+ providerId: import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodString>>;
294
+ label: import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodString>>;
295
+ metadata: import("zod").ZodDefault<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
296
+ }, import("zod/v4/core").$strict>;
297
+ sessionDeleteResponseSchema: import("zod").ZodObject<{
298
+ ok: import("zod").ZodLiteral<true>;
299
+ id: import("zod").ZodString;
300
+ }, import("zod/v4/core").$strip>;
301
+ sessionIdParamsSchema: import("zod").ZodObject<{
302
+ id: import("zod").ZodString;
303
+ }, import("zod/v4/core").$strict>;
304
+ sessionListResponseSchema: import("zod").ZodObject<{
305
+ sessions: import("zod").ZodArray<import("zod").ZodObject<{
306
+ id: import("zod").ZodString;
307
+ providerId: import("zod").ZodNullable<import("zod").ZodString>;
308
+ label: import("zod").ZodNullable<import("zod").ZodString>;
309
+ metadata: import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>;
310
+ createdAt: import("zod").ZodString;
311
+ updatedAt: import("zod").ZodString;
312
+ }, import("zod/v4/core").$strip>>;
313
+ }, import("zod/v4/core").$strip>;
314
+ sessionResponseSchema: import("zod").ZodObject<{
315
+ session: import("zod").ZodObject<{
316
+ id: import("zod").ZodString;
317
+ providerId: import("zod").ZodNullable<import("zod").ZodString>;
318
+ label: import("zod").ZodNullable<import("zod").ZodString>;
319
+ metadata: import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>;
320
+ createdAt: import("zod").ZodString;
321
+ updatedAt: import("zod").ZodString;
322
+ }, import("zod/v4/core").$strip>;
323
+ }, import("zod/v4/core").$strip>;
324
+ updateSessionRequestSchema: import("zod").ZodObject<{
325
+ providerId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
326
+ label: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
327
+ metadata: import("zod").ZodOptional<import("zod").ZodObject<{}, import("zod/v4/core").$catchall<import("zod").ZodUnknown>>>;
328
+ }, import("zod/v4/core").$strict>;
329
+ };
330
+ export type { BridgeRuntimeService, BridgeRuntimeServiceDependencies, BridgeRuntimeServiceLogEvent } from "./bridge-runtime-service.ts";
331
+ export type { LiveProviderExtractionCanaryInput, LiveProviderExtractionCanaryResult } from "./live-provider-extraction-canary.ts";
332
+ export type { LocalSessionPackageStoreOptions, SessionPackageVaultError } from "./stores/local-session-package-store.ts";
333
+ export type { CreateProviderRequest, ProviderRecord, ProviderStore } from "./stores/provider-store.ts";
334
+ export type { InstalledProviderPackage, SessionPackageMetadata, SessionPackageStore } from "./stores/session-package-store.ts";
335
+ export type { SessionStore } from "./stores/session-store.ts";
@@ -0,0 +1,45 @@
1
+ import { bridgeModelCatalogModule } from "./bridge-model-catalog.js";
2
+ import { bridgeRuntimeServiceModule } from "./bridge-runtime-service.js";
3
+ import { liveProviderExtractionCanaryModule } from "./live-provider-extraction-canary.js";
4
+ import { localSessionPackageStoreModule } from "./stores/local-session-package-store.js";
5
+ import { providerStoreModule } from "./stores/provider-store.js";
6
+ import { sessionBackedProviderStoreModule } from "./stores/session-backed-provider-store.js";
7
+ import { sessionPackageStoreModule } from "./stores/session-package-store.js";
8
+ import { sessionStoreModule } from "./stores/session-store.js";
9
+ export const bridgeModule = {
10
+ buildModelListResponse: bridgeModelCatalogModule.buildModelListResponse,
11
+ createModelRequestSchema: bridgeModelCatalogModule.createModelRequestSchema,
12
+ defaultModelForProvider: bridgeModelCatalogModule.defaultModelForProvider,
13
+ modelMutationResponseSchema: bridgeModelCatalogModule.modelMutationResponseSchema,
14
+ resolveBridgeModel: bridgeModelCatalogModule.resolveBridgeModel,
15
+ createBridgeRuntimeService: bridgeRuntimeServiceModule.createBridgeRuntimeService,
16
+ DEFAULT_LIVE_CANARY_EXPECTED_SUBSTRING: liveProviderExtractionCanaryModule.DEFAULT_LIVE_CANARY_EXPECTED_SUBSTRING,
17
+ DEFAULT_LIVE_CANARY_PROMPT: liveProviderExtractionCanaryModule.DEFAULT_LIVE_CANARY_PROMPT,
18
+ formatLiveProviderExtractionCanaryResult: liveProviderExtractionCanaryModule.formatLiveProviderExtractionCanaryResult,
19
+ runLiveProviderExtractionCanary: liveProviderExtractionCanaryModule.runLiveProviderExtractionCanary,
20
+ createInMemoryProviderStore: providerStoreModule.createInMemoryProviderStore,
21
+ createProviderRequestSchema: providerStoreModule.createProviderRequestSchema,
22
+ providerDeleteResponseSchema: providerStoreModule.providerDeleteResponseSchema,
23
+ providerIdParamsSchema: providerStoreModule.providerIdParamsSchema,
24
+ providerListResponseSchema: providerStoreModule.providerListResponseSchema,
25
+ providerResponseSchema: providerStoreModule.providerResponseSchema,
26
+ updateProviderRequestSchema: providerStoreModule.updateProviderRequestSchema,
27
+ createSessionBackedProviderStore: sessionBackedProviderStoreModule.createSessionBackedProviderStore,
28
+ buildSessionPackageStatus: sessionPackageStoreModule.buildSessionPackageStatus,
29
+ createInMemorySessionPackageStore: sessionPackageStoreModule.createInMemorySessionPackageStore,
30
+ installedProviderPackageSchema: sessionPackageStoreModule.installedProviderPackageSchema,
31
+ sessionPackageMetadataSchema: sessionPackageStoreModule.sessionPackageMetadataSchema,
32
+ sessionPackageDeleteResponseSchema: sessionPackageStoreModule.sessionPackageDeleteResponseSchema,
33
+ sessionPackageSchema: sessionPackageStoreModule.sessionPackageSchema,
34
+ sessionPackageStatusResponseSchema: sessionPackageStoreModule.sessionPackageStatusResponseSchema,
35
+ SessionPackageVaultError: localSessionPackageStoreModule.SessionPackageVaultError,
36
+ clearLocalSessionVault: localSessionPackageStoreModule.clearLocalSessionVault,
37
+ createLocalSessionPackageStore: localSessionPackageStoreModule.createLocalSessionPackageStore,
38
+ createInMemorySessionStore: sessionStoreModule.createInMemorySessionStore,
39
+ createSessionRequestSchema: sessionStoreModule.createSessionRequestSchema,
40
+ sessionDeleteResponseSchema: sessionStoreModule.sessionDeleteResponseSchema,
41
+ sessionIdParamsSchema: sessionStoreModule.sessionIdParamsSchema,
42
+ sessionListResponseSchema: sessionStoreModule.sessionListResponseSchema,
43
+ sessionResponseSchema: sessionStoreModule.sessionResponseSchema,
44
+ updateSessionRequestSchema: sessionStoreModule.updateSessionRequestSchema
45
+ };
@@ -0,0 +1,69 @@
1
+ import type { ProviderFailureCode } from "@uncensoredcode/openbridge/runtime";
2
+ import type { BridgeServerConfig } from "../config/index.ts";
3
+ declare const FileBridgeStateStore: typeof import("./state/file-bridge-state-store.ts").FileBridgeStateStore;
4
+ type LiveProviderCanaryCompletion = {
5
+ providerId: string;
6
+ modelId: string;
7
+ prompt: string;
8
+ conversationId: string;
9
+ completion: {
10
+ content: string;
11
+ responseId: string;
12
+ eventCount: number;
13
+ fragmentCount: number;
14
+ };
15
+ upstreamBinding: Pick<NonNullable<import("@uncensoredcode/openbridge/runtime").ProviderTransportRequest["upstreamBinding"]>, "conversationId" | "parentId"> | null;
16
+ };
17
+ type LiveProviderCanaryCompletionCollector = (stateStore: InstanceType<typeof FileBridgeStateStore>, request: import("@uncensoredcode/openbridge/runtime").ProviderTransportRequest) => Promise<LiveProviderCanaryCompletion>;
18
+ type LiveProviderExtractionCanaryInput = {
19
+ config: BridgeServerConfig;
20
+ providerId?: string;
21
+ modelId?: string;
22
+ prompt?: string;
23
+ expectedSubstring?: string;
24
+ stateRoot?: string;
25
+ now?: () => number;
26
+ requestId?: string;
27
+ collectCompletion?: LiveProviderCanaryCompletionCollector;
28
+ };
29
+ type LiveProviderExtractionCanaryResult = {
30
+ ok: true;
31
+ classification: "success";
32
+ providerId: string;
33
+ modelId: string;
34
+ requestId: string;
35
+ durationMs: number;
36
+ prompt: string;
37
+ expectedSubstring: string;
38
+ expectedSubstringMatched: boolean;
39
+ conversationId: string;
40
+ responseId: string;
41
+ streamEventCount: number;
42
+ fragmentCount: number;
43
+ output: string;
44
+ } | {
45
+ ok: false;
46
+ classification: "empty_extraction" | "empty_output" | "provider_failure";
47
+ providerId: string;
48
+ modelId: string;
49
+ requestId: string;
50
+ durationMs: number;
51
+ prompt: string;
52
+ conversationId?: string;
53
+ responseId?: string;
54
+ streamEventCount?: number;
55
+ fragmentCount?: number;
56
+ output?: string;
57
+ failureCode?: ProviderFailureCode;
58
+ failureKind?: string;
59
+ message: string;
60
+ };
61
+ declare function runLiveProviderExtractionCanary(input: LiveProviderExtractionCanaryInput): Promise<LiveProviderExtractionCanaryResult>;
62
+ declare function formatLiveProviderExtractionCanaryResult(result: LiveProviderExtractionCanaryResult): string;
63
+ export declare const liveProviderExtractionCanaryModule: {
64
+ DEFAULT_LIVE_CANARY_PROMPT: string;
65
+ DEFAULT_LIVE_CANARY_EXPECTED_SUBSTRING: string;
66
+ runLiveProviderExtractionCanary: typeof runLiveProviderExtractionCanary;
67
+ formatLiveProviderExtractionCanaryResult: typeof formatLiveProviderExtractionCanaryResult;
68
+ };
69
+ export type { LiveProviderExtractionCanaryInput, LiveProviderExtractionCanaryResult };
@@ -0,0 +1,186 @@
1
+ import crypto from "node:crypto";
2
+ import { bridgeRuntime } from "@uncensoredcode/openbridge/runtime";
3
+ import { webProviderTransportModule } from "./providers/web-provider-transport.js";
4
+ import { fileBridgeStateStoreModule } from "./state/file-bridge-state-store.js";
5
+ const { classifyProviderTransportError, formatProviderFailureMessage } = bridgeRuntime;
6
+ const { collectProviderTransportCompletion } = webProviderTransportModule;
7
+ const { FileBridgeStateStore } = fileBridgeStateStoreModule;
8
+ const DEFAULT_LIVE_CANARY_PROMPT = "Reply with exactly OK.";
9
+ const DEFAULT_LIVE_CANARY_EXPECTED_SUBSTRING = "OK";
10
+ async function runLiveProviderExtractionCanary(input) {
11
+ const providerId = resolveProviderId(input.providerId, input.config.defaultProvider);
12
+ const modelId = resolveModelId(input.modelId, input.config.defaultModel, providerId);
13
+ const prompt = readPrompt(input.prompt);
14
+ const expectedSubstring = readExpectedSubstring(input.expectedSubstring);
15
+ const requestId = input.requestId ?? `live-canary:${crypto.randomUUID()}`;
16
+ const startedAt = (input.now ?? Date.now)();
17
+ const stateStore = new FileBridgeStateStore(input.stateRoot ?? input.config.stateRoot);
18
+ const collectCompletion = input.collectCompletion ?? collectProviderTransportCompletion;
19
+ try {
20
+ const result = await collectCompletion(stateStore, {
21
+ lane: "main",
22
+ providerId,
23
+ modelId,
24
+ sessionId: `live-canary:${providerId}`,
25
+ requestId,
26
+ attempt: 1,
27
+ continuation: false,
28
+ toolFollowUp: false,
29
+ providerSessionReused: false,
30
+ messages: [
31
+ {
32
+ role: "user",
33
+ content: prompt
34
+ }
35
+ ],
36
+ upstreamBinding: null
37
+ });
38
+ const durationMs = (input.now ?? Date.now)() - startedAt;
39
+ const output = result.completion.content.trim();
40
+ if (result.completion.fragmentCount === 0 && result.completion.eventCount > 0) {
41
+ return {
42
+ ok: false,
43
+ classification: "empty_extraction",
44
+ providerId,
45
+ modelId,
46
+ requestId,
47
+ durationMs,
48
+ prompt,
49
+ conversationId: result.conversationId,
50
+ responseId: result.completion.responseId,
51
+ streamEventCount: result.completion.eventCount,
52
+ fragmentCount: result.completion.fragmentCount,
53
+ output,
54
+ message: `Live provider returned no extractable assistant fragments. Possible parser drift in ${providerId} stream extraction.`
55
+ };
56
+ }
57
+ if (!output) {
58
+ return {
59
+ ok: false,
60
+ classification: "empty_output",
61
+ providerId,
62
+ modelId,
63
+ requestId,
64
+ durationMs,
65
+ prompt,
66
+ conversationId: result.conversationId,
67
+ responseId: result.completion.responseId,
68
+ streamEventCount: result.completion.eventCount,
69
+ fragmentCount: result.completion.fragmentCount,
70
+ output,
71
+ message: result.completion.eventCount > 0
72
+ ? "SSE stream connected, but final extracted assistant output was empty."
73
+ : "Live provider stream ended without any assistant output."
74
+ };
75
+ }
76
+ return {
77
+ ok: true,
78
+ classification: "success",
79
+ providerId,
80
+ modelId,
81
+ requestId,
82
+ durationMs,
83
+ prompt,
84
+ expectedSubstring,
85
+ expectedSubstringMatched: output.toLowerCase().includes(expectedSubstring.toLowerCase()),
86
+ conversationId: result.conversationId,
87
+ responseId: result.completion.responseId,
88
+ streamEventCount: result.completion.eventCount,
89
+ fragmentCount: result.completion.fragmentCount,
90
+ output
91
+ };
92
+ }
93
+ catch (error) {
94
+ const failure = classifyProviderTransportError(error);
95
+ return {
96
+ ok: false,
97
+ classification: "provider_failure",
98
+ providerId,
99
+ modelId,
100
+ requestId,
101
+ durationMs: (input.now ?? Date.now)() - startedAt,
102
+ prompt,
103
+ failureCode: failure.code,
104
+ failureKind: failure.kind,
105
+ message: formatProviderFailureMessage(failure)
106
+ };
107
+ }
108
+ }
109
+ function formatLiveProviderExtractionCanaryResult(result) {
110
+ const lines = [
111
+ result.ok ? "status=ok" : "status=fail",
112
+ `classification=${result.classification}`,
113
+ `provider=${result.providerId}`,
114
+ `model=${result.modelId}`,
115
+ `request_id=${result.requestId}`,
116
+ `duration_ms=${result.durationMs}`,
117
+ `prompt=${JSON.stringify(result.prompt)}`
118
+ ];
119
+ if ("conversationId" in result && result.conversationId) {
120
+ lines.push(`conversation_id=${result.conversationId}`);
121
+ }
122
+ if ("responseId" in result && result.responseId) {
123
+ lines.push(`response_id=${result.responseId}`);
124
+ }
125
+ if ("streamEventCount" in result && typeof result.streamEventCount === "number") {
126
+ lines.push(`stream_event_count=${result.streamEventCount}`);
127
+ }
128
+ if ("fragmentCount" in result && typeof result.fragmentCount === "number") {
129
+ lines.push(`fragment_count=${result.fragmentCount}`);
130
+ }
131
+ if (result.ok) {
132
+ lines.push(`output=${JSON.stringify(result.output)}`);
133
+ lines.push(`output_length=${result.output.length}`);
134
+ lines.push(`expected_substring=${JSON.stringify(result.expectedSubstring)}`);
135
+ lines.push(`expected_substring_matched=${String(result.expectedSubstringMatched)}`);
136
+ if (!result.expectedSubstringMatched) {
137
+ lines.push("note=Live extraction succeeded, but the final output did not contain the expected substring.");
138
+ }
139
+ return lines.join("\n");
140
+ }
141
+ if (result.output !== undefined) {
142
+ lines.push(`output=${JSON.stringify(result.output)}`);
143
+ }
144
+ if (result.failureKind) {
145
+ lines.push(`failure_kind=${result.failureKind}`);
146
+ }
147
+ if (result.failureCode) {
148
+ lines.push(`failure_code=${result.failureCode}`);
149
+ }
150
+ lines.push(`message=${result.message}`);
151
+ return lines.join("\n");
152
+ }
153
+ function resolveProviderId(explicitProviderId, defaultProvider) {
154
+ const providerId = explicitProviderId?.trim() || defaultProvider;
155
+ if (!providerId) {
156
+ throw new Error("provider is required for live-canary. Pass --provider or set BRIDGE_PROVIDER.");
157
+ }
158
+ return providerId;
159
+ }
160
+ function resolveModelId(explicitModelId, defaultModel, providerId) {
161
+ const modelId = explicitModelId?.trim() || defaultModel;
162
+ if (!modelId) {
163
+ throw new Error(`model is required for live-canary. Pass --model or configure BRIDGE_MODEL for ${providerId}.`);
164
+ }
165
+ return modelId;
166
+ }
167
+ function readPrompt(value) {
168
+ const prompt = value?.trim() || DEFAULT_LIVE_CANARY_PROMPT;
169
+ if (!prompt) {
170
+ throw new Error("prompt must be a non-empty string.");
171
+ }
172
+ return prompt;
173
+ }
174
+ function readExpectedSubstring(value) {
175
+ const expectedSubstring = value?.trim() || DEFAULT_LIVE_CANARY_EXPECTED_SUBSTRING;
176
+ if (!expectedSubstring) {
177
+ throw new Error("expected substring must be a non-empty string.");
178
+ }
179
+ return expectedSubstring;
180
+ }
181
+ export const liveProviderExtractionCanaryModule = {
182
+ DEFAULT_LIVE_CANARY_PROMPT,
183
+ DEFAULT_LIVE_CANARY_EXPECTED_SUBSTRING,
184
+ runLiveProviderExtractionCanary,
185
+ formatLiveProviderExtractionCanaryResult
186
+ };