@opengeni/api-router 4.1.2-canary.36079201993001 → 4.1.2

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/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  createOpenGeniSlackBotInteractionClient,
8
8
  startSlackInteractionPump,
9
9
  startTemporalScheduleCleanupPump
10
- } from "./chunk-PTO4RZT5.js";
10
+ } from "./chunk-2SSU5KWV.js";
11
11
 
12
12
  // src/index.ts
13
13
  import { scheduledTaskKnowledgeSource } from "@opengeni/contracts";
@@ -46,7 +46,7 @@ export declare function requireGitHubLensConnect(deps: ApiRouteDeps): Promise<{
46
46
  eager?: boolean | undefined;
47
47
  optional?: boolean | undefined;
48
48
  }[];
49
- firstPartyMcpTools: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "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_read" | "browser_screenshot" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_enroll_token" | "connected_machine_remove" | "custom_mcp_setup_request" | "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_resume" | "goal_set" | "goal_update" | "instruction_policy_get" | "instruction_policy_propose" | "instruction_policy_save" | "interaction_discover" | "interaction_request_human" | "knowledge_archive" | "knowledge_browse" | "knowledge_correct" | "knowledge_get" | "knowledge_prepare_save" | "knowledge_propose" | "knowledge_retain_file" | "knowledge_retain_message" | "knowledge_save" | "knowledge_search" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "project_create" | "project_delete" | "project_get" | "project_list" | "project_reorder" | "project_update" | "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_set_project" | "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")[];
49
+ firstPartyMcpTools: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "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_read" | "browser_screenshot" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_enroll_token" | "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_resume" | "goal_set" | "goal_update" | "instruction_policy_get" | "instruction_policy_propose" | "instruction_policy_save" | "interaction_discover" | "interaction_request_human" | "knowledge_archive" | "knowledge_browse" | "knowledge_correct" | "knowledge_get" | "knowledge_prepare_save" | "knowledge_propose" | "knowledge_retain_file" | "knowledge_retain_message" | "knowledge_save" | "knowledge_search" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "project_create" | "project_delete" | "project_get" | "project_list" | "project_reorder" | "project_update" | "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_set_project" | "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")[];
50
50
  firstPartyMcpPermissions: ("account:admin" | "account:read" | "api_keys:manage" | "artifacts:publish" | "artifacts:read" | "billing:manage" | "billing:read" | "capabilities:manage" | "codemode:call" | "connections:read" | "connections:write" | "documents:manage" | "documents:search" | "enrollments:manage" | "enrollments:read" | "environments:manage" | "environments:use" | "files:read" | "files:upload" | "files:write" | "github:manage" | "github:use" | "goals:manage" | "mcp_servers:attach" | "members:manage" | "rigs:manage" | "rigs:use" | "scheduled_tasks:manage" | "scheduled_tasks:run" | "secrets:list" | "secrets:read" | "secrets:write" | "sessions:control" | "sessions:create" | "sessions:read" | "stream:acknowledge" | "stream:control" | "stream:view" | "terminal:attach" | "variable-sets:attach" | "variable-sets:list" | "variable-sets:manage" | "variable-sets:read" | "variable-sets:use" | "variable-sets:write" | "workspace:admin" | "workspace:create" | "workspace:read")[];
51
51
  model: string | null;
52
52
  reasoningEffort: "high" | "low" | "max" | "medium" | "minimal" | "none" | "xhigh" | null;
@@ -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_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "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_read" | "browser_screenshot" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_enroll_token" | "connected_machine_remove" | "custom_mcp_setup_request" | "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_resume" | "goal_set" | "goal_update" | "instruction_policy_get" | "instruction_policy_propose" | "instruction_policy_save" | "interaction_discover" | "interaction_request_human" | "knowledge_archive" | "knowledge_browse" | "knowledge_correct" | "knowledge_get" | "knowledge_prepare_save" | "knowledge_propose" | "knowledge_retain_file" | "knowledge_retain_message" | "knowledge_save" | "knowledge_search" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "project_create" | "project_delete" | "project_get" | "project_list" | "project_reorder" | "project_update" | "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_set_project" | "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")[];
22
+ export declare const SLACK_TASK_FIRST_PARTY_MCP_TOOLS: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "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_read" | "browser_screenshot" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_enroll_token" | "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_resume" | "goal_set" | "goal_update" | "instruction_policy_get" | "instruction_policy_propose" | "instruction_policy_save" | "interaction_discover" | "interaction_request_human" | "knowledge_archive" | "knowledge_browse" | "knowledge_correct" | "knowledge_get" | "knowledge_prepare_save" | "knowledge_propose" | "knowledge_retain_file" | "knowledge_retain_message" | "knowledge_save" | "knowledge_search" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "project_create" | "project_delete" | "project_get" | "project_list" | "project_reorder" | "project_update" | "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_set_project" | "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;
@@ -359,10 +359,6 @@ export declare const FIRST_PARTY_TOOL_AUTHORIZATION: {
359
359
  sessionRequired: true;
360
360
  allOf: "workspace:read"[];
361
361
  };
362
- custom_mcp_setup_request: {
363
- sessionRequired: true;
364
- allOf: "workspace:read"[];
365
- };
366
362
  github_connect_link: {
367
363
  allOf: "github:use"[];
368
364
  };
@@ -82,8 +82,8 @@ export declare function scheduledTaskMcpSummary(task: ScheduledTask): {
82
82
  runMode: "existing_session" | "new_session_per_run" | "reusable_session";
83
83
  overlapPolicy: "allow_concurrent" | "buffer_one" | "skip";
84
84
  action: {
85
- readonly sourceId?: never;
86
85
  kind: "agent_turn";
86
+ sourceId?: never;
87
87
  sourceGeneration?: never;
88
88
  sourceLifecycleGeneration?: never;
89
89
  destination?: never;
@@ -205,8 +205,8 @@ export declare function boundScheduledTaskDetailMcp(task: ScheduledTask): {
205
205
  runMode: "existing_session" | "new_session_per_run" | "reusable_session";
206
206
  overlapPolicy: "allow_concurrent" | "buffer_one" | "skip";
207
207
  action: {
208
- readonly sourceId?: never;
209
208
  kind: "agent_turn";
209
+ sourceId?: never;
210
210
  sourceGeneration?: never;
211
211
  sourceLifecycleGeneration?: never;
212
212
  destination?: never;
@@ -389,8 +389,8 @@ export declare function boundScheduledTaskMcpPage(input: {
389
389
  runMode: "existing_session" | "new_session_per_run" | "reusable_session";
390
390
  overlapPolicy: "allow_concurrent" | "buffer_one" | "skip";
391
391
  action: {
392
- readonly sourceId?: never;
393
392
  kind: "agent_turn";
393
+ sourceId?: never;
394
394
  sourceGeneration?: never;
395
395
  sourceLifecycleGeneration?: never;
396
396
  destination?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/api-router",
3
- "version": "4.1.2-canary.36079201993001",
3
+ "version": "4.1.2",
4
4
  "description": "OpenGeni HTTP surface: the Hono adapter/router (createApp), routes, MCP HTTP transport, and HTTP access adapters over @opengeni/core. An engine-distribution surface — its runtime closure includes engine-internal packages.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -43,24 +43,24 @@
43
43
  "@hono/zod-validator": "^0.7.6",
44
44
  "@llamaindex/liteparse": "2.14.2",
45
45
  "@modelcontextprotocol/sdk": "^1.29.0",
46
- "@opengeni/agent-proto": "^0.6.0-canary.36079201993001",
47
- "@opengeni/artifact-tool": "^0.3.32-canary.36079201993001",
48
- "@opengeni/capabilities": "^0.3.4-canary.36079201993001",
49
- "@opengeni/codemode": "^0.6.2-canary.36079201993001",
50
- "@opengeni/codex": "^0.2.26-canary.36079201993001",
51
- "@opengeni/config": "^2.1.1-canary.36079201993001",
52
- "@opengeni/contracts": "^5.1.1-canary.36079201993001",
53
- "@opengeni/core": "^4.0.3-canary.36079201993001",
54
- "@opengeni/db": "^6.0.3-canary.36079201993001",
55
- "@opengeni/documents": "^0.8.34-canary.36079201993001",
56
- "@opengeni/events": "^0.4.32-canary.36079201993001",
57
- "@opengeni/github": "^0.7.16-canary.36079201993001",
58
- "@opengeni/network": "^0.3.1-canary.36079201993001",
59
- "@opengeni/observability": "^0.8.32-canary.36079201993001",
60
- "@opengeni/runtime": "^4.0.3-canary.36079201993001",
61
- "@opengeni/storage": "^0.2.133-canary.36079201993001",
62
- "@opengeni/tool-gateway": "^0.1.13-canary.36079201993001",
63
- "@opengeni/xai-subscription": "^0.1.4-canary.36079201993001",
46
+ "@opengeni/agent-proto": "^0.6.0",
47
+ "@opengeni/artifact-tool": "^0.3.32",
48
+ "@opengeni/capabilities": "^0.3.4",
49
+ "@opengeni/codemode": "^0.6.2",
50
+ "@opengeni/codex": "^0.2.26",
51
+ "@opengeni/config": "^2.1.1",
52
+ "@opengeni/contracts": "^5.1.1",
53
+ "@opengeni/core": "^4.0.3",
54
+ "@opengeni/db": "^6.0.3",
55
+ "@opengeni/documents": "^0.8.34",
56
+ "@opengeni/events": "^0.4.32",
57
+ "@opengeni/github": "^0.7.16",
58
+ "@opengeni/network": "^0.3.1",
59
+ "@opengeni/observability": "^0.8.32",
60
+ "@opengeni/runtime": "^4.0.3",
61
+ "@opengeni/storage": "^0.2.133",
62
+ "@opengeni/tool-gateway": "^0.1.13",
63
+ "@opengeni/xai-subscription": "^0.1.4",
64
64
  "@temporalio/client": "^1.17.0",
65
65
  "better-auth": "^1.6.14",
66
66
  "hono": "^4.12.18",
@@ -154,10 +154,6 @@ export const FIRST_PARTY_TOOL_AUTHORIZATION = {
154
154
  sessionRequired: true,
155
155
  allOf: ["workspace:read"],
156
156
  },
157
- custom_mcp_setup_request: {
158
- sessionRequired: true,
159
- allOf: ["workspace:read"],
160
- },
161
157
  github_connect_link: { allOf: ["github:use"] },
162
158
  github_repositories_list: { allOf: ["github:use"] },
163
159
  social_connections_list: { allOf: ["connections:read"] },
package/src/mcp/server.ts CHANGED
@@ -2521,7 +2521,7 @@ function registerGoalTools(
2521
2521
  "goal_update",
2522
2522
  {
2523
2523
  description:
2524
- "Maintain your operational goal as user direction or meaningful new evidence clarifies the intended outcome. Changes apply directly unless the user explicitly configured review_changes; refinement, adaptation, and replacement are audit classifications, not approval gates under the default policy. Use the exact expected objective revision and a concise rationale. Updating a goal grants no additional authority and cannot change root constraints. Use goal_progress for an execution-progress audit fact rather than a goal rewrite.",
2524
+ "Propose or apply a semantic goal revision under the session's mutation policy. Retain the standing goal unless explicit user direction or meaningful new evidence justifies the declared refinement, adaptation, or replacement. Every rewrite must use the exact expected objective revision and a concise rationale. Root constraints cannot be changed by an agent. A rewrite is not an execution-progress audit fact; use the optional goal_progress tool when such a fact should be recorded.",
2525
2525
  inputSchema: {
2526
2526
  text: goalText.optional(),
2527
2527
  successCriteria: successCriteriaSchema.nullable().optional(),
@@ -6026,72 +6026,6 @@ function registerCapabilityDiscoveryTools(
6026
6026
  });
6027
6027
  },
6028
6028
  );
6029
-
6030
- server.registerTool(
6031
- "custom_mcp_setup_request",
6032
- {
6033
- description:
6034
- "Show a review card for a remote HTTPS MCP server that is not in the workspace catalog. Use only an endpoint supplied by the user or established by reliable documentation; do not invent a URL. Never include query parameters or secrets in this URL; the human can edit it in the protected setup form. The agent cannot add, enable, or contact the server. Search the catalog first and do not propose an already available integration.",
6035
- inputSchema: {
6036
- name: z4.string().trim().min(1).max(256),
6037
- endpointUrl: z4
6038
- .string()
6039
- .url()
6040
- .max(2048)
6041
- .refine((url) => {
6042
- const parsed = new URL(url);
6043
- return (
6044
- parsed.protocol === "https:" &&
6045
- !parsed.username &&
6046
- !parsed.password &&
6047
- !parsed.hash &&
6048
- !parsed.search
6049
- );
6050
- }),
6051
- rationale: z4.string().trim().min(1).max(2000),
6052
- },
6053
- },
6054
- async ({ name, endpointUrl, rationale }) => {
6055
- await authorize();
6056
- const current = await catalog();
6057
- const existing = current.items.find(
6058
- (item) => item.kind === "mcp" && item.endpointUrl === endpointUrl && !item.stale,
6059
- );
6060
- if (existing) {
6061
- return json({
6062
- status: "already_in_catalog",
6063
- capabilityId: existing.id,
6064
- message: "Use the catalog authorization flow for this server instead.",
6065
- });
6066
- }
6067
- const claims = exactAgentCommandContext(grant, sessionId);
6068
- const payload = ToolAuthNeededPayload.parse({
6069
- serverId: "opengeni",
6070
- toolName: "custom_mcp_setup_request",
6071
- providerDomain: new URL(endpointUrl).hostname,
6072
- reason: "missing_connection",
6073
- setupRequest: { kind: "mcp", name, endpointUrl, rationale },
6074
- });
6075
- const appended = await appendAndPublishTurnEventsFenced(
6076
- deps.db,
6077
- deps.bus,
6078
- grant.workspaceId,
6079
- sessionId,
6080
- claims.callerTurnId,
6081
- claims.callerExecutionGeneration,
6082
- claims.callerAttemptId,
6083
- [{ type: "tool.auth_needed", payload }],
6084
- );
6085
- if (!appended.accepted) {
6086
- throw new Error("The calling turn was replaced before the setup request committed.");
6087
- }
6088
- return json({
6089
- status: "setup_requested",
6090
- eventId: appended.events[0]?.id ?? null,
6091
- message: "The human review card was posted. No server was added or contacted.",
6092
- });
6093
- },
6094
- );
6095
6029
  }
6096
6030
 
6097
6031
  async function capabilitySetupProjection(
@@ -93,7 +93,6 @@ import {
93
93
  dispatchExternalAuth,
94
94
  dispatchProtectedAuthFill,
95
95
  failBrowserSessionOperation,
96
- failPreparedBrowserSessionEnd,
97
96
  failPreparedBrowserSessionSuspend,
98
97
  failBrowserSessionResume,
99
98
  failBrowserSessionResumePreparation,
@@ -2608,11 +2607,6 @@ export function registerBrowserSessionRoutes(app: Hono, deps: ApiRouteDeps): voi
2608
2607
  const request = await parseJsonBody(context, BrowserSessionLifecycleRequest);
2609
2608
  const startedAtMs = performance.now();
2610
2609
  const origin = requestOrigin(context, deps.settings);
2611
- let endPreparation: {
2612
- restoreLifecycle: BrowserSessionValue["lifecycle"];
2613
- restoreFailureCode: string | null;
2614
- expectedControllerGeneration: string | null;
2615
- } | null = null;
2616
2610
  try {
2617
2611
  const before = await getBrowserSessionControlRecord(deps.db, {
2618
2612
  accountId: grant.accountId,
@@ -2627,9 +2621,6 @@ export function registerBrowserSessionRoutes(app: Hono, deps: ApiRouteDeps): voi
2627
2621
  browserSessionId,
2628
2622
  operationId: request.operationId,
2629
2623
  actorSubjectId: grant.subjectId,
2630
- expectedLifecycle: before.session.lifecycle,
2631
- expectedFailureCode: before.session.failureCode,
2632
- expectedControllerGeneration: before.session.controller?.controllerGeneration ?? null,
2633
2624
  });
2634
2625
  if (isTerminalOperation(prepared.operation.state)) {
2635
2626
  if (prepared.operation.state === "completed") {
@@ -2645,13 +2636,6 @@ export function registerBrowserSessionRoutes(app: Hono, deps: ApiRouteDeps): voi
2645
2636
  observeLifecycleResult(deps.observability, startedAtMs, parsed);
2646
2637
  return context.json(parsed, 200);
2647
2638
  }
2648
- if (before.session.lifecycle !== "ending") {
2649
- endPreparation = {
2650
- restoreLifecycle: before.session.lifecycle,
2651
- restoreFailureCode: before.session.failureCode,
2652
- expectedControllerGeneration: before.session.controller?.controllerGeneration ?? null,
2653
- };
2654
- }
2655
2639
 
2656
2640
  const record = await getBrowserSessionControlRecord(deps.db, {
2657
2641
  accountId: grant.accountId,
@@ -2745,16 +2729,6 @@ export function registerBrowserSessionRoutes(app: Hono, deps: ApiRouteDeps): voi
2745
2729
  observeLifecycleResult(deps.observability, startedAtMs, parsed);
2746
2730
  return context.json(parsed, 200);
2747
2731
  } catch (error) {
2748
- if (endPreparation) {
2749
- await failPreparedBrowserSessionEnd(deps.db, {
2750
- accountId: grant.accountId,
2751
- workspaceId,
2752
- browserSessionId,
2753
- operationId: request.operationId,
2754
- ...endPreparation,
2755
- error: interactionFailure(error),
2756
- });
2757
- }
2758
2732
  throw browserRouteError(error);
2759
2733
  }
2760
2734
  },
@@ -4144,7 +4118,6 @@ async function settleBrowserSessionSuspensionCaptureFailure(
4144
4118
  return await failBrowserSessionSuspension(deps.db, {
4145
4119
  ...input,
4146
4120
  ...(outcomeUnknown ? { state: "outcome_unknown" as const } : {}),
4147
- missingControllerSession: error.status === 404 && isMissingBrowserControllerSession(error),
4148
4121
  error: error.error,
4149
4122
  });
4150
4123
  }