deepline 0.3.15 → 0.3.17
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/bundling-sources/sdk/src/client.ts +7 -0
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/shared_libs/integrations/bettercontact-execution-policy.ts +29 -0
- package/dist/bundling-sources/shared_libs/play-runtime/batch-runtime.ts +19 -3
- package/dist/bundling-sources/shared_libs/play-runtime/bettercontact-batching.ts +726 -0
- package/dist/bundling-sources/shared_libs/play-runtime/context.ts +13 -6
- package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-batching-registry.ts +2 -0
- package/dist/bundling-sources/shared_libs/product-notifications/contract.ts +61 -0
- package/dist/cli/index.js +70 -7
- package/dist/cli/index.mjs +70 -7
- package/dist/index.js +14 -1
- package/dist/index.mjs +14 -1
- package/dist/install-integrity.json +2 -0
- package/package.json +1 -1
|
@@ -5369,6 +5369,7 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
5369
5369
|
entries: Array<{
|
|
5370
5370
|
request: ToolCallRequest;
|
|
5371
5371
|
result: unknown | null;
|
|
5372
|
+
status?: string;
|
|
5372
5373
|
metadata?: ToolResultMetadataInput | null;
|
|
5373
5374
|
jobId?: string;
|
|
5374
5375
|
meta?: Record<string, unknown>;
|
|
@@ -5380,7 +5381,8 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
5380
5381
|
...entry,
|
|
5381
5382
|
wrapped: await this.wrapToolExecutionResult({
|
|
5382
5383
|
toolId,
|
|
5383
|
-
status:
|
|
5384
|
+
status:
|
|
5385
|
+
entry.status ?? (entry.result == null ? 'no_result' : 'completed'),
|
|
5384
5386
|
jobId: entry.jobId,
|
|
5385
5387
|
result: entry.result,
|
|
5386
5388
|
metadata: entry.metadata,
|
|
@@ -11282,12 +11284,13 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
11282
11284
|
}
|
|
11283
11285
|
continue;
|
|
11284
11286
|
}
|
|
11287
|
+
const batchExecution = entry.result;
|
|
11285
11288
|
try {
|
|
11286
11289
|
const splitResults =
|
|
11287
|
-
|
|
11290
|
+
batchExecution != null
|
|
11288
11291
|
? entry.request.splitResults(
|
|
11289
11292
|
legacyResultForBatchSplitter(
|
|
11290
|
-
|
|
11293
|
+
batchExecution.execution,
|
|
11291
11294
|
),
|
|
11292
11295
|
)
|
|
11293
11296
|
: entry.request.memberRequests.map(() => null);
|
|
@@ -11298,11 +11301,12 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
11298
11301
|
(request, index) => ({
|
|
11299
11302
|
request,
|
|
11300
11303
|
result: splitResults[index] ?? null,
|
|
11304
|
+
status: batchExecution?.execution.status,
|
|
11301
11305
|
toolResponse:
|
|
11302
|
-
|
|
11306
|
+
batchExecution == null
|
|
11303
11307
|
? undefined
|
|
11304
11308
|
: publicToolResponseForBatchedItem(
|
|
11305
|
-
|
|
11309
|
+
batchExecution.execution,
|
|
11306
11310
|
splitResults[index] ?? null,
|
|
11307
11311
|
this.currentToolResponseContract ===
|
|
11308
11312
|
RAW_V2_TOOL_RESPONSE_CONTRACT,
|
|
@@ -11323,7 +11327,7 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
11323
11327
|
resolveLiveFollowers(request, resolvedResults[index]);
|
|
11324
11328
|
}
|
|
11325
11329
|
} finally {
|
|
11326
|
-
|
|
11330
|
+
batchExecution?.releaseToolSlot();
|
|
11327
11331
|
}
|
|
11328
11332
|
}
|
|
11329
11333
|
|
|
@@ -11340,6 +11344,7 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
11340
11344
|
const completionBuffer: Array<{
|
|
11341
11345
|
request: ToolCallRequest;
|
|
11342
11346
|
result: unknown | null;
|
|
11347
|
+
status?: string;
|
|
11343
11348
|
metadata?: ToolResultMetadataInput | null;
|
|
11344
11349
|
jobId?: string;
|
|
11345
11350
|
meta?: Record<string, unknown>;
|
|
@@ -11359,6 +11364,7 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
11359
11364
|
entries.map((entry) => ({
|
|
11360
11365
|
request: entry.request,
|
|
11361
11366
|
result: entry.result,
|
|
11367
|
+
status: entry.status,
|
|
11362
11368
|
metadata: entry.metadata,
|
|
11363
11369
|
jobId: entry.jobId,
|
|
11364
11370
|
meta: entry.meta,
|
|
@@ -11392,6 +11398,7 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
|
|
|
11392
11398
|
completionBuffer.push({
|
|
11393
11399
|
request,
|
|
11394
11400
|
result: execution.result ?? null,
|
|
11401
|
+
status: execution.status,
|
|
11395
11402
|
metadata: execution.metadata ?? null,
|
|
11396
11403
|
jobId: execution.jobId,
|
|
11397
11404
|
meta: execution.meta,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AnyBatchOperationStrategy } from './batching-types';
|
|
2
|
+
import { bettercontactBatchStrategies } from './bettercontact-batching';
|
|
2
3
|
import { DEFAULT_PLAY_RUNTIME_BATCH_STRATEGIES } from './default-batch-strategies';
|
|
3
4
|
import { fullenrichBatchStrategies } from './fullenrich-batching';
|
|
4
5
|
import { opensosdataBatchStrategies } from './opensosdata-batching';
|
|
@@ -8,6 +9,7 @@ export const PLAY_RUNTIME_BATCH_OPERATION_REGISTRY: Record<
|
|
|
8
9
|
AnyBatchOperationStrategy
|
|
9
10
|
> = {
|
|
10
11
|
...DEFAULT_PLAY_RUNTIME_BATCH_STRATEGIES,
|
|
12
|
+
...bettercontactBatchStrategies,
|
|
11
13
|
...fullenrichBatchStrategies,
|
|
12
14
|
...opensosdataBatchStrategies,
|
|
13
15
|
};
|
|
@@ -75,6 +75,67 @@ export function defaultProductNotificationEventTypes(): ProductNotificationEvent
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
export const PRODUCT_NOTIFICATION_DESTINATION_KINDS = ['slack'] as const;
|
|
78
|
+
/**
|
|
79
|
+
* The legacy settings API predates named notification rules. Its shortcuts
|
|
80
|
+
* operate on this deterministic compatibility rule when more than one Slack
|
|
81
|
+
* notification exists.
|
|
82
|
+
*/
|
|
83
|
+
export const LEGACY_SLACK_NOTIFICATION_NAME = 'Slack notifications';
|
|
84
|
+
export const PRODUCT_NOTIFICATION_LEGACY_SELECTION_ERROR_CODE =
|
|
85
|
+
'PRODUCT_NOTIFICATION_LEGACY_SELECTION_AMBIGUOUS';
|
|
86
|
+
|
|
87
|
+
export type LegacySlackNotificationDestination = {
|
|
88
|
+
kind: string;
|
|
89
|
+
name: string;
|
|
90
|
+
archivedAt?: number;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export class ProductNotificationLegacySelectionError extends Error {
|
|
94
|
+
constructor(message: string) {
|
|
95
|
+
super(message);
|
|
96
|
+
this.name = 'ProductNotificationLegacySelectionError';
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function isProductNotificationLegacySelectionError(
|
|
101
|
+
error: unknown,
|
|
102
|
+
): boolean {
|
|
103
|
+
if (!error || typeof error !== 'object' || !('data' in error)) return false;
|
|
104
|
+
const data = (error as { data?: unknown }).data;
|
|
105
|
+
return (
|
|
106
|
+
typeof data === 'object' &&
|
|
107
|
+
data !== null &&
|
|
108
|
+
(data as { code?: unknown }).code ===
|
|
109
|
+
PRODUCT_NOTIFICATION_LEGACY_SELECTION_ERROR_CODE
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Resolve the singleton target for the legacy settings API without ever
|
|
115
|
+
* silently choosing one of several named notification rules.
|
|
116
|
+
*/
|
|
117
|
+
export function resolveLegacySlackNotification<
|
|
118
|
+
T extends LegacySlackNotificationDestination,
|
|
119
|
+
>(destinations: readonly T[]): T | null {
|
|
120
|
+
const slackDestinations = destinations.filter(
|
|
121
|
+
(destination) =>
|
|
122
|
+
destination.kind === 'slack' && destination.archivedAt === undefined,
|
|
123
|
+
);
|
|
124
|
+
const canonical = slackDestinations.filter(
|
|
125
|
+
(destination) => destination.name === LEGACY_SLACK_NOTIFICATION_NAME,
|
|
126
|
+
);
|
|
127
|
+
if (canonical.length === 1) return canonical[0]!;
|
|
128
|
+
if (canonical.length > 1) {
|
|
129
|
+
throw new ProductNotificationLegacySelectionError(
|
|
130
|
+
`More than one \"${LEGACY_SLACK_NOTIFICATION_NAME}\" Slack notification exists. Use the named notification API to choose one.`,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
if (slackDestinations.length <= 1) return slackDestinations[0] ?? null;
|
|
134
|
+
throw new ProductNotificationLegacySelectionError(
|
|
135
|
+
'More than one Slack notification is configured. Use the named notification API to choose one.',
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
78
139
|
export const PRODUCT_NOTIFICATION_SLACK_OAUTH_SCOPES = [
|
|
79
140
|
'channels:read',
|
|
80
141
|
'chat:write',
|
package/dist/cli/index.js
CHANGED
|
@@ -1047,7 +1047,7 @@ var SDK_RELEASE = {
|
|
|
1047
1047
|
// 0.3.0 introduces raw-v2: complete scrubbed provider responses are
|
|
1048
1048
|
// available at toolResponse.rawV2 while toolResponse.raw and all declared
|
|
1049
1049
|
// getters keep their established compatibility behavior.
|
|
1050
|
-
version: "0.3.
|
|
1050
|
+
version: "0.3.17",
|
|
1051
1051
|
updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
|
|
1052
1052
|
contracts: {
|
|
1053
1053
|
api: {
|
|
@@ -1904,6 +1904,31 @@ var PRODUCT_NOTIFICATION_EVENT_CATALOG = [
|
|
|
1904
1904
|
var PRODUCT_NOTIFICATION_EVENT_TYPE_SET = new Set(
|
|
1905
1905
|
PRODUCT_NOTIFICATION_EVENT_CATALOG.map((event) => event.id)
|
|
1906
1906
|
);
|
|
1907
|
+
var LEGACY_SLACK_NOTIFICATION_NAME = "Slack notifications";
|
|
1908
|
+
var ProductNotificationLegacySelectionError = class extends Error {
|
|
1909
|
+
constructor(message) {
|
|
1910
|
+
super(message);
|
|
1911
|
+
this.name = "ProductNotificationLegacySelectionError";
|
|
1912
|
+
}
|
|
1913
|
+
};
|
|
1914
|
+
function resolveLegacySlackNotification(destinations) {
|
|
1915
|
+
const slackDestinations = destinations.filter(
|
|
1916
|
+
(destination) => destination.kind === "slack" && destination.archivedAt === void 0
|
|
1917
|
+
);
|
|
1918
|
+
const canonical = slackDestinations.filter(
|
|
1919
|
+
(destination) => destination.name === LEGACY_SLACK_NOTIFICATION_NAME
|
|
1920
|
+
);
|
|
1921
|
+
if (canonical.length === 1) return canonical[0];
|
|
1922
|
+
if (canonical.length > 1) {
|
|
1923
|
+
throw new ProductNotificationLegacySelectionError(
|
|
1924
|
+
`More than one "${LEGACY_SLACK_NOTIFICATION_NAME}" Slack notification exists. Use the named notification API to choose one.`
|
|
1925
|
+
);
|
|
1926
|
+
}
|
|
1927
|
+
if (slackDestinations.length <= 1) return slackDestinations[0] ?? null;
|
|
1928
|
+
throw new ProductNotificationLegacySelectionError(
|
|
1929
|
+
"More than one Slack notification is configured. Use the named notification API to choose one."
|
|
1930
|
+
);
|
|
1931
|
+
}
|
|
1907
1932
|
var PRODUCT_NOTIFICATION_SLACK_OAUTH_SCOPES = [
|
|
1908
1933
|
"channels:read",
|
|
1909
1934
|
"chat:write",
|
|
@@ -3747,6 +3772,16 @@ function resolveTheirstackClientTimeoutMs(endpointId, payload) {
|
|
|
3747
3772
|
return usesExtendedTheirstackJobSearchBudget(endpointId, payload) ? THEIRSTACK_SLOW_JOB_SEARCH_CLIENT_TIMEOUT_MS : null;
|
|
3748
3773
|
}
|
|
3749
3774
|
|
|
3775
|
+
// ../shared_libs/integrations/bettercontact-execution-policy.ts
|
|
3776
|
+
var BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS = 12e4;
|
|
3777
|
+
var BETTERCONTACT_LAUNCHER_TOOL_IDS = /* @__PURE__ */ new Set([
|
|
3778
|
+
"bettercontact_enrich",
|
|
3779
|
+
"bettercontact_bulk_enrich"
|
|
3780
|
+
]);
|
|
3781
|
+
function usesExtendedBetterContactLauncherBudget(toolId) {
|
|
3782
|
+
return BETTERCONTACT_LAUNCHER_TOOL_IDS.has(toolId.trim().toLowerCase());
|
|
3783
|
+
}
|
|
3784
|
+
|
|
3750
3785
|
// ../shared_libs/play-runtime/backend.ts
|
|
3751
3786
|
var PLAY_RUNTIME_BACKENDS = {
|
|
3752
3787
|
localProcess: "local_process",
|
|
@@ -4027,6 +4062,9 @@ function resolveToolExecuteTimeoutMs(toolId, input2) {
|
|
|
4027
4062
|
input2
|
|
4028
4063
|
);
|
|
4029
4064
|
if (theirstackTimeoutMs !== null) return theirstackTimeoutMs;
|
|
4065
|
+
if (usesExtendedBetterContactLauncherBudget(normalized)) {
|
|
4066
|
+
return BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS;
|
|
4067
|
+
}
|
|
4030
4068
|
return normalized === "deeplineagent" || normalized === "deeplineagent_deeplineagent" || normalized === "ai_inference" || normalized === "deeplineagent_ai_inference" || normalized === "aiinference" ? DEEPLINEAGENT_EXECUTE_TIMEOUT_MS : void 0;
|
|
4031
4069
|
}
|
|
4032
4070
|
var RUNS_FAILED_LOG_LIMIT = 20;
|
|
@@ -36093,11 +36131,23 @@ var eventHelp = PRODUCT_NOTIFICATION_EVENT_CATALOG.map(
|
|
|
36093
36131
|
(event) => ` ${event.id.padEnd(28)} ${event.description}`
|
|
36094
36132
|
).join("\n");
|
|
36095
36133
|
function slackDestination(settings) {
|
|
36096
|
-
|
|
36134
|
+
const destinations = settings.destinations.map(
|
|
36135
|
+
(entry) => ({
|
|
36136
|
+
...entry,
|
|
36137
|
+
kind: typeof entry.kind === "string" ? entry.kind : "",
|
|
36138
|
+
name: typeof entry.name === "string" ? entry.name : "",
|
|
36139
|
+
archivedAt: typeof entry.archivedAt === "number" ? entry.archivedAt : void 0
|
|
36140
|
+
})
|
|
36141
|
+
);
|
|
36142
|
+
return resolveLegacySlackNotification(
|
|
36143
|
+
destinations
|
|
36144
|
+
);
|
|
36097
36145
|
}
|
|
36098
|
-
function eventLines(settings) {
|
|
36146
|
+
function eventLines(settings, destinationId) {
|
|
36099
36147
|
const enabled = new Map(
|
|
36100
|
-
settings.subscriptions.
|
|
36148
|
+
settings.subscriptions.filter(
|
|
36149
|
+
(entry) => !destinationId || entry.destinationId === destinationId
|
|
36150
|
+
).map((entry) => [entry.eventType, entry.enabled])
|
|
36101
36151
|
);
|
|
36102
36152
|
return settings.catalog.map(
|
|
36103
36153
|
(event) => `${event.id}: ${enabled.get(event.id) === true ? "enabled" : "disabled"} \u2014 ${event.description}`
|
|
@@ -36115,6 +36165,7 @@ function requireCatalogEvent(settings, eventType) {
|
|
|
36115
36165
|
async function printSettings(options) {
|
|
36116
36166
|
const settings = await new DeeplineClient().getNotificationSettings();
|
|
36117
36167
|
const slack = slackDestination(settings);
|
|
36168
|
+
const destinationId = typeof slack?._id === "string" ? slack._id : void 0;
|
|
36118
36169
|
printCommandEnvelope(
|
|
36119
36170
|
{
|
|
36120
36171
|
settings,
|
|
@@ -36128,7 +36179,10 @@ async function printSettings(options) {
|
|
|
36128
36179
|
...slack.lastErrorMessage ? [`issue: ${String(slack.lastErrorMessage)}`] : []
|
|
36129
36180
|
] : ["Not configured."]
|
|
36130
36181
|
},
|
|
36131
|
-
{
|
|
36182
|
+
{
|
|
36183
|
+
title: "subscriptions",
|
|
36184
|
+
lines: eventLines(settings, destinationId)
|
|
36185
|
+
},
|
|
36132
36186
|
{
|
|
36133
36187
|
title: "dead letter queue",
|
|
36134
36188
|
lines: [
|
|
@@ -36317,12 +36371,19 @@ ${eventHelp}
|
|
|
36317
36371
|
);
|
|
36318
36372
|
subscriptions.command("list").description("List every supported event and its current state.").option("--json", "Emit JSON output").action(async (options) => {
|
|
36319
36373
|
const current = await new DeeplineClient().getNotificationSettings();
|
|
36374
|
+
const destination = slackDestination(current);
|
|
36375
|
+
const destinationId = typeof destination?._id === "string" ? destination._id : void 0;
|
|
36320
36376
|
printCommandEnvelope(
|
|
36321
36377
|
{
|
|
36322
36378
|
catalog: current.catalog,
|
|
36323
36379
|
subscriptions: current.subscriptions,
|
|
36324
36380
|
render: {
|
|
36325
|
-
sections: [
|
|
36381
|
+
sections: [
|
|
36382
|
+
{
|
|
36383
|
+
title: "subscriptions",
|
|
36384
|
+
lines: eventLines(current, destinationId)
|
|
36385
|
+
}
|
|
36386
|
+
]
|
|
36326
36387
|
}
|
|
36327
36388
|
},
|
|
36328
36389
|
{ json: options.json }
|
|
@@ -36331,8 +36392,10 @@ ${eventHelp}
|
|
|
36331
36392
|
subscriptions.command("describe").description("Describe one event from the shared product catalog.").argument("<event>", "Event ID; run subscriptions list to enumerate").option("--json", "Emit JSON output").action(async (eventType, options) => {
|
|
36332
36393
|
const current = await new DeeplineClient().getNotificationSettings();
|
|
36333
36394
|
const event = requireCatalogEvent(current, eventType);
|
|
36395
|
+
const destination = slackDestination(current);
|
|
36396
|
+
const destinationId = typeof destination?._id === "string" ? destination._id : void 0;
|
|
36334
36397
|
const subscription = current.subscriptions.find(
|
|
36335
|
-
(entry) => entry.eventType === event.id
|
|
36398
|
+
(entry) => entry.eventType === event.id && (!destinationId || entry.destinationId === destinationId)
|
|
36336
36399
|
);
|
|
36337
36400
|
printCommandEnvelope(
|
|
36338
36401
|
{
|
package/dist/cli/index.mjs
CHANGED
|
@@ -1033,7 +1033,7 @@ var SDK_RELEASE = {
|
|
|
1033
1033
|
// 0.3.0 introduces raw-v2: complete scrubbed provider responses are
|
|
1034
1034
|
// available at toolResponse.rawV2 while toolResponse.raw and all declared
|
|
1035
1035
|
// getters keep their established compatibility behavior.
|
|
1036
|
-
version: "0.3.
|
|
1036
|
+
version: "0.3.17",
|
|
1037
1037
|
updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
|
|
1038
1038
|
contracts: {
|
|
1039
1039
|
api: {
|
|
@@ -1890,6 +1890,31 @@ var PRODUCT_NOTIFICATION_EVENT_CATALOG = [
|
|
|
1890
1890
|
var PRODUCT_NOTIFICATION_EVENT_TYPE_SET = new Set(
|
|
1891
1891
|
PRODUCT_NOTIFICATION_EVENT_CATALOG.map((event) => event.id)
|
|
1892
1892
|
);
|
|
1893
|
+
var LEGACY_SLACK_NOTIFICATION_NAME = "Slack notifications";
|
|
1894
|
+
var ProductNotificationLegacySelectionError = class extends Error {
|
|
1895
|
+
constructor(message) {
|
|
1896
|
+
super(message);
|
|
1897
|
+
this.name = "ProductNotificationLegacySelectionError";
|
|
1898
|
+
}
|
|
1899
|
+
};
|
|
1900
|
+
function resolveLegacySlackNotification(destinations) {
|
|
1901
|
+
const slackDestinations = destinations.filter(
|
|
1902
|
+
(destination) => destination.kind === "slack" && destination.archivedAt === void 0
|
|
1903
|
+
);
|
|
1904
|
+
const canonical = slackDestinations.filter(
|
|
1905
|
+
(destination) => destination.name === LEGACY_SLACK_NOTIFICATION_NAME
|
|
1906
|
+
);
|
|
1907
|
+
if (canonical.length === 1) return canonical[0];
|
|
1908
|
+
if (canonical.length > 1) {
|
|
1909
|
+
throw new ProductNotificationLegacySelectionError(
|
|
1910
|
+
`More than one "${LEGACY_SLACK_NOTIFICATION_NAME}" Slack notification exists. Use the named notification API to choose one.`
|
|
1911
|
+
);
|
|
1912
|
+
}
|
|
1913
|
+
if (slackDestinations.length <= 1) return slackDestinations[0] ?? null;
|
|
1914
|
+
throw new ProductNotificationLegacySelectionError(
|
|
1915
|
+
"More than one Slack notification is configured. Use the named notification API to choose one."
|
|
1916
|
+
);
|
|
1917
|
+
}
|
|
1893
1918
|
var PRODUCT_NOTIFICATION_SLACK_OAUTH_SCOPES = [
|
|
1894
1919
|
"channels:read",
|
|
1895
1920
|
"chat:write",
|
|
@@ -3733,6 +3758,16 @@ function resolveTheirstackClientTimeoutMs(endpointId, payload) {
|
|
|
3733
3758
|
return usesExtendedTheirstackJobSearchBudget(endpointId, payload) ? THEIRSTACK_SLOW_JOB_SEARCH_CLIENT_TIMEOUT_MS : null;
|
|
3734
3759
|
}
|
|
3735
3760
|
|
|
3761
|
+
// ../shared_libs/integrations/bettercontact-execution-policy.ts
|
|
3762
|
+
var BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS = 12e4;
|
|
3763
|
+
var BETTERCONTACT_LAUNCHER_TOOL_IDS = /* @__PURE__ */ new Set([
|
|
3764
|
+
"bettercontact_enrich",
|
|
3765
|
+
"bettercontact_bulk_enrich"
|
|
3766
|
+
]);
|
|
3767
|
+
function usesExtendedBetterContactLauncherBudget(toolId) {
|
|
3768
|
+
return BETTERCONTACT_LAUNCHER_TOOL_IDS.has(toolId.trim().toLowerCase());
|
|
3769
|
+
}
|
|
3770
|
+
|
|
3736
3771
|
// ../shared_libs/play-runtime/backend.ts
|
|
3737
3772
|
var PLAY_RUNTIME_BACKENDS = {
|
|
3738
3773
|
localProcess: "local_process",
|
|
@@ -4013,6 +4048,9 @@ function resolveToolExecuteTimeoutMs(toolId, input2) {
|
|
|
4013
4048
|
input2
|
|
4014
4049
|
);
|
|
4015
4050
|
if (theirstackTimeoutMs !== null) return theirstackTimeoutMs;
|
|
4051
|
+
if (usesExtendedBetterContactLauncherBudget(normalized)) {
|
|
4052
|
+
return BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS;
|
|
4053
|
+
}
|
|
4016
4054
|
return normalized === "deeplineagent" || normalized === "deeplineagent_deeplineagent" || normalized === "ai_inference" || normalized === "deeplineagent_ai_inference" || normalized === "aiinference" ? DEEPLINEAGENT_EXECUTE_TIMEOUT_MS : void 0;
|
|
4017
4055
|
}
|
|
4018
4056
|
var RUNS_FAILED_LOG_LIMIT = 20;
|
|
@@ -36171,11 +36209,23 @@ var eventHelp = PRODUCT_NOTIFICATION_EVENT_CATALOG.map(
|
|
|
36171
36209
|
(event) => ` ${event.id.padEnd(28)} ${event.description}`
|
|
36172
36210
|
).join("\n");
|
|
36173
36211
|
function slackDestination(settings) {
|
|
36174
|
-
|
|
36212
|
+
const destinations = settings.destinations.map(
|
|
36213
|
+
(entry) => ({
|
|
36214
|
+
...entry,
|
|
36215
|
+
kind: typeof entry.kind === "string" ? entry.kind : "",
|
|
36216
|
+
name: typeof entry.name === "string" ? entry.name : "",
|
|
36217
|
+
archivedAt: typeof entry.archivedAt === "number" ? entry.archivedAt : void 0
|
|
36218
|
+
})
|
|
36219
|
+
);
|
|
36220
|
+
return resolveLegacySlackNotification(
|
|
36221
|
+
destinations
|
|
36222
|
+
);
|
|
36175
36223
|
}
|
|
36176
|
-
function eventLines(settings) {
|
|
36224
|
+
function eventLines(settings, destinationId) {
|
|
36177
36225
|
const enabled = new Map(
|
|
36178
|
-
settings.subscriptions.
|
|
36226
|
+
settings.subscriptions.filter(
|
|
36227
|
+
(entry) => !destinationId || entry.destinationId === destinationId
|
|
36228
|
+
).map((entry) => [entry.eventType, entry.enabled])
|
|
36179
36229
|
);
|
|
36180
36230
|
return settings.catalog.map(
|
|
36181
36231
|
(event) => `${event.id}: ${enabled.get(event.id) === true ? "enabled" : "disabled"} \u2014 ${event.description}`
|
|
@@ -36193,6 +36243,7 @@ function requireCatalogEvent(settings, eventType) {
|
|
|
36193
36243
|
async function printSettings(options) {
|
|
36194
36244
|
const settings = await new DeeplineClient().getNotificationSettings();
|
|
36195
36245
|
const slack = slackDestination(settings);
|
|
36246
|
+
const destinationId = typeof slack?._id === "string" ? slack._id : void 0;
|
|
36196
36247
|
printCommandEnvelope(
|
|
36197
36248
|
{
|
|
36198
36249
|
settings,
|
|
@@ -36206,7 +36257,10 @@ async function printSettings(options) {
|
|
|
36206
36257
|
...slack.lastErrorMessage ? [`issue: ${String(slack.lastErrorMessage)}`] : []
|
|
36207
36258
|
] : ["Not configured."]
|
|
36208
36259
|
},
|
|
36209
|
-
{
|
|
36260
|
+
{
|
|
36261
|
+
title: "subscriptions",
|
|
36262
|
+
lines: eventLines(settings, destinationId)
|
|
36263
|
+
},
|
|
36210
36264
|
{
|
|
36211
36265
|
title: "dead letter queue",
|
|
36212
36266
|
lines: [
|
|
@@ -36395,12 +36449,19 @@ ${eventHelp}
|
|
|
36395
36449
|
);
|
|
36396
36450
|
subscriptions.command("list").description("List every supported event and its current state.").option("--json", "Emit JSON output").action(async (options) => {
|
|
36397
36451
|
const current = await new DeeplineClient().getNotificationSettings();
|
|
36452
|
+
const destination = slackDestination(current);
|
|
36453
|
+
const destinationId = typeof destination?._id === "string" ? destination._id : void 0;
|
|
36398
36454
|
printCommandEnvelope(
|
|
36399
36455
|
{
|
|
36400
36456
|
catalog: current.catalog,
|
|
36401
36457
|
subscriptions: current.subscriptions,
|
|
36402
36458
|
render: {
|
|
36403
|
-
sections: [
|
|
36459
|
+
sections: [
|
|
36460
|
+
{
|
|
36461
|
+
title: "subscriptions",
|
|
36462
|
+
lines: eventLines(current, destinationId)
|
|
36463
|
+
}
|
|
36464
|
+
]
|
|
36404
36465
|
}
|
|
36405
36466
|
},
|
|
36406
36467
|
{ json: options.json }
|
|
@@ -36409,8 +36470,10 @@ ${eventHelp}
|
|
|
36409
36470
|
subscriptions.command("describe").description("Describe one event from the shared product catalog.").argument("<event>", "Event ID; run subscriptions list to enumerate").option("--json", "Emit JSON output").action(async (eventType, options) => {
|
|
36410
36471
|
const current = await new DeeplineClient().getNotificationSettings();
|
|
36411
36472
|
const event = requireCatalogEvent(current, eventType);
|
|
36473
|
+
const destination = slackDestination(current);
|
|
36474
|
+
const destinationId = typeof destination?._id === "string" ? destination._id : void 0;
|
|
36412
36475
|
const subscription = current.subscriptions.find(
|
|
36413
|
-
(entry) => entry.eventType === event.id
|
|
36476
|
+
(entry) => entry.eventType === event.id && (!destinationId || entry.destinationId === destinationId)
|
|
36414
36477
|
);
|
|
36415
36478
|
printCommandEnvelope(
|
|
36416
36479
|
{
|
package/dist/index.js
CHANGED
|
@@ -783,7 +783,7 @@ var SDK_RELEASE = {
|
|
|
783
783
|
// 0.3.0 introduces raw-v2: complete scrubbed provider responses are
|
|
784
784
|
// available at toolResponse.rawV2 while toolResponse.raw and all declared
|
|
785
785
|
// getters keep their established compatibility behavior.
|
|
786
|
-
version: "0.3.
|
|
786
|
+
version: "0.3.17",
|
|
787
787
|
updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
|
|
788
788
|
contracts: {
|
|
789
789
|
api: {
|
|
@@ -3483,6 +3483,16 @@ function resolveTheirstackClientTimeoutMs(endpointId, payload) {
|
|
|
3483
3483
|
return usesExtendedTheirstackJobSearchBudget(endpointId, payload) ? THEIRSTACK_SLOW_JOB_SEARCH_CLIENT_TIMEOUT_MS : null;
|
|
3484
3484
|
}
|
|
3485
3485
|
|
|
3486
|
+
// ../shared_libs/integrations/bettercontact-execution-policy.ts
|
|
3487
|
+
var BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS = 12e4;
|
|
3488
|
+
var BETTERCONTACT_LAUNCHER_TOOL_IDS = /* @__PURE__ */ new Set([
|
|
3489
|
+
"bettercontact_enrich",
|
|
3490
|
+
"bettercontact_bulk_enrich"
|
|
3491
|
+
]);
|
|
3492
|
+
function usesExtendedBetterContactLauncherBudget(toolId) {
|
|
3493
|
+
return BETTERCONTACT_LAUNCHER_TOOL_IDS.has(toolId.trim().toLowerCase());
|
|
3494
|
+
}
|
|
3495
|
+
|
|
3486
3496
|
// ../shared_libs/play-runtime/backend.ts
|
|
3487
3497
|
var PLAY_RUNTIME_BACKENDS = {
|
|
3488
3498
|
localProcess: "local_process",
|
|
@@ -3763,6 +3773,9 @@ function resolveToolExecuteTimeoutMs(toolId, input) {
|
|
|
3763
3773
|
input
|
|
3764
3774
|
);
|
|
3765
3775
|
if (theirstackTimeoutMs !== null) return theirstackTimeoutMs;
|
|
3776
|
+
if (usesExtendedBetterContactLauncherBudget(normalized)) {
|
|
3777
|
+
return BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS;
|
|
3778
|
+
}
|
|
3766
3779
|
return normalized === "deeplineagent" || normalized === "deeplineagent_deeplineagent" || normalized === "ai_inference" || normalized === "deeplineagent_ai_inference" || normalized === "aiinference" ? DEEPLINEAGENT_EXECUTE_TIMEOUT_MS : void 0;
|
|
3767
3780
|
}
|
|
3768
3781
|
var RUNS_FAILED_LOG_LIMIT = 20;
|
package/dist/index.mjs
CHANGED
|
@@ -706,7 +706,7 @@ var SDK_RELEASE = {
|
|
|
706
706
|
// 0.3.0 introduces raw-v2: complete scrubbed provider responses are
|
|
707
707
|
// available at toolResponse.rawV2 while toolResponse.raw and all declared
|
|
708
708
|
// getters keep their established compatibility behavior.
|
|
709
|
-
version: "0.3.
|
|
709
|
+
version: "0.3.17",
|
|
710
710
|
updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
|
|
711
711
|
contracts: {
|
|
712
712
|
api: {
|
|
@@ -3406,6 +3406,16 @@ function resolveTheirstackClientTimeoutMs(endpointId, payload) {
|
|
|
3406
3406
|
return usesExtendedTheirstackJobSearchBudget(endpointId, payload) ? THEIRSTACK_SLOW_JOB_SEARCH_CLIENT_TIMEOUT_MS : null;
|
|
3407
3407
|
}
|
|
3408
3408
|
|
|
3409
|
+
// ../shared_libs/integrations/bettercontact-execution-policy.ts
|
|
3410
|
+
var BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS = 12e4;
|
|
3411
|
+
var BETTERCONTACT_LAUNCHER_TOOL_IDS = /* @__PURE__ */ new Set([
|
|
3412
|
+
"bettercontact_enrich",
|
|
3413
|
+
"bettercontact_bulk_enrich"
|
|
3414
|
+
]);
|
|
3415
|
+
function usesExtendedBetterContactLauncherBudget(toolId) {
|
|
3416
|
+
return BETTERCONTACT_LAUNCHER_TOOL_IDS.has(toolId.trim().toLowerCase());
|
|
3417
|
+
}
|
|
3418
|
+
|
|
3409
3419
|
// ../shared_libs/play-runtime/backend.ts
|
|
3410
3420
|
var PLAY_RUNTIME_BACKENDS = {
|
|
3411
3421
|
localProcess: "local_process",
|
|
@@ -3686,6 +3696,9 @@ function resolveToolExecuteTimeoutMs(toolId, input) {
|
|
|
3686
3696
|
input
|
|
3687
3697
|
);
|
|
3688
3698
|
if (theirstackTimeoutMs !== null) return theirstackTimeoutMs;
|
|
3699
|
+
if (usesExtendedBetterContactLauncherBudget(normalized)) {
|
|
3700
|
+
return BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS;
|
|
3701
|
+
}
|
|
3689
3702
|
return normalized === "deeplineagent" || normalized === "deeplineagent_deeplineagent" || normalized === "ai_inference" || normalized === "deeplineagent_ai_inference" || normalized === "aiinference" ? DEEPLINEAGENT_EXECUTE_TIMEOUT_MS : void 0;
|
|
3690
3703
|
}
|
|
3691
3704
|
var RUNS_FAILED_LOG_LIMIT = 20;
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"dist/bundling-sources/sdk/src/tool-output.ts",
|
|
21
21
|
"dist/bundling-sources/sdk/src/types.ts",
|
|
22
22
|
"dist/bundling-sources/sdk/src/version.ts",
|
|
23
|
+
"dist/bundling-sources/shared_libs/integrations/bettercontact-execution-policy.ts",
|
|
23
24
|
"dist/bundling-sources/shared_libs/integrations/theirstack-execution-policy.ts",
|
|
24
25
|
"dist/bundling-sources/shared_libs/observability/node-tracing.ts",
|
|
25
26
|
"dist/bundling-sources/shared_libs/observability/redaction.ts",
|
|
@@ -36,6 +37,7 @@
|
|
|
36
37
|
"dist/bundling-sources/shared_libs/play-runtime/backend.ts",
|
|
37
38
|
"dist/bundling-sources/shared_libs/play-runtime/batch-runtime.ts",
|
|
38
39
|
"dist/bundling-sources/shared_libs/play-runtime/batching-types.ts",
|
|
40
|
+
"dist/bundling-sources/shared_libs/play-runtime/bettercontact-batching.ts",
|
|
39
41
|
"dist/bundling-sources/shared_libs/play-runtime/bounded-dispatch.ts",
|
|
40
42
|
"dist/bundling-sources/shared_libs/play-runtime/builtin-pacing.ts",
|
|
41
43
|
"dist/bundling-sources/shared_libs/play-runtime/cell-provenance.ts",
|