@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.
Files changed (51) hide show
  1. package/dist/artifacts.d.ts +121 -0
  2. package/dist/atlassian.js +11 -11
  3. package/dist/{chunk-4IVHBXRI.js → chunk-7ABONTXE.js} +42 -2
  4. package/dist/chunk-7ABONTXE.js.map +1 -0
  5. package/dist/{chunk-7RMTKFJW.js → chunk-7Q6HPDY2.js} +8 -8
  6. package/dist/{chunk-AWNGBY5I.js → chunk-DPCCW6U7.js} +7395 -6619
  7. package/dist/chunk-DPCCW6U7.js.map +1 -0
  8. package/dist/{chunk-N6GRVXAJ.js → chunk-NPBM4QSK.js} +2 -2
  9. package/dist/connection-authority.js +11 -11
  10. package/dist/editable-artifact-codec-registry.js +2 -2
  11. package/dist/editable-artifact-live.js +2 -2
  12. package/dist/editable-artifact-serialized-commit.js +3 -3
  13. package/dist/editable-artifacts.js +13 -13
  14. package/dist/github-repository-contracts.d.ts +36 -0
  15. package/dist/github-repository-contracts.js +59 -0
  16. package/dist/github-repository-contracts.js.map +1 -0
  17. package/dist/github-repository.d.ts +14 -0
  18. package/dist/github-repository.js +36 -0
  19. package/dist/github-repository.js.map +1 -0
  20. package/dist/google-drive.js +12 -12
  21. package/dist/index.d.ts +809 -70
  22. package/dist/index.js +299 -135
  23. package/dist/mcp-oauth.d.ts +71 -0
  24. package/dist/model-context-inspector.d.ts +205 -0
  25. package/dist/model-picker-order.d.ts +23 -0
  26. package/dist/model-picker-order.js +42 -0
  27. package/dist/model-picker-order.js.map +1 -0
  28. package/dist/organization-membership-lifecycle.d.ts +17 -0
  29. package/dist/personal-github.js +11 -11
  30. package/dist/session-mcp-projections.d.ts +210 -0
  31. package/dist/session-titles.d.ts +35 -0
  32. package/dist/session-titles.js +9 -3
  33. package/dist/tool-catalog.d.ts +271 -0
  34. package/dist/workspace-learning-policy.d.ts +1 -1
  35. package/package.json +13 -1
  36. package/src/artifacts.ts +111 -1
  37. package/src/github-repository-contracts.ts +85 -0
  38. package/src/github-repository.ts +59 -0
  39. package/src/index.ts +486 -52
  40. package/src/mcp-oauth.ts +68 -0
  41. package/src/model-context-inspector.ts +104 -0
  42. package/src/model-picker-order.ts +87 -0
  43. package/src/organization-membership-lifecycle.ts +20 -0
  44. package/src/session-mcp-projections.ts +268 -0
  45. package/src/session-titles.ts +100 -0
  46. package/src/tool-catalog.ts +136 -0
  47. package/src/workspace-learning-policy.ts +4 -3
  48. package/dist/chunk-4IVHBXRI.js.map +0 -1
  49. package/dist/chunk-AWNGBY5I.js.map +0 -1
  50. /package/dist/{chunk-7RMTKFJW.js.map → chunk-7Q6HPDY2.js.map} +0 -0
  51. /package/dist/{chunk-N6GRVXAJ.js.map → chunk-NPBM4QSK.js.map} +0 -0
@@ -1,5 +1,8 @@
1
1
  import { z } from "zod";
2
2
  export declare const WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES: number;
3
+ export declare const WORKSPACE_ARTIFACT_SOURCE_MAX_UTF8_BYTES: number;
4
+ export declare const WORKSPACE_ARTIFACT_SOURCE_MAX_FILES = 128;
5
+ export declare const WORKSPACE_ARTIFACT_REQUESTED_TOOLS_MAX = 128;
3
6
  export declare const WORKSPACE_ARTIFACT_TITLE_MAX_CHARS = 120;
4
7
  export declare const WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS = 2000;
5
8
  export declare const WORKSPACE_ARTIFACT_LIST_MAX = 100;
@@ -12,6 +15,27 @@ export declare const WorkspaceArtifactStatus: z.ZodEnum<{
12
15
  archived: "archived";
13
16
  }>;
14
17
  export type WorkspaceArtifactStatus = z.infer<typeof WorkspaceArtifactStatus>;
18
+ export declare const WorkspaceArtifactSourcePath: z.ZodString;
19
+ export type WorkspaceArtifactSourcePath = z.infer<typeof WorkspaceArtifactSourcePath>;
20
+ export declare const WorkspaceArtifactSourceFile: z.ZodObject<{
21
+ path: z.ZodString;
22
+ content: z.ZodString;
23
+ }, z.core.$strict>;
24
+ export type WorkspaceArtifactSourceFile = z.infer<typeof WorkspaceArtifactSourceFile>;
25
+ /** Retained editable source; the published runtime remains one exact HTML document. */
26
+ export declare const WorkspaceArtifactSourceBundle: z.ZodObject<{
27
+ entrypoint: z.ZodString;
28
+ files: z.ZodArray<z.ZodObject<{
29
+ path: z.ZodString;
30
+ content: z.ZodString;
31
+ }, z.core.$strict>>;
32
+ }, z.core.$strict>;
33
+ export type WorkspaceArtifactSourceBundle = z.infer<typeof WorkspaceArtifactSourceBundle>;
34
+ export declare const WorkspaceArtifactRequestedTools: z.ZodArray<z.ZodObject<{
35
+ serverId: z.ZodString;
36
+ toolName: z.ZodString;
37
+ }, z.core.$strict>>;
38
+ export type WorkspaceArtifactRequestedTools = z.infer<typeof WorkspaceArtifactRequestedTools>;
15
39
  export declare const WorkspaceArtifactVersion: z.ZodObject<{
16
40
  id: z.ZodString;
17
41
  accountId: z.ZodString;
@@ -21,6 +45,12 @@ export declare const WorkspaceArtifactVersion: z.ZodObject<{
21
45
  contentType: z.ZodLiteral<"text/html">;
22
46
  contentSha256: z.ZodString;
23
47
  sizeBytes: z.ZodNumber;
48
+ sourceSha256: z.ZodNullable<z.ZodString>;
49
+ sourceSizeBytes: z.ZodNullable<z.ZodNumber>;
50
+ requestedTools: z.ZodArray<z.ZodObject<{
51
+ serverId: z.ZodString;
52
+ toolName: z.ZodString;
53
+ }, z.core.$strict>>;
24
54
  sourceSessionId: z.ZodNullable<z.ZodString>;
25
55
  sourceTurnId: z.ZodNullable<z.ZodString>;
26
56
  sourceAttemptId: z.ZodNullable<z.ZodString>;
@@ -49,6 +79,12 @@ export declare const WorkspaceArtifact: z.ZodObject<{
49
79
  contentType: z.ZodLiteral<"text/html">;
50
80
  contentSha256: z.ZodString;
51
81
  sizeBytes: z.ZodNumber;
82
+ sourceSha256: z.ZodNullable<z.ZodString>;
83
+ sourceSizeBytes: z.ZodNullable<z.ZodNumber>;
84
+ requestedTools: z.ZodArray<z.ZodObject<{
85
+ serverId: z.ZodString;
86
+ toolName: z.ZodString;
87
+ }, z.core.$strict>>;
52
88
  sourceSessionId: z.ZodNullable<z.ZodString>;
53
89
  sourceTurnId: z.ZodNullable<z.ZodString>;
54
90
  sourceAttemptId: z.ZodNullable<z.ZodString>;
@@ -62,7 +98,9 @@ export declare const WorkspaceArtifact: z.ZodObject<{
62
98
  }, z.core.$strip>;
63
99
  export type WorkspaceArtifact = z.infer<typeof WorkspaceArtifact>;
64
100
  export declare const WorkspaceArtifactEventType: z.ZodEnum<{
101
+ archived: "archived";
65
102
  published: "published";
103
+ restored: "restored";
66
104
  rolled_back: "rolled_back";
67
105
  }>;
68
106
  export type WorkspaceArtifactEventType = z.infer<typeof WorkspaceArtifactEventType>;
@@ -72,7 +110,9 @@ export declare const WorkspaceArtifactEvent: z.ZodObject<{
72
110
  workspaceId: z.ZodString;
73
111
  artifactId: z.ZodString;
74
112
  type: z.ZodEnum<{
113
+ archived: "archived";
75
114
  published: "published";
115
+ restored: "restored";
76
116
  rolled_back: "rolled_back";
77
117
  }>;
78
118
  fromVersionId: z.ZodNullable<z.ZodString>;
@@ -89,6 +129,10 @@ export type WorkspaceArtifactEvent = z.infer<typeof WorkspaceArtifactEvent>;
89
129
  export declare const WorkspaceArtifactListQuery: z.ZodObject<{
90
130
  limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
91
131
  cursor: z.ZodOptional<z.ZodString>;
132
+ status: z.ZodOptional<z.ZodEnum<{
133
+ active: "active";
134
+ archived: "archived";
135
+ }>>;
92
136
  }, z.core.$strip>;
93
137
  export type WorkspaceArtifactListQuery = z.infer<typeof WorkspaceArtifactListQuery>;
94
138
  export declare const WorkspaceArtifactListResponse: z.ZodObject<{
@@ -112,6 +156,12 @@ export declare const WorkspaceArtifactListResponse: z.ZodObject<{
112
156
  contentType: z.ZodLiteral<"text/html">;
113
157
  contentSha256: z.ZodString;
114
158
  sizeBytes: z.ZodNumber;
159
+ sourceSha256: z.ZodNullable<z.ZodString>;
160
+ sourceSizeBytes: z.ZodNullable<z.ZodNumber>;
161
+ requestedTools: z.ZodArray<z.ZodObject<{
162
+ serverId: z.ZodString;
163
+ toolName: z.ZodString;
164
+ }, z.core.$strict>>;
115
165
  sourceSessionId: z.ZodNullable<z.ZodString>;
116
166
  sourceTurnId: z.ZodNullable<z.ZodString>;
117
167
  sourceAttemptId: z.ZodNullable<z.ZodString>;
@@ -148,6 +198,12 @@ export declare const WorkspaceArtifactDetailResponse: z.ZodObject<{
148
198
  contentType: z.ZodLiteral<"text/html">;
149
199
  contentSha256: z.ZodString;
150
200
  sizeBytes: z.ZodNumber;
201
+ sourceSha256: z.ZodNullable<z.ZodString>;
202
+ sourceSizeBytes: z.ZodNullable<z.ZodNumber>;
203
+ requestedTools: z.ZodArray<z.ZodObject<{
204
+ serverId: z.ZodString;
205
+ toolName: z.ZodString;
206
+ }, z.core.$strict>>;
151
207
  sourceSessionId: z.ZodNullable<z.ZodString>;
152
208
  sourceTurnId: z.ZodNullable<z.ZodString>;
153
209
  sourceAttemptId: z.ZodNullable<z.ZodString>;
@@ -168,6 +224,12 @@ export declare const WorkspaceArtifactDetailResponse: z.ZodObject<{
168
224
  contentType: z.ZodLiteral<"text/html">;
169
225
  contentSha256: z.ZodString;
170
226
  sizeBytes: z.ZodNumber;
227
+ sourceSha256: z.ZodNullable<z.ZodString>;
228
+ sourceSizeBytes: z.ZodNullable<z.ZodNumber>;
229
+ requestedTools: z.ZodArray<z.ZodObject<{
230
+ serverId: z.ZodString;
231
+ toolName: z.ZodString;
232
+ }, z.core.$strict>>;
171
233
  sourceSessionId: z.ZodNullable<z.ZodString>;
172
234
  sourceTurnId: z.ZodNullable<z.ZodString>;
173
235
  sourceAttemptId: z.ZodNullable<z.ZodString>;
@@ -181,7 +243,9 @@ export declare const WorkspaceArtifactDetailResponse: z.ZodObject<{
181
243
  workspaceId: z.ZodString;
182
244
  artifactId: z.ZodString;
183
245
  type: z.ZodEnum<{
246
+ archived: "archived";
184
247
  published: "published";
248
+ restored: "restored";
185
249
  rolled_back: "rolled_back";
186
250
  }>;
187
251
  fromVersionId: z.ZodNullable<z.ZodString>;
@@ -204,6 +268,17 @@ export declare const CreateWorkspaceArtifactRequest: z.ZodObject<{
204
268
  title: z.ZodString;
205
269
  description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
206
270
  html: z.ZodString;
271
+ source: z.ZodOptional<z.ZodObject<{
272
+ entrypoint: z.ZodString;
273
+ files: z.ZodArray<z.ZodObject<{
274
+ path: z.ZodString;
275
+ content: z.ZodString;
276
+ }, z.core.$strict>>;
277
+ }, z.core.$strict>>;
278
+ requestedTools: z.ZodOptional<z.ZodArray<z.ZodObject<{
279
+ serverId: z.ZodString;
280
+ toolName: z.ZodString;
281
+ }, z.core.$strict>>>;
207
282
  idempotencyKey: z.ZodString;
208
283
  }, z.core.$strip>;
209
284
  export type CreateWorkspaceArtifactRequest = z.infer<typeof CreateWorkspaceArtifactRequest>;
@@ -211,6 +286,17 @@ export declare const PublishWorkspaceArtifactVersionRequest: z.ZodObject<{
211
286
  title: z.ZodOptional<z.ZodString>;
212
287
  description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
213
288
  html: z.ZodString;
289
+ source: z.ZodOptional<z.ZodObject<{
290
+ entrypoint: z.ZodString;
291
+ files: z.ZodArray<z.ZodObject<{
292
+ path: z.ZodString;
293
+ content: z.ZodString;
294
+ }, z.core.$strict>>;
295
+ }, z.core.$strict>>;
296
+ requestedTools: z.ZodOptional<z.ZodArray<z.ZodObject<{
297
+ serverId: z.ZodString;
298
+ toolName: z.ZodString;
299
+ }, z.core.$strict>>>;
214
300
  expectedCurrentVersionId: z.ZodString;
215
301
  idempotencyKey: z.ZodString;
216
302
  }, z.core.$strip>;
@@ -222,6 +308,16 @@ export declare const RollbackWorkspaceArtifactRequest: z.ZodObject<{
222
308
  idempotencyKey: z.ZodString;
223
309
  }, z.core.$strip>;
224
310
  export type RollbackWorkspaceArtifactRequest = z.infer<typeof RollbackWorkspaceArtifactRequest>;
311
+ export declare const SetWorkspaceArtifactStatusRequest: z.ZodObject<{
312
+ status: z.ZodEnum<{
313
+ active: "active";
314
+ archived: "archived";
315
+ }>;
316
+ expectedCurrentVersionId: z.ZodString;
317
+ reason: z.ZodString;
318
+ idempotencyKey: z.ZodString;
319
+ }, z.core.$strip>;
320
+ export type SetWorkspaceArtifactStatusRequest = z.infer<typeof SetWorkspaceArtifactStatusRequest>;
225
321
  export declare const WorkspaceArtifactMutationResponse: z.ZodObject<{
226
322
  artifact: z.ZodObject<{
227
323
  id: z.ZodString;
@@ -243,6 +339,12 @@ export declare const WorkspaceArtifactMutationResponse: z.ZodObject<{
243
339
  contentType: z.ZodLiteral<"text/html">;
244
340
  contentSha256: z.ZodString;
245
341
  sizeBytes: z.ZodNumber;
342
+ sourceSha256: z.ZodNullable<z.ZodString>;
343
+ sourceSizeBytes: z.ZodNullable<z.ZodNumber>;
344
+ requestedTools: z.ZodArray<z.ZodObject<{
345
+ serverId: z.ZodString;
346
+ toolName: z.ZodString;
347
+ }, z.core.$strict>>;
246
348
  sourceSessionId: z.ZodNullable<z.ZodString>;
247
349
  sourceTurnId: z.ZodNullable<z.ZodString>;
248
350
  sourceAttemptId: z.ZodNullable<z.ZodString>;
@@ -263,6 +365,12 @@ export declare const WorkspaceArtifactMutationResponse: z.ZodObject<{
263
365
  contentType: z.ZodLiteral<"text/html">;
264
366
  contentSha256: z.ZodString;
265
367
  sizeBytes: z.ZodNumber;
368
+ sourceSha256: z.ZodNullable<z.ZodString>;
369
+ sourceSizeBytes: z.ZodNullable<z.ZodNumber>;
370
+ requestedTools: z.ZodArray<z.ZodObject<{
371
+ serverId: z.ZodString;
372
+ toolName: z.ZodString;
373
+ }, z.core.$strict>>;
266
374
  sourceSessionId: z.ZodNullable<z.ZodString>;
267
375
  sourceTurnId: z.ZodNullable<z.ZodString>;
268
376
  sourceAttemptId: z.ZodNullable<z.ZodString>;
@@ -276,7 +384,9 @@ export declare const WorkspaceArtifactMutationResponse: z.ZodObject<{
276
384
  workspaceId: z.ZodString;
277
385
  artifactId: z.ZodString;
278
386
  type: z.ZodEnum<{
387
+ archived: "archived";
279
388
  published: "published";
389
+ restored: "restored";
280
390
  rolled_back: "rolled_back";
281
391
  }>;
282
392
  fromVersionId: z.ZodNullable<z.ZodString>;
@@ -298,6 +408,17 @@ export declare const WorkspaceArtifactContentResponse: z.ZodObject<{
298
408
  contentType: z.ZodLiteral<"text/html">;
299
409
  contentSha256: z.ZodString;
300
410
  html: z.ZodString;
411
+ source: z.ZodObject<{
412
+ entrypoint: z.ZodString;
413
+ files: z.ZodArray<z.ZodObject<{
414
+ path: z.ZodString;
415
+ content: z.ZodString;
416
+ }, z.core.$strict>>;
417
+ }, z.core.$strict>;
418
+ requestedTools: z.ZodArray<z.ZodObject<{
419
+ serverId: z.ZodString;
420
+ toolName: z.ZodString;
421
+ }, z.core.$strict>>;
301
422
  }, z.core.$strip>;
302
423
  export type WorkspaceArtifactContentResponse = z.infer<typeof WorkspaceArtifactContentResponse>;
303
424
  export declare function normalizeWorkspaceArtifactSlug(value: string): string;
package/dist/atlassian.js CHANGED
@@ -17,26 +17,26 @@ import {
17
17
  AtlassianSyncCadence,
18
18
  SaveAtlassianSourcesRequest,
19
19
  atlassianScopesAllowRead
20
- } from "./chunk-AWNGBY5I.js";
21
- import "./chunk-WYBDERIY.js";
22
- import "./chunk-MRWYRAS5.js";
23
- import "./chunk-4IVHBXRI.js";
24
- import "./chunk-CM6BMECR.js";
25
- import "./chunk-JUFK3T4Q.js";
20
+ } from "./chunk-DPCCW6U7.js";
26
21
  import "./chunk-YBW5JSA3.js";
27
- import "./chunk-N6GRVXAJ.js";
22
+ import "./chunk-NPBM4QSK.js";
23
+ import "./chunk-CM6BMECR.js";
24
+ import "./chunk-MRWYRAS5.js";
28
25
  import "./chunk-3SIZGL3O.js";
26
+ import "./chunk-M5ZGRVIQ.js";
27
+ import "./chunk-BCS7WHCK.js";
28
+ import "./chunk-WYBDERIY.js";
29
+ import "./chunk-7ABONTXE.js";
29
30
  import "./chunk-NVJMJWLL.js";
30
31
  import "./chunk-YRKRZ6OF.js";
31
- import "./chunk-7RMTKFJW.js";
32
+ import "./chunk-7Q6HPDY2.js";
32
33
  import "./chunk-Y3KNXVTD.js";
34
+ import "./chunk-TXTQIYCV.js";
33
35
  import "./chunk-RIY7GYQS.js";
34
36
  import "./chunk-D2HKF2EF.js";
35
37
  import "./chunk-MYBZRDTY.js";
36
- import "./chunk-TXTQIYCV.js";
37
38
  import "./chunk-PX3VCKAU.js";
38
- import "./chunk-BCS7WHCK.js";
39
- import "./chunk-M5ZGRVIQ.js";
39
+ import "./chunk-JUFK3T4Q.js";
40
40
  export {
41
41
  ATLASSIAN_CREDENTIAL_LABEL,
42
42
  ATLASSIAN_CREDENTIAL_ROLE,
@@ -2,6 +2,8 @@
2
2
  var SESSION_TITLE_MAX_CHARACTERS = 200;
3
3
  var AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES = 80;
4
4
  var AUTOMATIC_SESSION_TITLE_FALLBACK = "New conversation";
5
+ var PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS = 4096;
6
+ var SESSION_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
5
7
  var titleSegmenter;
6
8
  var KNOWN_SENSITIVE_VALUE_PATTERNS = [
7
9
  /-----BEGIN [A-Z ]*PRIVATE KEY-----/iu,
@@ -209,6 +211,41 @@ function normalizeAutomaticSessionTitle(value) {
209
211
  if (!title || !hasVisibleAutomaticTitleContent(title)) return null;
210
212
  return title;
211
213
  }
214
+ function deriveAutomaticSessionTitlePreview(value) {
215
+ if (typeof value !== "string") return null;
216
+ const lines = value.slice(0, PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS).replace(/[\u0000-\u001f\u007f-\u009f]+/gu, "\n").split(/\n+/u);
217
+ for (const candidate of lines) {
218
+ const line = candidate.trim();
219
+ if (!line || containsSensitiveAutomaticSessionTitleValue(line)) continue;
220
+ const preview = boundAutomaticSessionTitle(line.replace(/\s+/gu, " ")).replace(/[\s.!?,;:\-–—]+$/u, "").trim();
221
+ if (preview) return preview;
222
+ }
223
+ return null;
224
+ }
225
+ function automaticSessionReferenceTitle(id) {
226
+ const sessionId = typeof id === "string" ? id.trim() : "";
227
+ return SESSION_ID_PATTERN.test(sessionId) ? `Conversation ${sessionId.slice(0, 13)}` : AUTOMATIC_SESSION_TITLE_FALLBACK;
228
+ }
229
+ function sessionTitleIsPending(input) {
230
+ const title = input.title?.trim() ?? "";
231
+ return input.titleSource !== "user" && (!title || title === AUTOMATIC_SESSION_TITLE_FALLBACK);
232
+ }
233
+ function deriveSessionDisplayTitle(input, options = {}) {
234
+ const title = input.title?.trim() ?? "";
235
+ if (input.titleSource === "user") {
236
+ return title || automaticSessionReferenceTitle(input.id);
237
+ }
238
+ if (title && !sessionTitleIsPending(input)) {
239
+ return title;
240
+ }
241
+ for (const key of options.metadataKeys ?? []) {
242
+ const value = input.metadata?.[key];
243
+ if (typeof value === "string" && value.trim().length > 0) {
244
+ return value.trim();
245
+ }
246
+ }
247
+ return deriveAutomaticSessionTitlePreview(input.initialMessage) ?? automaticSessionReferenceTitle(input.id);
248
+ }
212
249
 
213
250
  export {
214
251
  SESSION_TITLE_MAX_CHARACTERS,
@@ -216,6 +253,9 @@ export {
216
253
  AUTOMATIC_SESSION_TITLE_FALLBACK,
217
254
  containsSensitiveAutomaticSessionTitleValue,
218
255
  boundAutomaticSessionTitle,
219
- normalizeAutomaticSessionTitle
256
+ normalizeAutomaticSessionTitle,
257
+ deriveAutomaticSessionTitlePreview,
258
+ sessionTitleIsPending,
259
+ deriveSessionDisplayTitle
220
260
  };
221
- //# sourceMappingURL=chunk-4IVHBXRI.js.map
261
+ //# sourceMappingURL=chunk-7ABONTXE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/session-titles.ts"],"sourcesContent":["/** Human-authored session titles keep the existing public API ceiling. */\nexport const SESSION_TITLE_MAX_CHARACTERS = 200;\n\n/**\n * Automatic titles are intentionally much shorter than the manual rename\n * ceiling. This is measured in grapheme clusters so emoji and combining text\n * are never split into malformed display strings.\n */\nexport const AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES = 80;\n\n/**\n * Safe durable title used until semantic generation succeeds. It contains no\n * user prompt bytes, so provider failure/offline operation cannot leak a\n * credential or leave a raw prompt prefix in navigation surfaces.\n */\nexport const AUTOMATIC_SESSION_TITLE_FALLBACK = \"New conversation\";\n\n// Session creation accepts a body far larger than a navigation label. Bound\n// the source before any replace/split/normalization so a persisted large prompt\n// cannot amplify memory or CPU on every client render.\nconst PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS = 4_096;\n\nconst SESSION_ID_PATTERN =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;\n\nlet titleSegmenter: Intl.Segmenter | null | undefined;\n\nconst KNOWN_SENSITIVE_VALUE_PATTERNS = [\n /-----BEGIN [A-Z ]*PRIVATE KEY-----/iu,\n /\\bBearer\\s+[A-Za-z0-9._~+/=-]{8,}/iu,\n /\\b(?:sk-(?:proj-)?|gh[oprsu]_|github_pat_|glpat-|xox[baprs]-)[A-Za-z0-9_-]{8,}/iu,\n /\\bAKIA[0-9A-Z]{16}\\b/u,\n /\\bAIza[0-9A-Za-z_-]{20,}\\b/u,\n /\\beyJ[A-Za-z0-9_-]+\\.eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b/u,\n /[?&](?:access_token|api_key|apikey|password|secret|token)=[^\\s&#]+/iu,\n] as const;\n\nconst URI_SCHEME_CANDIDATE_PATTERN = /\\b[a-z][a-z0-9+.-]*:\\S+/giu;\nconst WINDOWS_DRIVE_PATH_PATTERN = /^[a-z]:[\\\\/](?![\\\\/])[^:]*$/iu;\n\nconst SCHEMELESS_HOST_CANDIDATE_PATTERN =\n /\\b(?:www\\.)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?(?::\\d{1,5})?(?:[/?#][^\\s]*)?/giu;\n\nconst SCHEMELESS_LOCAL_NETWORK_PATTERNS = [\n /\\blocalhost(?:(?::\\d{1,5})(?:[/?#][^\\s]*)?|[/?#][^\\s]*)/iu,\n /\\b(?:(?:25[0-5]|2[0-4]\\d|1?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1?\\d?\\d)(?:(?::\\d{1,5})(?:[/?#][^\\s]*)?|[/?#][^\\s]*)/u,\n /\\[(?=[0-9a-f:.]*:[0-9a-f:.]*\\])[0-9a-f:.]+\\](?:(?::\\d{1,5})(?:[/?#][^\\s]*)?|[/?#][^\\s]*)/iu,\n] as const;\n\nconst FILE_LIKE_HOST_SUFFIXES = new Set([\n \"css\",\n \"html\",\n \"js\",\n \"json\",\n \"jsx\",\n \"lock\",\n \"md\",\n \"sql\",\n \"toml\",\n \"ts\",\n \"tsx\",\n \"xml\",\n \"yaml\",\n \"yml\",\n]);\n\n// These authorities are established framework/namespace notation whose exact\n// casing is meaningful. Keep this exception deliberately narrow: generic\n// PascalCase or uppercase authorities remain host-like because an uppercase\n// real domain (for example MICROSOFT.COM/Admin) must not bypass the URL gate.\nconst DOTTED_TECHNOLOGY_PATH_AUTHORITIES = new Set([\n \"ASP.NET\",\n \"AWS.SDK\",\n \"Microsoft.Extensions\",\n \"System.IO\",\n]);\n\nconst SECRET_ASSIGNMENT_CANDIDATE_PATTERN =\n /(?:^|[^A-Za-z0-9])(?:(['\"])([A-Za-z][A-Za-z0-9_. -]*)\\1|([A-Za-z][A-Za-z0-9_.-]*))\\s*[=:]\\s*[^\\s,;]+/gu;\n\nconst SECRET_LABEL_ASSIGNMENT_PATTERN =\n /\\b(?:api[ _-]?key|access[ _-]?token|auth[ _-]?token|credential|credentials|password|passwd|private[ _-]?key|secret|token)\\b\\s*[=:]\\s*[^\\s,;]+/iu;\n\nconst SENSITIVE_ASSIGNMENT_KEY_SUFFIXES = new Set([\n \"credential\",\n \"credentials\",\n \"password\",\n \"passwd\",\n \"secret\",\n \"token\",\n]);\n\nconst COMPACT_SENSITIVE_ASSIGNMENT_KEY_SUFFIXES = [\n \"apikey\",\n \"accesskey\",\n \"accesskeyid\",\n \"accesstoken\",\n \"authtoken\",\n \"credential\",\n \"credentials\",\n \"password\",\n \"passwd\",\n \"privatekey\",\n \"secret\",\n \"secretkey\",\n \"token\",\n] as const;\n\nconst SENSITIVE_ASSIGNMENT_KEY_WORD_SUFFIXES = [\n [\"api\", \"key\"],\n [\"access\", \"key\"],\n [\"access\", \"key\", \"id\"],\n [\"auth\", \"key\"],\n [\"private\", \"key\"],\n [\"secret\", \"key\"],\n] as const;\n\nfunction hasWordSuffix(words: readonly string[], suffix: readonly string[]): boolean {\n if (words.length < suffix.length) return false;\n const offset = words.length - suffix.length;\n return suffix.every((word, index) => words[offset + index] === word);\n}\n\nfunction containsSensitiveAssignment(value: string): boolean {\n for (const match of value.matchAll(SECRET_ASSIGNMENT_CANDIDATE_PATTERN)) {\n const key = match[2] ?? match[3];\n if (!key) continue;\n const words = key\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\")\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter(Boolean);\n const last = words.at(-1);\n if (last && SENSITIVE_ASSIGNMENT_KEY_SUFFIXES.has(last)) return true;\n if (last && COMPACT_SENSITIVE_ASSIGNMENT_KEY_SUFFIXES.some((suffix) => last.endsWith(suffix))) {\n return true;\n }\n if (SENSITIVE_ASSIGNMENT_KEY_WORD_SUFFIXES.some((suffix) => hasWordSuffix(words, suffix))) {\n return true;\n }\n }\n return false;\n}\n\nfunction containsUriScheme(value: string): boolean {\n for (const match of value.matchAll(URI_SCHEME_CANDIDATE_PATTERN)) {\n // A Windows drive path is the one scheme-shaped token accepted here. Keep\n // the exception exact: one separator after the drive letter and no later\n // colon, so x://host and a nested scheme remain rejected.\n if (!WINDOWS_DRIVE_PATH_PATTERN.test(match[0])) return true;\n }\n return false;\n}\n\nfunction isDottedTechnologyPath(candidate: string): boolean {\n if (/[?:#]/u.test(candidate)) return false;\n const [authority, ...pathSegments] = candidate.split(\"/\");\n if (!authority || pathSegments.length === 0 || pathSegments.some((segment) => !segment)) {\n return false;\n }\n if (\n !DOTTED_TECHNOLOGY_PATH_AUTHORITIES.has(authority) ||\n pathSegments.some((segment) => !/^[A-Z][A-Za-z0-9_-]*$/u.test(segment))\n ) {\n return false;\n }\n return true;\n}\n\nfunction containsSchemelessUrl(value: string): boolean {\n if (SCHEMELESS_LOCAL_NETWORK_PATTERNS.some((pattern) => pattern.test(value))) return true;\n\n for (const match of value.matchAll(SCHEMELESS_HOST_CANDIDATE_PATTERN)) {\n const candidate = match[0];\n if (candidate.toLowerCase().startsWith(\"www.\")) return true;\n if (!/[/?#]/u.test(candidate)) continue;\n\n const authority = candidate.split(/[/?#]/u, 1)[0] ?? \"\";\n const hostname = authority.replace(/:\\d{1,5}$/u, \"\");\n const suffix = hostname.split(\".\").at(-1)?.toLowerCase();\n if (suffix && FILE_LIKE_HOST_SUFFIXES.has(suffix)) continue;\n if (isDottedTechnologyPath(candidate)) continue;\n return true;\n }\n return false;\n}\n\nconst OPAQUE_IDENTIFIER_PATTERN =\n /\\b(?=[A-Za-z0-9_-]{32,}\\b)(?=[A-Za-z0-9_-]*[A-Za-z])(?=[A-Za-z0-9_-]*\\d)[A-Za-z0-9_-]+\\b/u;\n\nconst DEFAULT_IGNORABLE_CODE_POINTS = /\\p{Default_Ignorable_Code_Point}+/gu;\nconst ESCAPED_QUOTE_DELIMITERS = /\\\\+(?=[\"'])/gu;\n\nconst TITLE_LABEL_PATTERN =\n /^(?:(?:suggested|generated|concise)\\s+)?(?:(?:session|chat|conversation|task)\\s+)?title\\s*[:\\-–—]\\s*/iu;\n\nconst LEADING_BOILERPLATE_PATTERNS = [\n /^(?:hi|hello|hey)(?:\\s+there)?\\s*[,!:.\\-–—]*\\s*/iu,\n /^(?:i\\s+(?:would\\s+like|want|need)\\s+you\\s+to|i['’]d\\s+like\\s+you\\s+to)\\s+/iu,\n /^(?:please\\s+)?(?:can|could|would|will)\\s+you\\s+/iu,\n /^(?:your|the)\\s+(?:task|job)\\s+is\\s+to\\s+/iu,\n /^(?:please\\s+)?help\\s+me\\s+(?:to\\s+)?/iu,\n /^please(?:\\s*[,!:.\\-–—]+\\s*|\\s+|$)/iu,\n] as const;\n\nfunction automaticTitleDetectionValue(value: string): string {\n // Detection uses a compatibility-normalized shadow value so fullwidth\n // punctuation/letters, invisible token splits, and serialized quote\n // delimiters cannot evade the policy.\n // The accepted title itself stays byte-for-byte in the user's language and\n // emoji form; this shadow is never returned or persisted.\n return value\n .normalize(\"NFKC\")\n .replace(DEFAULT_IGNORABLE_CODE_POINTS, \"\")\n .replace(ESCAPED_QUOTE_DELIMITERS, \"\");\n}\n\nfunction hasVisibleAutomaticTitleContent(value: string): boolean {\n return automaticTitleDetectionValue(value).trim().length > 0;\n}\n\n/**\n * Whether a bounded automatic-title candidate contains a credential, URL, or\n * opaque identifier that must stay out of navigation and other display-title\n * surfaces. Callers handling an unbounded source must bound it before invoking\n * this helper.\n */\nexport function containsSensitiveAutomaticSessionTitleValue(value: string): boolean {\n const detectionValue = automaticTitleDetectionValue(value);\n\n if (KNOWN_SENSITIVE_VALUE_PATTERNS.some((pattern) => pattern.test(detectionValue))) return true;\n if (containsUriScheme(detectionValue)) return true;\n if (containsSchemelessUrl(detectionValue)) return true;\n if (SECRET_LABEL_ASSIGNMENT_PATTERN.test(detectionValue)) return true;\n if (containsSensitiveAssignment(detectionValue)) return true;\n if (OPAQUE_IDENTIFIER_PATTERN.test(detectionValue)) return true;\n return false;\n}\n\nfunction stripAutomaticTitleBoilerplate(value: string): string {\n let title = value;\n for (let pass = 0; pass < 4; pass += 1) {\n const before = title;\n title = title\n .replace(/^(?:```[^\\n]*|[\\s#>*_`\"'“”‘’\\-–—]+)+/u, \"\")\n .replace(TITLE_LABEL_PATTERN, \"\");\n for (const pattern of LEADING_BOILERPLATE_PATTERNS) {\n title = title.replace(pattern, \"\");\n }\n title = title.trim();\n if (title === before) break;\n }\n return title;\n}\n\nfunction automaticTitleGraphemes(value: string): string[] {\n if (titleSegmenter === undefined) {\n titleSegmenter =\n typeof Intl.Segmenter === \"function\"\n ? new Intl.Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n }\n if (titleSegmenter) {\n return Array.from(titleSegmenter.segment(value), (part) => part.segment);\n }\n\n // Older embedded runtimes may not ship Intl.Segmenter. Preserve surrogate\n // pairs plus common combining/emoji sequences instead of failing module load\n // or slicing UTF-16 code units.\n const graphemes: string[] = [];\n for (const point of value) {\n const prior = graphemes.at(-1);\n if (\n prior &&\n (/^[\\p{Mark}\\u{FE0E}\\u{FE0F}\\p{Emoji_Modifier}]$/u.test(point) ||\n point === \"\\u200d\" ||\n prior.endsWith(\"\\u200d\"))\n ) {\n graphemes[graphemes.length - 1] = `${prior}${point}`;\n } else {\n graphemes.push(point);\n }\n }\n return graphemes;\n}\n\n/** Bound an already-normalized automatic-title candidate without splitting graphemes. */\nexport function boundAutomaticSessionTitle(value: string): string {\n const words = value.split(/\\s+/u);\n const wordBounded = words.length > 10 ? words.slice(0, 10).join(\" \") : value;\n const graphemes = automaticTitleGraphemes(wordBounded);\n if (graphemes.length <= AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES) return wordBounded;\n\n const prefix = graphemes.slice(0, AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES).join(\"\");\n const lastWhitespace = prefix.search(/\\s+\\S*$/u);\n return (lastWhitespace >= 16 ? prefix.slice(0, lastWhitespace) : prefix).trimEnd();\n}\n\n/**\n * Normalize a model/system-authored title before it reaches durable session\n * metadata. Human renames intentionally do not use this path.\n *\n * Returns null when the candidate is empty, only boilerplate, or appears to\n * contain a credential/opaque prompt value. Callers should retain the current\n * title (normally {@link AUTOMATIC_SESSION_TITLE_FALLBACK}) in that case.\n */\nexport function normalizeAutomaticSessionTitle(value: string): string | null {\n const firstLine = value\n .replace(/[\\u0000-\\u001f\\u007f-\\u009f]+/gu, \"\\n\")\n .split(/\\n+/u)\n .map((line) => line.trim())\n .find(Boolean);\n if (\n !firstLine ||\n !hasVisibleAutomaticTitleContent(firstLine) ||\n containsSensitiveAutomaticSessionTitleValue(firstLine)\n ) {\n return null;\n }\n\n let title = stripAutomaticTitleBoilerplate(firstLine)\n .replace(/\\s+/gu, \" \")\n .replace(/[\\s.!?,;:\\-–—]+$/u, \"\")\n .trim();\n if (\n !title ||\n !hasVisibleAutomaticTitleContent(title) ||\n containsSensitiveAutomaticSessionTitleValue(title)\n ) {\n return null;\n }\n\n title = boundAutomaticSessionTitle(title)\n .replace(/[\\s.!?,;:\\-–—]+$/u, \"\")\n .trim();\n if (!title || !hasVisibleAutomaticTitleContent(title)) return null;\n return title;\n}\n\nexport type SessionDisplayTitleInput = {\n id?: string | null | undefined;\n title?: string | null | undefined;\n titleSource?: \"user\" | \"agent\" | null | undefined;\n initialMessage?: string | null | undefined;\n metadata?: Readonly<Record<string, unknown>> | undefined;\n};\n\nexport type SessionDisplayTitleOptions = {\n /** Optional metadata fields to try before the opening-prompt preview. */\n metadataKeys?: readonly string[] | undefined;\n};\n\n/**\n * Derive a bounded, sensitive-safe preview from the opening prompt.\n *\n * Unsafe leading lines are skipped instead of forcing the whole session back\n * to a generic label. This covers prompts that begin with a pasted URL or\n * identifier followed by an ordinary natural-language request on the next\n * line, without putting the rejected value into navigation surfaces.\n */\nexport function deriveAutomaticSessionTitlePreview(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n\n const lines = value\n .slice(0, PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS)\n .replace(/[\\u0000-\\u001f\\u007f-\\u009f]+/gu, \"\\n\")\n .split(/\\n+/u);\n\n for (const candidate of lines) {\n const line = candidate.trim();\n if (!line || containsSensitiveAutomaticSessionTitleValue(line)) continue;\n\n const preview = boundAutomaticSessionTitle(line.replace(/\\s+/gu, \" \"))\n .replace(/[\\s.!?,;:\\-–—]+$/u, \"\")\n .trim();\n if (preview) return preview;\n }\n\n return null;\n}\n\nfunction automaticSessionReferenceTitle(id: unknown): string {\n const sessionId = typeof id === \"string\" ? id.trim() : \"\";\n return SESSION_ID_PATTERN.test(sessionId)\n ? `Conversation ${sessionId.slice(0, 13)}`\n : AUTOMATIC_SESSION_TITLE_FALLBACK;\n}\n\n/**\n * Whether the durable title still represents the automatic-title pending state.\n * A user-authored title always wins, even when its literal value is the marker.\n */\nexport function sessionTitleIsPending(input: SessionDisplayTitleInput): boolean {\n const title = input.title?.trim() ?? \"\";\n return input.titleSource !== \"user\" && (!title || title === AUTOMATIC_SESSION_TITLE_FALLBACK);\n}\n\n/**\n * Derive the title a human-facing client should display for a session.\n *\n * A semantic agent title or human rename wins. While automatic naming is still\n * pending, clients show a short, sensitive-safe preview of the opening prompt.\n * If no safe prompt text exists, a UUID-derived reference keeps real sessions\n * distinguishable without exposing prompt bytes. The durable pending marker is\n * therefore an internal lifecycle value rather than the ordinary visible name.\n */\nexport function deriveSessionDisplayTitle(\n input: SessionDisplayTitleInput,\n options: SessionDisplayTitleOptions = {},\n): string {\n const title = input.title?.trim() ?? \"\";\n if (input.titleSource === \"user\") {\n return title || automaticSessionReferenceTitle(input.id);\n }\n if (title && !sessionTitleIsPending(input)) {\n return title;\n }\n\n for (const key of options.metadataKeys ?? []) {\n const value = input.metadata?.[key];\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n }\n\n return (\n deriveAutomaticSessionTitlePreview(input.initialMessage) ??\n automaticSessionReferenceTitle(input.id)\n );\n}\n"],"mappings":"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","names":[]}
@@ -9,6 +9,13 @@ import {
9
9
  encodeSpreadsheetArtifactKernelProjection,
10
10
  encodeSpreadsheetArtifactKernelQuery
11
11
  } from "./chunk-Y3KNXVTD.js";
12
+ import {
13
+ SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES,
14
+ SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS,
15
+ assertCanonicalSpreadsheetArtifactCommandBytes,
16
+ decodeSpreadsheetArtifactCommandBatch,
17
+ encodeSpreadsheetArtifactCommandBatch
18
+ } from "./chunk-TXTQIYCV.js";
12
19
  import {
13
20
  DOCUMENT_ARTIFACT_COMMAND_MAX_BYTES,
14
21
  DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,
@@ -45,13 +52,6 @@ import {
45
52
  encodePresentationArtifactQuery,
46
53
  encodePresentationArtifactQueryResponse
47
54
  } from "./chunk-D2HKF2EF.js";
48
- import {
49
- SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES,
50
- SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS,
51
- assertCanonicalSpreadsheetArtifactCommandBytes,
52
- decodeSpreadsheetArtifactCommandBatch,
53
- encodeSpreadsheetArtifactCommandBatch
54
- } from "./chunk-TXTQIYCV.js";
55
55
  import {
56
56
  COMMITTED_TRANSACTION_PROTOCOL_VERSION,
57
57
  DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,
@@ -214,4 +214,4 @@ export {
214
214
  currentEditableArtifactCompatibility,
215
215
  editableArtifactCodecFor
216
216
  };
217
- //# sourceMappingURL=chunk-7RMTKFJW.js.map
217
+ //# sourceMappingURL=chunk-7Q6HPDY2.js.map