@h-rig/rig-host 0.0.6-alpha.100

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.
@@ -0,0 +1,176 @@
1
+ // @bun
2
+ // packages/rig-host/src/domain/run.ts
3
+ import { basename, resolve as resolve2 } from "path";
4
+
5
+ // packages/rig-host/src/domain/task.ts
6
+ import { resolve } from "path";
7
+ import { createPluginHost } from "@rig/core";
8
+ import { loadConfig } from "@rig/core/load-config";
9
+ function stringList(value) {
10
+ if (!Array.isArray(value))
11
+ return [];
12
+ return value.filter((entry) => typeof entry === "string").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
13
+ }
14
+ function stringOrNull(value) {
15
+ if (typeof value !== "string")
16
+ return null;
17
+ const trimmed = value.trim();
18
+ return trimmed.length > 0 ? trimmed : null;
19
+ }
20
+ function titleFor(record) {
21
+ return stringOrNull(record.title) ?? stringOrNull(record.name) ?? record.id;
22
+ }
23
+ function descriptionFor(record) {
24
+ return stringOrNull(record.description) ?? stringOrNull(record.body) ?? "";
25
+ }
26
+ function scopeFor(record) {
27
+ const direct = stringList(record.scope);
28
+ if (direct.length > 0)
29
+ return direct;
30
+ return stringList(record.labels).filter((label) => label.startsWith("scope:")).map((label) => label.slice("scope:".length).trim()).filter((label) => label.length > 0);
31
+ }
32
+ function validationKeysFor(record) {
33
+ const direct = stringList(record.validationKeys);
34
+ if (direct.length > 0)
35
+ return direct;
36
+ const validation = stringList(record.validation);
37
+ if (validation.length > 0)
38
+ return validation;
39
+ return stringList(record.labels).filter((label) => label.startsWith("validator:")).map((label) => label.slice("validator:".length).trim()).filter((label) => label.length > 0);
40
+ }
41
+ function createdAtFor(record, fallback) {
42
+ return stringOrNull(record.createdAt) ?? fallback;
43
+ }
44
+ function updatedAtFor(record, fallback) {
45
+ return stringOrNull(record.updatedAt) ?? createdAtFor(record, fallback) ?? fallback;
46
+ }
47
+ function mapTaskRecordToSummary(record, workspaceId, fallbackTimestamp) {
48
+ const metadata = record;
49
+ const createdAt = createdAtFor(record, fallbackTimestamp);
50
+ const updatedAt = updatedAtFor(record, fallbackTimestamp);
51
+ return {
52
+ id: record.id,
53
+ workspaceId,
54
+ graphId: null,
55
+ externalId: stringOrNull(metadata.externalId) ?? stringOrNull(metadata.externalRef),
56
+ title: titleFor(record),
57
+ description: descriptionFor(record),
58
+ status: record.status,
59
+ priority: typeof metadata.priority === "number" && Number.isInteger(metadata.priority) && metadata.priority > 0 ? metadata.priority : null,
60
+ role: stringOrNull(metadata.role),
61
+ scope: scopeFor(record),
62
+ validationKeys: validationKeysFor(record),
63
+ sourceIssueId: stringOrNull(metadata.sourceIssueId),
64
+ dependencies: [...record.deps],
65
+ parentChildDeps: [],
66
+ metadata,
67
+ createdAt,
68
+ updatedAt
69
+ };
70
+ }
71
+ async function loadRigIdeaTasks(workspaceRoot) {
72
+ const normalizedRoot = resolve(workspaceRoot);
73
+ const config = await loadConfig(normalizedRoot);
74
+ const pluginHost = createPluginHost(config.plugins);
75
+ const taskSourceFactory = pluginHost.resolveTaskSourceFactoryByKind(config.taskSource.kind);
76
+ if (!taskSourceFactory) {
77
+ const kinds = pluginHost.listExecutableTaskSources().map((entry) => entry.kind).join(", ") || "none";
78
+ throw new Error(`No task source factory registered for kind "${config.taskSource.kind}". Registered kinds: ${kinds}.`);
79
+ }
80
+ const source = taskSourceFactory.factory(config.taskSource, { projectRoot: normalizedRoot });
81
+ const fallbackTimestamp = new Date().toISOString();
82
+ const workspaceId = normalizedRoot;
83
+ const tasks = await source.list();
84
+ return tasks.map((task) => mapTaskRecordToSummary(task, workspaceId, fallbackTimestamp));
85
+ }
86
+
87
+ // packages/rig-host/src/domain/run.ts
88
+ var LEGACY_AUTHORITY_RUN_CREATION_RETIRED_MESSAGE = "Legacy rig-host run-record creation is retired for the product path. Use the default Rig OMP extension/collab session flow instead.";
89
+ var LEGACY_AUTHORITY_RUN_CONTROL_RETIRED_MESSAGE = "Legacy rig-host run-record control, inspection, and active-run state are retired for the product path. Use the default Rig OMP extension/collab session flow instead.";
90
+ function legacyAuthorityRunUnsupportedMessage() {
91
+ return LEGACY_AUTHORITY_RUN_CREATION_RETIRED_MESSAGE;
92
+ }
93
+ function legacyAuthorityRunControlUnsupportedMessage() {
94
+ return LEGACY_AUTHORITY_RUN_CONTROL_RETIRED_MESSAGE;
95
+ }
96
+ function legacyAuthorityRunUnsupportedError() {
97
+ return new Error(legacyAuthorityRunUnsupportedMessage());
98
+ }
99
+ function legacyAuthorityRunControlUnsupportedError() {
100
+ return new Error(legacyAuthorityRunControlUnsupportedMessage());
101
+ }
102
+ function projectRetiredLegacyRigIdeaWorkspace(workspaceRoot, tasks) {
103
+ const normalizedRoot = resolve2(workspaceRoot);
104
+ const updatedAt = new Date().toISOString();
105
+ const title = basename(normalizedRoot) || normalizedRoot;
106
+ return {
107
+ workspaceRoot: normalizedRoot,
108
+ activeRunId: null,
109
+ sequence: 0,
110
+ workspaces: [{
111
+ id: normalizedRoot,
112
+ title,
113
+ rootPath: normalizedRoot,
114
+ sourceKind: "native",
115
+ defaultModel: null,
116
+ createdAt: updatedAt,
117
+ updatedAt
118
+ }],
119
+ graphs: [],
120
+ tasks: [...tasks],
121
+ runs: [],
122
+ runtimes: [],
123
+ conversations: [],
124
+ messages: [],
125
+ actions: [],
126
+ logs: [],
127
+ approvals: [],
128
+ userInputs: [],
129
+ validations: [],
130
+ reviews: [],
131
+ artifacts: [],
132
+ policyDecisions: [],
133
+ queue: [],
134
+ worktrees: [],
135
+ remoteEndpoints: [],
136
+ remoteConnections: [],
137
+ remoteOrchestrations: [],
138
+ updatedAt
139
+ };
140
+ }
141
+ async function startLegacyRigIdeaAdhocAuthorityRun(_workspaceRoot, _prompt, _options = {}) {
142
+ throw legacyAuthorityRunUnsupportedError();
143
+ }
144
+ async function startLegacyRigIdeaTaskAuthorityRun(_workspaceRoot, _task, _options = {}) {
145
+ throw legacyAuthorityRunUnsupportedError();
146
+ }
147
+ function stopRigIdeaRun(_workspaceRoot, _runId) {
148
+ throw legacyAuthorityRunControlUnsupportedError();
149
+ }
150
+ async function createRigIdeaHarness(workspaceRoot) {
151
+ const normalizedRoot = resolve2(workspaceRoot);
152
+ const tasks = await loadRigIdeaTasks(normalizedRoot).catch(() => []);
153
+ return {
154
+ snapshot() {
155
+ return projectRetiredLegacyRigIdeaWorkspace(normalizedRoot, tasks);
156
+ },
157
+ async stopRun(_runId) {
158
+ throw legacyAuthorityRunControlUnsupportedError();
159
+ },
160
+ async resolveApproval(_runId, _requestId, _decision) {
161
+ throw legacyAuthorityRunControlUnsupportedError();
162
+ },
163
+ async resolveUserInput(_runId, _requestId, _answers) {
164
+ throw legacyAuthorityRunControlUnsupportedError();
165
+ }
166
+ };
167
+ }
168
+ export {
169
+ stopRigIdeaRun,
170
+ startLegacyRigIdeaTaskAuthorityRun,
171
+ startLegacyRigIdeaAdhocAuthorityRun,
172
+ projectRetiredLegacyRigIdeaWorkspace,
173
+ legacyAuthorityRunUnsupportedMessage,
174
+ legacyAuthorityRunControlUnsupportedMessage,
175
+ createRigIdeaHarness
176
+ };
@@ -0,0 +1,4 @@
1
+ import type { TaskRecord, TaskSummary, WorkspaceId } from "@rig/contracts";
2
+ export declare function mapTaskRecordToSummary(record: TaskRecord, workspaceId: WorkspaceId, fallbackTimestamp: string): TaskSummary;
3
+ export declare function loadRigIdeaTasks(workspaceRoot: string): Promise<readonly TaskSummary[]>;
4
+ export declare function requireRigIdeaTask(tasks: readonly TaskSummary[], taskId: string): TaskSummary;
@@ -0,0 +1,94 @@
1
+ // @bun
2
+ // packages/rig-host/src/domain/task.ts
3
+ import { resolve } from "path";
4
+ import { createPluginHost } from "@rig/core";
5
+ import { loadConfig } from "@rig/core/load-config";
6
+ function stringList(value) {
7
+ if (!Array.isArray(value))
8
+ return [];
9
+ return value.filter((entry) => typeof entry === "string").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
10
+ }
11
+ function stringOrNull(value) {
12
+ if (typeof value !== "string")
13
+ return null;
14
+ const trimmed = value.trim();
15
+ return trimmed.length > 0 ? trimmed : null;
16
+ }
17
+ function titleFor(record) {
18
+ return stringOrNull(record.title) ?? stringOrNull(record.name) ?? record.id;
19
+ }
20
+ function descriptionFor(record) {
21
+ return stringOrNull(record.description) ?? stringOrNull(record.body) ?? "";
22
+ }
23
+ function scopeFor(record) {
24
+ const direct = stringList(record.scope);
25
+ if (direct.length > 0)
26
+ return direct;
27
+ return stringList(record.labels).filter((label) => label.startsWith("scope:")).map((label) => label.slice("scope:".length).trim()).filter((label) => label.length > 0);
28
+ }
29
+ function validationKeysFor(record) {
30
+ const direct = stringList(record.validationKeys);
31
+ if (direct.length > 0)
32
+ return direct;
33
+ const validation = stringList(record.validation);
34
+ if (validation.length > 0)
35
+ return validation;
36
+ return stringList(record.labels).filter((label) => label.startsWith("validator:")).map((label) => label.slice("validator:".length).trim()).filter((label) => label.length > 0);
37
+ }
38
+ function createdAtFor(record, fallback) {
39
+ return stringOrNull(record.createdAt) ?? fallback;
40
+ }
41
+ function updatedAtFor(record, fallback) {
42
+ return stringOrNull(record.updatedAt) ?? createdAtFor(record, fallback) ?? fallback;
43
+ }
44
+ function mapTaskRecordToSummary(record, workspaceId, fallbackTimestamp) {
45
+ const metadata = record;
46
+ const createdAt = createdAtFor(record, fallbackTimestamp);
47
+ const updatedAt = updatedAtFor(record, fallbackTimestamp);
48
+ return {
49
+ id: record.id,
50
+ workspaceId,
51
+ graphId: null,
52
+ externalId: stringOrNull(metadata.externalId) ?? stringOrNull(metadata.externalRef),
53
+ title: titleFor(record),
54
+ description: descriptionFor(record),
55
+ status: record.status,
56
+ priority: typeof metadata.priority === "number" && Number.isInteger(metadata.priority) && metadata.priority > 0 ? metadata.priority : null,
57
+ role: stringOrNull(metadata.role),
58
+ scope: scopeFor(record),
59
+ validationKeys: validationKeysFor(record),
60
+ sourceIssueId: stringOrNull(metadata.sourceIssueId),
61
+ dependencies: [...record.deps],
62
+ parentChildDeps: [],
63
+ metadata,
64
+ createdAt,
65
+ updatedAt
66
+ };
67
+ }
68
+ async function loadRigIdeaTasks(workspaceRoot) {
69
+ const normalizedRoot = resolve(workspaceRoot);
70
+ const config = await loadConfig(normalizedRoot);
71
+ const pluginHost = createPluginHost(config.plugins);
72
+ const taskSourceFactory = pluginHost.resolveTaskSourceFactoryByKind(config.taskSource.kind);
73
+ if (!taskSourceFactory) {
74
+ const kinds = pluginHost.listExecutableTaskSources().map((entry) => entry.kind).join(", ") || "none";
75
+ throw new Error(`No task source factory registered for kind "${config.taskSource.kind}". Registered kinds: ${kinds}.`);
76
+ }
77
+ const source = taskSourceFactory.factory(config.taskSource, { projectRoot: normalizedRoot });
78
+ const fallbackTimestamp = new Date().toISOString();
79
+ const workspaceId = normalizedRoot;
80
+ const tasks = await source.list();
81
+ return tasks.map((task) => mapTaskRecordToSummary(task, workspaceId, fallbackTimestamp));
82
+ }
83
+ function requireRigIdeaTask(tasks, taskId) {
84
+ const task = tasks.find((entry) => entry.id === taskId);
85
+ if (!task) {
86
+ throw new Error(`Unknown task: ${taskId}`);
87
+ }
88
+ return task;
89
+ }
90
+ export {
91
+ requireRigIdeaTask,
92
+ mapTaskRecordToSummary,
93
+ loadRigIdeaTasks
94
+ };
@@ -0,0 +1,4 @@
1
+ import type { TaskSummary } from "@rig/contracts";
2
+ import type { RigIdeaSnapshot } from "../protocol";
3
+ export declare function projectRigIdeaWorkspace(workspaceRoot: string, tasks: readonly TaskSummary[]): RigIdeaSnapshot;
4
+ export declare function loadRigIdeaWorkspace(workspaceRoot: string): Promise<RigIdeaSnapshot>;
@@ -0,0 +1,183 @@
1
+ // @bun
2
+ // packages/rig-host/src/domain/workspace.ts
3
+ import { basename as basename2, resolve as resolve3 } from "path";
4
+
5
+ // packages/rig-host/src/replication/replay.ts
6
+ function loadRigHostReplayState(_workspaceRoot) {
7
+ const updatedAt = new Date().toISOString();
8
+ return {
9
+ runs: [],
10
+ approvals: [],
11
+ userInputs: [],
12
+ sequence: 0,
13
+ updatedAt,
14
+ activeRunId: null
15
+ };
16
+ }
17
+
18
+ // packages/rig-host/src/replication/welcome.ts
19
+ import { basename, resolve } from "path";
20
+ function buildRigWelcomeSnapshot(workspaceRoot, replay) {
21
+ const normalizedRoot = resolve(workspaceRoot);
22
+ const title = basename(normalizedRoot) || normalizedRoot;
23
+ const workspace = {
24
+ id: normalizedRoot,
25
+ title,
26
+ rootPath: normalizedRoot,
27
+ sourceKind: "native",
28
+ defaultModel: null,
29
+ createdAt: replay.updatedAt,
30
+ updatedAt: replay.updatedAt
31
+ };
32
+ return {
33
+ workspaceRoot: normalizedRoot,
34
+ activeRunId: replay.activeRunId,
35
+ sequence: replay.sequence,
36
+ workspaces: [workspace],
37
+ graphs: [],
38
+ tasks: [],
39
+ runs: replay.runs,
40
+ runtimes: [],
41
+ conversations: [],
42
+ messages: [],
43
+ actions: [],
44
+ logs: [],
45
+ approvals: replay.approvals,
46
+ userInputs: replay.userInputs,
47
+ validations: [],
48
+ reviews: [],
49
+ artifacts: [],
50
+ policyDecisions: [],
51
+ queue: [],
52
+ worktrees: [],
53
+ remoteEndpoints: [],
54
+ remoteConnections: [],
55
+ remoteOrchestrations: [],
56
+ updatedAt: replay.updatedAt
57
+ };
58
+ }
59
+
60
+ // packages/rig-host/src/domain/task.ts
61
+ import { resolve as resolve2 } from "path";
62
+ import { createPluginHost } from "@rig/core";
63
+ import { loadConfig } from "@rig/core/load-config";
64
+ function stringList(value) {
65
+ if (!Array.isArray(value))
66
+ return [];
67
+ return value.filter((entry) => typeof entry === "string").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
68
+ }
69
+ function stringOrNull(value) {
70
+ if (typeof value !== "string")
71
+ return null;
72
+ const trimmed = value.trim();
73
+ return trimmed.length > 0 ? trimmed : null;
74
+ }
75
+ function titleFor(record) {
76
+ return stringOrNull(record.title) ?? stringOrNull(record.name) ?? record.id;
77
+ }
78
+ function descriptionFor(record) {
79
+ return stringOrNull(record.description) ?? stringOrNull(record.body) ?? "";
80
+ }
81
+ function scopeFor(record) {
82
+ const direct = stringList(record.scope);
83
+ if (direct.length > 0)
84
+ return direct;
85
+ return stringList(record.labels).filter((label) => label.startsWith("scope:")).map((label) => label.slice("scope:".length).trim()).filter((label) => label.length > 0);
86
+ }
87
+ function validationKeysFor(record) {
88
+ const direct = stringList(record.validationKeys);
89
+ if (direct.length > 0)
90
+ return direct;
91
+ const validation = stringList(record.validation);
92
+ if (validation.length > 0)
93
+ return validation;
94
+ return stringList(record.labels).filter((label) => label.startsWith("validator:")).map((label) => label.slice("validator:".length).trim()).filter((label) => label.length > 0);
95
+ }
96
+ function createdAtFor(record, fallback) {
97
+ return stringOrNull(record.createdAt) ?? fallback;
98
+ }
99
+ function updatedAtFor(record, fallback) {
100
+ return stringOrNull(record.updatedAt) ?? createdAtFor(record, fallback) ?? fallback;
101
+ }
102
+ function mapTaskRecordToSummary(record, workspaceId, fallbackTimestamp) {
103
+ const metadata = record;
104
+ const createdAt = createdAtFor(record, fallbackTimestamp);
105
+ const updatedAt = updatedAtFor(record, fallbackTimestamp);
106
+ return {
107
+ id: record.id,
108
+ workspaceId,
109
+ graphId: null,
110
+ externalId: stringOrNull(metadata.externalId) ?? stringOrNull(metadata.externalRef),
111
+ title: titleFor(record),
112
+ description: descriptionFor(record),
113
+ status: record.status,
114
+ priority: typeof metadata.priority === "number" && Number.isInteger(metadata.priority) && metadata.priority > 0 ? metadata.priority : null,
115
+ role: stringOrNull(metadata.role),
116
+ scope: scopeFor(record),
117
+ validationKeys: validationKeysFor(record),
118
+ sourceIssueId: stringOrNull(metadata.sourceIssueId),
119
+ dependencies: [...record.deps],
120
+ parentChildDeps: [],
121
+ metadata,
122
+ createdAt,
123
+ updatedAt
124
+ };
125
+ }
126
+ async function loadRigIdeaTasks(workspaceRoot) {
127
+ const normalizedRoot = resolve2(workspaceRoot);
128
+ const config = await loadConfig(normalizedRoot);
129
+ const pluginHost = createPluginHost(config.plugins);
130
+ const taskSourceFactory = pluginHost.resolveTaskSourceFactoryByKind(config.taskSource.kind);
131
+ if (!taskSourceFactory) {
132
+ const kinds = pluginHost.listExecutableTaskSources().map((entry) => entry.kind).join(", ") || "none";
133
+ throw new Error(`No task source factory registered for kind "${config.taskSource.kind}". Registered kinds: ${kinds}.`);
134
+ }
135
+ const source = taskSourceFactory.factory(config.taskSource, { projectRoot: normalizedRoot });
136
+ const fallbackTimestamp = new Date().toISOString();
137
+ const workspaceId = normalizedRoot;
138
+ const tasks = await source.list();
139
+ return tasks.map((task) => mapTaskRecordToSummary(task, workspaceId, fallbackTimestamp));
140
+ }
141
+
142
+ // packages/rig-host/src/domain/workspace.ts
143
+ function workspaceSummaryFor(workspaceRoot, updatedAt) {
144
+ const title = basename2(workspaceRoot) || workspaceRoot;
145
+ return {
146
+ id: workspaceRoot,
147
+ title,
148
+ rootPath: workspaceRoot,
149
+ sourceKind: "native",
150
+ defaultModel: null,
151
+ createdAt: updatedAt,
152
+ updatedAt
153
+ };
154
+ }
155
+ function projectRigIdeaWorkspace(workspaceRoot, tasks) {
156
+ const normalizedRoot = resolve3(workspaceRoot);
157
+ const replay = loadRigHostReplayState(normalizedRoot);
158
+ const base = buildRigWelcomeSnapshot(normalizedRoot, replay);
159
+ const logs = [];
160
+ const artifacts = [];
161
+ const taskUpdatedAt = tasks.reduce((latest, task) => latest === null || task.updatedAt > latest ? task.updatedAt : latest, null);
162
+ const updatedAt = taskUpdatedAt && taskUpdatedAt > base.updatedAt ? taskUpdatedAt : base.updatedAt;
163
+ const workspaces = [workspaceSummaryFor(normalizedRoot, updatedAt)];
164
+ return {
165
+ ...base,
166
+ workspaces,
167
+ tasks: [...tasks],
168
+ runs: replay.runs,
169
+ approvals: replay.approvals,
170
+ userInputs: replay.userInputs,
171
+ logs,
172
+ artifacts,
173
+ updatedAt
174
+ };
175
+ }
176
+ async function loadRigIdeaWorkspace(workspaceRoot) {
177
+ const tasks = await loadRigIdeaTasks(workspaceRoot);
178
+ return projectRigIdeaWorkspace(workspaceRoot, tasks);
179
+ }
180
+ export {
181
+ projectRigIdeaWorkspace,
182
+ loadRigIdeaWorkspace
183
+ };
@@ -0,0 +1,47 @@
1
+ import type { RunId } from "@rig/contracts";
2
+ import type { RigGuestCommand, RigGuestFrame, RigHostFrame, RigIdeaSnapshot } from "./protocol";
3
+ import { type RigHostFrameListener } from "./replication/broadcast";
4
+ export type RigHostSessionOptions = {
5
+ readonly workspaceRoot: string;
6
+ readonly relayUrl?: string;
7
+ readonly onFrame?: RigHostFrameListener;
8
+ };
9
+ export type RigHostSession = {
10
+ snapshot(): RigIdeaSnapshot;
11
+ createShareLink(readOnly?: boolean): Promise<string>;
12
+ handleGuestFrame(frame: RigGuestFrame): Promise<void>;
13
+ stop(reason: string): Promise<void>;
14
+ };
15
+ export type RigOmpJoinRoute = {
16
+ readonly kind: "omp-relay-link";
17
+ readonly link: string;
18
+ readonly runId: RunId | null;
19
+ readonly limitation?: string;
20
+ };
21
+ export type RigOmpWritableJoinLinkOptions = {
22
+ readonly hostSession: RigHostSession;
23
+ };
24
+ export type RigOmpJoinOptions = {
25
+ readonly hostSession: RigHostSession;
26
+ readonly runId?: RunId | null;
27
+ readonly sessionName?: string;
28
+ readonly onFrame?: (frame: RigHostFrame) => void;
29
+ };
30
+ export type RigOmpRelayJoinOptions = {
31
+ readonly link: string;
32
+ readonly runId?: RunId | null;
33
+ readonly limitation?: string;
34
+ readonly sessionName?: string;
35
+ readonly onFrame?: (frame: RigHostFrame) => void;
36
+ };
37
+ export type RigOmpRelaySession = RigOmpJoinRoute & {
38
+ sendFrame(frame: RigGuestFrame): Promise<void>;
39
+ sendCommand(command: RigGuestCommand): Promise<void>;
40
+ leave(reason?: string): void;
41
+ };
42
+ export declare function createRigOmpWritableJoinLink(_options: RigOmpWritableJoinLinkOptions): Promise<string>;
43
+ export declare function createRigOmpJoinRoute(options: RigOmpJoinOptions): Promise<RigOmpJoinRoute>;
44
+ export declare function joinRigOmpRelayLink(_options: RigOmpRelayJoinOptions): Promise<RigOmpRelaySession>;
45
+ export declare function runRigJoinSelectedRun(_options: RigOmpJoinOptions): Promise<void>;
46
+ export declare function rigGenericOmpJoinLimitation(): string;
47
+ export declare function startRigHostSession(options: RigHostSessionOptions): Promise<RigHostSession>;