deepline 0.2.30 → 0.2.32
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 +6 -0
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/sdk/src/types.ts +2 -0
- package/dist/bundling-sources/shared_libs/play-runtime/app-runtime-api.ts +3 -0
- package/dist/bundling-sources/shared_libs/play-runtime/context.ts +252 -80
- package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +4 -0
- package/dist/bundling-sources/shared_libs/play-runtime/execution-capabilities.ts +12 -1
- package/dist/bundling-sources/shared_libs/play-runtime/fixture-behavior.ts +421 -0
- package/dist/bundling-sources/shared_libs/play-runtime/governor/governor.ts +18 -1
- package/dist/bundling-sources/shared_libs/play-runtime/governor/policy.ts +12 -2
- package/dist/bundling-sources/shared_libs/play-runtime/protocol.ts +3 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts +12 -6
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-modal-fallback.ts +4 -1
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +100 -3
- package/dist/cli/index.js +253 -7
- package/dist/cli/index.mjs +253 -7
- package/dist/index.d.mts +25 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +3 -1
- package/dist/index.mjs +3 -1
- package/dist/install-integrity.json +1 -0
- package/package.json +1 -1
package/dist/cli/index.mjs
CHANGED
|
@@ -1030,7 +1030,7 @@ var SDK_RELEASE = {
|
|
|
1030
1030
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
1031
1031
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
1032
1032
|
// release keeps lazy paging semantics independent of row residency.
|
|
1033
|
-
version: "0.2.
|
|
1033
|
+
version: "0.2.32",
|
|
1034
1034
|
contracts: {
|
|
1035
1035
|
api: {
|
|
1036
1036
|
name: "sdk-http-api",
|
|
@@ -4190,6 +4190,7 @@ var DeeplineClient = class {
|
|
|
4190
4190
|
// defaults to absurd; callers normally omit this field.
|
|
4191
4191
|
...request.profile ? { profile: request.profile } : {},
|
|
4192
4192
|
...integrationMode ? { integrationMode } : {},
|
|
4193
|
+
...request.fixtureBehavior ? { fixtureBehavior: request.fixtureBehavior } : {},
|
|
4193
4194
|
...runtime ? { runtime } : {},
|
|
4194
4195
|
...testPolicyOverrides ? { testPolicyOverrides } : {}
|
|
4195
4196
|
},
|
|
@@ -4239,6 +4240,7 @@ var DeeplineClient = class {
|
|
|
4239
4240
|
...typeof request.waitForCompletionMs === "number" ? { waitForCompletionMs: request.waitForCompletionMs } : {},
|
|
4240
4241
|
...request.profile ? { profile: request.profile } : {},
|
|
4241
4242
|
...integrationMode ? { integrationMode } : {},
|
|
4243
|
+
...request.fixtureBehavior ? { fixtureBehavior: request.fixtureBehavior } : {},
|
|
4242
4244
|
...runtime ? { runtime } : {},
|
|
4243
4245
|
...testPolicyOverrides ? { testPolicyOverrides } : {}
|
|
4244
4246
|
};
|
|
@@ -17062,6 +17064,188 @@ function isInternalGlueStepId(stepId) {
|
|
|
17062
17064
|
return typeof stepId === "string" && stepId.startsWith(INTERNAL_GLUE_NODE_ID_PREFIX);
|
|
17063
17065
|
}
|
|
17064
17066
|
|
|
17067
|
+
// ../shared_libs/play-runtime/fixture-behavior.ts
|
|
17068
|
+
var FIXTURE_BEHAVIOR_VERSION = 1;
|
|
17069
|
+
var FIXTURE_BEHAVIOR_RESPONSE_VERSION = 2;
|
|
17070
|
+
var MAX_FIXTURE_RESPONSE_DELAY_SAMPLES = 256;
|
|
17071
|
+
var MAX_FIXTURE_RESPONSE_DELAY_MS = 8 * 6e4;
|
|
17072
|
+
var MAX_FIXTURE_RESPONSE_ERROR_MESSAGE_LENGTH = 500;
|
|
17073
|
+
function validateFixtureBehavior(value) {
|
|
17074
|
+
if (value === void 0 || value === null) {
|
|
17075
|
+
return { ok: true, behavior: null };
|
|
17076
|
+
}
|
|
17077
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
17078
|
+
return { ok: false, error: "fixtureBehavior must be a JSON object." };
|
|
17079
|
+
}
|
|
17080
|
+
const record = value;
|
|
17081
|
+
const supportedKeys = record.version === FIXTURE_BEHAVIOR_RESPONSE_VERSION ? /* @__PURE__ */ new Set(["version", "responseSamples"]) : /* @__PURE__ */ new Set(["version", "responseDelaySamplesMs"]);
|
|
17082
|
+
const unknownKeys = Object.keys(record).filter(
|
|
17083
|
+
(key) => !supportedKeys.has(key)
|
|
17084
|
+
);
|
|
17085
|
+
if (unknownKeys.length > 0) {
|
|
17086
|
+
return {
|
|
17087
|
+
ok: false,
|
|
17088
|
+
error: `Unsupported fixtureBehavior field "${unknownKeys[0]}".`
|
|
17089
|
+
};
|
|
17090
|
+
}
|
|
17091
|
+
if (record.version !== FIXTURE_BEHAVIOR_VERSION && record.version !== FIXTURE_BEHAVIOR_RESPONSE_VERSION) {
|
|
17092
|
+
return {
|
|
17093
|
+
ok: false,
|
|
17094
|
+
error: `fixtureBehavior.version must be ${FIXTURE_BEHAVIOR_VERSION} or ${FIXTURE_BEHAVIOR_RESPONSE_VERSION}.`
|
|
17095
|
+
};
|
|
17096
|
+
}
|
|
17097
|
+
if (record.version === FIXTURE_BEHAVIOR_RESPONSE_VERSION) {
|
|
17098
|
+
if (!Array.isArray(record.responseSamples) || record.responseSamples.length === 0 || record.responseSamples.length > MAX_FIXTURE_RESPONSE_DELAY_SAMPLES) {
|
|
17099
|
+
return {
|
|
17100
|
+
ok: false,
|
|
17101
|
+
error: `fixtureBehavior.responseSamples must contain between 1 and ${MAX_FIXTURE_RESPONSE_DELAY_SAMPLES} values.`
|
|
17102
|
+
};
|
|
17103
|
+
}
|
|
17104
|
+
const samples2 = [];
|
|
17105
|
+
for (let index = 0; index < record.responseSamples.length; index += 1) {
|
|
17106
|
+
const value2 = record.responseSamples[index];
|
|
17107
|
+
if (!value2 || typeof value2 !== "object" || Array.isArray(value2)) {
|
|
17108
|
+
return {
|
|
17109
|
+
ok: false,
|
|
17110
|
+
error: `fixtureBehavior.responseSamples[${index}] must be an object.`
|
|
17111
|
+
};
|
|
17112
|
+
}
|
|
17113
|
+
const sample = value2;
|
|
17114
|
+
const sampleUnknownKeys = Object.keys(sample).filter(
|
|
17115
|
+
(key) => key !== "delayMs" && key !== "when" && key !== "httpError"
|
|
17116
|
+
);
|
|
17117
|
+
if (sampleUnknownKeys.length > 0) {
|
|
17118
|
+
return {
|
|
17119
|
+
ok: false,
|
|
17120
|
+
error: `Unsupported fixtureBehavior.responseSamples[${index}] field "${sampleUnknownKeys[0]}".`
|
|
17121
|
+
};
|
|
17122
|
+
}
|
|
17123
|
+
if (typeof sample.delayMs !== "number" || !Number.isSafeInteger(sample.delayMs) || sample.delayMs < 0 || sample.delayMs > MAX_FIXTURE_RESPONSE_DELAY_MS) {
|
|
17124
|
+
return {
|
|
17125
|
+
ok: false,
|
|
17126
|
+
error: `fixtureBehavior.responseSamples[${index}].delayMs must be an integer between 0 and ${MAX_FIXTURE_RESPONSE_DELAY_MS}.`
|
|
17127
|
+
};
|
|
17128
|
+
}
|
|
17129
|
+
let when;
|
|
17130
|
+
if (sample.when !== void 0) {
|
|
17131
|
+
if (!sample.when || typeof sample.when !== "object" || Array.isArray(sample.when)) {
|
|
17132
|
+
return {
|
|
17133
|
+
ok: false,
|
|
17134
|
+
error: `fixtureBehavior.responseSamples[${index}].when must be an object.`
|
|
17135
|
+
};
|
|
17136
|
+
}
|
|
17137
|
+
const condition = sample.when;
|
|
17138
|
+
const conditionUnknownKeys = Object.keys(condition).filter(
|
|
17139
|
+
(key) => key !== "provider" && key !== "operation"
|
|
17140
|
+
);
|
|
17141
|
+
if (conditionUnknownKeys.length > 0) {
|
|
17142
|
+
return {
|
|
17143
|
+
ok: false,
|
|
17144
|
+
error: `Unsupported fixtureBehavior.responseSamples[${index}].when field "${conditionUnknownKeys[0]}".`
|
|
17145
|
+
};
|
|
17146
|
+
}
|
|
17147
|
+
const provider = normalizeFixtureScopeValue(condition.provider, 100);
|
|
17148
|
+
const operation = normalizeFixtureScopeValue(condition.operation, 200);
|
|
17149
|
+
if (provider.error || operation.error) {
|
|
17150
|
+
return {
|
|
17151
|
+
ok: false,
|
|
17152
|
+
error: `fixtureBehavior.responseSamples[${index}].when ` + (provider.error ?? operation.error)
|
|
17153
|
+
};
|
|
17154
|
+
}
|
|
17155
|
+
if (!provider.value && !operation.value) {
|
|
17156
|
+
return {
|
|
17157
|
+
ok: false,
|
|
17158
|
+
error: `fixtureBehavior.responseSamples[${index}].when must select a provider or operation.`
|
|
17159
|
+
};
|
|
17160
|
+
}
|
|
17161
|
+
when = {
|
|
17162
|
+
...provider.value ? { provider: provider.value } : {},
|
|
17163
|
+
...operation.value ? { operation: operation.value } : {}
|
|
17164
|
+
};
|
|
17165
|
+
}
|
|
17166
|
+
let httpError;
|
|
17167
|
+
if (sample.httpError !== void 0) {
|
|
17168
|
+
if (!sample.httpError || typeof sample.httpError !== "object" || Array.isArray(sample.httpError)) {
|
|
17169
|
+
return {
|
|
17170
|
+
ok: false,
|
|
17171
|
+
error: `fixtureBehavior.responseSamples[${index}].httpError must be an object.`
|
|
17172
|
+
};
|
|
17173
|
+
}
|
|
17174
|
+
const error = sample.httpError;
|
|
17175
|
+
const errorUnknownKeys = Object.keys(error).filter(
|
|
17176
|
+
(key) => key !== "status" && key !== "message"
|
|
17177
|
+
);
|
|
17178
|
+
if (errorUnknownKeys.length > 0) {
|
|
17179
|
+
return {
|
|
17180
|
+
ok: false,
|
|
17181
|
+
error: `Unsupported fixtureBehavior.responseSamples[${index}].httpError field "${errorUnknownKeys[0]}".`
|
|
17182
|
+
};
|
|
17183
|
+
}
|
|
17184
|
+
if (typeof error.status !== "number" || !Number.isSafeInteger(error.status) || error.status < 400 || error.status > 599) {
|
|
17185
|
+
return {
|
|
17186
|
+
ok: false,
|
|
17187
|
+
error: `fixtureBehavior.responseSamples[${index}].httpError.status must be an integer between 400 and 599.`
|
|
17188
|
+
};
|
|
17189
|
+
}
|
|
17190
|
+
if (typeof error.message !== "string" || !error.message.trim() || error.message.length > MAX_FIXTURE_RESPONSE_ERROR_MESSAGE_LENGTH) {
|
|
17191
|
+
return {
|
|
17192
|
+
ok: false,
|
|
17193
|
+
error: `fixtureBehavior.responseSamples[${index}].httpError.message must contain 1-${MAX_FIXTURE_RESPONSE_ERROR_MESSAGE_LENGTH} characters.`
|
|
17194
|
+
};
|
|
17195
|
+
}
|
|
17196
|
+
httpError = { status: error.status, message: error.message.trim() };
|
|
17197
|
+
}
|
|
17198
|
+
samples2.push({
|
|
17199
|
+
delayMs: sample.delayMs,
|
|
17200
|
+
...when ? { when } : {},
|
|
17201
|
+
...httpError ? { httpError } : {}
|
|
17202
|
+
});
|
|
17203
|
+
}
|
|
17204
|
+
return {
|
|
17205
|
+
ok: true,
|
|
17206
|
+
behavior: {
|
|
17207
|
+
version: FIXTURE_BEHAVIOR_RESPONSE_VERSION,
|
|
17208
|
+
responseSamples: samples2
|
|
17209
|
+
}
|
|
17210
|
+
};
|
|
17211
|
+
}
|
|
17212
|
+
if (!Array.isArray(record.responseDelaySamplesMs) || record.responseDelaySamplesMs.length === 0 || record.responseDelaySamplesMs.length > MAX_FIXTURE_RESPONSE_DELAY_SAMPLES) {
|
|
17213
|
+
return {
|
|
17214
|
+
ok: false,
|
|
17215
|
+
error: `fixtureBehavior.responseDelaySamplesMs must contain between 1 and ${MAX_FIXTURE_RESPONSE_DELAY_SAMPLES} values.`
|
|
17216
|
+
};
|
|
17217
|
+
}
|
|
17218
|
+
const samples = [];
|
|
17219
|
+
for (let index = 0; index < record.responseDelaySamplesMs.length; index += 1) {
|
|
17220
|
+
const value2 = record.responseDelaySamplesMs[index];
|
|
17221
|
+
if (typeof value2 !== "number" || !Number.isSafeInteger(value2) || value2 < 0 || value2 > MAX_FIXTURE_RESPONSE_DELAY_MS) {
|
|
17222
|
+
return {
|
|
17223
|
+
ok: false,
|
|
17224
|
+
error: `fixtureBehavior.responseDelaySamplesMs[${index}] must be an integer between 0 and ${MAX_FIXTURE_RESPONSE_DELAY_MS}.`
|
|
17225
|
+
};
|
|
17226
|
+
}
|
|
17227
|
+
samples.push(value2);
|
|
17228
|
+
}
|
|
17229
|
+
return {
|
|
17230
|
+
ok: true,
|
|
17231
|
+
behavior: {
|
|
17232
|
+
version: FIXTURE_BEHAVIOR_VERSION,
|
|
17233
|
+
responseDelaySamplesMs: samples
|
|
17234
|
+
}
|
|
17235
|
+
};
|
|
17236
|
+
}
|
|
17237
|
+
function normalizeFixtureScopeValue(value, maxLength) {
|
|
17238
|
+
if (value === void 0) return {};
|
|
17239
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
17240
|
+
return { error: "values must be non-empty strings." };
|
|
17241
|
+
}
|
|
17242
|
+
const normalized = value.trim().toLowerCase();
|
|
17243
|
+
if (normalized.length > maxLength) {
|
|
17244
|
+
return { error: `values must be at most ${maxLength} characters.` };
|
|
17245
|
+
}
|
|
17246
|
+
return { value: normalized };
|
|
17247
|
+
}
|
|
17248
|
+
|
|
17065
17249
|
// src/cli/commands/play.ts
|
|
17066
17250
|
var PLAY_BUNDLER_MODULE_PATHS = [
|
|
17067
17251
|
// Built CLI bundle: dist/cli/index.mjs -> dist/plays/bundle-play-file.mjs.
|
|
@@ -17106,7 +17290,8 @@ var PLAY_RUN_RESERVED_BOOLEAN_FLAGS = /* @__PURE__ */ new Set([
|
|
|
17106
17290
|
"--full",
|
|
17107
17291
|
"--force",
|
|
17108
17292
|
"--open",
|
|
17109
|
-
"--debug-map-latency"
|
|
17293
|
+
"--debug-map-latency",
|
|
17294
|
+
"--debug-fixture-provider-pacing"
|
|
17110
17295
|
]);
|
|
17111
17296
|
function traceCliSync(phase, fields, run) {
|
|
17112
17297
|
const startedAt = Date.now();
|
|
@@ -20948,8 +21133,12 @@ function parsePlayRunOptions(args) {
|
|
|
20948
21133
|
const force = args.includes("--force");
|
|
20949
21134
|
const open = args.includes("--open");
|
|
20950
21135
|
const debugMapLatency = args.includes("--debug-map-latency");
|
|
21136
|
+
const debugFixtureProviderPacing = args.includes(
|
|
21137
|
+
"--debug-fixture-provider-pacing"
|
|
21138
|
+
);
|
|
20951
21139
|
let waitTimeoutMs = null;
|
|
20952
21140
|
let profile = null;
|
|
21141
|
+
let fixtureBehavior = null;
|
|
20953
21142
|
for (let index = 0; index < args.length; index += 1) {
|
|
20954
21143
|
const arg = args[index];
|
|
20955
21144
|
if (arg === "--file" && args[index + 1]) {
|
|
@@ -20978,6 +21167,23 @@ function parsePlayRunOptions(args) {
|
|
|
20978
21167
|
index += 1;
|
|
20979
21168
|
continue;
|
|
20980
21169
|
}
|
|
21170
|
+
if (arg === "--fixture-behavior") {
|
|
21171
|
+
const value = args[index + 1];
|
|
21172
|
+
if (!value) {
|
|
21173
|
+
throw new Error(
|
|
21174
|
+
"--fixture-behavior requires a JSON object or @file path."
|
|
21175
|
+
);
|
|
21176
|
+
}
|
|
21177
|
+
const parsed = validateFixtureBehavior(parseJsonInput(value));
|
|
21178
|
+
if (!parsed.ok || !parsed.behavior) {
|
|
21179
|
+
throw new Error(
|
|
21180
|
+
parsed.ok ? "--fixture-behavior is required." : parsed.error
|
|
21181
|
+
);
|
|
21182
|
+
}
|
|
21183
|
+
fixtureBehavior = parsed.behavior;
|
|
21184
|
+
index += 1;
|
|
21185
|
+
continue;
|
|
21186
|
+
}
|
|
20981
21187
|
if (arg === "--live") {
|
|
20982
21188
|
revisionSelector = "live";
|
|
20983
21189
|
continue;
|
|
@@ -21072,7 +21278,9 @@ function parsePlayRunOptions(args) {
|
|
|
21072
21278
|
force,
|
|
21073
21279
|
open,
|
|
21074
21280
|
profile,
|
|
21075
|
-
debugMapLatency
|
|
21281
|
+
debugMapLatency,
|
|
21282
|
+
debugFixtureProviderPacing,
|
|
21283
|
+
fixtureBehavior
|
|
21076
21284
|
};
|
|
21077
21285
|
}
|
|
21078
21286
|
function parsePlayCheckOptions(args) {
|
|
@@ -21630,6 +21838,20 @@ async function handleFileBackedRun(options, hooks) {
|
|
|
21630
21838
|
})
|
|
21631
21839
|
);
|
|
21632
21840
|
const integrationMode = resolveEvalIntegrationMode();
|
|
21841
|
+
if (options.fixtureBehavior && integrationMode !== "fixture") {
|
|
21842
|
+
throw new Error(
|
|
21843
|
+
"--fixture-behavior requires DEEPLINE_EVAL_INTEGRATION_MODE=fixture."
|
|
21844
|
+
);
|
|
21845
|
+
}
|
|
21846
|
+
if (options.debugFixtureProviderPacing && integrationMode !== "fixture") {
|
|
21847
|
+
throw new Error(
|
|
21848
|
+
"--debug-fixture-provider-pacing requires DEEPLINE_EVAL_INTEGRATION_MODE=fixture."
|
|
21849
|
+
);
|
|
21850
|
+
}
|
|
21851
|
+
const testPolicyOverrides = {
|
|
21852
|
+
...options.debugMapLatency ? { mapLatencyProfile: true } : {},
|
|
21853
|
+
...options.debugFixtureProviderPacing ? { enforceFixtureProviderPacing: true } : {}
|
|
21854
|
+
};
|
|
21633
21855
|
const startRequest = {
|
|
21634
21856
|
name: playName,
|
|
21635
21857
|
sourceCode: bundleResult.sourceCode,
|
|
@@ -21643,8 +21865,9 @@ async function handleFileBackedRun(options, hooks) {
|
|
|
21643
21865
|
...stagedFileInputs.packagedFiles.length ? { packagedFiles: stagedFileInputs.packagedFiles } : {},
|
|
21644
21866
|
...options.force ? { force: true } : {},
|
|
21645
21867
|
...options.profile ? { profile: options.profile } : {},
|
|
21646
|
-
...
|
|
21647
|
-
...integrationMode ? { integrationMode } : {}
|
|
21868
|
+
...Object.keys(testPolicyOverrides).length > 0 ? { testPolicyOverrides } : {},
|
|
21869
|
+
...integrationMode ? { integrationMode } : {},
|
|
21870
|
+
...options.fixtureBehavior ? { fixtureBehavior: options.fixtureBehavior } : {}
|
|
21648
21871
|
};
|
|
21649
21872
|
if (options.watch) {
|
|
21650
21873
|
progress.phase("starting run");
|
|
@@ -21799,6 +22022,20 @@ async function handleNamedRun(options, hooks) {
|
|
|
21799
22022
|
})
|
|
21800
22023
|
);
|
|
21801
22024
|
const integrationMode = resolveEvalIntegrationMode();
|
|
22025
|
+
if (options.fixtureBehavior && integrationMode !== "fixture") {
|
|
22026
|
+
throw new Error(
|
|
22027
|
+
"--fixture-behavior requires DEEPLINE_EVAL_INTEGRATION_MODE=fixture."
|
|
22028
|
+
);
|
|
22029
|
+
}
|
|
22030
|
+
if (options.debugFixtureProviderPacing && integrationMode !== "fixture") {
|
|
22031
|
+
throw new Error(
|
|
22032
|
+
"--debug-fixture-provider-pacing requires DEEPLINE_EVAL_INTEGRATION_MODE=fixture."
|
|
22033
|
+
);
|
|
22034
|
+
}
|
|
22035
|
+
const testPolicyOverrides = {
|
|
22036
|
+
...options.debugMapLatency ? { mapLatencyProfile: true } : {},
|
|
22037
|
+
...options.debugFixtureProviderPacing ? { enforceFixtureProviderPacing: true } : {}
|
|
22038
|
+
};
|
|
21802
22039
|
const startRequest = {
|
|
21803
22040
|
name: playName,
|
|
21804
22041
|
...selectedRevisionId ? { revisionId: selectedRevisionId } : {},
|
|
@@ -21807,8 +22044,9 @@ async function handleNamedRun(options, hooks) {
|
|
|
21807
22044
|
...stagedFileInputs.packagedFiles.length ? { packagedFiles: stagedFileInputs.packagedFiles } : {},
|
|
21808
22045
|
...options.force ? { force: true } : {},
|
|
21809
22046
|
...options.profile ? { profile: options.profile } : {},
|
|
21810
|
-
...
|
|
21811
|
-
...integrationMode ? { integrationMode } : {}
|
|
22047
|
+
...Object.keys(testPolicyOverrides).length > 0 ? { testPolicyOverrides } : {},
|
|
22048
|
+
...integrationMode ? { integrationMode } : {},
|
|
22049
|
+
...options.fixtureBehavior ? { fixtureBehavior: options.fixtureBehavior } : {}
|
|
21812
22050
|
};
|
|
21813
22051
|
if (options.watch) {
|
|
21814
22052
|
progress.phase("starting run");
|
|
@@ -23274,12 +23512,18 @@ Examples:
|
|
|
23274
23512
|
).option(
|
|
23275
23513
|
"--profile <id>",
|
|
23276
23514
|
"Internal/testing: override the execution profile for this run"
|
|
23515
|
+
).option(
|
|
23516
|
+
"--fixture-behavior <json>",
|
|
23517
|
+
"Internal/testing: fixture response behavior JSON object or @file path"
|
|
23277
23518
|
).option("--watch", "Compatibility alias; run waits by default").option("--wait", "Compatibility alias; run waits by default").option("--no-wait", "Start the run and return immediately").option(
|
|
23278
23519
|
"--logs",
|
|
23279
23520
|
"When output is non-interactive, stream play logs to stderr while waiting"
|
|
23280
23521
|
).option("--tail-timeout-ms <ms>", "Timeout while watching the run stream").option("--force", "Start a fresh run graph").option("--open", "Open the play page in a browser after the run starts").option(
|
|
23281
23522
|
"--debug-map-latency",
|
|
23282
23523
|
"Internal diagnostics: emit one aggregate latency profile per dataset map"
|
|
23524
|
+
).option(
|
|
23525
|
+
"--debug-fixture-provider-pacing",
|
|
23526
|
+
"Internal diagnostics: retain provider pacing while fixture mode is active"
|
|
23283
23527
|
).option("--json", "Emit JSON output").option("--full", "Debug only: with --json, emit the raw status payload").addHelpText(
|
|
23284
23528
|
"afterAll",
|
|
23285
23529
|
`
|
|
@@ -23311,6 +23555,7 @@ Pass-through input flags:
|
|
|
23311
23555
|
...options.latest ? ["--latest"] : [],
|
|
23312
23556
|
...options.revisionId ? ["--revision-id", options.revisionId] : [],
|
|
23313
23557
|
...options.profile ? ["--profile", options.profile] : [],
|
|
23558
|
+
...options.fixtureBehavior ? ["--fixture-behavior", options.fixtureBehavior] : [],
|
|
23314
23559
|
...options.wait === false ? ["--no-wait"] : [],
|
|
23315
23560
|
...options.watch || options.wait ? ["--watch"] : [],
|
|
23316
23561
|
...options.logs ? ["--logs"] : [],
|
|
@@ -23318,6 +23563,7 @@ Pass-through input flags:
|
|
|
23318
23563
|
...options.force ? ["--force"] : [],
|
|
23319
23564
|
...options.open ? ["--open"] : [],
|
|
23320
23565
|
...options.debugMapLatency ? ["--debug-map-latency"] : [],
|
|
23566
|
+
...options.debugFixtureProviderPacing ? ["--debug-fixture-provider-pacing"] : [],
|
|
23321
23567
|
...options.json ? ["--json"] : [],
|
|
23322
23568
|
...options.full ? ["--full"] : [],
|
|
23323
23569
|
...passthroughArgs
|
package/dist/index.d.mts
CHANGED
|
@@ -2,6 +2,29 @@ import { e as PlayRuntimeBackendId, c as PlayCompilerManifest, D as DeeplineErro
|
|
|
2
2
|
export { O as DEEPLINE_EXTRACTOR_TARGETS, Q as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, R as DeeplineEmailStatusGetterValue, S as DeeplineExtractorTarget, U as DeeplineGetterValue, V as DeeplineGetterValueMap, W as JOB_CHANGE_STATUS_VALUES, X as JobChangeStatus, Y as PHONE_STATUS_VALUES, Z as PhoneStatus, _ as PlayDataset, $ as PlayDatasetInput, a0 as PreviousCell, a1 as ProviderTransientError, a2 as ProviderTransientErrorCategory, a3 as ToolExecutionErrorCategory, a4 as ToolExecutionErrorOrigin, a5 as ToolExecutionFailureV1, a6 as ToolExecutionNetworkKind, a7 as ToolExecutionNetworkScope, a8 as isDeeplineExtractorTarget } from './compiler-manifest-CGZadg-v.mjs';
|
|
3
3
|
import '@sinclair/typebox';
|
|
4
4
|
|
|
5
|
+
declare const FIXTURE_BEHAVIOR_VERSION: 1;
|
|
6
|
+
declare const FIXTURE_BEHAVIOR_RESPONSE_VERSION: 2;
|
|
7
|
+
type FixtureBehaviorV1 = {
|
|
8
|
+
version: typeof FIXTURE_BEHAVIOR_VERSION;
|
|
9
|
+
responseDelaySamplesMs: number[];
|
|
10
|
+
};
|
|
11
|
+
type FixtureResponseSample = {
|
|
12
|
+
delayMs: number;
|
|
13
|
+
when?: {
|
|
14
|
+
provider?: string;
|
|
15
|
+
operation?: string;
|
|
16
|
+
};
|
|
17
|
+
httpError?: {
|
|
18
|
+
status: number;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
type FixtureBehaviorV2 = {
|
|
23
|
+
version: typeof FIXTURE_BEHAVIOR_RESPONSE_VERSION;
|
|
24
|
+
responseSamples: FixtureResponseSample[];
|
|
25
|
+
};
|
|
26
|
+
type FixtureBehavior = FixtureBehaviorV1 | FixtureBehaviorV2;
|
|
27
|
+
|
|
5
28
|
type PlayRuntimeSelection = {
|
|
6
29
|
environment: 'preview';
|
|
7
30
|
/** Caller-named isolation scope inside a remote runtime environment. */
|
|
@@ -1450,6 +1473,8 @@ interface StartPlayRunRequest {
|
|
|
1450
1473
|
profile?: string;
|
|
1451
1474
|
/** Optional per-run provider execution mode for eval/smoke runs. */
|
|
1452
1475
|
integrationMode?: 'live' | 'eval_stub' | 'fixture';
|
|
1476
|
+
/** Fixture-only provider response timing and outcome simulation. */
|
|
1477
|
+
fixtureBehavior?: FixtureBehavior;
|
|
1453
1478
|
/** Internal runtime estate selection. The app host remains unchanged. */
|
|
1454
1479
|
runtime?: PlayRuntimeSelection;
|
|
1455
1480
|
/** Internal/dev-only runtime policy overrides for black-box durability tests. */
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,29 @@ import { e as PlayRuntimeBackendId, c as PlayCompilerManifest, D as DeeplineErro
|
|
|
2
2
|
export { O as DEEPLINE_EXTRACTOR_TARGETS, Q as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, R as DeeplineEmailStatusGetterValue, S as DeeplineExtractorTarget, U as DeeplineGetterValue, V as DeeplineGetterValueMap, W as JOB_CHANGE_STATUS_VALUES, X as JobChangeStatus, Y as PHONE_STATUS_VALUES, Z as PhoneStatus, _ as PlayDataset, $ as PlayDatasetInput, a0 as PreviousCell, a1 as ProviderTransientError, a2 as ProviderTransientErrorCategory, a3 as ToolExecutionErrorCategory, a4 as ToolExecutionErrorOrigin, a5 as ToolExecutionFailureV1, a6 as ToolExecutionNetworkKind, a7 as ToolExecutionNetworkScope, a8 as isDeeplineExtractorTarget } from './compiler-manifest-CGZadg-v.js';
|
|
3
3
|
import '@sinclair/typebox';
|
|
4
4
|
|
|
5
|
+
declare const FIXTURE_BEHAVIOR_VERSION: 1;
|
|
6
|
+
declare const FIXTURE_BEHAVIOR_RESPONSE_VERSION: 2;
|
|
7
|
+
type FixtureBehaviorV1 = {
|
|
8
|
+
version: typeof FIXTURE_BEHAVIOR_VERSION;
|
|
9
|
+
responseDelaySamplesMs: number[];
|
|
10
|
+
};
|
|
11
|
+
type FixtureResponseSample = {
|
|
12
|
+
delayMs: number;
|
|
13
|
+
when?: {
|
|
14
|
+
provider?: string;
|
|
15
|
+
operation?: string;
|
|
16
|
+
};
|
|
17
|
+
httpError?: {
|
|
18
|
+
status: number;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
type FixtureBehaviorV2 = {
|
|
23
|
+
version: typeof FIXTURE_BEHAVIOR_RESPONSE_VERSION;
|
|
24
|
+
responseSamples: FixtureResponseSample[];
|
|
25
|
+
};
|
|
26
|
+
type FixtureBehavior = FixtureBehaviorV1 | FixtureBehaviorV2;
|
|
27
|
+
|
|
5
28
|
type PlayRuntimeSelection = {
|
|
6
29
|
environment: 'preview';
|
|
7
30
|
/** Caller-named isolation scope inside a remote runtime environment. */
|
|
@@ -1450,6 +1473,8 @@ interface StartPlayRunRequest {
|
|
|
1450
1473
|
profile?: string;
|
|
1451
1474
|
/** Optional per-run provider execution mode for eval/smoke runs. */
|
|
1452
1475
|
integrationMode?: 'live' | 'eval_stub' | 'fixture';
|
|
1476
|
+
/** Fixture-only provider response timing and outcome simulation. */
|
|
1477
|
+
fixtureBehavior?: FixtureBehavior;
|
|
1453
1478
|
/** Internal runtime estate selection. The app host remains unchanged. */
|
|
1454
1479
|
runtime?: PlayRuntimeSelection;
|
|
1455
1480
|
/** Internal/dev-only runtime policy overrides for black-box durability tests. */
|
package/dist/index.js
CHANGED
|
@@ -763,7 +763,7 @@ var SDK_RELEASE = {
|
|
|
763
763
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
764
764
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
765
765
|
// release keeps lazy paging semantics independent of row residency.
|
|
766
|
-
version: "0.2.
|
|
766
|
+
version: "0.2.32",
|
|
767
767
|
contracts: {
|
|
768
768
|
api: {
|
|
769
769
|
name: "sdk-http-api",
|
|
@@ -3923,6 +3923,7 @@ var DeeplineClient = class {
|
|
|
3923
3923
|
// defaults to absurd; callers normally omit this field.
|
|
3924
3924
|
...request.profile ? { profile: request.profile } : {},
|
|
3925
3925
|
...integrationMode ? { integrationMode } : {},
|
|
3926
|
+
...request.fixtureBehavior ? { fixtureBehavior: request.fixtureBehavior } : {},
|
|
3926
3927
|
...runtime ? { runtime } : {},
|
|
3927
3928
|
...testPolicyOverrides ? { testPolicyOverrides } : {}
|
|
3928
3929
|
},
|
|
@@ -3972,6 +3973,7 @@ var DeeplineClient = class {
|
|
|
3972
3973
|
...typeof request.waitForCompletionMs === "number" ? { waitForCompletionMs: request.waitForCompletionMs } : {},
|
|
3973
3974
|
...request.profile ? { profile: request.profile } : {},
|
|
3974
3975
|
...integrationMode ? { integrationMode } : {},
|
|
3976
|
+
...request.fixtureBehavior ? { fixtureBehavior: request.fixtureBehavior } : {},
|
|
3975
3977
|
...runtime ? { runtime } : {},
|
|
3976
3978
|
...testPolicyOverrides ? { testPolicyOverrides } : {}
|
|
3977
3979
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -689,7 +689,7 @@ var SDK_RELEASE = {
|
|
|
689
689
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
690
690
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
691
691
|
// release keeps lazy paging semantics independent of row residency.
|
|
692
|
-
version: "0.2.
|
|
692
|
+
version: "0.2.32",
|
|
693
693
|
contracts: {
|
|
694
694
|
api: {
|
|
695
695
|
name: "sdk-http-api",
|
|
@@ -3849,6 +3849,7 @@ var DeeplineClient = class {
|
|
|
3849
3849
|
// defaults to absurd; callers normally omit this field.
|
|
3850
3850
|
...request.profile ? { profile: request.profile } : {},
|
|
3851
3851
|
...integrationMode ? { integrationMode } : {},
|
|
3852
|
+
...request.fixtureBehavior ? { fixtureBehavior: request.fixtureBehavior } : {},
|
|
3852
3853
|
...runtime ? { runtime } : {},
|
|
3853
3854
|
...testPolicyOverrides ? { testPolicyOverrides } : {}
|
|
3854
3855
|
},
|
|
@@ -3898,6 +3899,7 @@ var DeeplineClient = class {
|
|
|
3898
3899
|
...typeof request.waitForCompletionMs === "number" ? { waitForCompletionMs: request.waitForCompletionMs } : {},
|
|
3899
3900
|
...request.profile ? { profile: request.profile } : {},
|
|
3900
3901
|
...integrationMode ? { integrationMode } : {},
|
|
3902
|
+
...request.fixtureBehavior ? { fixtureBehavior: request.fixtureBehavior } : {},
|
|
3901
3903
|
...runtime ? { runtime } : {},
|
|
3902
3904
|
...testPolicyOverrides ? { testPolicyOverrides } : {}
|
|
3903
3905
|
};
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"dist/bundling-sources/shared_libs/play-runtime/execution-ledger-store.ts",
|
|
65
65
|
"dist/bundling-sources/shared_libs/play-runtime/execution-plan.ts",
|
|
66
66
|
"dist/bundling-sources/shared_libs/play-runtime/extractor-targets.ts",
|
|
67
|
+
"dist/bundling-sources/shared_libs/play-runtime/fixture-behavior.ts",
|
|
67
68
|
"dist/bundling-sources/shared_libs/play-runtime/fullenrich-batching.ts",
|
|
68
69
|
"dist/bundling-sources/shared_libs/play-runtime/gateway-auth-session.ts",
|
|
69
70
|
"dist/bundling-sources/shared_libs/play-runtime/gateway-postgres-admission.ts",
|