@granular-software/sdk 0.4.29 → 0.4.31

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.
@@ -86,35 +86,71 @@ interface Subject {
86
86
  updatedAt: number;
87
87
  }
88
88
  /**
89
- * Options for connecting to an ontology environment
89
+ * Options for opening or resolving an ontology environment for one user.
90
+ *
91
+ * This does **not** open a session. Use `environment.sessions.create()` after
92
+ * opening the environment when you need a live runtime connection.
90
93
  */
91
- interface ConnectOptions {
92
- /** The ontology name or ID to connect to */
94
+ interface OpenEnvironmentOptions {
95
+ /** The ontology name or ID to open */
93
96
  ontology: string;
94
- /** Named environment slot such as `dev` or `prod` */
95
- environment: string;
96
- /** Advanced override for the version tag/channel to follow. In the common case, omit this. */
97
- tagName?: string;
97
+ /** Version channel to follow, typically `dev` or `prod` */
98
+ tag?: string;
98
99
  /**
99
- * External user identifier from your app. This is the primary input for
100
- * connecting to a sandbox and the only required user field in the common case.
100
+ * External user identifier from your app.
101
+ *
102
+ * Exactly one of `userId`, `granularId`, or `user` should be provided.
101
103
  */
102
104
  userId?: string;
103
105
  /**
104
- * Internal Granular user identifier. Optional fallback when you only know
105
- * the Granular-side ID for an existing subject.
106
+ * Internal Granular user identifier.
107
+ *
108
+ * Exactly one of `userId`, `granularId`, or `user` should be provided.
106
109
  */
107
110
  granularId?: string;
108
111
  /** Optional display name used when upserting the user */
109
112
  name?: string;
110
113
  /** Optional email used when upserting the user */
111
114
  email?: string;
112
- /** Permission profile IDs or names to ensure before connecting */
113
- permissions?: string[];
115
+ /**
116
+ * Permission profile names or IDs to ensure before opening the environment.
117
+ * This should be provided even for existing users so the SDK can guarantee
118
+ * assignments for first-time environment creation.
119
+ */
120
+ permissions: string[];
121
+ /**
122
+ * When true, if the latest environment for this ontology/user/tag is marked
123
+ * outdated relative to the current tag target, create a fresh environment on
124
+ * the newest tag target instead of reusing the outdated one.
125
+ */
126
+ createFreshIfOutdated?: boolean;
114
127
  /** Backwards-compatible user object returned from recordUser() */
115
128
  user?: User;
116
- /** Optional stable client ID. Defaults to `client_${Date.now()}`. Use a fixed
117
- * value for long-lived effect hosts so tool catalogs don't accumulate. */
129
+ }
130
+ /**
131
+ * Deprecated compatibility alias for the legacy `connect()` entry point.
132
+ *
133
+ * `connect()` now resolves an environment handle and no longer opens a
134
+ * runtime session automatically. Prefer `openEnvironment()` for new code.
135
+ */
136
+ interface ConnectOptions extends OpenEnvironmentOptions {
137
+ /** @deprecated Legacy explicit environment slot name. Prefer `tag`. */
138
+ environment?: string;
139
+ /** @deprecated Legacy tag field. Prefer `tag`. */
140
+ tagName?: string;
141
+ /** @deprecated Ignored by `connect()` now that it no longer opens sessions. */
142
+ clientId?: string;
143
+ /** @deprecated Ignored by `connect()` now that it no longer opens sessions. */
144
+ initialHeap?: Array<{
145
+ className: string;
146
+ id: string;
147
+ }>;
148
+ }
149
+ /**
150
+ * Options for creating a live runtime session from an opened environment.
151
+ */
152
+ interface CreateSessionOptions {
153
+ /** Optional stable client ID. Defaults to `client_${Date.now()}`. */
118
154
  clientId?: string;
119
155
  /** Optional session heap seed. Each item is eagerly hydrated into the session heap on connect. */
120
156
  initialHeap?: Array<{
@@ -634,6 +670,18 @@ interface JobFeedbackRecord {
634
670
  createdAt: number;
635
671
  updatedAt: number;
636
672
  }
673
+ /**
674
+ * Persisted feedback rows listed at the environment level.
675
+ */
676
+ interface EnvironmentFeedbackRecord {
677
+ feedbackId: string;
678
+ sessionId: string;
679
+ jobId: string;
680
+ sentiment: JobFeedbackSentiment;
681
+ comment?: string | null;
682
+ metadata?: Record<string, unknown> | null;
683
+ createdAt: string | null;
684
+ }
637
685
  /**
638
686
  * Result from submitting a job
639
687
  */
@@ -1447,27 +1495,18 @@ declare class Session {
1447
1495
  }
1448
1496
 
1449
1497
  /**
1450
- * Environment represents a connected session to a sandbox for a specific user.
1451
- *
1452
- * After connecting, you can:
1453
- * 1. Define your domain ontology via `applyManifest()` (classes, properties, relationships)
1454
- * 2. Record object instances via `recordObject()` (with fields and relationship attachments)
1455
- * 3. Register sandbox-scoped effects via `granular.registerEffect()` / `granular.registerEffects()`
1456
- * 4. Submit jobs via `submitJob()` that import auto-generated typed classes from `./sandbox-tools`
1457
- * 5. Execute GraphQL queries via `graphql()` (authenticated automatically)
1458
- * 6. List available effects via `getEffects()` and listen for updates via `onEffectsChanged()`
1498
+ * Environment is the sessionless handle for one resolved ontology environment.
1459
1499
  *
1460
- * Tool calls from the sandbox automatically invoke your handlers via reverse-RPC.
1461
- *
1462
- * Object IDs are unique per class. Internally, the graph path is `{className}_{id}`
1463
- * (e.g., `author_tolkien`). Use `Environment.toGraphPath()` and
1464
- * `Environment.extractIdFromGraphPath()` for conversions.
1500
+ * Use it to query or mutate environment data directly, or to open live runtime
1501
+ * sessions through `environment.sessions.*` when you need jobs, prompts, or a
1502
+ * synced Automerge document.
1465
1503
  */
1466
- declare class Environment extends Session {
1504
+ declare class Environment {
1505
+ private granular;
1467
1506
  private envData;
1468
1507
  private _apiKey;
1469
1508
  private _apiEndpoint;
1470
- constructor(client: WSClient, envData: EnvironmentData, clientId: string, apiKey: string, apiEndpoint: string);
1509
+ constructor(granular: Granular, envData: EnvironmentData, apiKey: string, apiEndpoint: string);
1471
1510
  /** The environment ID */
1472
1511
  get environmentId(): string;
1473
1512
  /** The sandbox ID */
@@ -1486,58 +1525,68 @@ declare class Environment extends Session {
1486
1525
  get granularId(): string;
1487
1526
  /** The permission profile ID */
1488
1527
  get permissionProfileId(): string;
1528
+ /** The current build policy backing this environment */
1529
+ get buildPolicy(): BuildPolicy;
1530
+ /** The current update state relative to the followed tag */
1531
+ get updateState(): EnvironmentData["updateState"];
1532
+ /** Convenience flag for whether this environment trails the current tag target */
1533
+ get isOutdated(): boolean;
1534
+ /** The followed tag name when this environment is tag-tracked */
1535
+ get tag(): string | null;
1489
1536
  /** The GraphQL API endpoint URL */
1490
1537
  get apiEndpoint(): string;
1538
+ /** Internal auth token used for control-plane and runtime fallback requests */
1539
+ get authToken(): string;
1540
+ /** Base runtime URL derived from the GraphQL endpoint */
1541
+ get runtimeBaseUrl(): string;
1542
+ get sessions(): {
1543
+ list: (options?: {
1544
+ status?: "active" | "closed" | "all";
1545
+ }) => Promise<ConversationSessionInfo[]>;
1546
+ create: (options?: CreateSessionOptions) => Promise<EnvironmentSession>;
1547
+ connect: (sessionId: string, options?: {
1548
+ clientId?: string;
1549
+ }) => Promise<EnvironmentSession>;
1550
+ reopen: (sessionId: string, options?: {
1551
+ clientId?: string;
1552
+ }) => Promise<EnvironmentSession>;
1553
+ close: (sessionId: string, session?: EnvironmentSession | null) => Promise<void>;
1554
+ };
1555
+ get data(): {
1556
+ record: (record: RecordObjectOptions) => Promise<RecordObjectResult>;
1557
+ recordMany: (records: RecordObjectOptions[], options?: RecordObjectsOptions) => Promise<RecordObjectResult[]>;
1558
+ import: (records: RecordObjectOptions[], options?: {
1559
+ batchSize?: number;
1560
+ }) => Promise<RecordImport>;
1561
+ listImports: (status?: RecordImportStatus) => Promise<RecordImport[]>;
1562
+ getImport: (importId: string) => Promise<RecordImport>;
1563
+ getImportSummary: () => Promise<EnvironmentRecordImportSummary>;
1564
+ cancelImport: (importId: string) => Promise<RecordImport>;
1565
+ getAwaitingCount: () => Promise<number>;
1566
+ };
1567
+ get feedback(): {
1568
+ list: () => Promise<EnvironmentFeedbackRecord[]>;
1569
+ };
1491
1570
  /**
1492
- * Return a plain JS snapshot of the synced session heap.
1493
- *
1494
- * The heap lives in the Automerge document, so this method does not perform
1495
- * any extra network roundtrip.
1571
+ * Sessionless environments do not own a live transport, so disconnecting the
1572
+ * environment handle itself is a no-op. This keeps the public surface
1573
+ * symmetric with `EnvironmentSession.disconnect()` and lets callers always
1574
+ * clean up safely without tracking whether they currently hold an environment
1575
+ * or a session.
1496
1576
  */
1497
- getHeap(): SessionHeapSnapshot;
1577
+ disconnect(): Promise<void>;
1578
+ listSessions(status?: "active" | "closed" | "all"): Promise<ConversationSessionInfo[]>;
1579
+ createSession(options?: CreateSessionOptions): Promise<EnvironmentSession>;
1580
+ connectSession(sessionId: string, options?: {
1581
+ clientId?: string;
1582
+ }): Promise<EnvironmentSession>;
1583
+ reopenSession(sessionId: string, options?: {
1584
+ clientId?: string;
1585
+ }): Promise<EnvironmentSession>;
1586
+ closeSession(sessionId: string, session?: EnvironmentSession | null): Promise<void>;
1587
+ listFeedback(): Promise<EnvironmentFeedbackRecord[]>;
1498
1588
  private getRuntimeBaseUrl;
1499
1589
  private controlPlaneRequest;
1500
- /**
1501
- * Close the session and disconnect from the sandbox.
1502
- *
1503
- * Sends `client.goodbye` over WebSocket first, then issues an HTTP fallback
1504
- * to the runtime goodbye endpoint if no definitive WS-side runtime notify
1505
- * acknowledgement was observed.
1506
- */
1507
- disconnect(): Promise<void>;
1508
- /** The last known graph container status, updated by checkReadiness() or on heartbeat */
1509
- graphContainerStatus: {
1510
- lastKeepAliveAt: number;
1511
- status: 'warming' | 'hot' | 'unknown';
1512
- } | null;
1513
- /**
1514
- * Check if the graph container is ready and warm.
1515
- *
1516
- * Sends a lightweight heartbeat RPC to the Session DO which internally
1517
- * pings the FalkorDB container. The response includes `graphContainerStatus`,
1518
- * which is stored locally and emitted as a `readiness` event.
1519
- *
1520
- * Use this method to proactively warm the graph container before any
1521
- * GraphQL query that requires it, or to poll the container's state in
1522
- * the background.
1523
- *
1524
- * @returns The current graph container status object
1525
- *
1526
- * @example
1527
- * ```typescript
1528
- * const status = await env.checkReadiness();
1529
- * console.log(status.status); // 'hot' | 'warming' | 'unknown'
1530
- *
1531
- * // Or listen for live updates
1532
- * env.on('readiness', (status) => {
1533
- * console.log('Graph is now:', status.status);
1534
- * });
1535
- * ```
1536
- */
1537
- checkReadiness(): Promise<{
1538
- lastKeepAliveAt: number;
1539
- status: 'warming' | 'hot' | 'unknown';
1540
- }>;
1541
1590
  /**
1542
1591
  * Convert a class name + real-world ID into a unique graph path.
1543
1592
  *
@@ -1815,26 +1864,107 @@ declare class Environment extends Session {
1815
1864
  * Cancel a queued/background record import.
1816
1865
  */
1817
1866
  cancelRecordImport(importId: string): Promise<RecordImport>;
1867
+ }
1868
+ /**
1869
+ * Live runtime session attached to one opened environment.
1870
+ *
1871
+ * This is the object returned by `environment.sessions.create()` and friends.
1872
+ * It owns websocket state, prompts, job execution, and the synced Automerge
1873
+ * document while delegating environment-level data APIs back to
1874
+ * `session.environment`.
1875
+ */
1876
+ declare class EnvironmentSession extends Session {
1877
+ readonly environment: Environment;
1878
+ /** The last known graph container status, updated by checkReadiness() or on heartbeat */
1879
+ graphContainerStatus: {
1880
+ lastKeepAliveAt: number;
1881
+ status: "warming" | "hot" | "unknown";
1882
+ } | null;
1883
+ constructor(client: WSClient, environment: Environment, clientId: string);
1884
+ get environmentId(): string;
1885
+ get sandboxId(): string;
1886
+ get ontologyId(): string;
1887
+ get subjectId(): string;
1888
+ get envName(): string;
1889
+ get versionId(): string;
1890
+ get granularId(): string;
1891
+ get permissionProfileId(): string;
1892
+ get apiEndpoint(): string;
1893
+ get data(): {
1894
+ record: (record: RecordObjectOptions) => Promise<RecordObjectResult>;
1895
+ recordMany: (records: RecordObjectOptions[], options?: RecordObjectsOptions) => Promise<RecordObjectResult[]>;
1896
+ import: (records: RecordObjectOptions[], options?: {
1897
+ batchSize?: number;
1898
+ } | undefined) => Promise<RecordImport>;
1899
+ listImports: (status?: RecordImportStatus) => Promise<RecordImport[]>;
1900
+ getImport: (importId: string) => Promise<RecordImport>;
1901
+ getImportSummary: () => Promise<EnvironmentRecordImportSummary>;
1902
+ cancelImport: (importId: string) => Promise<RecordImport>;
1903
+ getAwaitingCount: () => Promise<number>;
1904
+ };
1905
+ get feedback(): {
1906
+ list: () => Promise<EnvironmentFeedbackRecord[]>;
1907
+ };
1818
1908
  /**
1819
- * Removed: environment-scoped effect publication is no longer supported.
1909
+ * Return a plain JS snapshot of the synced session heap.
1820
1910
  */
1821
- publishTools(tools: ToolWithHandler[], revision?: string): Promise<PublishToolsResult>;
1911
+ getHeap(): SessionHeapSnapshot;
1912
+ graphql<T = any>(query: string, variables?: Record<string, any>): Promise<GraphQLResult<T>>;
1913
+ defineRelationship(options: DefineRelationshipOptions): Promise<RelationshipInfo>;
1914
+ getRelationships(modelPath: string): Promise<RelationshipInfo[]>;
1915
+ attach(modelPath: string, submodelPath: string, targetPath: string): Promise<void>;
1916
+ detach(modelPath: string, submodelPath: string, targetPath?: string): Promise<void>;
1917
+ listRelated(modelPath: string, submodelPath: string): Promise<ModelRef[]>;
1918
+ applyManifest(manifest: ManifestContent): Promise<{
1919
+ applied: number;
1920
+ errors: string[];
1921
+ }>;
1922
+ recordObject(options: RecordObjectOptions): Promise<RecordObjectResult>;
1923
+ recordObjects(records: RecordObjectOptions[], options?: RecordObjectsOptions): Promise<RecordObjectResult[]>;
1924
+ enqueueRecordImport(records: RecordObjectOptions[], options?: {
1925
+ batchSize?: number;
1926
+ }): Promise<RecordImport>;
1927
+ listRecordImports(status?: RecordImportStatus): Promise<RecordImport[]>;
1928
+ getRecordImportSummary(): Promise<EnvironmentRecordImportSummary>;
1929
+ getAwaitingRecordCount(): Promise<number>;
1930
+ getRecordImport(importId: string): Promise<RecordImport>;
1931
+ cancelRecordImport(importId: string): Promise<RecordImport>;
1932
+ listFeedback(): Promise<EnvironmentFeedbackRecord[]>;
1822
1933
  /**
1823
- * Removed: environment-scoped effect publication is no longer supported.
1934
+ * Close the session and disconnect from the sandbox.
1935
+ *
1936
+ * Sends `client.goodbye` over WebSocket first, then issues an HTTP fallback
1937
+ * to the runtime goodbye endpoint if no definitive WS-side runtime notify
1938
+ * acknowledgement was observed.
1824
1939
  */
1825
- publishEffect(effect: ToolWithHandler): Promise<PublishToolsResult>;
1940
+ disconnect(): Promise<void>;
1826
1941
  /**
1827
- * Removed: environment-scoped effect publication is no longer supported.
1942
+ * Close only the socket transport without sending `client.goodbye`.
1828
1943
  */
1829
- publishEffects(effects: ToolWithHandler[]): Promise<PublishToolsResult>;
1944
+ disconnectTransport(): void;
1830
1945
  /**
1831
- * Removed: environment-scoped effect publication is no longer supported.
1946
+ * Backwards-compatible alias for `disconnect()`.
1832
1947
  */
1833
- unpublishEffect(name: string): Promise<PublishToolsResult>;
1948
+ close(): Promise<void>;
1834
1949
  /**
1835
- * Removed: environment-scoped effect publication is no longer supported.
1950
+ * Check if the graph container is ready and warm.
1836
1951
  */
1837
- unpublishAllEffects(): Promise<PublishToolsResult>;
1952
+ checkReadiness(): Promise<{
1953
+ lastKeepAliveAt: number;
1954
+ status: "warming" | "hot" | "unknown";
1955
+ }>;
1956
+ }
1957
+ declare class OntologyHandle {
1958
+ private granular;
1959
+ private ontologyNameOrId;
1960
+ constructor(granular: Granular, ontologyNameOrId: string);
1961
+ get effects(): {
1962
+ register: (effect: ToolWithHandler) => Promise<void>;
1963
+ registerMany: (effects: ToolWithHandler[]) => Promise<void>;
1964
+ unregister: (name: string) => Promise<void>;
1965
+ clear: () => Promise<void>;
1966
+ disconnect: () => Promise<void>;
1967
+ };
1838
1968
  }
1839
1969
  declare class Granular {
1840
1970
  private apiKey;
@@ -1856,6 +1986,10 @@ declare class Granular {
1856
1986
  * @param options - Client configuration
1857
1987
  */
1858
1988
  constructor(options: GranularOptions);
1989
+ /**
1990
+ * Return an ontology-scoped handle for effects and other ontology-level APIs.
1991
+ */
1992
+ ontology(ontologyNameOrId: string): OntologyHandle;
1859
1993
  /**
1860
1994
  * Records/upserts a user and prepares them for sandbox connections
1861
1995
  *
@@ -1872,43 +2006,46 @@ declare class Granular {
1872
2006
  * ```
1873
2007
  */
1874
2008
  recordUser(options: RecordUserOptions): Promise<User>;
2009
+ /**
2010
+ * Alias for `recordUser()` with user-facing naming that matches upsert semantics.
2011
+ */
2012
+ upsertUser(options: RecordUserOptions): Promise<User>;
1875
2013
  private resolveConnectUser;
1876
2014
  /**
1877
- * Connect to an ontology environment and establish a real-time session.
1878
- *
1879
- * Effects are registered at the sandbox level via `granular.registerEffect()`
1880
- * or `granular.registerEffects()`. Sessions pick up live availability from
1881
- * the sandbox registry automatically.
1882
- *
1883
- * @param options - Connection options
1884
- * @returns An active environment session
2015
+ * Open or resolve an ontology environment for one user without opening a session.
1885
2016
  *
1886
2017
  * @example
1887
2018
  * ```typescript
1888
- * const environment = await granular.connect({
2019
+ * const environment = await granular.openEnvironment({
1889
2020
  * ontology: 'my-ontology',
1890
- * environment: 'dev',
2021
+ * tag: 'dev',
1891
2022
  * userId: 'user_123',
1892
2023
  * permissions: ['agent'],
1893
2024
  * });
1894
2025
  *
1895
- * await granular.registerEffect('my-sandbox', {
1896
- * name: 'greet',
1897
- * description: 'Say hello',
1898
- * inputSchema: { type: 'object', properties: {} },
1899
- * handler: async () => 'Hello!',
2026
+ * await environment.data.record({
2027
+ * className: 'customer',
2028
+ * id: 'acme',
2029
+ * fields: { name: 'Acme' },
1900
2030
  * });
1901
2031
  *
1902
- * // Submit job
1903
- * const job = await environment.submitJob(`
1904
- * import { tools } from './sandbox-tools';
1905
- * return await tools.greet({});
1906
- * `);
1907
- *
1908
- * console.log(await job.result); // 'Hello!'
2032
+ * const session = await environment.sessions.create();
2033
+ * const job = await session.submitJob(`return "hello";`);
2034
+ * console.log(await job.result);
1909
2035
  * ```
1910
- */
2036
+ */
2037
+ openEnvironment(options: OpenEnvironmentOptions): Promise<Environment>;
2038
+ /**
2039
+ * Deprecated compatibility alias for `openEnvironment()`.
2040
+ *
2041
+ * `connect()` no longer opens a runtime session automatically.
2042
+ */
1911
2043
  connect(options: ConnectOptions): Promise<Environment>;
2044
+ private resolveRequestedTag;
2045
+ private buildManagedEnvironmentName;
2046
+ private matchesTagTrackedEnvironment;
2047
+ private sortEnvironmentsByRecency;
2048
+ private resolveOpenEnvironmentData;
1912
2049
  /**
1913
2050
  * List active (open) sessions for an environment — each session is one agent conversation thread.
1914
2051
  */
@@ -1931,27 +2068,28 @@ declare class Granular {
1931
2068
  createSession(options: {
1932
2069
  environmentId: string;
1933
2070
  clientId?: string;
1934
- initialHeap?: ConnectOptions['initialHeap'];
1935
- }): Promise<Environment>;
2071
+ initialHeap?: CreateSessionOptions["initialHeap"];
2072
+ }): Promise<EnvironmentSession>;
1936
2073
  /**
1937
2074
  * Connect to an existing open session (same conversation thread) using a freshly minted WebSocket token.
1938
2075
  */
1939
2076
  connectSession(options: {
1940
2077
  sessionId: string;
1941
2078
  clientId?: string;
1942
- }): Promise<Environment>;
2079
+ }): Promise<EnvironmentSession>;
1943
2080
  /**
1944
2081
  * Mark a session closed in the control plane. If `environment` is the connected handle for that
1945
2082
  * `sessionId`, disconnects the WebSocket so the runtime tears down cleanly.
1946
2083
  */
1947
- closeSession(sessionId: string, environment?: Environment | null): Promise<void>;
2084
+ closeSession(sessionId: string, environment?: EnvironmentSession | null): Promise<void>;
1948
2085
  /**
1949
2086
  * Re-open a closed session in the index and connect to its existing runtime document.
1950
2087
  */
1951
2088
  reopenSession(sessionId: string, options?: {
1952
2089
  clientId?: string;
1953
- }): Promise<Environment>;
1954
- private bindWebSocketEnvironment;
2090
+ }): Promise<EnvironmentSession>;
2091
+ private bindEnvironmentHandle;
2092
+ private bindWebSocketEnvironmentSession;
1955
2093
  private activateEnvironment;
1956
2094
  private getSandboxEffectMap;
1957
2095
  private serializeEffect;
@@ -2095,4 +2233,4 @@ declare class Granular {
2095
2233
  private request;
2096
2234
  }
2097
2235
 
2098
- export { type ResolvedEffectApprovalRequired as $, type AccessTokenProvider as A, type BuildPolicy as B, type ConnectOptions as C, type DomainState as D, type EndpointMode as E, type EnvironmentListResponse as F, Granular as G, type Manifest as H, type InstanceToolHandler as I, type ManifestListResponse as J, type BuildStatus as K, type Build as L, type ManifestEffectMetamodelSpec as M, type Version as N, type BuildListResponse as O, type Prompt as P, type SemanticVersionDiffEntry as Q, type ResolvedEffectBehaviors as R, type SessionHeapEntry as S, type ToolWithHandler as T, type User as U, type VersionTracking as V, WSClient as W, type SemanticVersionDiff as X, type ResolvedEffectPostCondition as Y, type ResolvedEffectDryRun as Z, type ResolvedEffectReverse as _, type EffectHandlerContext as a, type ManifestEventStreamDef as a$, type EffectInvocationMode as a0, type EffectInvocationMetadata as a1, type EffectSchema as a2, type EffectWithHandler as a3, type PublishEffectsResult as a4, type ToolInfo as a5, type EffectInfo as a6, type ToolsChangedEvent as a7, type EffectsChangedEvent as a8, type EffectHandler as a9, type DefineRelationshipOptions as aA, type RecordObjectOptions as aB, type RecordObjectResult as aC, type RecordObjectsChunkInfo as aD, type RecordObjectsOptions as aE, type RecordImportStatus as aF, type RecordImportItemStatus as aG, type RecordImportStats as aH, type RecordImportItem as aI, type RecordImport as aJ, type EnvironmentRecordImportSummary as aK, type ManifestPropertySpec as aL, type ManifestValidationOperator as aM, type ManifestEnumRuleSpec as aN, type ManifestFilterBySpec as aO, type ManifestValidationRuleSpec as aP, type ManifestStateMachineStateSpec as aQ, type ManifestStateMachineTransitionSpec as aR, type ManifestStateMachineSpec as aS, type ManifestPostConditionSpec as aT, type ManifestDryRunSpec as aU, type ManifestReverseSpec as aV, type ManifestApprovalRequiredSpec as aW, type ManifestRelationshipDef as aX, type ManifestEffectSchema as aY, type ManifestEffectDeclaration as aZ, type ManifestEventTypeDef as a_, type InstanceEffectHandler as aa, type JobStatus as ab, type JobFeedbackSentiment as ac, type JobFeedbackToolCall as ad, type JobFeedbackMetadata as ae, type JobFeedbackInput as af, type JobFeedbackRecord as ag, type JobSubmitResult as ah, type Job as ai, type ConversationMessageShowRefs as aj, type ConversationMessageInput as ak, type ConversationAppendResult as al, type SessionHeapFieldType as am, type SessionHeapFieldValue as an, type SessionHeapVariable as ao, type WSDisconnectInfo as ap, type WSReconnectErrorInfo as aq, type WSClientOptions as ar, type RPCRequest as as, type RPCResponse as at, type SyncMessage as au, type RPCRequestFromServer as av, type ToolInvokeParams as aw, type ToolResultParams as ax, type ModelRef as ay, type RelationshipInfo as az, type SessionHeapList as b, type ManifestOperation as b0, type ManifestImport as b1, type ManifestVolume as b2, type ManifestContent as b3, type GraphQLResult as b4, type APIError as b5, type DeleteResponse as b6, type StreamEvent as b7, type StreamSubscription as b8, type StreamStats as b9, type SessionHeapSnapshot as c, type SessionTranscriptEntry as d, Environment as e, Session as f, type ToolSchema as g, type PublishToolsResult as h, type ToolHandler as i, type GranularOptions as j, type GranularAuth as k, type RecordUserOptions as l, type Subject as m, type ConversationSessionInfo as n, type Sandbox as o, type CreateSandboxData as p, type SandboxListResponse as q, type PermissionRules as r, type PermissionProfile as s, type CreatePermissionProfileData as t, type PermissionProfileListResponse as u, type Assignment as v, type AssignmentListResponse as w, type VersionTag as x, type EnvironmentData as y, type CreateEnvironmentData as z };
2236
+ export { type SemanticVersionDiff as $, type AccessTokenProvider as A, type BuildPolicy as B, type ConnectOptions as C, type DomainState as D, type EndpointMode as E, type VersionTag as F, Granular as G, type EnvironmentData as H, type InstanceToolHandler as I, type CreateEnvironmentData as J, type EnvironmentListResponse as K, type Manifest as L, type ManifestEffectMetamodelSpec as M, type ManifestListResponse as N, OntologyHandle as O, type Prompt as P, type BuildStatus as Q, type ResolvedEffectBehaviors as R, type SessionHeapEntry as S, type ToolWithHandler as T, type User as U, type VersionTracking as V, WSClient as W, type Build as X, type Version as Y, type BuildListResponse as Z, type SemanticVersionDiffEntry as _, type EffectHandlerContext as a, type ManifestApprovalRequiredSpec as a$, type ResolvedEffectPostCondition as a0, type ResolvedEffectDryRun as a1, type ResolvedEffectReverse as a2, type ResolvedEffectApprovalRequired as a3, type EffectInvocationMode as a4, type EffectInvocationMetadata as a5, type EffectSchema as a6, type EffectWithHandler as a7, type PublishEffectsResult as a8, type ToolInfo as a9, type RPCRequestFromServer as aA, type ToolInvokeParams as aB, type ToolResultParams as aC, type ModelRef as aD, type RelationshipInfo as aE, type DefineRelationshipOptions as aF, type RecordObjectOptions as aG, type RecordObjectResult as aH, type RecordObjectsChunkInfo as aI, type RecordObjectsOptions as aJ, type RecordImportStatus as aK, type RecordImportItemStatus as aL, type RecordImportStats as aM, type RecordImportItem as aN, type RecordImport as aO, type EnvironmentRecordImportSummary as aP, type ManifestPropertySpec as aQ, type ManifestValidationOperator as aR, type ManifestEnumRuleSpec as aS, type ManifestFilterBySpec as aT, type ManifestValidationRuleSpec as aU, type ManifestStateMachineStateSpec as aV, type ManifestStateMachineTransitionSpec as aW, type ManifestStateMachineSpec as aX, type ManifestPostConditionSpec as aY, type ManifestDryRunSpec as aZ, type ManifestReverseSpec as a_, type EffectInfo as aa, type ToolsChangedEvent as ab, type EffectsChangedEvent as ac, type EffectHandler as ad, type InstanceEffectHandler as ae, type JobStatus as af, type JobFeedbackSentiment as ag, type JobFeedbackToolCall as ah, type JobFeedbackMetadata as ai, type JobFeedbackInput as aj, type JobFeedbackRecord as ak, type EnvironmentFeedbackRecord as al, type JobSubmitResult as am, type Job as an, type ConversationMessageShowRefs as ao, type ConversationMessageInput as ap, type ConversationAppendResult as aq, type SessionHeapFieldType as ar, type SessionHeapFieldValue as as, type SessionHeapVariable as at, type WSDisconnectInfo as au, type WSReconnectErrorInfo as av, type WSClientOptions as aw, type RPCRequest as ax, type RPCResponse as ay, type SyncMessage as az, type SessionHeapList as b, type ManifestRelationshipDef as b0, type ManifestEffectSchema as b1, type ManifestEffectDeclaration as b2, type ManifestEventTypeDef as b3, type ManifestEventStreamDef as b4, type ManifestOperation as b5, type ManifestImport as b6, type ManifestVolume as b7, type ManifestContent as b8, type GraphQLResult as b9, type APIError as ba, type DeleteResponse as bb, type StreamEvent as bc, type StreamSubscription as bd, type StreamStats as be, type SessionHeapSnapshot as c, type SessionTranscriptEntry as d, Environment as e, EnvironmentSession as f, Session as g, type ToolSchema as h, type PublishToolsResult as i, type ToolHandler as j, type GranularOptions as k, type GranularAuth as l, type RecordUserOptions as m, type Subject as n, type OpenEnvironmentOptions as o, type CreateSessionOptions as p, type ConversationSessionInfo as q, type Sandbox as r, type CreateSandboxData as s, type SandboxListResponse as t, type PermissionRules as u, type PermissionProfile as v, type CreatePermissionProfileData as w, type PermissionProfileListResponse as x, type Assignment as y, type AssignmentListResponse as z };