deepline 0.3.100 → 0.3.101
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 +4 -1
- package/dist/bundling-sources/sdk/src/plays/bundle-play-file.ts +2 -5
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/shared_libs/monitors/provider-monitor-batch-operation.ts +10 -8
- package/dist/bundling-sources/shared_libs/plays/bundling/index.ts +5 -9
- package/dist/bundling-sources/shared_libs/plays/bundling/repository-adapter.ts +2 -2
- package/dist/bundling-sources/shared_libs/plays/deploy/control-plane-types.ts +1 -0
- package/dist/bundling-sources/shared_libs/plays/docflow.ts +7 -4
- package/dist/bundling-sources/shared_libs/security/secret-redaction.ts +145 -2
- package/dist/cli/index.js +40 -11
- package/dist/cli/index.mjs +40 -11
- package/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/plays/bundle-play-file.mjs +10 -14
- package/dist/release.d.mts +1 -1
- package/dist/release.d.ts +1 -1
- package/dist/release.js +1 -1
- package/dist/release.mjs +1 -1
- package/package.json +1 -1
|
@@ -1091,7 +1091,10 @@ export type MonitorBatchExistingSubmitOptions = {
|
|
|
1091
1091
|
kind: 'audit' | 'deactivate' | 'reactivate' | 'repair';
|
|
1092
1092
|
scope: MonitorBatchScope;
|
|
1093
1093
|
dryRun?: boolean;
|
|
1094
|
-
/**
|
|
1094
|
+
/**
|
|
1095
|
+
* A declared policy reason for target deactivation. Omit it for an explicit
|
|
1096
|
+
* customer-owned key teardown; absent is the durable customer intent.
|
|
1097
|
+
*/
|
|
1095
1098
|
deactivationReason?: string;
|
|
1096
1099
|
/** Stable retry key. Reusing it joins the original durable operation. */
|
|
1097
1100
|
idempotencyKey: string;
|
|
@@ -5,6 +5,7 @@ import { existsSync } from 'node:fs';
|
|
|
5
5
|
import { realpath } from 'node:fs/promises';
|
|
6
6
|
import {
|
|
7
7
|
bundlePlayFile as bundlePlayFileCore,
|
|
8
|
+
PLAY_BUNDLE_CACHE_NAMESPACE,
|
|
8
9
|
type BundlePlayFileOptions,
|
|
9
10
|
type BundledPlayFileSuccess,
|
|
10
11
|
type BundledPlayFileResult,
|
|
@@ -40,7 +41,6 @@ export type {
|
|
|
40
41
|
|
|
41
42
|
export { extractDefinedPlayName } from '../../../shared_libs/plays/bundling/index.js';
|
|
42
43
|
|
|
43
|
-
const PLAY_BUNDLE_CACHE_VERSION = 37;
|
|
44
44
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
45
45
|
const SDK_PACKAGE_ROOT = resolve(MODULE_DIR, '..', '..');
|
|
46
46
|
const SOURCE_REPO_ROOT = resolve(SDK_PACKAGE_ROOT, '..', '..');
|
|
@@ -126,10 +126,7 @@ export function createSdkPlayBundlingAdapter(): PlayBundlingAdapter {
|
|
|
126
126
|
nodeModulesDir: HAS_PACKAGED_BUNDLING_SOURCES
|
|
127
127
|
? resolve(SDK_PACKAGE_ROOT, 'node_modules')
|
|
128
128
|
: resolve(PROJECT_ROOT, 'node_modules'),
|
|
129
|
-
cacheDir: join(
|
|
130
|
-
tmpdir(),
|
|
131
|
-
`deepline-play-artifacts-v${PLAY_BUNDLE_CACHE_VERSION}`,
|
|
132
|
-
),
|
|
129
|
+
cacheDir: join(tmpdir(), PLAY_BUNDLE_CACHE_NAMESPACE),
|
|
133
130
|
sdkSourceRoot: SDK_SOURCE_ROOT,
|
|
134
131
|
sdkPackageJson: SDK_PACKAGE_JSON,
|
|
135
132
|
sdkEntryFile: SDK_ENTRY_FILE,
|
|
@@ -200,7 +200,7 @@ export const SDK_RELEASE = {
|
|
|
200
200
|
// getters keep their established compatibility behavior.
|
|
201
201
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
202
202
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
203
|
-
version: '0.3.
|
|
203
|
+
version: '0.3.101',
|
|
204
204
|
updateSummary:
|
|
205
205
|
'Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.',
|
|
206
206
|
packageCapabilities: {
|
|
@@ -78,7 +78,11 @@ export type ProviderMonitorBatchOperationRequest = {
|
|
|
78
78
|
* this origin instead of recomputing it from a later deployment.
|
|
79
79
|
*/
|
|
80
80
|
callbackBaseUrl?: string;
|
|
81
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* A closed, platform-owned reason for a policy teardown. Omit it for a
|
|
83
|
+
* customer-owned exact-key or Fleet teardown: absence is the durable
|
|
84
|
+
* representation of the customer's own inactive intent.
|
|
85
|
+
*/
|
|
82
86
|
deactivationReason?: string;
|
|
83
87
|
};
|
|
84
88
|
|
|
@@ -204,13 +208,11 @@ export function validateProviderMonitorBatchOperationRequest(
|
|
|
204
208
|
if (request.kind === 'converge') {
|
|
205
209
|
throw new Error('Batch converge requires exactly one Fleet scope.');
|
|
206
210
|
}
|
|
207
|
-
if (
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
if (request.kind === 'deactivate') {
|
|
213
|
-
requireMonitorDeactivationReason(request.deactivationReason!);
|
|
211
|
+
if (
|
|
212
|
+
request.kind === 'deactivate' &&
|
|
213
|
+
request.deactivationReason !== undefined
|
|
214
|
+
) {
|
|
215
|
+
requireMonitorDeactivationReason(request.deactivationReason);
|
|
214
216
|
}
|
|
215
217
|
return {
|
|
216
218
|
...request,
|
|
@@ -59,15 +59,11 @@ import { validatePlaySourceFilesHaveNoInlineSecrets } from '../secret-guardrails
|
|
|
59
59
|
import { MAX_PLAY_BUNDLE_BYTES } from './limits';
|
|
60
60
|
import { PLAY_AUTHORING_CONTRACT_EDITION } from '../authoring-contract';
|
|
61
61
|
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
const PLAY_ARTIFACT_CACHE_DIR = join(
|
|
68
|
-
tmpdir(),
|
|
69
|
-
`deepline-play-artifacts-v${PLAY_BUNDLE_CACHE_VERSION}`,
|
|
70
|
-
);
|
|
62
|
+
// Local bundle caches may be discarded when compiler-only analysis changes;
|
|
63
|
+
// this descriptive namespace is not a runtime wire or schema version.
|
|
64
|
+
export const PLAY_BUNDLE_CACHE_NAMESPACE =
|
|
65
|
+
'deepline-play-artifacts-docflow-jsdoc';
|
|
66
|
+
const PLAY_ARTIFACT_CACHE_DIR = join(tmpdir(), PLAY_BUNDLE_CACHE_NAMESPACE);
|
|
71
67
|
const PLAY_PROXY_NAMESPACE = 'deepline-play-runtime-ref';
|
|
72
68
|
const SOURCE_EXTENSIONS = [
|
|
73
69
|
'.ts',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tmpdir } from 'node:os';
|
|
2
2
|
import { join, resolve } from 'node:path';
|
|
3
|
-
import type
|
|
3
|
+
import { PLAY_BUNDLE_CACHE_NAMESPACE, type PlayBundlingAdapter } from './index';
|
|
4
4
|
import { discoverPackagedLocalFiles } from '../local-file-discovery';
|
|
5
5
|
|
|
6
6
|
/** Repository source bundling shared by the API and the deploy worker.
|
|
@@ -15,7 +15,7 @@ export function createRepositoryPlayBundlingAdapter(options: {
|
|
|
15
15
|
projectRoot: options.projectRoot,
|
|
16
16
|
sourceIdentityRoot: options.sourceIdentityRoot,
|
|
17
17
|
nodeModulesDir: resolve(options.projectRoot, 'node_modules'),
|
|
18
|
-
cacheDir: join(tmpdir(),
|
|
18
|
+
cacheDir: join(tmpdir(), PLAY_BUNDLE_CACHE_NAMESPACE),
|
|
19
19
|
sdkSourceRoot,
|
|
20
20
|
sdkPackageJson: resolve(sdkSourceRoot, '..', 'package.json'),
|
|
21
21
|
sdkEntryFile: resolve(sdkSourceRoot, 'index.ts'),
|
|
@@ -617,7 +617,7 @@ function levenshtein(left: string, right: string): number {
|
|
|
617
617
|
return row[right.length]!;
|
|
618
618
|
}
|
|
619
619
|
|
|
620
|
-
const
|
|
620
|
+
const JSDOC_BLOCK = /\/\*\*([\s\S]*?)\*\//g;
|
|
621
621
|
/**
|
|
622
622
|
* What a block header may name: an export name, or the play's own kebab-case
|
|
623
623
|
* name. Hyphens are in the set for the second — `@mermaid name-to-linkedin-url-
|
|
@@ -935,9 +935,12 @@ export function parsePlayDocflowFile(
|
|
|
935
935
|
syntax: NonNullable<PlayDocflow['syntax']>;
|
|
936
936
|
body: string;
|
|
937
937
|
}> = [];
|
|
938
|
-
|
|
939
|
-
for (const match of sourceCode.matchAll(
|
|
940
|
-
|
|
938
|
+
JSDOC_BLOCK.lastIndex = 0;
|
|
939
|
+
for (const match of sourceCode.matchAll(JSDOC_BLOCK)) {
|
|
940
|
+
const cleanedBody = cleanBlockBody(match[1]!);
|
|
941
|
+
const mermaid = /^@mermaid(?:[ \t]+|\r?\n|$)([\s\S]*)$/.exec(cleanedBody);
|
|
942
|
+
if (!mermaid) continue;
|
|
943
|
+
rawBlocks.push({ syntax: 'mermaid', body: mermaid[1]!.trim() });
|
|
941
944
|
}
|
|
942
945
|
if (rawBlocks.length === 0) return { blocks: [], bindings: [], errors };
|
|
943
946
|
|
|
@@ -2,6 +2,10 @@ const REDACTED_VALUE = '[REDACTED]';
|
|
|
2
2
|
|
|
3
3
|
type SecretRedactionOptions = {
|
|
4
4
|
redactHighEntropy?: boolean;
|
|
5
|
+
/** Preserve only known pagination cursor fields in authenticated result data. */
|
|
6
|
+
keyPolicy?: 'strict' | 'public-result';
|
|
7
|
+
/** Replace sample cursor values with a non-capability-bearing placeholder. */
|
|
8
|
+
placeholderContinuationValues?: boolean;
|
|
5
9
|
};
|
|
6
10
|
|
|
7
11
|
const SENSITIVE_KEY_PATTERNS = [
|
|
@@ -16,6 +20,55 @@ const SENSITIVE_KEY_PATTERNS = [
|
|
|
16
20
|
/private/i,
|
|
17
21
|
];
|
|
18
22
|
|
|
23
|
+
const PUBLIC_RESULT_CURSOR_KEYS = new Set([
|
|
24
|
+
'cursor',
|
|
25
|
+
'encoded_cursor',
|
|
26
|
+
'encodedCursor',
|
|
27
|
+
'next_cursor',
|
|
28
|
+
'nextCursor',
|
|
29
|
+
'scroll_token',
|
|
30
|
+
'scrollToken',
|
|
31
|
+
'pagination_token',
|
|
32
|
+
'paginationToken',
|
|
33
|
+
'continuation_token',
|
|
34
|
+
'continuationToken',
|
|
35
|
+
'page_token',
|
|
36
|
+
'pageToken',
|
|
37
|
+
'next_page_token',
|
|
38
|
+
'nextPageToken',
|
|
39
|
+
'previous_page_token',
|
|
40
|
+
'previousPageToken',
|
|
41
|
+
'prev_page_token',
|
|
42
|
+
'prevPageToken',
|
|
43
|
+
'next_token',
|
|
44
|
+
'nextToken',
|
|
45
|
+
'offset_token',
|
|
46
|
+
'offsetToken',
|
|
47
|
+
]);
|
|
48
|
+
|
|
49
|
+
const PUBLIC_RESULT_TOKEN_EXPIRY_KEYS = new Set([
|
|
50
|
+
'page_token_expiry',
|
|
51
|
+
'pageTokenExpiry',
|
|
52
|
+
]);
|
|
53
|
+
|
|
54
|
+
const PUBLIC_RESULT_TOKEN_COUNT_KEYS = new Set([
|
|
55
|
+
'input_tokens',
|
|
56
|
+
'inputTokens',
|
|
57
|
+
'output_tokens',
|
|
58
|
+
'outputTokens',
|
|
59
|
+
'total_tokens',
|
|
60
|
+
'totalTokens',
|
|
61
|
+
'tokens_used',
|
|
62
|
+
'tokensUsed',
|
|
63
|
+
]);
|
|
64
|
+
|
|
65
|
+
const PAGINATION_CONTAINER_KEYS = new Set([
|
|
66
|
+
'pagination',
|
|
67
|
+
'paging',
|
|
68
|
+
'page_info',
|
|
69
|
+
'pageInfo',
|
|
70
|
+
]);
|
|
71
|
+
|
|
19
72
|
const SAFE_IDENTIFIER_KEYS = new Set([
|
|
20
73
|
'artifactHash',
|
|
21
74
|
'artifactHashes',
|
|
@@ -135,6 +188,39 @@ function shouldRedactKey(key: string) {
|
|
|
135
188
|
return SENSITIVE_KEY_PATTERNS.some((pattern) => pattern.test(key));
|
|
136
189
|
}
|
|
137
190
|
|
|
191
|
+
function isPublicResultCursorKey(
|
|
192
|
+
key: string,
|
|
193
|
+
path: readonly string[],
|
|
194
|
+
): boolean {
|
|
195
|
+
return (
|
|
196
|
+
PUBLIC_RESULT_CURSOR_KEYS.has(key) ||
|
|
197
|
+
(key === 'token' && PAGINATION_CONTAINER_KEYS.has(path.at(-1) ?? ''))
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function isPublicResultSafeTokenKey(
|
|
202
|
+
key: string,
|
|
203
|
+
path: readonly string[],
|
|
204
|
+
value: unknown,
|
|
205
|
+
): boolean {
|
|
206
|
+
if (isPublicResultCursorKey(key, path)) return true;
|
|
207
|
+
if (value === null) {
|
|
208
|
+
return (
|
|
209
|
+
PUBLIC_RESULT_TOKEN_EXPIRY_KEYS.has(key) ||
|
|
210
|
+
PUBLIC_RESULT_TOKEN_COUNT_KEYS.has(key)
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
if (PUBLIC_RESULT_TOKEN_COUNT_KEYS.has(key)) {
|
|
214
|
+
return typeof value === 'number' && Number.isFinite(value) && value >= 0;
|
|
215
|
+
}
|
|
216
|
+
return (
|
|
217
|
+
PUBLIC_RESULT_TOKEN_EXPIRY_KEYS.has(key) &&
|
|
218
|
+
typeof value === 'string' &&
|
|
219
|
+
/^\d{4}-\d{2}-\d{2}T/.test(value) &&
|
|
220
|
+
Number.isFinite(Date.parse(value))
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
|
|
138
224
|
function maybeRedactString(value: string, options: SecretRedactionOptions) {
|
|
139
225
|
if (EXPLICIT_SECRET_VALUE_PATTERNS.some((pattern) => pattern.test(value))) {
|
|
140
226
|
return REDACTED_VALUE;
|
|
@@ -171,6 +257,21 @@ export function redactSecretsInValue<T>(
|
|
|
171
257
|
if (parentKey && SAFE_IDENTIFIER_KEYS.has(parentKey)) {
|
|
172
258
|
return value as T;
|
|
173
259
|
}
|
|
260
|
+
if (
|
|
261
|
+
parentKey &&
|
|
262
|
+
options.keyPolicy === 'public-result' &&
|
|
263
|
+
isPublicResultSafeTokenKey(parentKey, [], value)
|
|
264
|
+
) {
|
|
265
|
+
const redacted = maybeRedactString(value, options);
|
|
266
|
+
return (
|
|
267
|
+
options.placeholderContinuationValues &&
|
|
268
|
+
isPublicResultCursorKey(parentKey, []) &&
|
|
269
|
+
redacted !== REDACTED_VALUE &&
|
|
270
|
+
redacted.length > 0
|
|
271
|
+
? '[PAGINATION_CURSOR]'
|
|
272
|
+
: redacted
|
|
273
|
+
) as T;
|
|
274
|
+
}
|
|
174
275
|
if (parentKey && shouldRedactKey(parentKey)) {
|
|
175
276
|
return REDACTED_VALUE as T;
|
|
176
277
|
}
|
|
@@ -185,7 +286,8 @@ export function redactSecretsInValue<T>(
|
|
|
185
286
|
source: Container;
|
|
186
287
|
target: Container;
|
|
187
288
|
parentKey?: string;
|
|
188
|
-
|
|
289
|
+
path: string[];
|
|
290
|
+
}> = [{ source: value as Container, target: root, parentKey, path: [] }];
|
|
189
291
|
|
|
190
292
|
const redactNestedValue = (
|
|
191
293
|
item: unknown,
|
|
@@ -196,7 +298,9 @@ export function redactSecretsInValue<T>(
|
|
|
196
298
|
return REDACTED_VALUE;
|
|
197
299
|
}
|
|
198
300
|
if (itemParentKey && SAFE_IDENTIFIER_KEYS.has(itemParentKey)) return item;
|
|
199
|
-
if (itemParentKey && shouldRedactKey(itemParentKey))
|
|
301
|
+
if (itemParentKey && shouldRedactKey(itemParentKey)) {
|
|
302
|
+
return REDACTED_VALUE;
|
|
303
|
+
}
|
|
200
304
|
return maybeRedactString(item, options);
|
|
201
305
|
};
|
|
202
306
|
|
|
@@ -206,6 +310,24 @@ export function redactSecretsInValue<T>(
|
|
|
206
310
|
const sourceIsArray = Array.isArray(current.source);
|
|
207
311
|
for (const [key, item] of Object.entries(current.source)) {
|
|
208
312
|
const itemParentKey = sourceIsArray ? current.parentKey : key;
|
|
313
|
+
if (
|
|
314
|
+
!sourceIsArray &&
|
|
315
|
+
options.keyPolicy === 'public-result' &&
|
|
316
|
+
isPublicResultSafeTokenKey(key, current.path, item) &&
|
|
317
|
+
(!item || typeof item !== 'object')
|
|
318
|
+
) {
|
|
319
|
+
const redacted =
|
|
320
|
+
typeof item === 'string' ? maybeRedactString(item, options) : item;
|
|
321
|
+
(current.target as Record<string, unknown>)[key] =
|
|
322
|
+
options.placeholderContinuationValues &&
|
|
323
|
+
isPublicResultCursorKey(key, current.path) &&
|
|
324
|
+
typeof redacted === 'string' &&
|
|
325
|
+
redacted !== REDACTED_VALUE &&
|
|
326
|
+
redacted.length > 0
|
|
327
|
+
? '[PAGINATION_CURSOR]'
|
|
328
|
+
: redacted;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
209
331
|
if (!sourceIsArray && shouldRedactKey(key)) {
|
|
210
332
|
(current.target as Record<string, unknown>)[key] = REDACTED_VALUE;
|
|
211
333
|
continue;
|
|
@@ -217,6 +339,7 @@ export function redactSecretsInValue<T>(
|
|
|
217
339
|
source: item as Container,
|
|
218
340
|
target: nestedTarget,
|
|
219
341
|
parentKey: itemParentKey,
|
|
342
|
+
path: sourceIsArray ? current.path : [...current.path, key],
|
|
220
343
|
});
|
|
221
344
|
continue;
|
|
222
345
|
}
|
|
@@ -242,6 +365,18 @@ export function redactSecretsInCustomerValue<T>(
|
|
|
242
365
|
return redactSecretsInValue(value, parentKey, { redactHighEntropy: false });
|
|
243
366
|
}
|
|
244
367
|
|
|
368
|
+
/** Redaction for authenticated successful provider or Play result data. */
|
|
369
|
+
export function redactSecretsInPublicResultValue<T>(
|
|
370
|
+
value: T,
|
|
371
|
+
options: { placeholderContinuationValues?: boolean } = {},
|
|
372
|
+
): T {
|
|
373
|
+
return redactSecretsInValue(value, undefined, {
|
|
374
|
+
redactHighEntropy: false,
|
|
375
|
+
keyPolicy: 'public-result',
|
|
376
|
+
placeholderContinuationValues: options.placeholderContinuationValues,
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
|
|
245
380
|
export function redactSecretsInJsonText(
|
|
246
381
|
text: string,
|
|
247
382
|
options: SecretRedactionOptions = {},
|
|
@@ -265,3 +400,11 @@ export function redactSecretsInJsonText(
|
|
|
265
400
|
export function redactSecretsInCustomerJsonText(text: string) {
|
|
266
401
|
return redactSecretsInJsonText(text, { redactHighEntropy: false });
|
|
267
402
|
}
|
|
403
|
+
|
|
404
|
+
/** Redaction for serialized authenticated provider or Play result data. */
|
|
405
|
+
export function redactSecretsInPublicResultJsonText(text: string) {
|
|
406
|
+
return redactSecretsInJsonText(text, {
|
|
407
|
+
redactHighEntropy: false,
|
|
408
|
+
keyPolicy: 'public-result',
|
|
409
|
+
});
|
|
410
|
+
}
|
package/dist/cli/index.js
CHANGED
|
@@ -1298,7 +1298,7 @@ var SDK_RELEASE = {
|
|
|
1298
1298
|
// getters keep their established compatibility behavior.
|
|
1299
1299
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
1300
1300
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
1301
|
-
version: "0.3.
|
|
1301
|
+
version: "0.3.101",
|
|
1302
1302
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
1303
1303
|
packageCapabilities: {
|
|
1304
1304
|
updatePreferences: 1
|
|
@@ -9780,7 +9780,10 @@ Examples:
|
|
|
9780
9780
|
deepline auth register --wait no
|
|
9781
9781
|
deepline auth register --auth-scope folder --wait no
|
|
9782
9782
|
`
|
|
9783
|
-
).option(
|
|
9783
|
+
).option(
|
|
9784
|
+
"--org-name <name>",
|
|
9785
|
+
"Use this workspace, or create a separate one with this name"
|
|
9786
|
+
).option(
|
|
9784
9787
|
"--org-id <id>",
|
|
9785
9788
|
"Bind to this workspace directly, skipping the browser picker"
|
|
9786
9789
|
).option("--agent-name <name>", "Agent name to register").option("--wait <mode>", "Wait mode: auto, yes, or no", "auto").option("--no-wait", "Alias for --wait no").option(
|
|
@@ -16555,11 +16558,8 @@ function collectInlineSecretFindings(sourceCode) {
|
|
|
16555
16558
|
var MAX_PLAY_BUNDLE_BYTES = 30 * 1024 * 1024;
|
|
16556
16559
|
|
|
16557
16560
|
// ../plays/bundling/index.ts
|
|
16558
|
-
var
|
|
16559
|
-
var PLAY_ARTIFACT_CACHE_DIR = (0, import_node_path11.join)(
|
|
16560
|
-
(0, import_node_os7.tmpdir)(),
|
|
16561
|
-
`deepline-play-artifacts-v${PLAY_BUNDLE_CACHE_VERSION}`
|
|
16562
|
-
);
|
|
16561
|
+
var PLAY_BUNDLE_CACHE_NAMESPACE = "deepline-play-artifacts-docflow-jsdoc";
|
|
16562
|
+
var PLAY_ARTIFACT_CACHE_DIR = (0, import_node_path11.join)((0, import_node_os7.tmpdir)(), PLAY_BUNDLE_CACHE_NAMESPACE);
|
|
16563
16563
|
var NODE_BUILTIN_SET = new Set(
|
|
16564
16564
|
import_node_module.builtinModules.flatMap(
|
|
16565
16565
|
(name) => name.startsWith("node:") ? [name, name.slice(5)] : [name, `node:${name}`]
|
|
@@ -35399,6 +35399,28 @@ function monitorBatchScope(options, kind) {
|
|
|
35399
35399
|
function monitorBatchIdempotencyKey(kind, value) {
|
|
35400
35400
|
return value?.trim() || `monitor-batch-${kind}-${(0, import_node_crypto8.randomUUID)()}`;
|
|
35401
35401
|
}
|
|
35402
|
+
function legacyDryRunManifest(raw) {
|
|
35403
|
+
let parsed;
|
|
35404
|
+
try {
|
|
35405
|
+
parsed = JSON.parse(raw);
|
|
35406
|
+
} catch {
|
|
35407
|
+
return raw;
|
|
35408
|
+
}
|
|
35409
|
+
const object = asRecord2(parsed);
|
|
35410
|
+
if (object && asString(object.key) && asString(object.tool)) {
|
|
35411
|
+
return raw;
|
|
35412
|
+
}
|
|
35413
|
+
const isBatchDocument = Array.isArray(parsed) || object !== null && (Object.prototype.hasOwnProperty.call(object, "monitors") || object.kind === "batch");
|
|
35414
|
+
if (!isBatchDocument) return raw;
|
|
35415
|
+
const lint = lintMonitorBatchInput(parsed);
|
|
35416
|
+
if (!lint.normalized) {
|
|
35417
|
+
throw new MonitorsUsageError(
|
|
35418
|
+
lint.issues.filter((issue) => issue.severity === "error").map((issue) => `${issue.path || "batch"}: ${issue.message}`).join("; ")
|
|
35419
|
+
);
|
|
35420
|
+
}
|
|
35421
|
+
return `${lint.normalized.monitors.map((monitor) => JSON.stringify(monitor)).join("\n")}
|
|
35422
|
+
`;
|
|
35423
|
+
}
|
|
35402
35424
|
async function handleMonitorBatchDeploy(options) {
|
|
35403
35425
|
if (!options.file?.trim()) {
|
|
35404
35426
|
throw new MonitorsUsageError(
|
|
@@ -35421,6 +35443,9 @@ async function handleMonitorBatchDeploy(options) {
|
|
|
35421
35443
|
if (!manifestNdjson.trim()) {
|
|
35422
35444
|
throw new MonitorsUsageError("Monitor batch manifest is empty.");
|
|
35423
35445
|
}
|
|
35446
|
+
if (options.dryRun === true) {
|
|
35447
|
+
manifestNdjson = legacyDryRunManifest(manifestNdjson);
|
|
35448
|
+
}
|
|
35424
35449
|
const idempotencyKey = monitorBatchIdempotencyKey(
|
|
35425
35450
|
"deploy",
|
|
35426
35451
|
options.idempotencyKey
|
|
@@ -35450,9 +35475,10 @@ async function handleMonitorBatch(kind, options) {
|
|
|
35450
35475
|
`monitors batch ${kind} changes provider monitors asynchronously. Preview with --dry-run, then confirm with --yes.`
|
|
35451
35476
|
);
|
|
35452
35477
|
}
|
|
35453
|
-
|
|
35478
|
+
const scope = monitorBatchScope(options, kind);
|
|
35479
|
+
if (kind === "deactivate" && scope.kind === "target" && !options.reason?.trim()) {
|
|
35454
35480
|
throw new MonitorsUsageError(
|
|
35455
|
-
"monitors batch deactivate requires --reason (for example insufficient_balance or billing_failure)."
|
|
35481
|
+
"monitors batch deactivate --target requires --reason (for example insufficient_balance or billing_failure). Omit --reason with --keys for a customer-requested teardown."
|
|
35456
35482
|
);
|
|
35457
35483
|
}
|
|
35458
35484
|
const idempotencyKey = monitorBatchIdempotencyKey(
|
|
@@ -35461,7 +35487,7 @@ async function handleMonitorBatch(kind, options) {
|
|
|
35461
35487
|
);
|
|
35462
35488
|
const result = await new DeeplineClient().monitors.batch.submit({
|
|
35463
35489
|
kind,
|
|
35464
|
-
scope
|
|
35490
|
+
scope,
|
|
35465
35491
|
dryRun: options.dryRun === true,
|
|
35466
35492
|
...options.reason?.trim() ? { deactivationReason: options.reason.trim() } : {},
|
|
35467
35493
|
idempotencyKey
|
|
@@ -35666,7 +35692,10 @@ Examples:
|
|
|
35666
35692
|
batch.command("deactivate").description(
|
|
35667
35693
|
"Durably deactivate a selection through provider batch deletes."
|
|
35668
35694
|
)
|
|
35669
|
-
).
|
|
35695
|
+
).option(
|
|
35696
|
+
"--reason <reason>",
|
|
35697
|
+
"Declared policy reason; required with --target and omitted for a customer-requested --keys teardown"
|
|
35698
|
+
).option("--yes", "Confirm the asynchronous provider deactivation")
|
|
35670
35699
|
).action(
|
|
35671
35700
|
monitorsAction(
|
|
35672
35701
|
(options) => handleMonitorBatch("deactivate", options)
|
package/dist/cli/index.mjs
CHANGED
|
@@ -1271,7 +1271,7 @@ var SDK_RELEASE = {
|
|
|
1271
1271
|
// getters keep their established compatibility behavior.
|
|
1272
1272
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
1273
1273
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
1274
|
-
version: "0.3.
|
|
1274
|
+
version: "0.3.101",
|
|
1275
1275
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
1276
1276
|
packageCapabilities: {
|
|
1277
1277
|
updatePreferences: 1
|
|
@@ -9765,7 +9765,10 @@ Examples:
|
|
|
9765
9765
|
deepline auth register --wait no
|
|
9766
9766
|
deepline auth register --auth-scope folder --wait no
|
|
9767
9767
|
`
|
|
9768
|
-
).option(
|
|
9768
|
+
).option(
|
|
9769
|
+
"--org-name <name>",
|
|
9770
|
+
"Use this workspace, or create a separate one with this name"
|
|
9771
|
+
).option(
|
|
9769
9772
|
"--org-id <id>",
|
|
9770
9773
|
"Bind to this workspace directly, skipping the browser picker"
|
|
9771
9774
|
).option("--agent-name <name>", "Agent name to register").option("--wait <mode>", "Wait mode: auto, yes, or no", "auto").option("--no-wait", "Alias for --wait no").option(
|
|
@@ -16598,11 +16601,8 @@ function collectInlineSecretFindings(sourceCode) {
|
|
|
16598
16601
|
var MAX_PLAY_BUNDLE_BYTES = 30 * 1024 * 1024;
|
|
16599
16602
|
|
|
16600
16603
|
// ../plays/bundling/index.ts
|
|
16601
|
-
var
|
|
16602
|
-
var PLAY_ARTIFACT_CACHE_DIR = join7(
|
|
16603
|
-
tmpdir2(),
|
|
16604
|
-
`deepline-play-artifacts-v${PLAY_BUNDLE_CACHE_VERSION}`
|
|
16605
|
-
);
|
|
16604
|
+
var PLAY_BUNDLE_CACHE_NAMESPACE = "deepline-play-artifacts-docflow-jsdoc";
|
|
16605
|
+
var PLAY_ARTIFACT_CACHE_DIR = join7(tmpdir2(), PLAY_BUNDLE_CACHE_NAMESPACE);
|
|
16606
16606
|
var NODE_BUILTIN_SET = new Set(
|
|
16607
16607
|
builtinModules.flatMap(
|
|
16608
16608
|
(name) => name.startsWith("node:") ? [name, name.slice(5)] : [name, `node:${name}`]
|
|
@@ -35456,6 +35456,28 @@ function monitorBatchScope(options, kind) {
|
|
|
35456
35456
|
function monitorBatchIdempotencyKey(kind, value) {
|
|
35457
35457
|
return value?.trim() || `monitor-batch-${kind}-${randomUUID5()}`;
|
|
35458
35458
|
}
|
|
35459
|
+
function legacyDryRunManifest(raw) {
|
|
35460
|
+
let parsed;
|
|
35461
|
+
try {
|
|
35462
|
+
parsed = JSON.parse(raw);
|
|
35463
|
+
} catch {
|
|
35464
|
+
return raw;
|
|
35465
|
+
}
|
|
35466
|
+
const object = asRecord2(parsed);
|
|
35467
|
+
if (object && asString(object.key) && asString(object.tool)) {
|
|
35468
|
+
return raw;
|
|
35469
|
+
}
|
|
35470
|
+
const isBatchDocument = Array.isArray(parsed) || object !== null && (Object.prototype.hasOwnProperty.call(object, "monitors") || object.kind === "batch");
|
|
35471
|
+
if (!isBatchDocument) return raw;
|
|
35472
|
+
const lint = lintMonitorBatchInput(parsed);
|
|
35473
|
+
if (!lint.normalized) {
|
|
35474
|
+
throw new MonitorsUsageError(
|
|
35475
|
+
lint.issues.filter((issue) => issue.severity === "error").map((issue) => `${issue.path || "batch"}: ${issue.message}`).join("; ")
|
|
35476
|
+
);
|
|
35477
|
+
}
|
|
35478
|
+
return `${lint.normalized.monitors.map((monitor) => JSON.stringify(monitor)).join("\n")}
|
|
35479
|
+
`;
|
|
35480
|
+
}
|
|
35459
35481
|
async function handleMonitorBatchDeploy(options) {
|
|
35460
35482
|
if (!options.file?.trim()) {
|
|
35461
35483
|
throw new MonitorsUsageError(
|
|
@@ -35478,6 +35500,9 @@ async function handleMonitorBatchDeploy(options) {
|
|
|
35478
35500
|
if (!manifestNdjson.trim()) {
|
|
35479
35501
|
throw new MonitorsUsageError("Monitor batch manifest is empty.");
|
|
35480
35502
|
}
|
|
35503
|
+
if (options.dryRun === true) {
|
|
35504
|
+
manifestNdjson = legacyDryRunManifest(manifestNdjson);
|
|
35505
|
+
}
|
|
35481
35506
|
const idempotencyKey = monitorBatchIdempotencyKey(
|
|
35482
35507
|
"deploy",
|
|
35483
35508
|
options.idempotencyKey
|
|
@@ -35507,9 +35532,10 @@ async function handleMonitorBatch(kind, options) {
|
|
|
35507
35532
|
`monitors batch ${kind} changes provider monitors asynchronously. Preview with --dry-run, then confirm with --yes.`
|
|
35508
35533
|
);
|
|
35509
35534
|
}
|
|
35510
|
-
|
|
35535
|
+
const scope = monitorBatchScope(options, kind);
|
|
35536
|
+
if (kind === "deactivate" && scope.kind === "target" && !options.reason?.trim()) {
|
|
35511
35537
|
throw new MonitorsUsageError(
|
|
35512
|
-
"monitors batch deactivate requires --reason (for example insufficient_balance or billing_failure)."
|
|
35538
|
+
"monitors batch deactivate --target requires --reason (for example insufficient_balance or billing_failure). Omit --reason with --keys for a customer-requested teardown."
|
|
35513
35539
|
);
|
|
35514
35540
|
}
|
|
35515
35541
|
const idempotencyKey = monitorBatchIdempotencyKey(
|
|
@@ -35518,7 +35544,7 @@ async function handleMonitorBatch(kind, options) {
|
|
|
35518
35544
|
);
|
|
35519
35545
|
const result = await new DeeplineClient().monitors.batch.submit({
|
|
35520
35546
|
kind,
|
|
35521
|
-
scope
|
|
35547
|
+
scope,
|
|
35522
35548
|
dryRun: options.dryRun === true,
|
|
35523
35549
|
...options.reason?.trim() ? { deactivationReason: options.reason.trim() } : {},
|
|
35524
35550
|
idempotencyKey
|
|
@@ -35723,7 +35749,10 @@ Examples:
|
|
|
35723
35749
|
batch.command("deactivate").description(
|
|
35724
35750
|
"Durably deactivate a selection through provider batch deletes."
|
|
35725
35751
|
)
|
|
35726
|
-
).
|
|
35752
|
+
).option(
|
|
35753
|
+
"--reason <reason>",
|
|
35754
|
+
"Declared policy reason; required with --target and omitted for a customer-requested --keys teardown"
|
|
35755
|
+
).option("--yes", "Confirm the asynchronous provider deactivation")
|
|
35727
35756
|
).action(
|
|
35728
35757
|
monitorsAction(
|
|
35729
35758
|
(options) => handleMonitorBatch("deactivate", options)
|
package/dist/index.d.mts
CHANGED
|
@@ -3260,7 +3260,10 @@ type MonitorBatchExistingSubmitOptions = {
|
|
|
3260
3260
|
kind: 'audit' | 'deactivate' | 'reactivate' | 'repair';
|
|
3261
3261
|
scope: MonitorBatchScope;
|
|
3262
3262
|
dryRun?: boolean;
|
|
3263
|
-
/**
|
|
3263
|
+
/**
|
|
3264
|
+
* A declared policy reason for target deactivation. Omit it for an explicit
|
|
3265
|
+
* customer-owned key teardown; absent is the durable customer intent.
|
|
3266
|
+
*/
|
|
3264
3267
|
deactivationReason?: string;
|
|
3265
3268
|
/** Stable retry key. Reusing it joins the original durable operation. */
|
|
3266
3269
|
idempotencyKey: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -3260,7 +3260,10 @@ type MonitorBatchExistingSubmitOptions = {
|
|
|
3260
3260
|
kind: 'audit' | 'deactivate' | 'reactivate' | 'repair';
|
|
3261
3261
|
scope: MonitorBatchScope;
|
|
3262
3262
|
dryRun?: boolean;
|
|
3263
|
-
/**
|
|
3263
|
+
/**
|
|
3264
|
+
* A declared policy reason for target deactivation. Omit it for an explicit
|
|
3265
|
+
* customer-owned key teardown; absent is the durable customer intent.
|
|
3266
|
+
*/
|
|
3264
3267
|
deactivationReason?: string;
|
|
3265
3268
|
/** Stable retry key. Reusing it joins the original durable operation. */
|
|
3266
3269
|
idempotencyKey: string;
|
package/dist/index.js
CHANGED
|
@@ -860,7 +860,7 @@ var SDK_RELEASE = {
|
|
|
860
860
|
// getters keep their established compatibility behavior.
|
|
861
861
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
862
862
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
863
|
-
version: "0.3.
|
|
863
|
+
version: "0.3.101",
|
|
864
864
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
865
865
|
packageCapabilities: {
|
|
866
866
|
updatePreferences: 1
|
package/dist/index.mjs
CHANGED
|
@@ -768,7 +768,7 @@ var SDK_RELEASE = {
|
|
|
768
768
|
// getters keep their established compatibility behavior.
|
|
769
769
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
770
770
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
771
|
-
version: "0.3.
|
|
771
|
+
version: "0.3.101",
|
|
772
772
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
773
773
|
packageCapabilities: {
|
|
774
774
|
updatePreferences: 1
|
|
@@ -1964,7 +1964,7 @@ function inferBindingIo(statement) {
|
|
|
1964
1964
|
ioConfidence: "inferred"
|
|
1965
1965
|
};
|
|
1966
1966
|
}
|
|
1967
|
-
var
|
|
1967
|
+
var JSDOC_BLOCK = /\/\*\*([\s\S]*?)\*\//g;
|
|
1968
1968
|
var BLOCK_EXPORT_HEADER = /^[A-Za-z_$][\w$-]*$/;
|
|
1969
1969
|
function cleanBlockBody(raw) {
|
|
1970
1970
|
return raw.split(/\r?\n/).map((line) => /^\s*\*/.test(line) ? line.replace(/^\s*\* ?/, "") : line).join("\n").trim();
|
|
@@ -2151,9 +2151,12 @@ function materializeDocflow(block) {
|
|
|
2151
2151
|
function parsePlayDocflowFile(sourceCode) {
|
|
2152
2152
|
const errors = [];
|
|
2153
2153
|
const rawBlocks = [];
|
|
2154
|
-
|
|
2155
|
-
for (const match of sourceCode.matchAll(
|
|
2156
|
-
|
|
2154
|
+
JSDOC_BLOCK.lastIndex = 0;
|
|
2155
|
+
for (const match of sourceCode.matchAll(JSDOC_BLOCK)) {
|
|
2156
|
+
const cleanedBody = cleanBlockBody(match[1]);
|
|
2157
|
+
const mermaid = /^@mermaid(?:[ \t]+|\r?\n|$)([\s\S]*)$/.exec(cleanedBody);
|
|
2158
|
+
if (!mermaid) continue;
|
|
2159
|
+
rawBlocks.push({ syntax: "mermaid", body: mermaid[1].trim() });
|
|
2157
2160
|
}
|
|
2158
2161
|
if (rawBlocks.length === 0) return { blocks: [], bindings: [], errors };
|
|
2159
2162
|
const rejectedNodeIds = /* @__PURE__ */ new Set();
|
|
@@ -2878,11 +2881,8 @@ function validatePlaySourceFilesHaveNoInlineSecrets(sourceFiles) {
|
|
|
2878
2881
|
var MAX_PLAY_BUNDLE_BYTES = 30 * 1024 * 1024;
|
|
2879
2882
|
|
|
2880
2883
|
// ../plays/bundling/index.ts
|
|
2881
|
-
var
|
|
2882
|
-
var PLAY_ARTIFACT_CACHE_DIR = join(
|
|
2883
|
-
tmpdir(),
|
|
2884
|
-
`deepline-play-artifacts-v${PLAY_BUNDLE_CACHE_VERSION}`
|
|
2885
|
-
);
|
|
2884
|
+
var PLAY_BUNDLE_CACHE_NAMESPACE = "deepline-play-artifacts-docflow-jsdoc";
|
|
2885
|
+
var PLAY_ARTIFACT_CACHE_DIR = join(tmpdir(), PLAY_BUNDLE_CACHE_NAMESPACE);
|
|
2886
2886
|
var PLAY_PROXY_NAMESPACE = "deepline-play-runtime-ref";
|
|
2887
2887
|
var SOURCE_EXTENSIONS = [
|
|
2888
2888
|
".ts",
|
|
@@ -4867,7 +4867,6 @@ async function discoverPackagedLocalFiles(entryFile) {
|
|
|
4867
4867
|
}
|
|
4868
4868
|
|
|
4869
4869
|
// src/plays/bundle-play-file.ts
|
|
4870
|
-
var PLAY_BUNDLE_CACHE_VERSION2 = 37;
|
|
4871
4870
|
var MODULE_DIR = dirname3(fileURLToPath(import.meta.url));
|
|
4872
4871
|
var SDK_PACKAGE_ROOT = resolve3(MODULE_DIR, "..", "..");
|
|
4873
4872
|
var SOURCE_REPO_ROOT = resolve3(SDK_PACKAGE_ROOT, "..", "..");
|
|
@@ -4917,10 +4916,7 @@ function createSdkPlayBundlingAdapter() {
|
|
|
4917
4916
|
return {
|
|
4918
4917
|
projectRoot: PROJECT_ROOT,
|
|
4919
4918
|
nodeModulesDir: HAS_PACKAGED_BUNDLING_SOURCES ? resolve3(SDK_PACKAGE_ROOT, "node_modules") : resolve3(PROJECT_ROOT, "node_modules"),
|
|
4920
|
-
cacheDir: join3(
|
|
4921
|
-
tmpdir2(),
|
|
4922
|
-
`deepline-play-artifacts-v${PLAY_BUNDLE_CACHE_VERSION2}`
|
|
4923
|
-
),
|
|
4919
|
+
cacheDir: join3(tmpdir2(), PLAY_BUNDLE_CACHE_NAMESPACE),
|
|
4924
4920
|
sdkSourceRoot: SDK_SOURCE_ROOT,
|
|
4925
4921
|
sdkPackageJson: SDK_PACKAGE_JSON,
|
|
4926
4922
|
sdkEntryFile: SDK_ENTRY_FILE,
|
package/dist/release.d.mts
CHANGED
|
@@ -149,7 +149,7 @@ type SdkRelease = {
|
|
|
149
149
|
supportPolicy: SdkSupportPolicy;
|
|
150
150
|
};
|
|
151
151
|
declare const SDK_RELEASE: {
|
|
152
|
-
readonly version: "0.3.
|
|
152
|
+
readonly version: "0.3.101";
|
|
153
153
|
readonly updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.";
|
|
154
154
|
readonly packageCapabilities: {
|
|
155
155
|
readonly updatePreferences: 1;
|
package/dist/release.d.ts
CHANGED
|
@@ -149,7 +149,7 @@ type SdkRelease = {
|
|
|
149
149
|
supportPolicy: SdkSupportPolicy;
|
|
150
150
|
};
|
|
151
151
|
declare const SDK_RELEASE: {
|
|
152
|
-
readonly version: "0.3.
|
|
152
|
+
readonly version: "0.3.101";
|
|
153
153
|
readonly updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.";
|
|
154
154
|
readonly packageCapabilities: {
|
|
155
155
|
readonly updatePreferences: 1;
|
package/dist/release.js
CHANGED
|
@@ -74,7 +74,7 @@ var SDK_RELEASE = {
|
|
|
74
74
|
// getters keep their established compatibility behavior.
|
|
75
75
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
76
76
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
77
|
-
version: "0.3.
|
|
77
|
+
version: "0.3.101",
|
|
78
78
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
79
79
|
packageCapabilities: {
|
|
80
80
|
updatePreferences: 1
|
package/dist/release.mjs
CHANGED
|
@@ -48,7 +48,7 @@ var SDK_RELEASE = {
|
|
|
48
48
|
// getters keep their established compatibility behavior.
|
|
49
49
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
50
50
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
51
|
-
version: "0.3.
|
|
51
|
+
version: "0.3.101",
|
|
52
52
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
53
53
|
packageCapabilities: {
|
|
54
54
|
updatePreferences: 1
|