@opengeni/contracts 2.9.2 → 2.13.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/artifacts.d.ts +121 -0
- package/dist/atlassian.js +11 -11
- package/dist/{chunk-4IVHBXRI.js → chunk-7ABONTXE.js} +42 -2
- package/dist/chunk-7ABONTXE.js.map +1 -0
- package/dist/{chunk-7RMTKFJW.js → chunk-7Q6HPDY2.js} +8 -8
- package/dist/{chunk-AWNGBY5I.js → chunk-DPCCW6U7.js} +7395 -6619
- package/dist/chunk-DPCCW6U7.js.map +1 -0
- package/dist/{chunk-N6GRVXAJ.js → chunk-NPBM4QSK.js} +2 -2
- package/dist/connection-authority.js +11 -11
- package/dist/editable-artifact-codec-registry.js +2 -2
- package/dist/editable-artifact-live.js +2 -2
- package/dist/editable-artifact-serialized-commit.js +3 -3
- package/dist/editable-artifacts.js +13 -13
- package/dist/github-repository-contracts.d.ts +36 -0
- package/dist/github-repository-contracts.js +59 -0
- package/dist/github-repository-contracts.js.map +1 -0
- package/dist/github-repository.d.ts +14 -0
- package/dist/github-repository.js +36 -0
- package/dist/github-repository.js.map +1 -0
- package/dist/google-drive.js +12 -12
- package/dist/index.d.ts +809 -70
- package/dist/index.js +299 -135
- package/dist/mcp-oauth.d.ts +71 -0
- package/dist/model-context-inspector.d.ts +205 -0
- package/dist/model-picker-order.d.ts +23 -0
- package/dist/model-picker-order.js +42 -0
- package/dist/model-picker-order.js.map +1 -0
- package/dist/organization-membership-lifecycle.d.ts +17 -0
- package/dist/personal-github.js +11 -11
- package/dist/session-mcp-projections.d.ts +210 -0
- package/dist/session-titles.d.ts +35 -0
- package/dist/session-titles.js +9 -3
- package/dist/tool-catalog.d.ts +271 -0
- package/dist/workspace-learning-policy.d.ts +1 -1
- package/package.json +13 -1
- package/src/artifacts.ts +111 -1
- package/src/github-repository-contracts.ts +85 -0
- package/src/github-repository.ts +59 -0
- package/src/index.ts +486 -52
- package/src/mcp-oauth.ts +68 -0
- package/src/model-context-inspector.ts +104 -0
- package/src/model-picker-order.ts +87 -0
- package/src/organization-membership-lifecycle.ts +20 -0
- package/src/session-mcp-projections.ts +268 -0
- package/src/session-titles.ts +100 -0
- package/src/tool-catalog.ts +136 -0
- package/src/workspace-learning-policy.ts +4 -3
- package/dist/chunk-4IVHBXRI.js.map +0 -1
- package/dist/chunk-AWNGBY5I.js.map +0 -1
- /package/dist/{chunk-7RMTKFJW.js.map → chunk-7Q6HPDY2.js.map} +0 -0
- /package/dist/{chunk-N6GRVXAJ.js.map → chunk-NPBM4QSK.js.map} +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const MCP_OAUTH_SCOPE: "mcp:access";
|
|
3
|
+
export declare const MCP_OAUTH_ACCESS_TOKEN_TTL_SECONDS: number;
|
|
4
|
+
export declare const MCP_OAUTH_REFRESH_TOKEN_TTL_SECONDS: number;
|
|
5
|
+
export declare const MCP_OAUTH_AUTHORIZATION_CODE_TTL_SECONDS: number;
|
|
6
|
+
export declare const MCP_OAUTH_CONSENT_TTL_SECONDS: number;
|
|
7
|
+
export declare const McpOAuthClientRegistrationRequest: z.ZodObject<{
|
|
8
|
+
redirect_uris: z.ZodArray<z.ZodString>;
|
|
9
|
+
client_name: z.ZodOptional<z.ZodString>;
|
|
10
|
+
application_type: z.ZodOptional<z.ZodEnum<{
|
|
11
|
+
native: "native";
|
|
12
|
+
web: "web";
|
|
13
|
+
}>>;
|
|
14
|
+
token_endpoint_auth_method: z.ZodDefault<z.ZodLiteral<"none">>;
|
|
15
|
+
scope: z.ZodOptional<z.ZodLiteral<"mcp:access">>;
|
|
16
|
+
grant_types: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
17
|
+
authorization_code: "authorization_code";
|
|
18
|
+
refresh_token: "refresh_token";
|
|
19
|
+
}>>>;
|
|
20
|
+
response_types: z.ZodDefault<z.ZodArray<z.ZodLiteral<"code">>>;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
export type McpOAuthClientRegistrationRequest = z.infer<typeof McpOAuthClientRegistrationRequest>;
|
|
23
|
+
export declare const McpOAuthClientRegistrationResponse: z.ZodObject<{
|
|
24
|
+
redirect_uris: z.ZodArray<z.ZodString>;
|
|
25
|
+
client_name: z.ZodOptional<z.ZodString>;
|
|
26
|
+
application_type: z.ZodOptional<z.ZodEnum<{
|
|
27
|
+
native: "native";
|
|
28
|
+
web: "web";
|
|
29
|
+
}>>;
|
|
30
|
+
token_endpoint_auth_method: z.ZodDefault<z.ZodLiteral<"none">>;
|
|
31
|
+
scope: z.ZodOptional<z.ZodLiteral<"mcp:access">>;
|
|
32
|
+
grant_types: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
33
|
+
authorization_code: "authorization_code";
|
|
34
|
+
refresh_token: "refresh_token";
|
|
35
|
+
}>>>;
|
|
36
|
+
response_types: z.ZodDefault<z.ZodArray<z.ZodLiteral<"code">>>;
|
|
37
|
+
client_id: z.ZodString;
|
|
38
|
+
client_id_issued_at: z.ZodNumber;
|
|
39
|
+
}, z.core.$strict>;
|
|
40
|
+
export type McpOAuthClientRegistrationResponse = z.infer<typeof McpOAuthClientRegistrationResponse>;
|
|
41
|
+
export declare const McpOAuthTokenResponse: z.ZodObject<{
|
|
42
|
+
access_token: z.ZodString;
|
|
43
|
+
token_type: z.ZodLiteral<"Bearer">;
|
|
44
|
+
expires_in: z.ZodNumber;
|
|
45
|
+
refresh_token: z.ZodOptional<z.ZodString>;
|
|
46
|
+
scope: z.ZodLiteral<"mcp:access">;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export type McpOAuthTokenResponse = z.infer<typeof McpOAuthTokenResponse>;
|
|
49
|
+
export declare const McpOAuthProtectedResourceMetadata: z.ZodObject<{
|
|
50
|
+
resource: z.ZodString;
|
|
51
|
+
authorization_servers: z.ZodArray<z.ZodString>;
|
|
52
|
+
scopes_supported: z.ZodArray<z.ZodLiteral<"mcp:access">>;
|
|
53
|
+
bearer_methods_supported: z.ZodArray<z.ZodLiteral<"header">>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
export type McpOAuthProtectedResourceMetadata = z.infer<typeof McpOAuthProtectedResourceMetadata>;
|
|
56
|
+
export declare const McpOAuthAuthorizationServerMetadata: z.ZodObject<{
|
|
57
|
+
issuer: z.ZodString;
|
|
58
|
+
authorization_endpoint: z.ZodString;
|
|
59
|
+
token_endpoint: z.ZodString;
|
|
60
|
+
registration_endpoint: z.ZodString;
|
|
61
|
+
response_types_supported: z.ZodArray<z.ZodLiteral<"code">>;
|
|
62
|
+
grant_types_supported: z.ZodArray<z.ZodEnum<{
|
|
63
|
+
authorization_code: "authorization_code";
|
|
64
|
+
refresh_token: "refresh_token";
|
|
65
|
+
}>>;
|
|
66
|
+
code_challenge_methods_supported: z.ZodArray<z.ZodLiteral<"S256">>;
|
|
67
|
+
token_endpoint_auth_methods_supported: z.ZodArray<z.ZodLiteral<"none">>;
|
|
68
|
+
scopes_supported: z.ZodArray<z.ZodLiteral<"mcp:access">>;
|
|
69
|
+
authorization_response_iss_parameter_supported: z.ZodLiteral<true>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export type McpOAuthAuthorizationServerMetadata = z.infer<typeof McpOAuthAuthorizationServerMetadata>;
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const MODEL_CONTEXT_SNAPSHOT_VERSION: 1;
|
|
3
|
+
export declare const MODEL_CONTEXT_INSTRUCTIONS_MAX_UTF8_BYTES: number;
|
|
4
|
+
export declare const MODEL_CONTEXT_SNAPSHOT_MAX_UTF8_BYTES: number;
|
|
5
|
+
export declare const MODEL_CONTEXT_LAYER_MAX_COUNT = 16;
|
|
6
|
+
export declare const MODEL_CONTEXT_TOOL_MAX_COUNT = 2048;
|
|
7
|
+
export declare const MODEL_CONTEXT_SKILL_MAX_COUNT = 1024;
|
|
8
|
+
export declare const ModelContextInstructionLayerId: z.ZodEnum<{
|
|
9
|
+
codemode: "codemode";
|
|
10
|
+
genesis_title: "genesis_title";
|
|
11
|
+
git_bindings: "git_bindings";
|
|
12
|
+
operational_contract: "operational_contract";
|
|
13
|
+
persona_and_core: "persona_and_core";
|
|
14
|
+
sandbox_filesystem: "sandbox_filesystem";
|
|
15
|
+
sandbox_preamble: "sandbox_preamble";
|
|
16
|
+
sdk_capability_instructions: "sdk_capability_instructions";
|
|
17
|
+
sent_system_instructions: "sent_system_instructions";
|
|
18
|
+
session_instructions: "session_instructions";
|
|
19
|
+
workspace_governance: "workspace_governance";
|
|
20
|
+
workspace_memory: "workspace_memory";
|
|
21
|
+
}>;
|
|
22
|
+
export type ModelContextInstructionLayerId = z.infer<typeof ModelContextInstructionLayerId>;
|
|
23
|
+
export declare const ModelContextInstructionLayer: z.ZodObject<{
|
|
24
|
+
id: z.ZodEnum<{
|
|
25
|
+
codemode: "codemode";
|
|
26
|
+
genesis_title: "genesis_title";
|
|
27
|
+
git_bindings: "git_bindings";
|
|
28
|
+
operational_contract: "operational_contract";
|
|
29
|
+
persona_and_core: "persona_and_core";
|
|
30
|
+
sandbox_filesystem: "sandbox_filesystem";
|
|
31
|
+
sandbox_preamble: "sandbox_preamble";
|
|
32
|
+
sdk_capability_instructions: "sdk_capability_instructions";
|
|
33
|
+
sent_system_instructions: "sent_system_instructions";
|
|
34
|
+
session_instructions: "session_instructions";
|
|
35
|
+
workspace_governance: "workspace_governance";
|
|
36
|
+
workspace_memory: "workspace_memory";
|
|
37
|
+
}>;
|
|
38
|
+
title: z.ZodString;
|
|
39
|
+
content: z.ZodString;
|
|
40
|
+
utf8Bytes: z.ZodNumber;
|
|
41
|
+
estimatedTokens: z.ZodNumber;
|
|
42
|
+
}, z.core.$strict>;
|
|
43
|
+
export type ModelContextInstructionLayer = z.infer<typeof ModelContextInstructionLayer>;
|
|
44
|
+
export declare const ModelContextToolVisibility: z.ZodEnum<{
|
|
45
|
+
eager: "eager";
|
|
46
|
+
searchable: "searchable";
|
|
47
|
+
}>;
|
|
48
|
+
export type ModelContextToolVisibility = z.infer<typeof ModelContextToolVisibility>;
|
|
49
|
+
export declare const ModelContextTool: z.ZodObject<{
|
|
50
|
+
name: z.ZodString;
|
|
51
|
+
type: z.ZodString;
|
|
52
|
+
visibility: z.ZodEnum<{
|
|
53
|
+
eager: "eager";
|
|
54
|
+
searchable: "searchable";
|
|
55
|
+
}>;
|
|
56
|
+
description: z.ZodOptional<z.ZodString>;
|
|
57
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
58
|
+
schema: z.ZodOptional<z.ZodUnknown>;
|
|
59
|
+
utf8Bytes: z.ZodNumber;
|
|
60
|
+
estimatedTokens: z.ZodNumber;
|
|
61
|
+
}, z.core.$strict>;
|
|
62
|
+
export type ModelContextTool = z.infer<typeof ModelContextTool>;
|
|
63
|
+
export declare const ModelContextSkillKind: z.ZodEnum<{
|
|
64
|
+
native_tool_skill: "native_tool_skill";
|
|
65
|
+
preference_descriptor: "preference_descriptor";
|
|
66
|
+
runtime_skill: "runtime_skill";
|
|
67
|
+
}>;
|
|
68
|
+
export type ModelContextSkillKind = z.infer<typeof ModelContextSkillKind>;
|
|
69
|
+
export declare const ModelContextSkill: z.ZodObject<{
|
|
70
|
+
kind: z.ZodEnum<{
|
|
71
|
+
native_tool_skill: "native_tool_skill";
|
|
72
|
+
preference_descriptor: "preference_descriptor";
|
|
73
|
+
runtime_skill: "runtime_skill";
|
|
74
|
+
}>;
|
|
75
|
+
name: z.ZodString;
|
|
76
|
+
description: z.ZodString;
|
|
77
|
+
source: z.ZodOptional<z.ZodString>;
|
|
78
|
+
path: z.ZodOptional<z.ZodString>;
|
|
79
|
+
}, z.core.$strict>;
|
|
80
|
+
export type ModelContextSkill = z.infer<typeof ModelContextSkill>;
|
|
81
|
+
export declare const ModelContextTokenCounts: z.ZodObject<{
|
|
82
|
+
instructions: z.ZodNumber;
|
|
83
|
+
tools: z.ZodNumber;
|
|
84
|
+
prefix: z.ZodNumber;
|
|
85
|
+
}, z.core.$strict>;
|
|
86
|
+
export type ModelContextTokenCounts = z.infer<typeof ModelContextTokenCounts>;
|
|
87
|
+
export declare const ModelContextSnapshot: z.ZodObject<{
|
|
88
|
+
version: z.ZodLiteral<1>;
|
|
89
|
+
capturedAt: z.ZodString;
|
|
90
|
+
source: z.ZodLiteral<"model_request">;
|
|
91
|
+
requestIndex: z.ZodNumber;
|
|
92
|
+
instructions: z.ZodString;
|
|
93
|
+
layers: z.ZodArray<z.ZodObject<{
|
|
94
|
+
id: z.ZodEnum<{
|
|
95
|
+
codemode: "codemode";
|
|
96
|
+
genesis_title: "genesis_title";
|
|
97
|
+
git_bindings: "git_bindings";
|
|
98
|
+
operational_contract: "operational_contract";
|
|
99
|
+
persona_and_core: "persona_and_core";
|
|
100
|
+
sandbox_filesystem: "sandbox_filesystem";
|
|
101
|
+
sandbox_preamble: "sandbox_preamble";
|
|
102
|
+
sdk_capability_instructions: "sdk_capability_instructions";
|
|
103
|
+
sent_system_instructions: "sent_system_instructions";
|
|
104
|
+
session_instructions: "session_instructions";
|
|
105
|
+
workspace_governance: "workspace_governance";
|
|
106
|
+
workspace_memory: "workspace_memory";
|
|
107
|
+
}>;
|
|
108
|
+
title: z.ZodString;
|
|
109
|
+
content: z.ZodString;
|
|
110
|
+
utf8Bytes: z.ZodNumber;
|
|
111
|
+
estimatedTokens: z.ZodNumber;
|
|
112
|
+
}, z.core.$strict>>;
|
|
113
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
114
|
+
name: z.ZodString;
|
|
115
|
+
type: z.ZodString;
|
|
116
|
+
visibility: z.ZodEnum<{
|
|
117
|
+
eager: "eager";
|
|
118
|
+
searchable: "searchable";
|
|
119
|
+
}>;
|
|
120
|
+
description: z.ZodOptional<z.ZodString>;
|
|
121
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
122
|
+
schema: z.ZodOptional<z.ZodUnknown>;
|
|
123
|
+
utf8Bytes: z.ZodNumber;
|
|
124
|
+
estimatedTokens: z.ZodNumber;
|
|
125
|
+
}, z.core.$strict>>;
|
|
126
|
+
skills: z.ZodArray<z.ZodObject<{
|
|
127
|
+
kind: z.ZodEnum<{
|
|
128
|
+
native_tool_skill: "native_tool_skill";
|
|
129
|
+
preference_descriptor: "preference_descriptor";
|
|
130
|
+
runtime_skill: "runtime_skill";
|
|
131
|
+
}>;
|
|
132
|
+
name: z.ZodString;
|
|
133
|
+
description: z.ZodString;
|
|
134
|
+
source: z.ZodOptional<z.ZodString>;
|
|
135
|
+
path: z.ZodOptional<z.ZodString>;
|
|
136
|
+
}, z.core.$strict>>;
|
|
137
|
+
tokens: z.ZodObject<{
|
|
138
|
+
instructions: z.ZodNumber;
|
|
139
|
+
tools: z.ZodNumber;
|
|
140
|
+
prefix: z.ZodNumber;
|
|
141
|
+
}, z.core.$strict>;
|
|
142
|
+
}, z.core.$strict>;
|
|
143
|
+
export type ModelContextSnapshot = z.infer<typeof ModelContextSnapshot>;
|
|
144
|
+
export declare const SessionModelContextResponse: z.ZodObject<{
|
|
145
|
+
sessionId: z.ZodString;
|
|
146
|
+
attemptId: z.ZodNullable<z.ZodString>;
|
|
147
|
+
turnId: z.ZodNullable<z.ZodString>;
|
|
148
|
+
snapshot: z.ZodNullable<z.ZodObject<{
|
|
149
|
+
version: z.ZodLiteral<1>;
|
|
150
|
+
capturedAt: z.ZodString;
|
|
151
|
+
source: z.ZodLiteral<"model_request">;
|
|
152
|
+
requestIndex: z.ZodNumber;
|
|
153
|
+
instructions: z.ZodString;
|
|
154
|
+
layers: z.ZodArray<z.ZodObject<{
|
|
155
|
+
id: z.ZodEnum<{
|
|
156
|
+
codemode: "codemode";
|
|
157
|
+
genesis_title: "genesis_title";
|
|
158
|
+
git_bindings: "git_bindings";
|
|
159
|
+
operational_contract: "operational_contract";
|
|
160
|
+
persona_and_core: "persona_and_core";
|
|
161
|
+
sandbox_filesystem: "sandbox_filesystem";
|
|
162
|
+
sandbox_preamble: "sandbox_preamble";
|
|
163
|
+
sdk_capability_instructions: "sdk_capability_instructions";
|
|
164
|
+
sent_system_instructions: "sent_system_instructions";
|
|
165
|
+
session_instructions: "session_instructions";
|
|
166
|
+
workspace_governance: "workspace_governance";
|
|
167
|
+
workspace_memory: "workspace_memory";
|
|
168
|
+
}>;
|
|
169
|
+
title: z.ZodString;
|
|
170
|
+
content: z.ZodString;
|
|
171
|
+
utf8Bytes: z.ZodNumber;
|
|
172
|
+
estimatedTokens: z.ZodNumber;
|
|
173
|
+
}, z.core.$strict>>;
|
|
174
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
175
|
+
name: z.ZodString;
|
|
176
|
+
type: z.ZodString;
|
|
177
|
+
visibility: z.ZodEnum<{
|
|
178
|
+
eager: "eager";
|
|
179
|
+
searchable: "searchable";
|
|
180
|
+
}>;
|
|
181
|
+
description: z.ZodOptional<z.ZodString>;
|
|
182
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
183
|
+
schema: z.ZodOptional<z.ZodUnknown>;
|
|
184
|
+
utf8Bytes: z.ZodNumber;
|
|
185
|
+
estimatedTokens: z.ZodNumber;
|
|
186
|
+
}, z.core.$strict>>;
|
|
187
|
+
skills: z.ZodArray<z.ZodObject<{
|
|
188
|
+
kind: z.ZodEnum<{
|
|
189
|
+
native_tool_skill: "native_tool_skill";
|
|
190
|
+
preference_descriptor: "preference_descriptor";
|
|
191
|
+
runtime_skill: "runtime_skill";
|
|
192
|
+
}>;
|
|
193
|
+
name: z.ZodString;
|
|
194
|
+
description: z.ZodString;
|
|
195
|
+
source: z.ZodOptional<z.ZodString>;
|
|
196
|
+
path: z.ZodOptional<z.ZodString>;
|
|
197
|
+
}, z.core.$strict>>;
|
|
198
|
+
tokens: z.ZodObject<{
|
|
199
|
+
instructions: z.ZodNumber;
|
|
200
|
+
tools: z.ZodNumber;
|
|
201
|
+
prefix: z.ZodNumber;
|
|
202
|
+
}, z.core.$strict>;
|
|
203
|
+
}, z.core.$strict>>;
|
|
204
|
+
}, z.core.$strict>;
|
|
205
|
+
export type SessionModelContextResponse = z.infer<typeof SessionModelContextResponse>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type ModelPickerBillingClass = "opengeni_credits" | "external" | "codex_subscription" | "supergrok_subscription" | "byok" | "organization_byok";
|
|
2
|
+
export type ModelPickerBillingCandidate = {
|
|
3
|
+
source?: string | undefined;
|
|
4
|
+
cost?: "free" | "credits" | "subscription" | "workspace" | "organization" | undefined;
|
|
5
|
+
billing?: {
|
|
6
|
+
upstreamPayer?: string | undefined;
|
|
7
|
+
metering?: string | undefined;
|
|
8
|
+
} | undefined;
|
|
9
|
+
credentialSource?: {
|
|
10
|
+
kind?: string | undefined;
|
|
11
|
+
provider?: string | undefined;
|
|
12
|
+
} | undefined;
|
|
13
|
+
};
|
|
14
|
+
export declare function modelPickerBillingClassFor(model: ModelPickerBillingCandidate): ModelPickerBillingClass;
|
|
15
|
+
export declare function compareModelPickerOrder(left: {
|
|
16
|
+
billingClass: ModelPickerBillingClass;
|
|
17
|
+
selectable: boolean;
|
|
18
|
+
label: string;
|
|
19
|
+
}, right: {
|
|
20
|
+
billingClass: ModelPickerBillingClass;
|
|
21
|
+
selectable: boolean;
|
|
22
|
+
label: string;
|
|
23
|
+
}): number;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/model-picker-order.ts
|
|
2
|
+
var MODEL_PICKER_BILLING_CLASS_ORDER = [
|
|
3
|
+
"opengeni_credits",
|
|
4
|
+
"external",
|
|
5
|
+
"codex_subscription",
|
|
6
|
+
"supergrok_subscription",
|
|
7
|
+
"byok",
|
|
8
|
+
"organization_byok"
|
|
9
|
+
];
|
|
10
|
+
function modelPickerBillingClassFor(model) {
|
|
11
|
+
if (model.cost === "credits") return "opengeni_credits";
|
|
12
|
+
if (model.cost === "workspace") return "byok";
|
|
13
|
+
if (model.cost === "organization") return "organization_byok";
|
|
14
|
+
const source = model.source;
|
|
15
|
+
const credential = model.credentialSource;
|
|
16
|
+
const payer = model.billing?.upstreamPayer;
|
|
17
|
+
if (model.billing?.metering === "external" && payer === "deployment") {
|
|
18
|
+
return "external";
|
|
19
|
+
}
|
|
20
|
+
if (source === "supergrok" || credential?.kind === "connected_subscription" && credential.provider === "xai") {
|
|
21
|
+
return "supergrok_subscription";
|
|
22
|
+
}
|
|
23
|
+
if (source === "codex" || credential?.kind === "connected_subscription" || payer === "connected_subscription") {
|
|
24
|
+
return "codex_subscription";
|
|
25
|
+
}
|
|
26
|
+
if (source === "workspace_gateway" || credential?.kind === "workspace_connection" || payer === "workspace") {
|
|
27
|
+
return "byok";
|
|
28
|
+
}
|
|
29
|
+
if (credential?.kind === "organization_connection" || payer === "organization") {
|
|
30
|
+
return "organization_byok";
|
|
31
|
+
}
|
|
32
|
+
return "opengeni_credits";
|
|
33
|
+
}
|
|
34
|
+
function compareModelPickerOrder(left, right) {
|
|
35
|
+
const classDelta = MODEL_PICKER_BILLING_CLASS_ORDER.indexOf(left.billingClass) - MODEL_PICKER_BILLING_CLASS_ORDER.indexOf(right.billingClass);
|
|
36
|
+
return classDelta || +right.selectable - +left.selectable || (left.label < right.label ? -1 : left.label > right.label ? 1 : 0);
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
compareModelPickerOrder,
|
|
40
|
+
modelPickerBillingClassFor
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=model-picker-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/model-picker-order.ts"],"sourcesContent":["export type ModelPickerBillingClass =\n | \"opengeni_credits\"\n | \"external\"\n | \"codex_subscription\"\n | \"supergrok_subscription\"\n | \"byok\"\n | \"organization_byok\";\n\n// Every closed billing class has a unique first character. Keeping the order\n// as initials avoids duplicating the full public labels in browser bundles.\nconst MODEL_PICKER_BILLING_CLASS_ORDER: readonly ModelPickerBillingClass[] = [\n \"opengeni_credits\",\n \"external\",\n \"codex_subscription\",\n \"supergrok_subscription\",\n \"byok\",\n \"organization_byok\",\n];\n\nexport type ModelPickerBillingCandidate = {\n source?: string | undefined;\n cost?: \"free\" | \"credits\" | \"subscription\" | \"workspace\" | \"organization\" | undefined;\n billing?:\n | {\n upstreamPayer?: string | undefined;\n metering?: string | undefined;\n }\n | undefined;\n credentialSource?:\n | {\n kind?: string | undefined;\n provider?: string | undefined;\n }\n | undefined;\n};\n\nexport function modelPickerBillingClassFor(\n model: ModelPickerBillingCandidate,\n): ModelPickerBillingClass {\n if (model.cost === \"credits\") return \"opengeni_credits\";\n if (model.cost === \"workspace\") return \"byok\";\n if (model.cost === \"organization\") return \"organization_byok\";\n const source = model.source;\n const credential = model.credentialSource;\n const payer = model.billing?.upstreamPayer;\n if (model.billing?.metering === \"external\" && payer === \"deployment\") {\n return \"external\";\n }\n if (\n source === \"supergrok\" ||\n (credential?.kind === \"connected_subscription\" && credential.provider === \"xai\")\n ) {\n return \"supergrok_subscription\";\n }\n if (\n source === \"codex\" ||\n credential?.kind === \"connected_subscription\" ||\n payer === \"connected_subscription\"\n ) {\n return \"codex_subscription\";\n }\n if (\n source === \"workspace_gateway\" ||\n credential?.kind === \"workspace_connection\" ||\n payer === \"workspace\"\n ) {\n return \"byok\";\n }\n if (credential?.kind === \"organization_connection\" || payer === \"organization\") {\n return \"organization_byok\";\n }\n return \"opengeni_credits\";\n}\n\nexport function compareModelPickerOrder(\n left: { billingClass: ModelPickerBillingClass; selectable: boolean; label: string },\n right: { billingClass: ModelPickerBillingClass; selectable: boolean; label: string },\n): number {\n const classDelta =\n MODEL_PICKER_BILLING_CLASS_ORDER.indexOf(left.billingClass) -\n MODEL_PICKER_BILLING_CLASS_ORDER.indexOf(right.billingClass);\n return (\n classDelta ||\n +right.selectable - +left.selectable ||\n (left.label < right.label ? -1 : left.label > right.label ? 1 : 0)\n );\n}\n"],"mappings":";AAUA,IAAM,mCAAuE;AAAA,EAC3E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAmBO,SAAS,2BACd,OACyB;AACzB,MAAI,MAAM,SAAS,UAAW,QAAO;AACrC,MAAI,MAAM,SAAS,YAAa,QAAO;AACvC,MAAI,MAAM,SAAS,eAAgB,QAAO;AAC1C,QAAM,SAAS,MAAM;AACrB,QAAM,aAAa,MAAM;AACzB,QAAM,QAAQ,MAAM,SAAS;AAC7B,MAAI,MAAM,SAAS,aAAa,cAAc,UAAU,cAAc;AACpE,WAAO;AAAA,EACT;AACA,MACE,WAAW,eACV,YAAY,SAAS,4BAA4B,WAAW,aAAa,OAC1E;AACA,WAAO;AAAA,EACT;AACA,MACE,WAAW,WACX,YAAY,SAAS,4BACrB,UAAU,0BACV;AACA,WAAO;AAAA,EACT;AACA,MACE,WAAW,uBACX,YAAY,SAAS,0BACrB,UAAU,aACV;AACA,WAAO;AAAA,EACT;AACA,MAAI,YAAY,SAAS,6BAA6B,UAAU,gBAAgB;AAC9E,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,wBACd,MACA,OACQ;AACR,QAAM,aACJ,iCAAiC,QAAQ,KAAK,YAAY,IAC1D,iCAAiC,QAAQ,MAAM,YAAY;AAC7D,SACE,cACA,CAAC,MAAM,aAAa,CAAC,KAAK,eACzB,KAAK,QAAQ,MAAM,QAAQ,KAAK,KAAK,QAAQ,MAAM,QAAQ,IAAI;AAEpE;","names":[]}
|
|
@@ -517,6 +517,23 @@ export declare const CreateOrganizationResponse: z.ZodObject<{
|
|
|
517
517
|
workspaceId: z.ZodString;
|
|
518
518
|
}, z.core.$strip>;
|
|
519
519
|
export type CreateOrganizationResponse = z.infer<typeof CreateOrganizationResponse>;
|
|
520
|
+
export declare const CreateAdditionalOrganizationRequest: z.ZodObject<{
|
|
521
|
+
name: z.ZodString;
|
|
522
|
+
workspaceName: z.ZodString;
|
|
523
|
+
operationId: z.ZodString;
|
|
524
|
+
}, z.core.$strict>;
|
|
525
|
+
export type CreateAdditionalOrganizationRequest = z.infer<typeof CreateAdditionalOrganizationRequest>;
|
|
526
|
+
export declare const CreateAdditionalOrganizationResponse: z.ZodObject<{
|
|
527
|
+
organization: z.ZodObject<{
|
|
528
|
+
id: z.ZodString;
|
|
529
|
+
name: z.ZodString;
|
|
530
|
+
createdAt: z.ZodString;
|
|
531
|
+
updatedAt: z.ZodString;
|
|
532
|
+
}, z.core.$strip>;
|
|
533
|
+
workspaceId: z.ZodString;
|
|
534
|
+
personalWorkspaceId: z.ZodString;
|
|
535
|
+
}, z.core.$strip>;
|
|
536
|
+
export type CreateAdditionalOrganizationResponse = z.infer<typeof CreateAdditionalOrganizationResponse>;
|
|
520
537
|
export declare const UpdateOrganizationNameRequest: z.ZodObject<{
|
|
521
538
|
name: z.ZodString;
|
|
522
539
|
expectedUpdatedAt: z.ZodString;
|
package/dist/personal-github.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ConnectionMetadata
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-WYBDERIY.js";
|
|
5
|
-
import "./chunk-MRWYRAS5.js";
|
|
6
|
-
import "./chunk-4IVHBXRI.js";
|
|
7
|
-
import "./chunk-CM6BMECR.js";
|
|
8
|
-
import "./chunk-JUFK3T4Q.js";
|
|
3
|
+
} from "./chunk-DPCCW6U7.js";
|
|
9
4
|
import "./chunk-YBW5JSA3.js";
|
|
10
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-NPBM4QSK.js";
|
|
6
|
+
import "./chunk-CM6BMECR.js";
|
|
7
|
+
import "./chunk-MRWYRAS5.js";
|
|
11
8
|
import "./chunk-3SIZGL3O.js";
|
|
9
|
+
import "./chunk-M5ZGRVIQ.js";
|
|
10
|
+
import "./chunk-BCS7WHCK.js";
|
|
11
|
+
import "./chunk-WYBDERIY.js";
|
|
12
|
+
import "./chunk-7ABONTXE.js";
|
|
12
13
|
import "./chunk-NVJMJWLL.js";
|
|
13
14
|
import "./chunk-YRKRZ6OF.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-7Q6HPDY2.js";
|
|
15
16
|
import "./chunk-Y3KNXVTD.js";
|
|
17
|
+
import "./chunk-TXTQIYCV.js";
|
|
16
18
|
import "./chunk-RIY7GYQS.js";
|
|
17
19
|
import "./chunk-D2HKF2EF.js";
|
|
18
20
|
import "./chunk-MYBZRDTY.js";
|
|
19
|
-
import "./chunk-TXTQIYCV.js";
|
|
20
21
|
import "./chunk-PX3VCKAU.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-M5ZGRVIQ.js";
|
|
22
|
+
import "./chunk-JUFK3T4Q.js";
|
|
23
23
|
|
|
24
24
|
// src/personal-github.ts
|
|
25
25
|
import { z } from "zod";
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import type { SessionGoalStatus, SessionStatus } from "./session-topology-primitives.js";
|
|
2
|
+
import type { WorkDiscoveryProjection } from "./work-claims.js";
|
|
3
|
+
import type { Session, SessionQueueSnapshot } from "./index.js";
|
|
4
|
+
/** MCP-only presentation choice. REST/SDK session shapes keep their own defaults. */
|
|
5
|
+
export type SessionMcpDetail = "compact" | "full";
|
|
6
|
+
/** Search evidence is inseparable from matching; presentation opts never weaken search. */
|
|
7
|
+
export declare function sessionMcpIncludesRelatedWork(options: {
|
|
8
|
+
detail?: SessionMcpDetail | undefined;
|
|
9
|
+
includeRelatedWork?: boolean | undefined;
|
|
10
|
+
query?: string | undefined;
|
|
11
|
+
subject?: unknown;
|
|
12
|
+
}): boolean;
|
|
13
|
+
/** A database prefix plus its exact Unicode code-point count, not a JS UTF-16 count. */
|
|
14
|
+
export declare function boundSessionMcpText(value: string | null, maxChars?: number, originalChars?: number | null): {
|
|
15
|
+
text: null;
|
|
16
|
+
truncated: boolean;
|
|
17
|
+
} | {
|
|
18
|
+
text: string;
|
|
19
|
+
truncated: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type SessionMcpControlSource = {
|
|
22
|
+
state: string;
|
|
23
|
+
primaryBlocker: {
|
|
24
|
+
kind: "session" | "workspace";
|
|
25
|
+
sessionId?: string | undefined;
|
|
26
|
+
displayName: string;
|
|
27
|
+
displayNameOriginalChars?: number;
|
|
28
|
+
reason?: string | null;
|
|
29
|
+
} | null;
|
|
30
|
+
additionalBlockerCount: number;
|
|
31
|
+
};
|
|
32
|
+
/** Call only after related-access projection: this helper never grants ancestor access. */
|
|
33
|
+
export declare function compactSessionMcpPause(control: SessionMcpControlSource): {
|
|
34
|
+
state: string;
|
|
35
|
+
source?: {
|
|
36
|
+
kind: "session" | "workspace";
|
|
37
|
+
sessionId?: string;
|
|
38
|
+
displayName: string | null;
|
|
39
|
+
displayNameTruncated?: boolean;
|
|
40
|
+
reason?: string | null;
|
|
41
|
+
reasonTruncated?: boolean;
|
|
42
|
+
};
|
|
43
|
+
additionalBlockerCount?: number;
|
|
44
|
+
} | undefined;
|
|
45
|
+
export type SessionMcpListSource = {
|
|
46
|
+
id: string;
|
|
47
|
+
title: string | null;
|
|
48
|
+
titleOriginalChars?: number | null;
|
|
49
|
+
status: SessionStatus;
|
|
50
|
+
parentSessionId: string | null;
|
|
51
|
+
effectiveControl: SessionMcpControlSource;
|
|
52
|
+
goal: {
|
|
53
|
+
status: SessionGoalStatus;
|
|
54
|
+
text: string;
|
|
55
|
+
textOriginalChars?: number;
|
|
56
|
+
} | null;
|
|
57
|
+
updatedAt: string;
|
|
58
|
+
workDiscovery?: WorkDiscoveryProjection;
|
|
59
|
+
treeStats?: {
|
|
60
|
+
attentionDescendants: number;
|
|
61
|
+
pausedDescendants: number;
|
|
62
|
+
failedDescendants: number;
|
|
63
|
+
truncated: boolean;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
/** Closed allowlist, shared by MCP adapters. Never spread a database/session object. */
|
|
67
|
+
export declare function compactSessionMcpListRow(session: SessionMcpListSource, includeRelatedWork?: boolean): {
|
|
68
|
+
id: string;
|
|
69
|
+
title: string | null;
|
|
70
|
+
status: "cancelled" | "failed" | "idle" | "queued" | "recovering" | "requires_action" | "running" | "waiting_capacity";
|
|
71
|
+
titleTruncated?: boolean;
|
|
72
|
+
parentSessionId?: string;
|
|
73
|
+
goal?: {
|
|
74
|
+
status: "active" | "completed" | "paused";
|
|
75
|
+
summary: string | null;
|
|
76
|
+
summaryTruncated?: boolean;
|
|
77
|
+
};
|
|
78
|
+
pause?: {
|
|
79
|
+
state: string;
|
|
80
|
+
source?: {
|
|
81
|
+
kind: "session" | "workspace";
|
|
82
|
+
sessionId?: string;
|
|
83
|
+
displayName: string | null;
|
|
84
|
+
displayNameTruncated?: boolean;
|
|
85
|
+
reason?: string | null;
|
|
86
|
+
reasonTruncated?: boolean;
|
|
87
|
+
};
|
|
88
|
+
additionalBlockerCount?: number;
|
|
89
|
+
};
|
|
90
|
+
attention?: {
|
|
91
|
+
requiresActionDescendants?: number;
|
|
92
|
+
pausedDescendants?: number;
|
|
93
|
+
failedDescendants?: number;
|
|
94
|
+
truncated?: boolean;
|
|
95
|
+
};
|
|
96
|
+
relatedWork?: {
|
|
97
|
+
claims: {
|
|
98
|
+
id: string;
|
|
99
|
+
sessionId: string;
|
|
100
|
+
subject: {
|
|
101
|
+
namespace: string;
|
|
102
|
+
type: "artifact" | "branch" | "ci_run" | "issue" | "other" | "pull_request" | "release" | "repository";
|
|
103
|
+
canonicalKey: string;
|
|
104
|
+
displayLabel: string | null;
|
|
105
|
+
};
|
|
106
|
+
role: "delivering" | "monitoring" | "reviewing" | "working";
|
|
107
|
+
state: "active" | "released" | "stale" | "superseded";
|
|
108
|
+
revision: number;
|
|
109
|
+
provenance: "explicit_agent" | "session_resource" | "system_lifecycle" | "trusted_integration" | "user_api";
|
|
110
|
+
version: {
|
|
111
|
+
kind: "artifact_version" | "branch_head" | "ci_run" | "git_commit" | "other" | "pull_request_head" | "release_version";
|
|
112
|
+
value: string;
|
|
113
|
+
} | null;
|
|
114
|
+
observedAt: string;
|
|
115
|
+
updatedAt: string;
|
|
116
|
+
settledAt: string | null;
|
|
117
|
+
}[];
|
|
118
|
+
claimsTruncated: boolean;
|
|
119
|
+
match: {
|
|
120
|
+
class: "exact_subject" | "fuzzy" | "goal" | "title";
|
|
121
|
+
field: "claim_key" | "claim_label" | "goal" | "subject" | "title";
|
|
122
|
+
scoreBand: "exact" | "related" | "strong";
|
|
123
|
+
claimId: string | null;
|
|
124
|
+
} | null;
|
|
125
|
+
possibleOverlap: boolean;
|
|
126
|
+
advisoryOnly: true;
|
|
127
|
+
noAdditionalAccess: true;
|
|
128
|
+
};
|
|
129
|
+
updatedAt: string;
|
|
130
|
+
};
|
|
131
|
+
export type SessionMcpMonitoringSource = {
|
|
132
|
+
goal: {
|
|
133
|
+
status: SessionGoalStatus;
|
|
134
|
+
text: string;
|
|
135
|
+
textOriginalChars: number;
|
|
136
|
+
evidence: string | null;
|
|
137
|
+
evidenceOriginalChars: number | null;
|
|
138
|
+
rationale: string | null;
|
|
139
|
+
rationaleOriginalChars: number | null;
|
|
140
|
+
pausedReason: string | null;
|
|
141
|
+
pausedReasonOriginalChars: number | null;
|
|
142
|
+
} | null;
|
|
143
|
+
progress: {
|
|
144
|
+
sequence: number;
|
|
145
|
+
text: string | null;
|
|
146
|
+
originalChars: number | null;
|
|
147
|
+
occurredAt: string;
|
|
148
|
+
} | null;
|
|
149
|
+
wait: {
|
|
150
|
+
reason: string;
|
|
151
|
+
until: string;
|
|
152
|
+
} | null;
|
|
153
|
+
};
|
|
154
|
+
/** Closed management projection shared by adapters; never includes session configuration.
|
|
155
|
+
* Apply target/ancestor authorization projection to session before calling. */
|
|
156
|
+
export declare function compactSessionMcpDetail(session: Session, monitoring: SessionMcpMonitoringSource, queue: SessionQueueSnapshot | null): {
|
|
157
|
+
id: string;
|
|
158
|
+
title: string | null;
|
|
159
|
+
status: "cancelled" | "failed" | "idle" | "queued" | "recovering" | "requires_action" | "running" | "waiting_capacity";
|
|
160
|
+
titleTruncated?: boolean;
|
|
161
|
+
parentSessionId?: string;
|
|
162
|
+
activeTurnId?: string;
|
|
163
|
+
lastSequence: number;
|
|
164
|
+
goal?: {
|
|
165
|
+
status: "active" | "completed" | "paused";
|
|
166
|
+
summary: string | null;
|
|
167
|
+
summaryTruncated?: boolean;
|
|
168
|
+
evidence?: string | null;
|
|
169
|
+
evidenceTruncated?: true;
|
|
170
|
+
pausedReason?: string | null;
|
|
171
|
+
pausedReasonTruncated?: true;
|
|
172
|
+
rationale?: string | null;
|
|
173
|
+
rationaleTruncated?: true;
|
|
174
|
+
};
|
|
175
|
+
progress?: {
|
|
176
|
+
sequence: number;
|
|
177
|
+
text: string | null;
|
|
178
|
+
occurredAt: string;
|
|
179
|
+
textTruncated?: boolean;
|
|
180
|
+
};
|
|
181
|
+
pause?: {
|
|
182
|
+
state: string;
|
|
183
|
+
source?: {
|
|
184
|
+
kind: "session" | "workspace";
|
|
185
|
+
sessionId?: string;
|
|
186
|
+
displayName: string | null;
|
|
187
|
+
displayNameTruncated?: boolean;
|
|
188
|
+
reason?: string | null;
|
|
189
|
+
reasonTruncated?: boolean;
|
|
190
|
+
};
|
|
191
|
+
additionalBlockerCount?: number;
|
|
192
|
+
};
|
|
193
|
+
wait?: {
|
|
194
|
+
reason: string | null;
|
|
195
|
+
until: string;
|
|
196
|
+
reasonTruncated?: boolean;
|
|
197
|
+
};
|
|
198
|
+
queue?: {
|
|
199
|
+
queuedTurns: number;
|
|
200
|
+
pendingInputs: number;
|
|
201
|
+
stoppingPreviousAttempt?: boolean;
|
|
202
|
+
};
|
|
203
|
+
stopping?: {
|
|
204
|
+
attempts?: number;
|
|
205
|
+
backgroundCommands?: number;
|
|
206
|
+
};
|
|
207
|
+
updatedAt: string;
|
|
208
|
+
};
|
|
209
|
+
export type SessionMcpCompactListRow = ReturnType<typeof compactSessionMcpListRow>;
|
|
210
|
+
export type SessionMcpCompactDetail = ReturnType<typeof compactSessionMcpDetail>;
|
package/dist/session-titles.d.ts
CHANGED
|
@@ -30,3 +30,38 @@ export declare function boundAutomaticSessionTitle(value: string): string;
|
|
|
30
30
|
* title (normally {@link AUTOMATIC_SESSION_TITLE_FALLBACK}) in that case.
|
|
31
31
|
*/
|
|
32
32
|
export declare function normalizeAutomaticSessionTitle(value: string): string | null;
|
|
33
|
+
export type SessionDisplayTitleInput = {
|
|
34
|
+
id?: string | null | undefined;
|
|
35
|
+
title?: string | null | undefined;
|
|
36
|
+
titleSource?: "user" | "agent" | null | undefined;
|
|
37
|
+
initialMessage?: string | null | undefined;
|
|
38
|
+
metadata?: Readonly<Record<string, unknown>> | undefined;
|
|
39
|
+
};
|
|
40
|
+
export type SessionDisplayTitleOptions = {
|
|
41
|
+
/** Optional metadata fields to try before the opening-prompt preview. */
|
|
42
|
+
metadataKeys?: readonly string[] | undefined;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Derive a bounded, sensitive-safe preview from the opening prompt.
|
|
46
|
+
*
|
|
47
|
+
* Unsafe leading lines are skipped instead of forcing the whole session back
|
|
48
|
+
* to a generic label. This covers prompts that begin with a pasted URL or
|
|
49
|
+
* identifier followed by an ordinary natural-language request on the next
|
|
50
|
+
* line, without putting the rejected value into navigation surfaces.
|
|
51
|
+
*/
|
|
52
|
+
export declare function deriveAutomaticSessionTitlePreview(value: unknown): string | null;
|
|
53
|
+
/**
|
|
54
|
+
* Whether the durable title still represents the automatic-title pending state.
|
|
55
|
+
* A user-authored title always wins, even when its literal value is the marker.
|
|
56
|
+
*/
|
|
57
|
+
export declare function sessionTitleIsPending(input: SessionDisplayTitleInput): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Derive the title a human-facing client should display for a session.
|
|
60
|
+
*
|
|
61
|
+
* A semantic agent title or human rename wins. While automatic naming is still
|
|
62
|
+
* pending, clients show a short, sensitive-safe preview of the opening prompt.
|
|
63
|
+
* If no safe prompt text exists, a UUID-derived reference keeps real sessions
|
|
64
|
+
* distinguishable without exposing prompt bytes. The durable pending marker is
|
|
65
|
+
* therefore an internal lifecycle value rather than the ordinary visible name.
|
|
66
|
+
*/
|
|
67
|
+
export declare function deriveSessionDisplayTitle(input: SessionDisplayTitleInput, options?: SessionDisplayTitleOptions): string;
|