@opengeni/api-router 2.6.4 → 2.10.0-canary.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.
- package/dist/access-grant-rls.d.ts +3 -0
- package/dist/app.d.ts +2 -1
- package/dist/app.js +3 -1
- package/dist/auth/organization-user-setup.d.ts +23 -0
- package/dist/{chunk-XTLI3CBH.js → chunk-XXH7DW34.js} +6866 -3554
- package/dist/chunk-XXH7DW34.js.map +1 -0
- package/dist/codemode.d.ts +6 -0
- package/dist/github-access.d.ts +25 -2
- package/dist/http/request-source.d.ts +14 -0
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/integrations/oauth-client.d.ts +2 -11
- package/dist/integrations/personal-github-repositories.d.ts +41 -2
- package/dist/integrations/slack-interactions.d.ts +1 -1
- package/dist/mcp/server.d.ts +158 -1
- package/dist/mcp/session-view.d.ts +56 -2
- package/dist/mcp/session-wait.d.ts +1 -1
- package/dist/mcp-oauth.d.ts +19 -0
- package/dist/model-catalog.d.ts +5 -31
- package/dist/routes/codex.d.ts +27 -2
- package/dist/routes/github.d.ts +2 -0
- package/dist/routes/organization-model-providers.d.ts +3 -0
- package/dist/routes/workspace-artifacts.d.ts +2 -1
- package/dist/work-discovery-observability.d.ts +1 -1
- package/dist/workspace-artifact-content.d.ts +28 -0
- package/dist/workspace-artifact-provenance.d.ts +7 -0
- package/dist/workspace-deletion.d.ts +6 -0
- package/dist/workspace-tool-gateway-observability.d.ts +17 -0
- package/dist/workspace-tool-gateway.d.ts +118 -0
- package/package.json +19 -18
- package/src/access-grant-rls.ts +40 -0
- package/src/app.ts +296 -53
- package/src/auth/organization-user-setup.ts +95 -5
- package/src/codemode.ts +33 -4
- package/src/github-access.ts +117 -1
- package/src/http/auth.ts +11 -0
- package/src/http/request-source.ts +37 -0
- package/src/http/sse.ts +15 -7
- package/src/index.ts +18 -2
- package/src/integrations/oauth-client.ts +168 -203
- package/src/integrations/personal-github-repositories.ts +238 -9
- package/src/integrations/slack-app-home.ts +2 -2
- package/src/integrations/slack-interactions.ts +77 -37
- package/src/mcp/company-brain-governed-writes.ts +2 -2
- package/src/mcp/company-profile-agent-admin.ts +1 -1
- package/src/mcp/remember.ts +1 -1
- package/src/mcp/server.ts +504 -133
- package/src/mcp/session-view.ts +20 -1
- package/src/mcp/session-wait.ts +3 -0
- package/src/mcp-oauth.ts +539 -0
- package/src/model-catalog.ts +45 -337
- package/src/routes/automations.ts +178 -19
- package/src/routes/codex.ts +242 -73
- package/src/routes/connections.ts +271 -16
- package/src/routes/documents.ts +67 -19
- package/src/routes/files.ts +54 -6
- package/src/routes/github.ts +116 -15
- package/src/routes/organization-memberships.ts +59 -16
- package/src/routes/organization-model-providers.ts +231 -0
- package/src/routes/packs.ts +1 -0
- package/src/routes/personal-github.ts +39 -0
- package/src/routes/pr-review.ts +72 -4
- package/src/routes/scheduled-tasks.ts +40 -13
- package/src/routes/sessions.ts +153 -65
- package/src/routes/supergrok.ts +3 -2
- package/src/routes/workspace-artifacts.ts +176 -67
- package/src/routes/workspaces.ts +405 -62
- package/src/sandbox/channel-a.ts +17 -4
- package/src/work-discovery-observability.ts +3 -3
- package/src/workspace-artifact-content.ts +163 -0
- package/src/workspace-artifact-provenance.ts +104 -0
- package/src/workspace-deletion.ts +64 -0
- package/src/workspace-tool-gateway-observability.ts +100 -0
- package/src/workspace-tool-gateway.ts +691 -0
- package/dist/chunk-XTLI3CBH.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { type Settings } from "@opengeni/config";
|
|
|
2
2
|
import { OAuthStartResponse, type ConnectionOwnership, type OAuthStartRequest } from "@opengeni/contracts";
|
|
3
3
|
import type { Observability } from "@opengeni/observability";
|
|
4
4
|
import { type Database } from "@opengeni/db";
|
|
5
|
+
import { type McpAuthorizationServerMetadata } from "@opengeni/network";
|
|
5
6
|
import { type OAuthProviderProfile } from "./oauth-profiles.js";
|
|
6
7
|
export declare const oauthStateTtlMs: number;
|
|
7
8
|
export { OFFICIAL_GMAIL_MCP_SCOPES, OFFICIAL_GMAIL_MCP_URL, OFFICIAL_SLACK_MCP_URL, } from "./oauth-profiles.js";
|
|
@@ -29,17 +30,7 @@ export type OAuthStartContext = {
|
|
|
29
30
|
export type OAuthCallbackResult = {
|
|
30
31
|
redirectTo: string;
|
|
31
32
|
};
|
|
32
|
-
type AuthorizationServerMetadata =
|
|
33
|
-
issuer: string;
|
|
34
|
-
authorizationServer: string;
|
|
35
|
-
authorizationEndpoint: string;
|
|
36
|
-
tokenEndpoint: string;
|
|
37
|
-
registrationEndpoint?: string;
|
|
38
|
-
clientIdMetadataDocumentSupported: boolean;
|
|
39
|
-
tokenEndpointAuthMethodsSupported: string[];
|
|
40
|
-
codeChallengeMethodsSupported: string[];
|
|
41
|
-
raw: Record<string, unknown>;
|
|
42
|
-
};
|
|
33
|
+
type AuthorizationServerMetadata = McpAuthorizationServerMetadata;
|
|
43
34
|
export declare const OAUTH_START_DEADLINE_MS = 15000;
|
|
44
35
|
export declare const OAUTH_CALLBACK_DEADLINE_MS = 30000;
|
|
45
36
|
export type OAuthStartStage = "connection_lookup" | "mcp_challenge" | "protected_resource_metadata" | "authorization_server_metadata" | "client_registration";
|
|
@@ -1,9 +1,39 @@
|
|
|
1
1
|
import { type PersonalGitHubRepository as PersonalGitHubRepositoryContract, type PersonalGitHubRepositorySelectionInput } from "@opengeni/contracts/personal-github";
|
|
2
|
+
import { type GitHubRepositoryBranchesResponse as GitHubRepositoryBranchesResponseContract, type ListGitHubRepositoryBranchesQuery } from "@opengeni/contracts/github-repository-contracts";
|
|
2
3
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
3
|
-
import { getConnectionMetadata } from "@opengeni/db";
|
|
4
|
+
import { getConnectionMetadata, type PersonalGitHubRepositorySelectionState as DbPersonalGitHubRepositorySelectionState } from "@opengeni/db";
|
|
4
5
|
import { HTTPException } from "hono/http-exception";
|
|
5
6
|
export type PersonalGitHubRepositoryConnection = NonNullable<Awaited<ReturnType<typeof getConnectionMetadata>>>;
|
|
6
|
-
|
|
7
|
+
type PersonalGitHubRepositoryProviderOperation = "repositories_list" | "repository_branches_list" | "repository_verify";
|
|
8
|
+
type ExpectedPersonalGitHubRepositoryAuthority = {
|
|
9
|
+
selectionGeneration: number;
|
|
10
|
+
repositoryId: string;
|
|
11
|
+
fullName: string;
|
|
12
|
+
};
|
|
13
|
+
type PersonalGitHubProviderJsonOptions = {
|
|
14
|
+
operation: PersonalGitHubRepositoryProviderOperation;
|
|
15
|
+
expectedRepositoryAuthority?: ExpectedPersonalGitHubRepositoryAuthority;
|
|
16
|
+
responseLabel?: string;
|
|
17
|
+
responseMaxBytes?: number;
|
|
18
|
+
};
|
|
19
|
+
export type PersonalGitHubRepositoryBranchServices = {
|
|
20
|
+
requireConnection: typeof requirePersonalGitHubRepositoryConnection;
|
|
21
|
+
getSelectionState: (deps: ApiRouteDeps, input: {
|
|
22
|
+
accountId: string;
|
|
23
|
+
originWorkspaceId: string;
|
|
24
|
+
subjectId: string;
|
|
25
|
+
connectionId: string;
|
|
26
|
+
}) => Promise<DbPersonalGitHubRepositorySelectionState | null>;
|
|
27
|
+
providerJson: (input: {
|
|
28
|
+
deps: ApiRouteDeps;
|
|
29
|
+
connection: PersonalGitHubRepositoryConnection;
|
|
30
|
+
subjectId: string;
|
|
31
|
+
url: URL;
|
|
32
|
+
expectedConnectionAuthorityGeneration: number;
|
|
33
|
+
options: PersonalGitHubProviderJsonOptions;
|
|
34
|
+
}) => Promise<unknown>;
|
|
35
|
+
};
|
|
36
|
+
export type PersonalGitHubRepositoryProviderErrorCode = "connection_changed" | "connection_inactive" | "invalid_provider_response" | "provider_denied" | "provider_rate_limited" | "provider_unavailable" | "repository_archived" | "repository_not_found" | "repository_not_selected" | "repository_read_denied" | "repository_selection_changed" | "repository_write_denied";
|
|
7
37
|
export declare class PersonalGitHubRepositoryProviderError extends Error {
|
|
8
38
|
readonly code: PersonalGitHubRepositoryProviderErrorCode;
|
|
9
39
|
constructor(code: PersonalGitHubRepositoryProviderErrorCode);
|
|
@@ -26,6 +56,14 @@ export declare function listLivePersonalGitHubRepositories(deps: ApiRouteDeps, i
|
|
|
26
56
|
repositories: PersonalGitHubRepositoryContract[];
|
|
27
57
|
nextPage: number | null;
|
|
28
58
|
}>;
|
|
59
|
+
export declare function listLivePersonalGitHubRepositoryBranches(deps: ApiRouteDeps, input: {
|
|
60
|
+
workspaceId: string;
|
|
61
|
+
accountId: string;
|
|
62
|
+
subjectId: string;
|
|
63
|
+
connectionId: string;
|
|
64
|
+
repositoryId: string;
|
|
65
|
+
query: ListGitHubRepositoryBranchesQuery;
|
|
66
|
+
}, services?: PersonalGitHubRepositoryBranchServices): Promise<GitHubRepositoryBranchesResponseContract>;
|
|
29
67
|
/** Serial by design: one bounded provider request and one authority check at a time. */
|
|
30
68
|
export declare function verifyLivePersonalGitHubRepositories(deps: ApiRouteDeps, input: {
|
|
31
69
|
workspaceId: string;
|
|
@@ -43,3 +81,4 @@ export declare function parsePersonalGitHubProviderJson(value: string): unknown;
|
|
|
43
81
|
export declare function personalGitHubRepositoryCanRead(permissions: PersonalGitHubRepositoryContract["permissions"]): boolean;
|
|
44
82
|
export declare function personalGitHubRepositoryCanWrite(permissions: PersonalGitHubRepositoryContract["permissions"]): boolean;
|
|
45
83
|
export declare function parsePersonalGitHubRepository(value: unknown): PersonalGitHubRepositoryContract;
|
|
84
|
+
export {};
|
|
@@ -19,7 +19,7 @@ export declare const SLACK_SESSION_INSTRUCTIONS: string;
|
|
|
19
19
|
* selection at session creation while keeping Slack mutations out of the model
|
|
20
20
|
* surface; interaction delivery remains owned by the durable delivery pump.
|
|
21
21
|
*/
|
|
22
|
-
export declare const SLACK_TASK_FIRST_PARTY_MCP_TOOLS: ("artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_publish" | "artifacts_rollback" | "atlassian_get" | "atlassian_search" | "atlassian_sources_list" | "browser_act" | "browser_auth" | "browser_clipboard" | "browser_debug" | "browser_identity" | "browser_lifecycle" | "browser_observe" | "browser_open" | "browser_publish" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_remove" | "editable_artifact_apply" | "editable_artifact_create" | "editable_artifact_export" | "editable_artifact_export_status" | "editable_artifact_get" | "editable_artifact_import" | "editable_artifact_inspect" | "editable_artifact_list" | "environment_list" | "environment_set_variable" | "fiken_bank_accounts_list" | "fiken_companies_list" | "fiken_contact_create" | "fiken_contacts_list" | "fiken_invoice_draft_create" | "fiken_invoice_get" | "fiken_invoices_list" | "fiken_products_list" | "fiken_purchases_list" | "fiken_sales_list" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_progress" | "goal_set" | "goal_update" | "
|
|
22
|
+
export declare const SLACK_TASK_FIRST_PARTY_MCP_TOOLS: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_publish" | "artifacts_restore" | "artifacts_rollback" | "atlassian_get" | "atlassian_search" | "atlassian_sources_list" | "browser_act" | "browser_auth" | "browser_clipboard" | "browser_debug" | "browser_identity" | "browser_lifecycle" | "browser_observe" | "browser_open" | "browser_publish" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_remove" | "editable_artifact_apply" | "editable_artifact_create" | "editable_artifact_export" | "editable_artifact_export_status" | "editable_artifact_get" | "editable_artifact_import" | "editable_artifact_inspect" | "editable_artifact_list" | "environment_list" | "environment_set_variable" | "fiken_bank_accounts_list" | "fiken_companies_list" | "fiken_contact_create" | "fiken_contacts_list" | "fiken_invoice_draft_create" | "fiken_invoice_get" | "fiken_invoices_list" | "fiken_products_list" | "fiken_purchases_list" | "fiken_sales_list" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_progress" | "goal_set" | "goal_update" | "instruction_policy_propose" | "interaction_discover" | "interaction_request_human" | "knowledge_correct" | "knowledge_propose" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "reddit_accounts_list" | "reddit_mentions_live" | "reddit_post_reply" | "reddit_posts_sync" | "reddit_search_live" | "reddit_thread_fetch" | "remember" | "remember_confirm" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_file_publish" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_human_input_respond" | "session_pause" | "session_resume" | "session_send_message" | "session_steer" | "session_wait" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_search" | "slack_bot_thread_replies" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "task_note_archive" | "task_note_promote_instruction_policy" | "task_note_promote_knowledge" | "task_note_promote_preference" | "task_note_replace" | "task_note_save" | "task_notes_list" | "variable_set_get_variable" | "variable_set_list" | "variable_set_set_variable" | "wait_for_input" | "work_claim_release" | "work_claim_upsert" | "x_accounts_list" | "x_mentions_live" | "x_post_reply" | "x_posts_sync" | "x_search_live" | "x_thread_fetch")[];
|
|
23
23
|
export type NormalizedSlackInteraction = {
|
|
24
24
|
providerEventId: string;
|
|
25
25
|
providerMessageId: string;
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -57,6 +57,163 @@ export declare function repositoryWithScheduledTaskResource(repository: GitHubRe
|
|
|
57
57
|
};
|
|
58
58
|
export declare function encodeSessionDiscoveryCursor(cursor: SessionDiscoveryCursor): string;
|
|
59
59
|
export declare function decodeSessionDiscoveryCursor(value: string): SessionDiscoveryCursor;
|
|
60
|
+
export declare function capSessionDiscoveryCompactPage(page: Awaited<ReturnType<typeof listSessionDiscoverySummaries>>, options?: {
|
|
61
|
+
includeLastMessage?: boolean;
|
|
62
|
+
includeRelatedWork?: boolean;
|
|
63
|
+
}, maxBytes?: number): {
|
|
64
|
+
sessions: ({
|
|
65
|
+
id: string;
|
|
66
|
+
title: string | null;
|
|
67
|
+
status: "cancelled" | "failed" | "idle" | "queued" | "recovering" | "requires_action" | "running" | "waiting_capacity";
|
|
68
|
+
titleTruncated?: boolean;
|
|
69
|
+
parentSessionId?: string;
|
|
70
|
+
goal?: {
|
|
71
|
+
status: "active" | "completed" | "paused";
|
|
72
|
+
summary: string | null;
|
|
73
|
+
summaryTruncated?: boolean;
|
|
74
|
+
};
|
|
75
|
+
pause?: {
|
|
76
|
+
state: string;
|
|
77
|
+
source?: {
|
|
78
|
+
kind: "session" | "workspace";
|
|
79
|
+
sessionId?: string;
|
|
80
|
+
displayName: string | null;
|
|
81
|
+
displayNameTruncated?: boolean;
|
|
82
|
+
reason?: string | null;
|
|
83
|
+
reasonTruncated?: boolean;
|
|
84
|
+
};
|
|
85
|
+
additionalBlockerCount?: number;
|
|
86
|
+
};
|
|
87
|
+
attention?: {
|
|
88
|
+
requiresActionDescendants?: number;
|
|
89
|
+
pausedDescendants?: number;
|
|
90
|
+
failedDescendants?: number;
|
|
91
|
+
truncated?: boolean;
|
|
92
|
+
};
|
|
93
|
+
relatedWork?: {
|
|
94
|
+
claims: {
|
|
95
|
+
id: string;
|
|
96
|
+
sessionId: string;
|
|
97
|
+
subject: {
|
|
98
|
+
namespace: string;
|
|
99
|
+
type: "artifact" | "branch" | "ci_run" | "issue" | "other" | "pull_request" | "release" | "repository";
|
|
100
|
+
canonicalKey: string;
|
|
101
|
+
displayLabel: string | null;
|
|
102
|
+
};
|
|
103
|
+
role: "delivering" | "monitoring" | "reviewing" | "working";
|
|
104
|
+
state: "active" | "released" | "stale" | "superseded";
|
|
105
|
+
revision: number;
|
|
106
|
+
provenance: "explicit_agent" | "session_resource" | "system_lifecycle" | "trusted_integration" | "user_api";
|
|
107
|
+
version: {
|
|
108
|
+
kind: "artifact_version" | "branch_head" | "ci_run" | "git_commit" | "other" | "pull_request_head" | "release_version";
|
|
109
|
+
value: string;
|
|
110
|
+
} | null;
|
|
111
|
+
observedAt: string;
|
|
112
|
+
updatedAt: string;
|
|
113
|
+
settledAt: string | null;
|
|
114
|
+
}[];
|
|
115
|
+
claimsTruncated: boolean;
|
|
116
|
+
match: {
|
|
117
|
+
class: "exact_subject" | "fuzzy" | "goal" | "title";
|
|
118
|
+
field: "claim_key" | "claim_label" | "goal" | "subject" | "title";
|
|
119
|
+
scoreBand: "exact" | "related" | "strong";
|
|
120
|
+
claimId: string | null;
|
|
121
|
+
} | null;
|
|
122
|
+
possibleOverlap: boolean;
|
|
123
|
+
advisoryOnly: true;
|
|
124
|
+
noAdditionalAccess: true;
|
|
125
|
+
};
|
|
126
|
+
updatedAt: string;
|
|
127
|
+
queuedPromptCount?: number;
|
|
128
|
+
} | {
|
|
129
|
+
id: string;
|
|
130
|
+
title: string | null;
|
|
131
|
+
status: "cancelled" | "failed" | "idle" | "queued" | "recovering" | "requires_action" | "running" | "waiting_capacity";
|
|
132
|
+
titleTruncated?: boolean;
|
|
133
|
+
parentSessionId?: string;
|
|
134
|
+
goal?: {
|
|
135
|
+
status: "active" | "completed" | "paused";
|
|
136
|
+
summary: string | null;
|
|
137
|
+
summaryTruncated?: boolean;
|
|
138
|
+
};
|
|
139
|
+
pause?: {
|
|
140
|
+
state: string;
|
|
141
|
+
source?: {
|
|
142
|
+
kind: "session" | "workspace";
|
|
143
|
+
sessionId?: string;
|
|
144
|
+
displayName: string | null;
|
|
145
|
+
displayNameTruncated?: boolean;
|
|
146
|
+
reason?: string | null;
|
|
147
|
+
reasonTruncated?: boolean;
|
|
148
|
+
};
|
|
149
|
+
additionalBlockerCount?: number;
|
|
150
|
+
};
|
|
151
|
+
attention?: {
|
|
152
|
+
requiresActionDescendants?: number;
|
|
153
|
+
pausedDescendants?: number;
|
|
154
|
+
failedDescendants?: number;
|
|
155
|
+
truncated?: boolean;
|
|
156
|
+
};
|
|
157
|
+
relatedWork?: {
|
|
158
|
+
claims: {
|
|
159
|
+
id: string;
|
|
160
|
+
sessionId: string;
|
|
161
|
+
subject: {
|
|
162
|
+
namespace: string;
|
|
163
|
+
type: "artifact" | "branch" | "ci_run" | "issue" | "other" | "pull_request" | "release" | "repository";
|
|
164
|
+
canonicalKey: string;
|
|
165
|
+
displayLabel: string | null;
|
|
166
|
+
};
|
|
167
|
+
role: "delivering" | "monitoring" | "reviewing" | "working";
|
|
168
|
+
state: "active" | "released" | "stale" | "superseded";
|
|
169
|
+
revision: number;
|
|
170
|
+
provenance: "explicit_agent" | "session_resource" | "system_lifecycle" | "trusted_integration" | "user_api";
|
|
171
|
+
version: {
|
|
172
|
+
kind: "artifact_version" | "branch_head" | "ci_run" | "git_commit" | "other" | "pull_request_head" | "release_version";
|
|
173
|
+
value: string;
|
|
174
|
+
} | null;
|
|
175
|
+
observedAt: string;
|
|
176
|
+
updatedAt: string;
|
|
177
|
+
settledAt: string | null;
|
|
178
|
+
}[];
|
|
179
|
+
claimsTruncated: boolean;
|
|
180
|
+
match: {
|
|
181
|
+
class: "exact_subject" | "fuzzy" | "goal" | "title";
|
|
182
|
+
field: "claim_key" | "claim_label" | "goal" | "subject" | "title";
|
|
183
|
+
scoreBand: "exact" | "related" | "strong";
|
|
184
|
+
claimId: string | null;
|
|
185
|
+
} | null;
|
|
186
|
+
possibleOverlap: boolean;
|
|
187
|
+
advisoryOnly: true;
|
|
188
|
+
noAdditionalAccess: true;
|
|
189
|
+
};
|
|
190
|
+
updatedAt: string;
|
|
191
|
+
queuedPromptCount?: number;
|
|
192
|
+
latestMessage: {
|
|
193
|
+
type: "agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "session.wait.finished" | "session.wait.started" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded";
|
|
194
|
+
previewOmitted: boolean;
|
|
195
|
+
previewOmissionReason: "aggregatePreviewBudget";
|
|
196
|
+
previewDrillDownTool: "session_events";
|
|
197
|
+
previewDrillDownInput: {
|
|
198
|
+
direction: "before";
|
|
199
|
+
limit: 1;
|
|
200
|
+
mode: "monitoring";
|
|
201
|
+
payloadMode: "summary";
|
|
202
|
+
sessionId: string;
|
|
203
|
+
includeTypes: ("agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "session.wait.finished" | "session.wait.started" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded")[];
|
|
204
|
+
};
|
|
205
|
+
} | {
|
|
206
|
+
type: "agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "session.wait.finished" | "session.wait.started" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded";
|
|
207
|
+
preview: string | null;
|
|
208
|
+
previewTruncated?: boolean;
|
|
209
|
+
};
|
|
210
|
+
})[];
|
|
211
|
+
total: number;
|
|
212
|
+
nextCursor: string | null;
|
|
213
|
+
updatedThrough?: string | null;
|
|
214
|
+
responseTruncated?: boolean;
|
|
215
|
+
truncationReason?: string;
|
|
216
|
+
};
|
|
60
217
|
export declare function capSessionDiscoveryPage(page: Awaited<ReturnType<typeof listSessionDiscoverySummaries>>, includeLastMessage: boolean): {
|
|
61
218
|
sessions: {
|
|
62
219
|
id: string;
|
|
@@ -129,7 +286,7 @@ export declare function capSessionDiscoveryPage(page: Awaited<ReturnType<typeof
|
|
|
129
286
|
noAdditionalAccess: true;
|
|
130
287
|
};
|
|
131
288
|
latestMessage?: {
|
|
132
|
-
type: "agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded";
|
|
289
|
+
type: "agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "session.wait.finished" | "session.wait.started" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded";
|
|
133
290
|
preview: string | null;
|
|
134
291
|
previewTruncated: boolean;
|
|
135
292
|
} | null;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* edge while preserving a usable cursor. It never manufactures an event or
|
|
9
9
|
* advances across an event it did not return.
|
|
10
10
|
*/
|
|
11
|
-
import type { Rig, Session, SessionEvent, SessionEventCompactResult, SessionEventPayloadMode, SessionEventReadDirection, SessionEventReadMode } from "@opengeni/contracts";
|
|
11
|
+
import type { Rig, Session, SessionEvent, SessionEventCompactResult, SessionEventPayloadMode, SessionEventReadDirection, SessionEventReadMode, SessionMcpMonitoringSource, SessionQueueSnapshot } from "@opengeni/contracts";
|
|
12
12
|
export declare const SESSION_EVENT_MCP_MAX_BYTES: number;
|
|
13
13
|
export declare const SESSION_EVENT_MCP_FIELD_MAX_CHARS = 4000;
|
|
14
14
|
export declare const DEFAULT_SESSION_DETAIL_CHARS = 6000;
|
|
@@ -69,7 +69,61 @@ type SessionDetailFieldFact = {
|
|
|
69
69
|
deliveredCount?: number;
|
|
70
70
|
measurementBounded?: boolean;
|
|
71
71
|
};
|
|
72
|
-
/**
|
|
72
|
+
/** Compact management state; configuration is deliberately excluded, not truncated. */
|
|
73
|
+
export declare function boundSessionCompactDetailMcp(session: Session, monitoring: SessionMcpMonitoringSource, queue: SessionQueueSnapshot | null, maxBytes?: number): {
|
|
74
|
+
id: string;
|
|
75
|
+
title: string | null;
|
|
76
|
+
status: "cancelled" | "failed" | "idle" | "queued" | "recovering" | "requires_action" | "running" | "waiting_capacity";
|
|
77
|
+
titleTruncated?: boolean;
|
|
78
|
+
parentSessionId?: string;
|
|
79
|
+
activeTurnId?: string;
|
|
80
|
+
lastSequence: number;
|
|
81
|
+
goal?: {
|
|
82
|
+
status: "active" | "completed" | "paused";
|
|
83
|
+
summary: string | null;
|
|
84
|
+
summaryTruncated?: boolean;
|
|
85
|
+
evidence?: string | null;
|
|
86
|
+
evidenceTruncated?: true;
|
|
87
|
+
pausedReason?: string | null;
|
|
88
|
+
pausedReasonTruncated?: true;
|
|
89
|
+
rationale?: string | null;
|
|
90
|
+
rationaleTruncated?: true;
|
|
91
|
+
};
|
|
92
|
+
progress?: {
|
|
93
|
+
sequence: number;
|
|
94
|
+
text: string | null;
|
|
95
|
+
occurredAt: string;
|
|
96
|
+
textTruncated?: boolean;
|
|
97
|
+
};
|
|
98
|
+
pause?: {
|
|
99
|
+
state: string;
|
|
100
|
+
source?: {
|
|
101
|
+
kind: "session" | "workspace";
|
|
102
|
+
sessionId?: string;
|
|
103
|
+
displayName: string | null;
|
|
104
|
+
displayNameTruncated?: boolean;
|
|
105
|
+
reason?: string | null;
|
|
106
|
+
reasonTruncated?: boolean;
|
|
107
|
+
};
|
|
108
|
+
additionalBlockerCount?: number;
|
|
109
|
+
};
|
|
110
|
+
wait?: {
|
|
111
|
+
reason: string | null;
|
|
112
|
+
until: string;
|
|
113
|
+
reasonTruncated?: boolean;
|
|
114
|
+
};
|
|
115
|
+
queue?: {
|
|
116
|
+
queuedTurns: number;
|
|
117
|
+
pendingInputs: number;
|
|
118
|
+
stoppingPreviousAttempt?: boolean;
|
|
119
|
+
};
|
|
120
|
+
stopping?: {
|
|
121
|
+
attempts?: number;
|
|
122
|
+
backgroundCommands?: number;
|
|
123
|
+
};
|
|
124
|
+
updatedAt: string;
|
|
125
|
+
};
|
|
126
|
+
/** Legacy bounded configuration projection for explicit `session_get detail=full`. */
|
|
73
127
|
export declare function boundSessionDetailMcp(session: Session, effectiveControl?: unknown, maxBytes?: number): {
|
|
74
128
|
id: string;
|
|
75
129
|
workspaceId: string;
|
|
@@ -39,7 +39,7 @@ export declare const SESSION_WAIT_EVENTS_PER_TARGET = 20;
|
|
|
39
39
|
* changes. Raw deltas, tool receipts, sandbox/machine diagnostics, and PTY
|
|
40
40
|
* noise never wake a waiter; `session_events` remains the drill-down for them.
|
|
41
41
|
*/
|
|
42
|
-
export declare const SESSION_WAIT_EVENT_TYPES: readonly ["turn.started", "turn.completed", "turn.failed", "turn.cancelled", "turn.superseded", "turn.capacity_waiting", "agent.message.completed", "session.status.changed", "session.requiresAction", "session.humanInput.requested", "session.control.paused", "session.control.resumed", "tool.auth_needed", "credential.auth_needed", "rig.setup.failed", "goal.set", "goal.updated", "goal.progress", "goal.rewrite.proposed", "goal.rewrite.rejected", "goal.completed", "goal.paused", "goal.resumed", "goal.cleared", "goal.continuation"];
|
|
42
|
+
export declare const SESSION_WAIT_EVENT_TYPES: readonly ["turn.started", "turn.completed", "turn.failed", "turn.cancelled", "turn.superseded", "turn.capacity_waiting", "agent.message.completed", "session.status.changed", "session.requiresAction", "session.humanInput.requested", "session.control.paused", "session.control.resumed", "session.wait.started", "session.wait.finished", "tool.auth_needed", "session.command.finished", "credential.auth_needed", "rig.setup.failed", "goal.set", "goal.updated", "goal.progress", "goal.rewrite.proposed", "goal.rewrite.rejected", "goal.completed", "goal.paused", "goal.resumed", "goal.cleared", "goal.continuation"];
|
|
43
43
|
/**
|
|
44
44
|
* Settlement and blocking events that make a child result usable.
|
|
45
45
|
* Goal facts are deliberately absent: an agent can complete its durable goal
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type AccessGrant, type ToolGatewayCatalog, type ToolGatewayIdentity } from "@opengeni/contracts";
|
|
2
|
+
import { type ApiRouteDeps } from "@opengeni/core";
|
|
3
|
+
import { Hono } from "hono";
|
|
4
|
+
export type McpOAuthResource = {
|
|
5
|
+
resource: string;
|
|
6
|
+
workspaceId: string;
|
|
7
|
+
kind: "all" | "docs" | "files";
|
|
8
|
+
};
|
|
9
|
+
export type McpOAuthRouteAccess = {
|
|
10
|
+
grant: AccessGrant;
|
|
11
|
+
allowedToolIdentities: ToolGatewayIdentity[];
|
|
12
|
+
};
|
|
13
|
+
export declare function registerMcpOAuthRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
14
|
+
export declare function resolveMcpOAuthRouteAccess(deps: ApiRouteDeps, request: Request, workspaceId: string): Promise<McpOAuthRouteAccess | null>;
|
|
15
|
+
export declare function mcpOAuthBearerToken(request: Request): string | null;
|
|
16
|
+
export declare function isMcpOAuthResourcePath(pathname: string): boolean;
|
|
17
|
+
export declare function mcpOAuthConsentToolIdentities(catalog: ToolGatewayCatalog): ToolGatewayIdentity[];
|
|
18
|
+
export declare function isMcpOAuthPublicProtocolPath(pathname: string): boolean;
|
|
19
|
+
export declare function mcpOAuthAuthenticateHeader(deps: ApiRouteDeps, pathname: string): string;
|
package/dist/model-catalog.d.ts
CHANGED
|
@@ -1,23 +1,7 @@
|
|
|
1
|
-
import { type ConfiguredModel
|
|
2
|
-
import { ClientModel, type WorkspaceModelCatalogResponse as WorkspaceModelCatalogResponseType
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
reason: "not_entitled" | "provider_unhealthy" | null;
|
|
6
|
-
checkedAt: string;
|
|
7
|
-
};
|
|
8
|
-
export type ModelCredentialReadinessObservation = {
|
|
9
|
-
status: "ready";
|
|
10
|
-
checkedAt: string;
|
|
11
|
-
} | {
|
|
12
|
-
status: "not_ready";
|
|
13
|
-
reason: "prerequisites_missing" | "needs_reauth";
|
|
14
|
-
checkedAt: string;
|
|
15
|
-
} | {
|
|
16
|
-
status: "error";
|
|
17
|
-
reason: "resolver_error";
|
|
18
|
-
checkedAt: string;
|
|
19
|
-
};
|
|
20
|
-
export declare const MODEL_CREDENTIAL_READINESS_OBSERVATION_MAX_AGE_MS: number;
|
|
1
|
+
import { type ConfiguredModel } from "@opengeni/config";
|
|
2
|
+
import { ClientModel, type WorkspaceModelCatalogResponse as WorkspaceModelCatalogResponseType } from "@opengeni/contracts";
|
|
3
|
+
import { type WorkspaceModelSelectionInput } from "@opengeni/core";
|
|
4
|
+
export { MODEL_CREDENTIAL_READINESS_OBSERVATION_MAX_AGE_MS, type ModelAvailabilityObservation, type ModelCredentialReadinessObservation, } from "@opengeni/core";
|
|
21
5
|
/** Static, client-safe definition projection. No provider secret is reachable. */
|
|
22
6
|
export declare function projectClientModel(model: ConfiguredModel): ClientModel;
|
|
23
7
|
/**
|
|
@@ -28,14 +12,4 @@ export declare function projectClientModel(model: ConfiguredModel): ClientModel;
|
|
|
28
12
|
* successful typed resolver observation; credential health and provider health
|
|
29
13
|
* are separate inputs and neither is fabricated.
|
|
30
14
|
*/
|
|
31
|
-
export declare function buildWorkspaceModelCatalog(input:
|
|
32
|
-
settings: Settings;
|
|
33
|
-
policy: WorkspaceModelPolicyContract | null;
|
|
34
|
-
codexSubscriptionActive: boolean;
|
|
35
|
-
xaiSubscriptionActive?: boolean;
|
|
36
|
-
workspaceGatewayConnectionActive?: boolean;
|
|
37
|
-
credentialReadinessObservations?: Readonly<Record<string, ModelCredentialReadinessObservation>> | undefined;
|
|
38
|
-
observations?: Readonly<Record<string, ModelAvailabilityObservation>> | undefined;
|
|
39
|
-
now?: Date | undefined;
|
|
40
|
-
credentialReadinessMaxAgeMs?: number | undefined;
|
|
41
|
-
}): WorkspaceModelCatalogResponseType;
|
|
15
|
+
export declare function buildWorkspaceModelCatalog(input: WorkspaceModelSelectionInput): WorkspaceModelCatalogResponseType;
|
package/dist/routes/codex.d.ts
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import { type CodexAccountStatus } from "@opengeni/db";
|
|
2
|
+
/**
|
|
3
|
+
* Derive the two distinct cached worker-readiness meanings exposed by the
|
|
4
|
+
* status route. `poolReady` means at least one effective-pool account passes
|
|
5
|
+
* the worker's cached admission predicate. `workerRoutable` additionally
|
|
6
|
+
* honors rotation-off's active-pointer-only rule; it says nothing about a
|
|
7
|
+
* session-specific manual pin.
|
|
8
|
+
*/
|
|
9
|
+
export declare function codexWorkerReadiness(input: {
|
|
10
|
+
effectiveSource: "workspace" | "organization" | "disabled";
|
|
11
|
+
rotationEnabled: boolean;
|
|
12
|
+
activeCredentialId: string | null;
|
|
13
|
+
accounts: ReadonlyArray<Pick<CodexAccountStatus, "id" | "status" | "allocatorEnabled" | "primaryUsedPercent" | "primaryResetAt" | "secondaryUsedPercent" | "secondaryResetAt" | "exhaustedUntil">>;
|
|
14
|
+
now: Date;
|
|
15
|
+
}): {
|
|
16
|
+
poolReady: boolean;
|
|
17
|
+
workerRoutable: boolean;
|
|
18
|
+
};
|
|
19
|
+
export declare function codexModelsForPicker(): Array<{
|
|
2
20
|
id: string;
|
|
3
21
|
label: string;
|
|
4
22
|
provider: string;
|
|
@@ -6,5 +24,12 @@ export declare function codexModelsForPicker(liveSlugs: readonly string[]): Arra
|
|
|
6
24
|
api: "responses";
|
|
7
25
|
}>;
|
|
8
26
|
import { type ApiRouteDeps } from "@opengeni/core";
|
|
9
|
-
import type { Hono } from "hono";
|
|
27
|
+
import type { Context, Hono } from "hono";
|
|
28
|
+
type ManagedCookieHuman = {
|
|
29
|
+
subjectId: string;
|
|
30
|
+
browserSessionHash: string;
|
|
31
|
+
};
|
|
32
|
+
export declare function requireOrganizationCodexHuman(c: Context, deps: ApiRouteDeps, organizationId: string): Promise<ManagedCookieHuman>;
|
|
33
|
+
export declare function requireSameOriginBrowserMutation(c: Context, deps: ApiRouteDeps): void;
|
|
10
34
|
export declare function registerCodexRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
35
|
+
export {};
|
package/dist/routes/github.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type AccessGrant } from "@opengeni/contracts";
|
|
1
2
|
import type { Hono } from "hono";
|
|
2
3
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
3
4
|
export declare function registerGitHubRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
5
|
+
export declare function requirePublicGitHubRepositoryVerificationPermission(grant: Pick<AccessGrant, "permissions">): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { type ApiRouteDeps } from "@opengeni/core";
|
|
2
|
-
import type { Hono } from "hono";
|
|
2
|
+
import type { Context, Hono } from "hono";
|
|
3
|
+
export declare function workspaceArtifactErrorResponse(context: Context, error: unknown): Response;
|
|
3
4
|
export declare function registerWorkspaceArtifactRoutes(app: Hono, deps: ApiRouteDeps): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ToolGatewayIdentity, type WorkspaceArtifactSourceBundle as WorkspaceArtifactSourceBundleValue, type WorkspaceArtifactVersion } from "@opengeni/contracts";
|
|
2
|
+
import type { ObjectStorageDependency } from "@opengeni/core";
|
|
3
|
+
export type PreparedWorkspaceArtifactContent = {
|
|
4
|
+
contentKey: string;
|
|
5
|
+
contentSha256: string;
|
|
6
|
+
sizeBytes: number;
|
|
7
|
+
sourceKey: string;
|
|
8
|
+
sourceSha256: string;
|
|
9
|
+
sourceSizeBytes: number;
|
|
10
|
+
requestedTools?: ToolGatewayIdentity[];
|
|
11
|
+
persistContent: () => Promise<void>;
|
|
12
|
+
discardContent: () => Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
export declare function prepareWorkspaceArtifactContent(objectStorage: NonNullable<ObjectStorageDependency>, workspaceId: string, input: {
|
|
15
|
+
html: string;
|
|
16
|
+
source?: WorkspaceArtifactSourceBundleValue;
|
|
17
|
+
requestedTools?: ToolGatewayIdentity[];
|
|
18
|
+
}): PreparedWorkspaceArtifactContent;
|
|
19
|
+
export declare function readWorkspaceArtifactContent(objectStorage: NonNullable<ObjectStorageDependency>, input: {
|
|
20
|
+
contentKey: string;
|
|
21
|
+
sourceKey: string | null;
|
|
22
|
+
version: WorkspaceArtifactVersion;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
html: string;
|
|
25
|
+
source: WorkspaceArtifactSourceBundleValue;
|
|
26
|
+
requestedTools: ToolGatewayIdentity[];
|
|
27
|
+
}>;
|
|
28
|
+
export declare function sourceBundleFromHtml(html: string): WorkspaceArtifactSourceBundleValue;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WorkspaceArtifactDetailResponse, WorkspaceArtifactListResponse, WorkspaceArtifactMutationResponse, WorkspaceArtifactVersion } from "@opengeni/contracts";
|
|
2
|
+
type CanReadSession = (sessionId: string) => Promise<boolean>;
|
|
3
|
+
export declare function redactWorkspaceArtifactListProvenance(response: WorkspaceArtifactListResponse): WorkspaceArtifactListResponse;
|
|
4
|
+
export declare function projectWorkspaceArtifactVersionProvenance(version: WorkspaceArtifactVersion, canReadSession: CanReadSession): Promise<WorkspaceArtifactVersion>;
|
|
5
|
+
export declare function projectWorkspaceArtifactDetailProvenance(detail: WorkspaceArtifactDetailResponse, canReadSession: CanReadSession): Promise<WorkspaceArtifactDetailResponse>;
|
|
6
|
+
export declare function projectWorkspaceArtifactMutationProvenance(response: WorkspaceArtifactMutationResponse, canReadSession: CanReadSession): Promise<WorkspaceArtifactMutationResponse>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ToolGatewayCatalogEntry } from "@opengeni/contracts";
|
|
2
|
+
import type { Observability } from "@opengeni/observability";
|
|
3
|
+
export type WorkspaceToolGatewayAdapter = "http" | "mcp";
|
|
4
|
+
export type WorkspaceToolGatewayOperation = "approval" | "call";
|
|
5
|
+
export type WorkspaceToolGatewayOutcome = "ok" | "tool_error" | "approval_required" | "catalog_stale" | "invalid_input" | "not_found" | "rate_limited" | "failed";
|
|
6
|
+
/**
|
|
7
|
+
* Low-cardinality gateway telemetry shared by HTTP/SDK/Site and aggregate MCP
|
|
8
|
+
* adapters. Tool names, workspace/subject ids, arguments, results, credentials,
|
|
9
|
+
* and approval tokens are excluded by construction.
|
|
10
|
+
*/
|
|
11
|
+
export declare function startWorkspaceToolGatewayObservation(observability: Observability | null | undefined, input: {
|
|
12
|
+
adapter: WorkspaceToolGatewayAdapter;
|
|
13
|
+
operation: WorkspaceToolGatewayOperation;
|
|
14
|
+
source: ToolGatewayCatalogEntry["source"] | "aggregate";
|
|
15
|
+
}): {
|
|
16
|
+
end: (outcome: WorkspaceToolGatewayOutcome) => void;
|
|
17
|
+
};
|