@granular-software/sdk 0.4.52 → 0.4.54
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/agent-evals.d.mts +1 -1
- package/dist/agent-evals.d.ts +1 -1
- package/dist/agent-evals.js +59 -0
- package/dist/agent-evals.js.map +1 -1
- package/dist/agent-evals.mjs +59 -0
- package/dist/agent-evals.mjs.map +1 -1
- package/dist/cli/index.js +62 -2
- package/dist/{client-B2OyGOHE.d.mts → client-BKde5VzV.d.ts} +21 -1
- package/dist/{client-BMfjRJTs.d.ts → client-DL4S9uRc.d.mts} +21 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +59 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -7794,6 +7794,7 @@ function resolveConfig(options) {
|
|
|
7794
7794
|
}
|
|
7795
7795
|
|
|
7796
7796
|
// src/cli/api-client.ts
|
|
7797
|
+
var DEFAULT_BUILD_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
7797
7798
|
var ApiClient = class {
|
|
7798
7799
|
apiKey;
|
|
7799
7800
|
baseUrl;
|
|
@@ -7961,7 +7962,7 @@ var ApiClient = class {
|
|
|
7961
7962
|
diff: result.diff
|
|
7962
7963
|
};
|
|
7963
7964
|
}
|
|
7964
|
-
async waitForBuild(buildId, onStatus, timeoutMs =
|
|
7965
|
+
async waitForBuild(buildId, onStatus, timeoutMs = DEFAULT_BUILD_TIMEOUT_MS) {
|
|
7965
7966
|
const start = Date.now();
|
|
7966
7967
|
while (Date.now() - start < timeoutMs) {
|
|
7967
7968
|
const build = await this.getBuild(buildId);
|
|
@@ -7977,7 +7978,7 @@ var ApiClient = class {
|
|
|
7977
7978
|
}
|
|
7978
7979
|
throw new Error(`Build timed out after ${Math.round(timeoutMs / 1e3)}s`);
|
|
7979
7980
|
}
|
|
7980
|
-
async waitForVersionBuild(versionId, onStatus, timeoutMs =
|
|
7981
|
+
async waitForVersionBuild(versionId, onStatus, timeoutMs = DEFAULT_BUILD_TIMEOUT_MS) {
|
|
7981
7982
|
return this.waitForBuild(versionId, onStatus, timeoutMs);
|
|
7982
7983
|
}
|
|
7983
7984
|
// ── Permission Profiles ──
|
|
@@ -23354,6 +23355,7 @@ var Environment = class _Environment {
|
|
|
23354
23355
|
import: async (records, options) => this.enqueueRecordImport(records, options),
|
|
23355
23356
|
listImports: async (status) => this.listRecordImports(status),
|
|
23356
23357
|
getImport: async (importId) => this.getRecordImport(importId),
|
|
23358
|
+
listImportItems: async (importId, status) => this.listRecordImportItems(importId, status),
|
|
23357
23359
|
getImportSummary: async () => this.getRecordImportSummary(),
|
|
23358
23360
|
cancelImport: async (importId) => this.cancelRecordImport(importId),
|
|
23359
23361
|
getAwaitingCount: async () => this.getAwaitingRecordCount()
|
|
@@ -24532,6 +24534,15 @@ var Environment = class _Environment {
|
|
|
24532
24534
|
`/control/record-imports/${importId}`
|
|
24533
24535
|
);
|
|
24534
24536
|
}
|
|
24537
|
+
/**
|
|
24538
|
+
* List the individual records persisted for one asynchronous import. This
|
|
24539
|
+
* makes terminal import failures diagnosable without database access.
|
|
24540
|
+
*/
|
|
24541
|
+
async listRecordImportItems(importId, status) {
|
|
24542
|
+
const suffix = status ? `?status=${encodeURIComponent(status)}` : "";
|
|
24543
|
+
const response = await this.controlPlaneRequest(`/control/record-imports/${importId}/items${suffix}`);
|
|
24544
|
+
return Array.isArray(response.items) ? response.items : [];
|
|
24545
|
+
}
|
|
24535
24546
|
/**
|
|
24536
24547
|
* Cancel a queued/background record import.
|
|
24537
24548
|
*/
|
|
@@ -25348,6 +25359,55 @@ var Granular = class _Granular {
|
|
|
25348
25359
|
throw error2;
|
|
25349
25360
|
}
|
|
25350
25361
|
}
|
|
25362
|
+
/**
|
|
25363
|
+
* Resolve one exact environment only when Granular confirms that it belongs
|
|
25364
|
+
* to the given external user in the requested sandbox (and, optionally,
|
|
25365
|
+
* tag). This is deliberately read-only: callers use it to keep an already
|
|
25366
|
+
* opened delegated workspace stable while a newer active environment is
|
|
25367
|
+
* being prepared in the background.
|
|
25368
|
+
*/
|
|
25369
|
+
async getEnvironmentForUser(options) {
|
|
25370
|
+
const sandboxId = options.sandboxId.trim();
|
|
25371
|
+
const userId = options.userId.trim();
|
|
25372
|
+
const environmentId = options.environmentId.trim();
|
|
25373
|
+
const tagName = options.tag?.trim();
|
|
25374
|
+
if (!sandboxId || !userId || !environmentId) {
|
|
25375
|
+
throw new Error(
|
|
25376
|
+
"getEnvironmentForUser() requires sandboxId, userId, and environmentId."
|
|
25377
|
+
);
|
|
25378
|
+
}
|
|
25379
|
+
const subjects = await this.request(
|
|
25380
|
+
`/control/subjects?identityId=${encodeURIComponent(userId)}`
|
|
25381
|
+
);
|
|
25382
|
+
const subject = (subjects.items || []).find(
|
|
25383
|
+
(item) => item.identityId === userId || item.userId === userId
|
|
25384
|
+
);
|
|
25385
|
+
const subjectId = subject?.subjectId || subject?.granularId;
|
|
25386
|
+
if (!subjectId) return null;
|
|
25387
|
+
let environment;
|
|
25388
|
+
try {
|
|
25389
|
+
environment = await this.environments.get(environmentId);
|
|
25390
|
+
} catch (error2) {
|
|
25391
|
+
const message = error2 instanceof Error ? error2.message : String(error2);
|
|
25392
|
+
if (message.includes("404") || message.includes("not found")) {
|
|
25393
|
+
return null;
|
|
25394
|
+
}
|
|
25395
|
+
throw error2;
|
|
25396
|
+
}
|
|
25397
|
+
if (environment.sandboxId !== sandboxId || environment.subjectId !== subjectId) {
|
|
25398
|
+
return null;
|
|
25399
|
+
}
|
|
25400
|
+
if (tagName) {
|
|
25401
|
+
const tags = await this.request(`/control/sandboxes/${encodeURIComponent(sandboxId)}/tags`);
|
|
25402
|
+
const tag2 = (tags.items || []).find(
|
|
25403
|
+
(candidate) => candidate?.name === tagName
|
|
25404
|
+
);
|
|
25405
|
+
if (!tag2 || environment.tagId !== tag2.tagId) {
|
|
25406
|
+
return null;
|
|
25407
|
+
}
|
|
25408
|
+
}
|
|
25409
|
+
return this.bindEnvironmentHandle(environment);
|
|
25410
|
+
}
|
|
25351
25411
|
/**
|
|
25352
25412
|
* Register one reviewed, pre-existing environment as the active workspace
|
|
25353
25413
|
* for an external user. This is for a controlled migration only: it does
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bM as WSClientOptions, a2 as GranularQuotaProgress, T as ToolWithHandler, f as PublishToolsResult, aO as Job, g as ToolHandler, I as InstanceToolHandler, aY as ConversationMessageInput, aZ as ConversationAppendResult, aB as EffectInfo, P as Prompt, aA as ToolInfo, aD as EffectsChangedEvent, aC as ToolsChangedEvent, D as DomainState, y as GranularOptions, ci as EnvironmentImporter, B as RecordUserOptions, U as User, H as OpenEnvironmentOptions, af as EnvironmentData, ac as BuildPolicy, cf as EnvironmentSetupSummary, W as ConversationSessionListOptions, Q as ConversationSessionInfo, L as CreateSessionOptions, bW as RecordObjectOptions, c1 as RecordObjectResult, c3 as RecordObjectsOptions, ca as RecordImport, c6 as RecordImportStatus, cb as EnvironmentRecordImportSummary, aM as EnvironmentFeedbackRecord, c as SessionHeapSnapshot, bA as SessionDocumentResult, bB as SessionCollectionListOptions, bD as SessionCollectionListResult, a_ as SessionConversationMessage, a$ as SessionTimelineEvent, bC as SessionJobListOptions, bt as SessionJobRecord, b8 as SessionArtifactListOptions, b7 as SessionArtifactRecord, b9 as SessionArtifactValidationResult, bb as SessionArtifactExecutionOptions, ba as SessionArtifactExecutionResult, bc as SessionArtifactApprovalOptions, bm as RecordManualActionInput, bo as ManualActionRecordResult, bp as ManualActionListOptions, bn as ManualActionOccurrence, br as ManualActionSuggestionOptions, bq as ManualActionSuggestion, bf as ArtifactApprovalTaskListOptions, be as ArtifactApprovalTask, bg as ArtifactApprovalDecisionInput, bh as ArtifactApprovalDecisionResult, b3 as SessionFileRecord, bs as SessionFileUploadOptions, S as SessionHeapEntry, b as SessionHeapList, bw as SessionHeapVariable, d as SessionTranscriptEntry, cM as GraphQLResult, by as RecordSearchOptions, bx as RecordSearchResult, bz as RecordMentionInput, bV as DefineRelationshipOptions, bU as RelationshipInfo, bT as ModelRef, cL as ManifestContent, b_ as EnvironmentStateUpdateInput, bY as EnvironmentStateTarget, c0 as EnvironmentStateProxy, c5 as RecordImportOptions, bI as UserEnvironmentStateOptions, bH as UserEnvironmentState, bJ as MarkUserEnvironmentReadOptions, J as AdoptEnvironmentOptions, K as ConnectOptions, cd as RunEnvironmentImporterOptions, l as OpenAIUsageSpendEvent, G as GranularSpendContext, o as RecordOpenAIUsageSpendResult, a5 as SandboxListResponse, a3 as Sandbox, a4 as CreateSandboxData, cO as DeleteResponse, a7 as PermissionProfile, a8 as CreatePermissionProfileData, ag as CreateEnvironmentData, cP as StreamEvent, cQ as StreamSubscription, cR as StreamStats, F as Subject, ab as AssignmentListResponse } from './spend-DpRRCrAr.
|
|
1
|
+
import { bM as WSClientOptions, a2 as GranularQuotaProgress, T as ToolWithHandler, f as PublishToolsResult, aO as Job, g as ToolHandler, I as InstanceToolHandler, aY as ConversationMessageInput, aZ as ConversationAppendResult, aB as EffectInfo, P as Prompt, aA as ToolInfo, aD as EffectsChangedEvent, aC as ToolsChangedEvent, D as DomainState, y as GranularOptions, ci as EnvironmentImporter, B as RecordUserOptions, U as User, H as OpenEnvironmentOptions, af as EnvironmentData, ac as BuildPolicy, cf as EnvironmentSetupSummary, W as ConversationSessionListOptions, Q as ConversationSessionInfo, L as CreateSessionOptions, bW as RecordObjectOptions, c1 as RecordObjectResult, c3 as RecordObjectsOptions, ca as RecordImport, c6 as RecordImportStatus, c9 as RecordImportItem, cb as EnvironmentRecordImportSummary, aM as EnvironmentFeedbackRecord, c as SessionHeapSnapshot, bA as SessionDocumentResult, bB as SessionCollectionListOptions, bD as SessionCollectionListResult, a_ as SessionConversationMessage, a$ as SessionTimelineEvent, bC as SessionJobListOptions, bt as SessionJobRecord, b8 as SessionArtifactListOptions, b7 as SessionArtifactRecord, b9 as SessionArtifactValidationResult, bb as SessionArtifactExecutionOptions, ba as SessionArtifactExecutionResult, bc as SessionArtifactApprovalOptions, bm as RecordManualActionInput, bo as ManualActionRecordResult, bp as ManualActionListOptions, bn as ManualActionOccurrence, br as ManualActionSuggestionOptions, bq as ManualActionSuggestion, bf as ArtifactApprovalTaskListOptions, be as ArtifactApprovalTask, bg as ArtifactApprovalDecisionInput, bh as ArtifactApprovalDecisionResult, b3 as SessionFileRecord, bs as SessionFileUploadOptions, S as SessionHeapEntry, b as SessionHeapList, bw as SessionHeapVariable, d as SessionTranscriptEntry, cM as GraphQLResult, by as RecordSearchOptions, bx as RecordSearchResult, bz as RecordMentionInput, bV as DefineRelationshipOptions, bU as RelationshipInfo, bT as ModelRef, cL as ManifestContent, b_ as EnvironmentStateUpdateInput, bY as EnvironmentStateTarget, c0 as EnvironmentStateProxy, c5 as RecordImportOptions, bI as UserEnvironmentStateOptions, bH as UserEnvironmentState, bJ as MarkUserEnvironmentReadOptions, J as AdoptEnvironmentOptions, K as ConnectOptions, cd as RunEnvironmentImporterOptions, l as OpenAIUsageSpendEvent, G as GranularSpendContext, o as RecordOpenAIUsageSpendResult, a5 as SandboxListResponse, a3 as Sandbox, a4 as CreateSandboxData, cO as DeleteResponse, a7 as PermissionProfile, a8 as CreatePermissionProfileData, ag as CreateEnvironmentData, cP as StreamEvent, cQ as StreamSubscription, cR as StreamStats, F as Subject, ab as AssignmentListResponse } from './spend-DpRRCrAr.js';
|
|
2
2
|
import * as Automerge from '@automerge/automerge';
|
|
3
3
|
import { Doc } from '@automerge/automerge/slim';
|
|
4
4
|
|
|
@@ -344,6 +344,7 @@ declare class Environment {
|
|
|
344
344
|
}) => Promise<RecordImport>;
|
|
345
345
|
listImports: (status?: RecordImportStatus) => Promise<RecordImport[]>;
|
|
346
346
|
getImport: (importId: string) => Promise<RecordImport>;
|
|
347
|
+
listImportItems: (importId: string, status?: RecordImportItem["status"]) => Promise<RecordImportItem[]>;
|
|
347
348
|
getImportSummary: () => Promise<EnvironmentRecordImportSummary>;
|
|
348
349
|
cancelImport: (importId: string) => Promise<RecordImport>;
|
|
349
350
|
getAwaitingCount: () => Promise<number>;
|
|
@@ -675,6 +676,11 @@ declare class Environment {
|
|
|
675
676
|
* Fetch a single record import by id.
|
|
676
677
|
*/
|
|
677
678
|
getRecordImport(importId: string): Promise<RecordImport>;
|
|
679
|
+
/**
|
|
680
|
+
* List the individual records persisted for one asynchronous import. This
|
|
681
|
+
* makes terminal import failures diagnosable without database access.
|
|
682
|
+
*/
|
|
683
|
+
listRecordImportItems(importId: string, status?: RecordImportItem["status"]): Promise<RecordImportItem[]>;
|
|
678
684
|
/**
|
|
679
685
|
* Cancel a queued/background record import.
|
|
680
686
|
*/
|
|
@@ -718,6 +724,7 @@ declare class EnvironmentSession extends Session {
|
|
|
718
724
|
} | undefined) => Promise<RecordImport>;
|
|
719
725
|
listImports: (status?: RecordImportStatus) => Promise<RecordImport[]>;
|
|
720
726
|
getImport: (importId: string) => Promise<RecordImport>;
|
|
727
|
+
listImportItems: (importId: string, status?: RecordImportItem["status"]) => Promise<RecordImportItem[]>;
|
|
721
728
|
getImportSummary: () => Promise<EnvironmentRecordImportSummary>;
|
|
722
729
|
cancelImport: (importId: string) => Promise<RecordImport>;
|
|
723
730
|
getAwaitingCount: () => Promise<number>;
|
|
@@ -963,6 +970,19 @@ declare class Granular {
|
|
|
963
970
|
userId: string;
|
|
964
971
|
slot?: string;
|
|
965
972
|
}): Promise<Environment | null>;
|
|
973
|
+
/**
|
|
974
|
+
* Resolve one exact environment only when Granular confirms that it belongs
|
|
975
|
+
* to the given external user in the requested sandbox (and, optionally,
|
|
976
|
+
* tag). This is deliberately read-only: callers use it to keep an already
|
|
977
|
+
* opened delegated workspace stable while a newer active environment is
|
|
978
|
+
* being prepared in the background.
|
|
979
|
+
*/
|
|
980
|
+
getEnvironmentForUser(options: {
|
|
981
|
+
sandboxId: string;
|
|
982
|
+
userId: string;
|
|
983
|
+
environmentId: string;
|
|
984
|
+
tag?: string;
|
|
985
|
+
}): Promise<Environment | null>;
|
|
966
986
|
/**
|
|
967
987
|
* Register one reviewed, pre-existing environment as the active workspace
|
|
968
988
|
* for an external user. This is for a controlled migration only: it does
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bM as WSClientOptions, a2 as GranularQuotaProgress, T as ToolWithHandler, f as PublishToolsResult, aO as Job, g as ToolHandler, I as InstanceToolHandler, aY as ConversationMessageInput, aZ as ConversationAppendResult, aB as EffectInfo, P as Prompt, aA as ToolInfo, aD as EffectsChangedEvent, aC as ToolsChangedEvent, D as DomainState, y as GranularOptions, ci as EnvironmentImporter, B as RecordUserOptions, U as User, H as OpenEnvironmentOptions, af as EnvironmentData, ac as BuildPolicy, cf as EnvironmentSetupSummary, W as ConversationSessionListOptions, Q as ConversationSessionInfo, L as CreateSessionOptions, bW as RecordObjectOptions, c1 as RecordObjectResult, c3 as RecordObjectsOptions, ca as RecordImport, c6 as RecordImportStatus, cb as EnvironmentRecordImportSummary, aM as EnvironmentFeedbackRecord, c as SessionHeapSnapshot, bA as SessionDocumentResult, bB as SessionCollectionListOptions, bD as SessionCollectionListResult, a_ as SessionConversationMessage, a$ as SessionTimelineEvent, bC as SessionJobListOptions, bt as SessionJobRecord, b8 as SessionArtifactListOptions, b7 as SessionArtifactRecord, b9 as SessionArtifactValidationResult, bb as SessionArtifactExecutionOptions, ba as SessionArtifactExecutionResult, bc as SessionArtifactApprovalOptions, bm as RecordManualActionInput, bo as ManualActionRecordResult, bp as ManualActionListOptions, bn as ManualActionOccurrence, br as ManualActionSuggestionOptions, bq as ManualActionSuggestion, bf as ArtifactApprovalTaskListOptions, be as ArtifactApprovalTask, bg as ArtifactApprovalDecisionInput, bh as ArtifactApprovalDecisionResult, b3 as SessionFileRecord, bs as SessionFileUploadOptions, S as SessionHeapEntry, b as SessionHeapList, bw as SessionHeapVariable, d as SessionTranscriptEntry, cM as GraphQLResult, by as RecordSearchOptions, bx as RecordSearchResult, bz as RecordMentionInput, bV as DefineRelationshipOptions, bU as RelationshipInfo, bT as ModelRef, cL as ManifestContent, b_ as EnvironmentStateUpdateInput, bY as EnvironmentStateTarget, c0 as EnvironmentStateProxy, c5 as RecordImportOptions, bI as UserEnvironmentStateOptions, bH as UserEnvironmentState, bJ as MarkUserEnvironmentReadOptions, J as AdoptEnvironmentOptions, K as ConnectOptions, cd as RunEnvironmentImporterOptions, l as OpenAIUsageSpendEvent, G as GranularSpendContext, o as RecordOpenAIUsageSpendResult, a5 as SandboxListResponse, a3 as Sandbox, a4 as CreateSandboxData, cO as DeleteResponse, a7 as PermissionProfile, a8 as CreatePermissionProfileData, ag as CreateEnvironmentData, cP as StreamEvent, cQ as StreamSubscription, cR as StreamStats, F as Subject, ab as AssignmentListResponse } from './spend-DpRRCrAr.
|
|
1
|
+
import { bM as WSClientOptions, a2 as GranularQuotaProgress, T as ToolWithHandler, f as PublishToolsResult, aO as Job, g as ToolHandler, I as InstanceToolHandler, aY as ConversationMessageInput, aZ as ConversationAppendResult, aB as EffectInfo, P as Prompt, aA as ToolInfo, aD as EffectsChangedEvent, aC as ToolsChangedEvent, D as DomainState, y as GranularOptions, ci as EnvironmentImporter, B as RecordUserOptions, U as User, H as OpenEnvironmentOptions, af as EnvironmentData, ac as BuildPolicy, cf as EnvironmentSetupSummary, W as ConversationSessionListOptions, Q as ConversationSessionInfo, L as CreateSessionOptions, bW as RecordObjectOptions, c1 as RecordObjectResult, c3 as RecordObjectsOptions, ca as RecordImport, c6 as RecordImportStatus, c9 as RecordImportItem, cb as EnvironmentRecordImportSummary, aM as EnvironmentFeedbackRecord, c as SessionHeapSnapshot, bA as SessionDocumentResult, bB as SessionCollectionListOptions, bD as SessionCollectionListResult, a_ as SessionConversationMessage, a$ as SessionTimelineEvent, bC as SessionJobListOptions, bt as SessionJobRecord, b8 as SessionArtifactListOptions, b7 as SessionArtifactRecord, b9 as SessionArtifactValidationResult, bb as SessionArtifactExecutionOptions, ba as SessionArtifactExecutionResult, bc as SessionArtifactApprovalOptions, bm as RecordManualActionInput, bo as ManualActionRecordResult, bp as ManualActionListOptions, bn as ManualActionOccurrence, br as ManualActionSuggestionOptions, bq as ManualActionSuggestion, bf as ArtifactApprovalTaskListOptions, be as ArtifactApprovalTask, bg as ArtifactApprovalDecisionInput, bh as ArtifactApprovalDecisionResult, b3 as SessionFileRecord, bs as SessionFileUploadOptions, S as SessionHeapEntry, b as SessionHeapList, bw as SessionHeapVariable, d as SessionTranscriptEntry, cM as GraphQLResult, by as RecordSearchOptions, bx as RecordSearchResult, bz as RecordMentionInput, bV as DefineRelationshipOptions, bU as RelationshipInfo, bT as ModelRef, cL as ManifestContent, b_ as EnvironmentStateUpdateInput, bY as EnvironmentStateTarget, c0 as EnvironmentStateProxy, c5 as RecordImportOptions, bI as UserEnvironmentStateOptions, bH as UserEnvironmentState, bJ as MarkUserEnvironmentReadOptions, J as AdoptEnvironmentOptions, K as ConnectOptions, cd as RunEnvironmentImporterOptions, l as OpenAIUsageSpendEvent, G as GranularSpendContext, o as RecordOpenAIUsageSpendResult, a5 as SandboxListResponse, a3 as Sandbox, a4 as CreateSandboxData, cO as DeleteResponse, a7 as PermissionProfile, a8 as CreatePermissionProfileData, ag as CreateEnvironmentData, cP as StreamEvent, cQ as StreamSubscription, cR as StreamStats, F as Subject, ab as AssignmentListResponse } from './spend-DpRRCrAr.mjs';
|
|
2
2
|
import * as Automerge from '@automerge/automerge';
|
|
3
3
|
import { Doc } from '@automerge/automerge/slim';
|
|
4
4
|
|
|
@@ -344,6 +344,7 @@ declare class Environment {
|
|
|
344
344
|
}) => Promise<RecordImport>;
|
|
345
345
|
listImports: (status?: RecordImportStatus) => Promise<RecordImport[]>;
|
|
346
346
|
getImport: (importId: string) => Promise<RecordImport>;
|
|
347
|
+
listImportItems: (importId: string, status?: RecordImportItem["status"]) => Promise<RecordImportItem[]>;
|
|
347
348
|
getImportSummary: () => Promise<EnvironmentRecordImportSummary>;
|
|
348
349
|
cancelImport: (importId: string) => Promise<RecordImport>;
|
|
349
350
|
getAwaitingCount: () => Promise<number>;
|
|
@@ -675,6 +676,11 @@ declare class Environment {
|
|
|
675
676
|
* Fetch a single record import by id.
|
|
676
677
|
*/
|
|
677
678
|
getRecordImport(importId: string): Promise<RecordImport>;
|
|
679
|
+
/**
|
|
680
|
+
* List the individual records persisted for one asynchronous import. This
|
|
681
|
+
* makes terminal import failures diagnosable without database access.
|
|
682
|
+
*/
|
|
683
|
+
listRecordImportItems(importId: string, status?: RecordImportItem["status"]): Promise<RecordImportItem[]>;
|
|
678
684
|
/**
|
|
679
685
|
* Cancel a queued/background record import.
|
|
680
686
|
*/
|
|
@@ -718,6 +724,7 @@ declare class EnvironmentSession extends Session {
|
|
|
718
724
|
} | undefined) => Promise<RecordImport>;
|
|
719
725
|
listImports: (status?: RecordImportStatus) => Promise<RecordImport[]>;
|
|
720
726
|
getImport: (importId: string) => Promise<RecordImport>;
|
|
727
|
+
listImportItems: (importId: string, status?: RecordImportItem["status"]) => Promise<RecordImportItem[]>;
|
|
721
728
|
getImportSummary: () => Promise<EnvironmentRecordImportSummary>;
|
|
722
729
|
cancelImport: (importId: string) => Promise<RecordImport>;
|
|
723
730
|
getAwaitingCount: () => Promise<number>;
|
|
@@ -963,6 +970,19 @@ declare class Granular {
|
|
|
963
970
|
userId: string;
|
|
964
971
|
slot?: string;
|
|
965
972
|
}): Promise<Environment | null>;
|
|
973
|
+
/**
|
|
974
|
+
* Resolve one exact environment only when Granular confirms that it belongs
|
|
975
|
+
* to the given external user in the requested sandbox (and, optionally,
|
|
976
|
+
* tag). This is deliberately read-only: callers use it to keep an already
|
|
977
|
+
* opened delegated workspace stable while a newer active environment is
|
|
978
|
+
* being prepared in the background.
|
|
979
|
+
*/
|
|
980
|
+
getEnvironmentForUser(options: {
|
|
981
|
+
sandboxId: string;
|
|
982
|
+
userId: string;
|
|
983
|
+
environmentId: string;
|
|
984
|
+
tag?: string;
|
|
985
|
+
}): Promise<Environment | null>;
|
|
966
986
|
/**
|
|
967
987
|
* Register one reviewed, pre-existing environment as the active workspace
|
|
968
988
|
* for an external user. This is for a controlled migration only: it does
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { E as Environment, a as EnvironmentSession, G as Granular, O as OntologyHandle, S as Session, W as WSClient } from './client-
|
|
1
|
+
export { E as Environment, a as EnvironmentSession, G as Granular, O as OntologyHandle, S as Session, W as WSClient } from './client-DL4S9uRc.mjs';
|
|
2
2
|
import { E as EndpointMode, T as ToolWithHandler, a as EffectHandlerContext, M as ManifestEffectMetamodelSpec, R as ResolvedEffectBehaviors, S as SessionHeapEntry, b as SessionHeapList, c as SessionHeapSnapshot, P as Prompt, d as SessionTranscriptEntry } from './spend-DpRRCrAr.mjs';
|
|
3
3
|
export { cN as APIError, A as AccessTokenProvider, J as AdoptEnvironmentOptions, bg as ArtifactApprovalDecisionInput, bh as ArtifactApprovalDecisionResult, be as ArtifactApprovalTask, bf as ArtifactApprovalTaskListOptions, bd as ArtifactApprovalTaskStatus, aa as Assignment, ab as AssignmentListResponse, al as Build, an as BuildListResponse, ac as BuildPolicy, ak as BuildStatus, C as ConditionIR, K as ConnectOptions, aV as ConversationActionSuggestion, aZ as ConversationAppendResult, aW as ConversationMessageAction, aY as ConversationMessageInput, aX as ConversationMessagePart, aP as ConversationMessageShowRefs, Q as ConversationSessionInfo, W as ConversationSessionListOptions, V as ConversationSessionListStatus, aQ as ConversationTableCell, aR as ConversationTableColumn, aU as ConversationTableProjection, aT as ConversationTableRow, aS as ConversationTableRowReference, ag as CreateEnvironmentData, a8 as CreatePermissionProfileData, a4 as CreateSandboxData, L as CreateSessionOptions, bV as DefineRelationshipOptions, cO as DeleteResponse, D as DomainState, aE as EffectHandler, aB as EffectInfo, av as EffectInvocationMetadata, au as EffectInvocationMode, aw as EffectSchema, az as EffectVersionSelector, ax as EffectWithHandler, aD as EffectsChangedEvent, af as EnvironmentData, aM as EnvironmentFeedbackRecord, ci as EnvironmentImporter, ch as EnvironmentImporterImportOptions, ah as EnvironmentListResponse, cb as EnvironmentRecordImportSummary, cg as EnvironmentSetupImporterClaim, ce as EnvironmentSetupLifecycleStatus, cf as EnvironmentSetupSummary, cc as EnvironmentSetupTriggerReason, b$ as EnvironmentStateMachineProxy, bZ as EnvironmentStateObservationInput, c0 as EnvironmentStateProxy, bY as EnvironmentStateTarget, b_ as EnvironmentStateUpdateInput, z as GranularAuth, y as GranularOptions, a1 as GranularQuotaPolicy, a2 as GranularQuotaProgress, G as GranularSpendContext, cM as GraphQLResult, aF as InstanceEffectHandler, I as InstanceToolHandler, aO as Job, aK as JobFeedbackInput, aJ as JobFeedbackMetadata, aL as JobFeedbackRecord, aH as JobFeedbackSentiment, aI as JobFeedbackToolCall, aG as JobStatus, aN as JobSubmitResult, ai as Manifest, cB as ManifestApprovalRequiredSpec, cL as ManifestContent, cC as ManifestCreatesSpec, cz as ManifestDryRunSpec, cF as ManifestEffectDeclaration, cE as ManifestEffectSchema, cl as ManifestEnumRuleSpec, cH as ManifestEventStreamDef, cG as ManifestEventTypeDef, cm as ManifestFilterBySpec, cJ as ManifestImport, aj as ManifestListResponse, cI as ManifestOperation, cy as ManifestPostConditionSpec, cj as ManifestPropertySpec, cD as ManifestRelationshipDef, cA as ManifestReverseSpec, cx as ManifestStateMachineSpec, co as ManifestStateMachineStateSpec, cw as ManifestStateMachineTransitionSpec, cq as ManifestStateTransitionActionSpec, cr as ManifestStateTransitionAssigneeSpec, cv as ManifestStateTransitionExpectedOutcomeSpec, cp as ManifestStateTransitionInputBinding, cu as ManifestStateTransitionPermissionSpec, cs as ManifestStateTransitionRelatedStateRequirementSpec, ct as ManifestStateTransitionRequirementsSpec, ck as ManifestValidationOperator, cn as ManifestValidationRuleSpec, cK as ManifestVolume, bp as ManualActionListOptions, bn as ManualActionOccurrence, bo as ManualActionRecordResult, bl as ManualActionRelatedRecord, bj as ManualActionSource, bi as ManualActionStatus, bq as ManualActionSuggestion, br as ManualActionSuggestionOptions, bk as ManualActionTarget, bJ as MarkUserEnvironmentReadOptions, x as MatchedPolicy, bT as ModelRef, N as NormalizedOpenAIUsage, i as OPENAI_MODEL_PRICING_USD_PER_MILLION, O as OpenAIModelPricing, h as OpenAITokenSpend, l as OpenAIUsageSpendEvent, H as OpenEnvironmentOptions, a7 as PermissionProfile, a9 as PermissionProfileListResponse, a6 as PermissionRules, u as PolicyOperator, v as PolicyOrigin, s as PolicyPredicateSource, w as PolicyRuleIR, q as PolicySource, ay as PublishEffectsResult, f as PublishToolsResult, a0 as QuotaLineItemFilter, Z as QuotaPeriod, Y as QuotaScopeType, _ as QuotaStatus, bN as RPCRequest, bQ as RPCRequestFromServer, bO as RPCResponse, ca as RecordImport, c9 as RecordImportItem, c7 as RecordImportItemStatus, c5 as RecordImportOptions, c8 as RecordImportStats, c6 as RecordImportStatus, c4 as RecordImportWriteMode, bm as RecordManualActionInput, bz as RecordMentionInput, bW as RecordObjectOptions, c1 as RecordObjectResult, bX as RecordObjectStateValue, c2 as RecordObjectsChunkInfo, c3 as RecordObjectsOptions, m as RecordOpenAIUsageSpendOptions, o as RecordOpenAIUsageSpendResult, by as RecordSearchOptions, bx as RecordSearchResult, B as RecordUserOptions, bU as RelationshipInfo, at as ResolvedEffectApprovalRequired, ar as ResolvedEffectDryRun, aq as ResolvedEffectPostCondition, as as ResolvedEffectReverse, cd as RunEnvironmentImporterOptions, a3 as Sandbox, a5 as SandboxListResponse, ap as SemanticVersionDiff, ao as SemanticVersionDiffEntry, bc as SessionArtifactApprovalOptions, b6 as SessionArtifactAutonomyPolicy, bb as SessionArtifactExecutionOptions, ba as SessionArtifactExecutionResult, b5 as SessionArtifactKind, b8 as SessionArtifactListOptions, b7 as SessionArtifactRecord, b4 as SessionArtifactStatus, b9 as SessionArtifactValidationResult, bB as SessionCollectionListOptions, bD as SessionCollectionListResult, a_ as SessionConversationMessage, bA as SessionDocumentResult, b1 as SessionFileKind, b3 as SessionFileRecord, b0 as SessionFileSource, b2 as SessionFileStatus, bs as SessionFileUploadOptions, bu as SessionHeapFieldType, bv as SessionHeapFieldValue, bw as SessionHeapVariable, bC as SessionJobListOptions, bt as SessionJobRecord, a$ as SessionTimelineEvent, X as SpendLineItemType, $ as SpendSummary, cP as StreamEvent, cR as StreamStats, cQ as StreamSubscription, F as Subject, bP as SyncMessage, g as ToolHandler, aA as ToolInfo, bR as ToolInvokeParams, bS as ToolResultParams, e as ToolSchema, aC as ToolsChangedEvent, U as User, bF as UserEnvironmentMessagePreview, bE as UserEnvironmentPrompt, bG as UserEnvironmentSessionState, bH as UserEnvironmentState, bI as UserEnvironmentStateOptions, am as Version, ae as VersionTag, ad as VersionTracking, bM as WSClientOptions, bK as WSDisconnectInfo, bL as WSReconnectErrorInfo, p as buildOpenAISpendEventId, k as calculateOpenAITokenSpend, j as getOpenAIModelPricing, n as normalizeOpenAIUsage, r as recordOpenAIUsageSpend, t as toGranularHttpBase } from './spend-DpRRCrAr.mjs';
|
|
4
4
|
export { BuildGranularAgentSystemPromptInput, GeneratedJobCodeIssue, GranularAgentExecutionCheckpoint, GranularAgentHeapSummaryOptions, GranularAgentManualActionMemorySuggestion, GranularAgentPromptCapabilities, GranularAgentReferentFocus, GranularAgentSessionContext, GranularAgentToolInfo, GranularAgentWorkflowFocus, GranularReasoningTraceChunkResult, GranularReasoningTraceOptions, HarnessContinuationDecision, HarnessControllerBudgets, HarnessProjectionOptions, HarnessPromptLike, HarnessRenderedContinuation, HarnessRenderedPrompt, HarnessTemplate, HarnessTemplateManifest, HarnessTemplateSelectionOptions, HarnessTemplateStatus, HarnessVerifierSnapshot, HarnessVerifierSnapshotInput, ReviewGeneratedJobCodeOptions, buildContinuationInstruction, buildContinuationInstructionFromTemplate, buildGranularAgentCheckpointBlock, buildGranularAgentDomainBlock, buildGranularAgentFileBlock, buildGranularAgentHeapBlock, buildGranularAgentLoopBlock, buildGranularAgentManualActionBlock, buildGranularAgentManualActionMemorySummary, buildGranularAgentReferentBlock, buildGranularAgentRuntimeImportsBlock, buildGranularAgentSessionBlock, buildGranularAgentSystemPrompt, buildGranularAgentSystemPromptFromTemplate, buildGranularAgentToolBlock, buildGranularAgentWorkflowBlock, consumeGranularReasoningOnlyChunk, consumeGranularReasoningTraceChunk, createHarnessVerifierSnapshot, evaluateContinuation, getCurrentClosureId, getDefaultHarnessTemplateId, getExclusivePromptTarget, hasOpenPrompt, hashHarnessTemplateValue, listHarnessTemplates, projectConversationReferentFocus, projectConversationReferentSummary, projectHeapSummary, projectLoopSummary, projectSessionFileSummary, projectWorkflowFocus, projectWorkflowSummary, renderContinuationInstructionFromTemplate, renderGranularAgentSystemPromptFromTemplate, resolveHarnessTemplate, reviewGeneratedJobCode, stripGranularReasoningTrace, validateHarnessTemplateManifest } from './agent-harness.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { E as Environment, a as EnvironmentSession, G as Granular, O as OntologyHandle, S as Session, W as WSClient } from './client-
|
|
1
|
+
export { E as Environment, a as EnvironmentSession, G as Granular, O as OntologyHandle, S as Session, W as WSClient } from './client-BKde5VzV.js';
|
|
2
2
|
import { E as EndpointMode, T as ToolWithHandler, a as EffectHandlerContext, M as ManifestEffectMetamodelSpec, R as ResolvedEffectBehaviors, S as SessionHeapEntry, b as SessionHeapList, c as SessionHeapSnapshot, P as Prompt, d as SessionTranscriptEntry } from './spend-DpRRCrAr.js';
|
|
3
3
|
export { cN as APIError, A as AccessTokenProvider, J as AdoptEnvironmentOptions, bg as ArtifactApprovalDecisionInput, bh as ArtifactApprovalDecisionResult, be as ArtifactApprovalTask, bf as ArtifactApprovalTaskListOptions, bd as ArtifactApprovalTaskStatus, aa as Assignment, ab as AssignmentListResponse, al as Build, an as BuildListResponse, ac as BuildPolicy, ak as BuildStatus, C as ConditionIR, K as ConnectOptions, aV as ConversationActionSuggestion, aZ as ConversationAppendResult, aW as ConversationMessageAction, aY as ConversationMessageInput, aX as ConversationMessagePart, aP as ConversationMessageShowRefs, Q as ConversationSessionInfo, W as ConversationSessionListOptions, V as ConversationSessionListStatus, aQ as ConversationTableCell, aR as ConversationTableColumn, aU as ConversationTableProjection, aT as ConversationTableRow, aS as ConversationTableRowReference, ag as CreateEnvironmentData, a8 as CreatePermissionProfileData, a4 as CreateSandboxData, L as CreateSessionOptions, bV as DefineRelationshipOptions, cO as DeleteResponse, D as DomainState, aE as EffectHandler, aB as EffectInfo, av as EffectInvocationMetadata, au as EffectInvocationMode, aw as EffectSchema, az as EffectVersionSelector, ax as EffectWithHandler, aD as EffectsChangedEvent, af as EnvironmentData, aM as EnvironmentFeedbackRecord, ci as EnvironmentImporter, ch as EnvironmentImporterImportOptions, ah as EnvironmentListResponse, cb as EnvironmentRecordImportSummary, cg as EnvironmentSetupImporterClaim, ce as EnvironmentSetupLifecycleStatus, cf as EnvironmentSetupSummary, cc as EnvironmentSetupTriggerReason, b$ as EnvironmentStateMachineProxy, bZ as EnvironmentStateObservationInput, c0 as EnvironmentStateProxy, bY as EnvironmentStateTarget, b_ as EnvironmentStateUpdateInput, z as GranularAuth, y as GranularOptions, a1 as GranularQuotaPolicy, a2 as GranularQuotaProgress, G as GranularSpendContext, cM as GraphQLResult, aF as InstanceEffectHandler, I as InstanceToolHandler, aO as Job, aK as JobFeedbackInput, aJ as JobFeedbackMetadata, aL as JobFeedbackRecord, aH as JobFeedbackSentiment, aI as JobFeedbackToolCall, aG as JobStatus, aN as JobSubmitResult, ai as Manifest, cB as ManifestApprovalRequiredSpec, cL as ManifestContent, cC as ManifestCreatesSpec, cz as ManifestDryRunSpec, cF as ManifestEffectDeclaration, cE as ManifestEffectSchema, cl as ManifestEnumRuleSpec, cH as ManifestEventStreamDef, cG as ManifestEventTypeDef, cm as ManifestFilterBySpec, cJ as ManifestImport, aj as ManifestListResponse, cI as ManifestOperation, cy as ManifestPostConditionSpec, cj as ManifestPropertySpec, cD as ManifestRelationshipDef, cA as ManifestReverseSpec, cx as ManifestStateMachineSpec, co as ManifestStateMachineStateSpec, cw as ManifestStateMachineTransitionSpec, cq as ManifestStateTransitionActionSpec, cr as ManifestStateTransitionAssigneeSpec, cv as ManifestStateTransitionExpectedOutcomeSpec, cp as ManifestStateTransitionInputBinding, cu as ManifestStateTransitionPermissionSpec, cs as ManifestStateTransitionRelatedStateRequirementSpec, ct as ManifestStateTransitionRequirementsSpec, ck as ManifestValidationOperator, cn as ManifestValidationRuleSpec, cK as ManifestVolume, bp as ManualActionListOptions, bn as ManualActionOccurrence, bo as ManualActionRecordResult, bl as ManualActionRelatedRecord, bj as ManualActionSource, bi as ManualActionStatus, bq as ManualActionSuggestion, br as ManualActionSuggestionOptions, bk as ManualActionTarget, bJ as MarkUserEnvironmentReadOptions, x as MatchedPolicy, bT as ModelRef, N as NormalizedOpenAIUsage, i as OPENAI_MODEL_PRICING_USD_PER_MILLION, O as OpenAIModelPricing, h as OpenAITokenSpend, l as OpenAIUsageSpendEvent, H as OpenEnvironmentOptions, a7 as PermissionProfile, a9 as PermissionProfileListResponse, a6 as PermissionRules, u as PolicyOperator, v as PolicyOrigin, s as PolicyPredicateSource, w as PolicyRuleIR, q as PolicySource, ay as PublishEffectsResult, f as PublishToolsResult, a0 as QuotaLineItemFilter, Z as QuotaPeriod, Y as QuotaScopeType, _ as QuotaStatus, bN as RPCRequest, bQ as RPCRequestFromServer, bO as RPCResponse, ca as RecordImport, c9 as RecordImportItem, c7 as RecordImportItemStatus, c5 as RecordImportOptions, c8 as RecordImportStats, c6 as RecordImportStatus, c4 as RecordImportWriteMode, bm as RecordManualActionInput, bz as RecordMentionInput, bW as RecordObjectOptions, c1 as RecordObjectResult, bX as RecordObjectStateValue, c2 as RecordObjectsChunkInfo, c3 as RecordObjectsOptions, m as RecordOpenAIUsageSpendOptions, o as RecordOpenAIUsageSpendResult, by as RecordSearchOptions, bx as RecordSearchResult, B as RecordUserOptions, bU as RelationshipInfo, at as ResolvedEffectApprovalRequired, ar as ResolvedEffectDryRun, aq as ResolvedEffectPostCondition, as as ResolvedEffectReverse, cd as RunEnvironmentImporterOptions, a3 as Sandbox, a5 as SandboxListResponse, ap as SemanticVersionDiff, ao as SemanticVersionDiffEntry, bc as SessionArtifactApprovalOptions, b6 as SessionArtifactAutonomyPolicy, bb as SessionArtifactExecutionOptions, ba as SessionArtifactExecutionResult, b5 as SessionArtifactKind, b8 as SessionArtifactListOptions, b7 as SessionArtifactRecord, b4 as SessionArtifactStatus, b9 as SessionArtifactValidationResult, bB as SessionCollectionListOptions, bD as SessionCollectionListResult, a_ as SessionConversationMessage, bA as SessionDocumentResult, b1 as SessionFileKind, b3 as SessionFileRecord, b0 as SessionFileSource, b2 as SessionFileStatus, bs as SessionFileUploadOptions, bu as SessionHeapFieldType, bv as SessionHeapFieldValue, bw as SessionHeapVariable, bC as SessionJobListOptions, bt as SessionJobRecord, a$ as SessionTimelineEvent, X as SpendLineItemType, $ as SpendSummary, cP as StreamEvent, cR as StreamStats, cQ as StreamSubscription, F as Subject, bP as SyncMessage, g as ToolHandler, aA as ToolInfo, bR as ToolInvokeParams, bS as ToolResultParams, e as ToolSchema, aC as ToolsChangedEvent, U as User, bF as UserEnvironmentMessagePreview, bE as UserEnvironmentPrompt, bG as UserEnvironmentSessionState, bH as UserEnvironmentState, bI as UserEnvironmentStateOptions, am as Version, ae as VersionTag, ad as VersionTracking, bM as WSClientOptions, bK as WSDisconnectInfo, bL as WSReconnectErrorInfo, p as buildOpenAISpendEventId, k as calculateOpenAITokenSpend, j as getOpenAIModelPricing, n as normalizeOpenAIUsage, r as recordOpenAIUsageSpend, t as toGranularHttpBase } from './spend-DpRRCrAr.js';
|
|
4
4
|
export { BuildGranularAgentSystemPromptInput, GeneratedJobCodeIssue, GranularAgentExecutionCheckpoint, GranularAgentHeapSummaryOptions, GranularAgentManualActionMemorySuggestion, GranularAgentPromptCapabilities, GranularAgentReferentFocus, GranularAgentSessionContext, GranularAgentToolInfo, GranularAgentWorkflowFocus, GranularReasoningTraceChunkResult, GranularReasoningTraceOptions, HarnessContinuationDecision, HarnessControllerBudgets, HarnessProjectionOptions, HarnessPromptLike, HarnessRenderedContinuation, HarnessRenderedPrompt, HarnessTemplate, HarnessTemplateManifest, HarnessTemplateSelectionOptions, HarnessTemplateStatus, HarnessVerifierSnapshot, HarnessVerifierSnapshotInput, ReviewGeneratedJobCodeOptions, buildContinuationInstruction, buildContinuationInstructionFromTemplate, buildGranularAgentCheckpointBlock, buildGranularAgentDomainBlock, buildGranularAgentFileBlock, buildGranularAgentHeapBlock, buildGranularAgentLoopBlock, buildGranularAgentManualActionBlock, buildGranularAgentManualActionMemorySummary, buildGranularAgentReferentBlock, buildGranularAgentRuntimeImportsBlock, buildGranularAgentSessionBlock, buildGranularAgentSystemPrompt, buildGranularAgentSystemPromptFromTemplate, buildGranularAgentToolBlock, buildGranularAgentWorkflowBlock, consumeGranularReasoningOnlyChunk, consumeGranularReasoningTraceChunk, createHarnessVerifierSnapshot, evaluateContinuation, getCurrentClosureId, getDefaultHarnessTemplateId, getExclusivePromptTarget, hasOpenPrompt, hashHarnessTemplateValue, listHarnessTemplates, projectConversationReferentFocus, projectConversationReferentSummary, projectHeapSummary, projectLoopSummary, projectSessionFileSummary, projectWorkflowFocus, projectWorkflowSummary, renderContinuationInstructionFromTemplate, renderGranularAgentSystemPromptFromTemplate, resolveHarnessTemplate, reviewGeneratedJobCode, stripGranularReasoningTrace, validateHarnessTemplateManifest } from './agent-harness.js';
|
package/dist/index.js
CHANGED
|
@@ -14453,6 +14453,7 @@ var Environment = class _Environment {
|
|
|
14453
14453
|
import: async (records, options) => this.enqueueRecordImport(records, options),
|
|
14454
14454
|
listImports: async (status) => this.listRecordImports(status),
|
|
14455
14455
|
getImport: async (importId) => this.getRecordImport(importId),
|
|
14456
|
+
listImportItems: async (importId, status) => this.listRecordImportItems(importId, status),
|
|
14456
14457
|
getImportSummary: async () => this.getRecordImportSummary(),
|
|
14457
14458
|
cancelImport: async (importId) => this.cancelRecordImport(importId),
|
|
14458
14459
|
getAwaitingCount: async () => this.getAwaitingRecordCount()
|
|
@@ -15631,6 +15632,15 @@ var Environment = class _Environment {
|
|
|
15631
15632
|
`/control/record-imports/${importId}`
|
|
15632
15633
|
);
|
|
15633
15634
|
}
|
|
15635
|
+
/**
|
|
15636
|
+
* List the individual records persisted for one asynchronous import. This
|
|
15637
|
+
* makes terminal import failures diagnosable without database access.
|
|
15638
|
+
*/
|
|
15639
|
+
async listRecordImportItems(importId, status) {
|
|
15640
|
+
const suffix = status ? `?status=${encodeURIComponent(status)}` : "";
|
|
15641
|
+
const response = await this.controlPlaneRequest(`/control/record-imports/${importId}/items${suffix}`);
|
|
15642
|
+
return Array.isArray(response.items) ? response.items : [];
|
|
15643
|
+
}
|
|
15634
15644
|
/**
|
|
15635
15645
|
* Cancel a queued/background record import.
|
|
15636
15646
|
*/
|
|
@@ -16447,6 +16457,55 @@ var Granular = class _Granular {
|
|
|
16447
16457
|
throw error;
|
|
16448
16458
|
}
|
|
16449
16459
|
}
|
|
16460
|
+
/**
|
|
16461
|
+
* Resolve one exact environment only when Granular confirms that it belongs
|
|
16462
|
+
* to the given external user in the requested sandbox (and, optionally,
|
|
16463
|
+
* tag). This is deliberately read-only: callers use it to keep an already
|
|
16464
|
+
* opened delegated workspace stable while a newer active environment is
|
|
16465
|
+
* being prepared in the background.
|
|
16466
|
+
*/
|
|
16467
|
+
async getEnvironmentForUser(options) {
|
|
16468
|
+
const sandboxId = options.sandboxId.trim();
|
|
16469
|
+
const userId = options.userId.trim();
|
|
16470
|
+
const environmentId = options.environmentId.trim();
|
|
16471
|
+
const tagName = options.tag?.trim();
|
|
16472
|
+
if (!sandboxId || !userId || !environmentId) {
|
|
16473
|
+
throw new Error(
|
|
16474
|
+
"getEnvironmentForUser() requires sandboxId, userId, and environmentId."
|
|
16475
|
+
);
|
|
16476
|
+
}
|
|
16477
|
+
const subjects = await this.request(
|
|
16478
|
+
`/control/subjects?identityId=${encodeURIComponent(userId)}`
|
|
16479
|
+
);
|
|
16480
|
+
const subject = (subjects.items || []).find(
|
|
16481
|
+
(item) => item.identityId === userId || item.userId === userId
|
|
16482
|
+
);
|
|
16483
|
+
const subjectId = subject?.subjectId || subject?.granularId;
|
|
16484
|
+
if (!subjectId) return null;
|
|
16485
|
+
let environment;
|
|
16486
|
+
try {
|
|
16487
|
+
environment = await this.environments.get(environmentId);
|
|
16488
|
+
} catch (error) {
|
|
16489
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
16490
|
+
if (message.includes("404") || message.includes("not found")) {
|
|
16491
|
+
return null;
|
|
16492
|
+
}
|
|
16493
|
+
throw error;
|
|
16494
|
+
}
|
|
16495
|
+
if (environment.sandboxId !== sandboxId || environment.subjectId !== subjectId) {
|
|
16496
|
+
return null;
|
|
16497
|
+
}
|
|
16498
|
+
if (tagName) {
|
|
16499
|
+
const tags = await this.request(`/control/sandboxes/${encodeURIComponent(sandboxId)}/tags`);
|
|
16500
|
+
const tag = (tags.items || []).find(
|
|
16501
|
+
(candidate) => candidate?.name === tagName
|
|
16502
|
+
);
|
|
16503
|
+
if (!tag || environment.tagId !== tag.tagId) {
|
|
16504
|
+
return null;
|
|
16505
|
+
}
|
|
16506
|
+
}
|
|
16507
|
+
return this.bindEnvironmentHandle(environment);
|
|
16508
|
+
}
|
|
16450
16509
|
/**
|
|
16451
16510
|
* Register one reviewed, pre-existing environment as the active workspace
|
|
16452
16511
|
* for an external user. This is for a controlled migration only: it does
|