@opengeni/api-router 2.4.2-canary.0 → 2.5.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/app.js +1 -1
- package/dist/{chunk-L7GVVSSQ.js → chunk-QESX7HDK.js} +650 -98
- package/dist/chunk-QESX7HDK.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/integrations/slack-interactions.d.ts +1 -1
- package/dist/mcp/server.d.ts +33 -0
- package/dist/routes/sessions.d.ts +17 -5
- package/dist/work-discovery-observability.d.ts +33 -0
- package/package.json +18 -18
- package/src/mcp/server.ts +304 -29
- package/src/routes/sessions.ts +377 -81
- package/src/work-discovery-observability.ts +121 -0
- package/dist/chunk-L7GVVSSQ.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -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" | "goal_wait" | "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" | "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_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" | "goal_wait" | "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" | "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
|
@@ -94,6 +94,39 @@ export declare function capSessionDiscoveryPage(page: Awaited<ReturnType<typeof
|
|
|
94
94
|
attentionSince?: string | null | undefined;
|
|
95
95
|
truncated: boolean;
|
|
96
96
|
};
|
|
97
|
+
relatedWork: {
|
|
98
|
+
claims: {
|
|
99
|
+
id: string;
|
|
100
|
+
sessionId: string;
|
|
101
|
+
subject: {
|
|
102
|
+
namespace: string;
|
|
103
|
+
type: "artifact" | "branch" | "ci_run" | "issue" | "other" | "pull_request" | "release" | "repository";
|
|
104
|
+
canonicalKey: string;
|
|
105
|
+
displayLabel: string | null;
|
|
106
|
+
};
|
|
107
|
+
role: "delivering" | "monitoring" | "reviewing" | "working";
|
|
108
|
+
state: "active" | "released" | "stale" | "superseded";
|
|
109
|
+
revision: number;
|
|
110
|
+
provenance: "explicit_agent" | "session_resource" | "system_lifecycle" | "trusted_integration" | "user_api";
|
|
111
|
+
version: {
|
|
112
|
+
kind: "artifact_version" | "branch_head" | "ci_run" | "git_commit" | "other" | "pull_request_head" | "release_version";
|
|
113
|
+
value: string;
|
|
114
|
+
} | null;
|
|
115
|
+
observedAt: string;
|
|
116
|
+
updatedAt: string;
|
|
117
|
+
settledAt: string | null;
|
|
118
|
+
}[];
|
|
119
|
+
claimsTruncated: boolean;
|
|
120
|
+
match: {
|
|
121
|
+
class: "exact_subject" | "fuzzy" | "goal" | "title";
|
|
122
|
+
field: "claim_key" | "claim_label" | "goal" | "subject" | "title";
|
|
123
|
+
scoreBand: "exact" | "related" | "strong";
|
|
124
|
+
claimId: string | null;
|
|
125
|
+
} | null;
|
|
126
|
+
possibleOverlap: boolean;
|
|
127
|
+
advisoryOnly: true;
|
|
128
|
+
noAdditionalAccess: true;
|
|
129
|
+
};
|
|
97
130
|
latestMessage?: {
|
|
98
131
|
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";
|
|
99
132
|
preview: string | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClientSessionEvent, SteerSessionMessageRequest, type SessionGoalRevision, type SessionAuthorizationOperation } from "@opengeni/contracts";
|
|
1
|
+
import { ClientSessionEvent, SteerSessionMessageRequest, type SessionStatus, type WorkClaimSubjectFilter, type SessionGoalRevision, type SessionAuthorizationOperation } from "@opengeni/contracts";
|
|
2
2
|
import { type SessionDiscoveryCursor } from "@opengeni/db";
|
|
3
3
|
import type { Context, Hono } from "hono";
|
|
4
4
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
@@ -15,14 +15,26 @@ export declare function sessionAuthorizationOperationForHttp(method: string, pat
|
|
|
15
15
|
export declare function sessionTenancyHttpError(error: unknown): Error;
|
|
16
16
|
export type AgentTopologyCursorEnvelope = {
|
|
17
17
|
cursor: SessionDiscoveryCursor;
|
|
18
|
-
parentSessionId: string | null;
|
|
19
|
-
|
|
18
|
+
parentSessionId: string | null | "all";
|
|
19
|
+
rootSessionId: string | null;
|
|
20
|
+
query: string | null;
|
|
21
|
+
statuses: SessionStatus[];
|
|
22
|
+
activeOnly: boolean;
|
|
23
|
+
recentHours: number | null;
|
|
24
|
+
subject: WorkClaimSubjectFilter | null;
|
|
25
|
+
claimLimit: number | null;
|
|
20
26
|
};
|
|
21
27
|
export declare function encodeAgentTopologyCursor(value: AgentTopologyCursorEnvelope): string;
|
|
22
28
|
export declare function agentTopologyQuery(query: Record<string, string>): {
|
|
23
29
|
limit: number;
|
|
24
|
-
parentSessionId: string | null;
|
|
25
|
-
|
|
30
|
+
parentSessionId: string | null | undefined;
|
|
31
|
+
rootSessionId: string | undefined;
|
|
32
|
+
query: string | undefined;
|
|
33
|
+
statuses: SessionStatus[] | undefined;
|
|
34
|
+
activeOnly: boolean;
|
|
35
|
+
recentHours: number | undefined;
|
|
36
|
+
subject: WorkClaimSubjectFilter | undefined;
|
|
37
|
+
claimLimit: number | undefined;
|
|
26
38
|
cursor: SessionDiscoveryCursor | undefined;
|
|
27
39
|
};
|
|
28
40
|
/** Stable, value-free JSON errors for only the create-session boundary. */
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { WorkDiscoveryMatchClass } from "@opengeni/contracts";
|
|
2
|
+
import type { Observability } from "@opengeni/observability";
|
|
3
|
+
export type WorkDiscoverySurface = "first_party_mcp" | "agent_topology";
|
|
4
|
+
export type WorkDiscoveryMode = "browse" | "query" | "subject";
|
|
5
|
+
export type WorkDiscoveryOutcome = "ok" | "empty" | "disabled" | "error";
|
|
6
|
+
export type WorkDiscoveryAuthorizationScope = "workspace" | "scoped";
|
|
7
|
+
export type WorkDiscoveryObservation = {
|
|
8
|
+
surface: WorkDiscoverySurface;
|
|
9
|
+
mode: WorkDiscoveryMode;
|
|
10
|
+
outcome: WorkDiscoveryOutcome;
|
|
11
|
+
authorizationScope: WorkDiscoveryAuthorizationScope;
|
|
12
|
+
durationMs: number;
|
|
13
|
+
responseBytes: number;
|
|
14
|
+
resultCount: number;
|
|
15
|
+
overlapCount: number;
|
|
16
|
+
matchCounts: Partial<Record<WorkDiscoveryMatchClass, number>>;
|
|
17
|
+
};
|
|
18
|
+
type WorkDiscoveryObservedRow = {
|
|
19
|
+
relatedWork: {
|
|
20
|
+
match: {
|
|
21
|
+
class: WorkDiscoveryMatchClass;
|
|
22
|
+
} | null;
|
|
23
|
+
possibleOverlap: boolean;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export declare function summarizeWorkDiscoveryRows(rows: readonly WorkDiscoveryObservedRow[]): Pick<WorkDiscoveryObservation, "resultCount" | "overlapCount" | "matchCounts">;
|
|
27
|
+
/**
|
|
28
|
+
* Low-cardinality work-discovery telemetry. Identifiers, search text, subject
|
|
29
|
+
* keys, titles, goals, claim labels, versions, and provenance are excluded by
|
|
30
|
+
* construction. An observability failure never changes product behavior.
|
|
31
|
+
*/
|
|
32
|
+
export declare function observeWorkDiscovery(observability: Observability | null | undefined, observation: WorkDiscoveryObservation): void;
|
|
33
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeni/api-router",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
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,23 +43,23 @@
|
|
|
43
43
|
"@hono/zod-validator": "^0.7.6",
|
|
44
44
|
"@llamaindex/liteparse": "^1.5.3",
|
|
45
45
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
46
|
-
"@opengeni/agent-proto": "^0.5.1
|
|
47
|
-
"@opengeni/artifact-tool": "^0.3.
|
|
48
|
-
"@opengeni/capabilities": "^0.3.1
|
|
49
|
-
"@opengeni/codemode": "^0.4.
|
|
50
|
-
"@opengeni/codex": "^0.2.19
|
|
51
|
-
"@opengeni/config": "^0.
|
|
52
|
-
"@opengeni/contracts": "^2.
|
|
53
|
-
"@opengeni/core": "^2.5.
|
|
54
|
-
"@opengeni/db": "^3.
|
|
55
|
-
"@opengeni/documents": "^0.8.
|
|
56
|
-
"@opengeni/events": "^0.4.
|
|
57
|
-
"@opengeni/github": "^0.6.
|
|
58
|
-
"@opengeni/network": "^0.2.3
|
|
59
|
-
"@opengeni/observability": "^0.8.
|
|
60
|
-
"@opengeni/runtime": "^1.4.
|
|
61
|
-
"@opengeni/storage": "^0.2.
|
|
62
|
-
"@opengeni/xai-subscription": "^0.1.2
|
|
46
|
+
"@opengeni/agent-proto": "^0.5.1",
|
|
47
|
+
"@opengeni/artifact-tool": "^0.3.9",
|
|
48
|
+
"@opengeni/capabilities": "^0.3.1",
|
|
49
|
+
"@opengeni/codemode": "^0.4.17",
|
|
50
|
+
"@opengeni/codex": "^0.2.19",
|
|
51
|
+
"@opengeni/config": "^0.22.0",
|
|
52
|
+
"@opengeni/contracts": "^2.7.0",
|
|
53
|
+
"@opengeni/core": "^2.5.3",
|
|
54
|
+
"@opengeni/db": "^3.6.0",
|
|
55
|
+
"@opengeni/documents": "^0.8.6",
|
|
56
|
+
"@opengeni/events": "^0.4.4",
|
|
57
|
+
"@opengeni/github": "^0.6.1",
|
|
58
|
+
"@opengeni/network": "^0.2.3",
|
|
59
|
+
"@opengeni/observability": "^0.8.9",
|
|
60
|
+
"@opengeni/runtime": "^1.4.2",
|
|
61
|
+
"@opengeni/storage": "^0.2.110",
|
|
62
|
+
"@opengeni/xai-subscription": "^0.1.2",
|
|
63
63
|
"@temporalio/client": "^1.17.0",
|
|
64
64
|
"better-auth": "^1.6.14",
|
|
65
65
|
"hono": "^4.12.18",
|