deepline 0.3.106 → 0.3.108

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.
@@ -53,6 +53,10 @@ const SOURCE_EXTENSIONS = [
53
53
  '.json',
54
54
  ];
55
55
  const TEXT_IMPORT_EXTENSIONS = new Set(['.md', '.txt']);
56
+ const EXPLICIT_IMPORT_EXTENSIONS = new Set([
57
+ ...SOURCE_EXTENSIONS,
58
+ ...TEXT_IMPORT_EXTENSIONS,
59
+ ]);
56
60
 
57
61
  function isTextImportFile(filePath: string): boolean {
58
62
  return TEXT_IMPORT_EXTENSIONS.has(extname(filePath));
@@ -312,17 +316,20 @@ async function resolveLocalImport(
312
316
  const candidates: string[] = [base];
313
317
  const explicitExtension = extname(base).toLowerCase();
314
318
 
315
- if (!explicitExtension) {
319
+ if (['.js', '.jsx', '.mjs', '.cjs'].includes(explicitExtension)) {
320
+ const stem = base.slice(0, -explicitExtension.length);
316
321
  candidates.push(
317
- ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`),
322
+ ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`),
318
323
  );
324
+ } else if (!EXPLICIT_IMPORT_EXTENSIONS.has(explicitExtension)) {
325
+ // Only a recognized extension means the author named the file exactly. A
326
+ // dotted name like `./child.play` or `./user.schema` resolves the way
327
+ // TypeScript resolves it: append source extensions, then try an index.
319
328
  candidates.push(
320
- ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`)),
329
+ ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`),
321
330
  );
322
- } else if (['.js', '.jsx', '.mjs', '.cjs'].includes(explicitExtension)) {
323
- const stem = base.slice(0, -explicitExtension.length);
324
331
  candidates.push(
325
- ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`),
332
+ ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`)),
326
333
  );
327
334
  }
328
335
 
@@ -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.106',
203
+ version: '0.3.108',
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: {
@@ -525,24 +525,6 @@
525
525
  "failureAlert": "vercel_route_wrapper",
526
526
  "domainReportRequired": true
527
527
  },
528
- {
529
- "id": "vercel.provider-monitor-direct-billing-suspension",
530
- "name": "Provider monitor direct billing suspension",
531
- "scheduler": "vercel_cron",
532
- "cadence": "*/5 * * * *",
533
- "timezone": "UTC",
534
- "source": "apps/deepline-api/vercel.json",
535
- "locator": "/api/v2/cron/provider-monitor-direct-billing-suspension",
536
- "owner": "monitors",
537
- "criticality": "critical",
538
- "purpose": "Apply direct billing-suspension decisions to provider monitors after billing state changes.",
539
- "successDefinition": "Every due target is evaluated and desired state is persisted; no targets is a valid no-op.",
540
- "failureDefinition": "A target cannot be evaluated or desired suspension state fails to persist.",
541
- "startGraceMs": 300000,
542
- "runTimeoutMs": 1800000,
543
- "failureAlert": "vercel_route_wrapper",
544
- "domainReportRequired": true
545
- },
546
528
  {
547
529
  "id": "vercel.provider-monitor-batch-operation-sweep",
548
530
  "name": "Provider monitor batch operation recovery sweep",
@@ -78,6 +78,10 @@ const SOURCE_EXTENSIONS = [
78
78
  ];
79
79
  const PLAY_SOURCE_FILE_PATTERN = /\.play\.(?:[cm]?[jt]sx?)$/i;
80
80
  const TEXT_IMPORT_EXTENSIONS = new Set(['.md', '.txt']);
81
+ const EXPLICIT_IMPORT_EXTENSIONS = new Set([
82
+ ...SOURCE_EXTENSIONS,
83
+ ...TEXT_IMPORT_EXTENSIONS,
84
+ ]);
81
85
  const NODE_BUILTIN_SET = new Set(
82
86
  builtinModules.flatMap((name) =>
83
87
  name.startsWith('node:') ? [name, name.slice(5)] : [name, `node:${name}`],
@@ -1888,17 +1892,20 @@ async function resolveLocalImport(
1888
1892
  const candidates: string[] = [base];
1889
1893
  const explicitExtension = extname(base).toLowerCase();
1890
1894
 
1891
- if (!explicitExtension) {
1895
+ if (['.js', '.jsx', '.mjs', '.cjs'].includes(explicitExtension)) {
1896
+ const stem = base.slice(0, -explicitExtension.length);
1892
1897
  candidates.push(
1893
- ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`),
1898
+ ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`),
1894
1899
  );
1900
+ } else if (!EXPLICIT_IMPORT_EXTENSIONS.has(explicitExtension)) {
1901
+ // Only a recognized extension means the author named the file exactly. A
1902
+ // dotted name like `./child.play` or `./user.schema` resolves the way
1903
+ // TypeScript resolves it: append source extensions, then try an index.
1895
1904
  candidates.push(
1896
- ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`)),
1905
+ ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`),
1897
1906
  );
1898
- } else if (['.js', '.jsx', '.mjs', '.cjs'].includes(explicitExtension)) {
1899
- const stem = base.slice(0, -explicitExtension.length);
1900
1907
  candidates.push(
1901
- ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`),
1908
+ ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`)),
1902
1909
  );
1903
1910
  }
1904
1911
 
@@ -42,6 +42,10 @@ const SOURCE_EXTENSIONS = [
42
42
  '.json',
43
43
  ];
44
44
  const TEXT_IMPORT_EXTENSIONS = new Set(['.md', '.txt']);
45
+ const EXPLICIT_IMPORT_EXTENSIONS = new Set([
46
+ ...SOURCE_EXTENSIONS,
47
+ ...TEXT_IMPORT_EXTENSIONS,
48
+ ]);
45
49
 
46
50
  function isTextImportFile(filePath: string): boolean {
47
51
  return TEXT_IMPORT_EXTENSIONS.has(extname(filePath));
@@ -223,17 +227,20 @@ async function resolveLocalImport(
223
227
  const candidates: string[] = [base];
224
228
  const explicitExtension = extname(base).toLowerCase();
225
229
 
226
- if (!explicitExtension) {
230
+ if (['.js', '.jsx', '.mjs', '.cjs'].includes(explicitExtension)) {
231
+ const stem = base.slice(0, -explicitExtension.length);
227
232
  candidates.push(
228
- ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`),
233
+ ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`),
229
234
  );
235
+ } else if (!EXPLICIT_IMPORT_EXTENSIONS.has(explicitExtension)) {
236
+ // Only a recognized extension means the author named the file exactly. A
237
+ // dotted name like `./child.play` or `./user.schema` resolves the way
238
+ // TypeScript resolves it: append source extensions, then try an index.
230
239
  candidates.push(
231
- ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`)),
240
+ ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`),
232
241
  );
233
- } else if (['.js', '.jsx', '.mjs', '.cjs'].includes(explicitExtension)) {
234
- const stem = base.slice(0, -explicitExtension.length);
235
242
  candidates.push(
236
- ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`),
243
+ ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`)),
237
244
  );
238
245
  }
239
246
 
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.106",
1301
+ version: "0.3.108",
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
@@ -16576,6 +16576,22 @@ var MAX_PLAY_BUNDLE_BYTES = 30 * 1024 * 1024;
16576
16576
  // ../plays/bundling/index.ts
16577
16577
  var PLAY_BUNDLE_CACHE_NAMESPACE = "deepline-play-artifacts-docflow-jsdoc";
16578
16578
  var PLAY_ARTIFACT_CACHE_DIR = (0, import_node_path11.join)((0, import_node_os7.tmpdir)(), PLAY_BUNDLE_CACHE_NAMESPACE);
16579
+ var SOURCE_EXTENSIONS = [
16580
+ ".ts",
16581
+ ".tsx",
16582
+ ".mts",
16583
+ ".cts",
16584
+ ".js",
16585
+ ".jsx",
16586
+ ".mjs",
16587
+ ".cjs",
16588
+ ".json"
16589
+ ];
16590
+ var TEXT_IMPORT_EXTENSIONS = /* @__PURE__ */ new Set([".md", ".txt"]);
16591
+ var EXPLICIT_IMPORT_EXTENSIONS = /* @__PURE__ */ new Set([
16592
+ ...SOURCE_EXTENSIONS,
16593
+ ...TEXT_IMPORT_EXTENSIONS
16594
+ ]);
16579
16595
  var NODE_BUILTIN_SET = new Set(
16580
16596
  import_node_module.builtinModules.flatMap(
16581
16597
  (name) => name.startsWith("node:") ? [name, name.slice(5)] : [name, `node:${name}`]
@@ -17177,6 +17193,22 @@ function resolveEnabledExecutionProfile(override) {
17177
17193
  var import_node_crypto5 = require("crypto");
17178
17194
  var import_promises4 = require("fs/promises");
17179
17195
  var import_node_path12 = require("path");
17196
+ var SOURCE_EXTENSIONS2 = [
17197
+ ".ts",
17198
+ ".tsx",
17199
+ ".mts",
17200
+ ".cts",
17201
+ ".js",
17202
+ ".jsx",
17203
+ ".mjs",
17204
+ ".cjs",
17205
+ ".json"
17206
+ ];
17207
+ var TEXT_IMPORT_EXTENSIONS2 = /* @__PURE__ */ new Set([".md", ".txt"]);
17208
+ var EXPLICIT_IMPORT_EXTENSIONS2 = /* @__PURE__ */ new Set([
17209
+ ...SOURCE_EXTENSIONS2,
17210
+ ...TEXT_IMPORT_EXTENSIONS2
17211
+ ]);
17180
17212
 
17181
17213
  // src/plays/bundle-play-file.ts
17182
17214
  var import_meta = {};
@@ -33788,9 +33820,15 @@ function renderMonitorDeletePlan(payload, fallbackKey) {
33788
33820
  function renderMonitorReactivatePlan(payload, key) {
33789
33821
  const estimate = asRecord2(payload.cost_estimate);
33790
33822
  const credits = estimate ? asFiniteNumber(estimate.credits) : void 0;
33823
+ const monitor = asRecord2(payload.monitor);
33824
+ const tool = monitor ? asString(monitor.tool) : void 0;
33825
+ const hasTamradarHistoricalCatchup = tool === "deepline_native.company_radar" || tool === "deepline_native.contact_radar" || tool === "deepline_native.industry_radar";
33791
33826
  const lines = [
33792
33827
  "DRY RUN \u2014 nothing was reactivated.",
33793
33828
  credits !== void 0 ? `Reactivate cost: would cost ${credits} Deepline credits.` : "Reactivate cost: estimate unavailable from this server.",
33829
+ ...hasTamradarHistoricalCatchup ? [
33830
+ "Source boundary: ordinary reactivation starts at provider creation. Saved updates_since values are not forwarded during reactivation."
33831
+ ] : [],
33794
33832
  "",
33795
33833
  `Reactivate for real: deepline monitors reactivate ${key}`
33796
33834
  ];
@@ -35919,10 +35957,13 @@ Notes:
35919
35957
  no separate repair command or retry queue: rerun the same deploy/update.
35920
35958
  Scheduled reconciliation can also finish that exact saved cleanup; it never
35921
35959
  creates another monitor.
35922
- For TamRadar, deliberately changing payload.updates_since is an explicit
35923
- historical replay request, including when redeploying a disabled monitor.
35924
- Deepline preserves that selected boundary; filter-only deploys and ordinary
35925
- reactivation start from a fresh future-only source boundary instead.
35960
+ For TamRadar, deliberately changing payload.updates_since on an initial or
35961
+ active definition is an explicit historical replay request. A disabled
35962
+ monitor cannot stage this change; Deepline rejects that update. Filter-only
35963
+ deploys and ordinary reactivation omit the field and start the provider
35964
+ resource at creation instead.
35965
+ New Hire and Promotion source dates use calendar-month precision upstream,
35966
+ so Deepline rejects current-month updates_since values for those radar types.
35926
35967
  Operational controls are Deepline-managed. A monitor writes rows; downstream
35927
35968
  automation belongs in a Play with sqlListeners.
35928
35969
 
@@ -35950,11 +35991,13 @@ positionally, via --file <path>, or from stdin with --file -.
35950
35991
  When <patch> includes payload, its top-level fields are merged with the stored
35951
35992
  payload before validation. This lets you change one filter without resending
35952
35993
  domain or radar_type; nested values and arrays replace atomically.
35953
- For TamRadar, changing payload.updates_since is an explicit historical replay
35954
- request. Deepline passes that requested boundary upstream, but previously
35994
+ For TamRadar, changing payload.updates_since on an initial or active definition
35995
+ is an explicit historical replay request. Deepline passes that requested boundary upstream, but previously
35955
35996
  delivered canonical findings are deduplicated before dispatch and billing; only
35956
35997
  previously unseen historical findings are chargeable. Filter-only updates,
35957
- repair, and reactivation instead use a fresh future-only source boundary.
35998
+ repair, and reactivation instead omit the field and start the provider resource
35999
+ at creation. New Hire and Promotion source dates use calendar-month precision,
36000
+ so current-month updates_since values are rejected for those radar types.
35958
36001
 
35959
36002
  Examples:
35960
36003
  deepline monitors update my-monitor '{"name":"Interested replies"}' --json
@@ -35995,6 +36038,11 @@ Notes:
35995
36038
  Mutates workspace state and may spend Deepline credits.
35996
36039
  --dry-run shows the reactivation cost (in Deepline credits) without changing
35997
36040
  anything.
36041
+ Deepline Native radars create a replacement upstream radar from the saved
36042
+ filters. Reactivation always omits updates_since and starts at provider
36043
+ creation; a disabled monitor cannot stage an updates_since change. New Hire
36044
+ and Promotion source dates use calendar-month precision upstream, so
36045
+ current-month updates_since values are rejected for those radar types.
35998
36046
 
35999
36047
  Examples:
36000
36048
  deepline monitors reactivate my-monitor --dry-run
@@ -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.106",
1274
+ version: "0.3.108",
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
@@ -16619,6 +16619,22 @@ var MAX_PLAY_BUNDLE_BYTES = 30 * 1024 * 1024;
16619
16619
  // ../plays/bundling/index.ts
16620
16620
  var PLAY_BUNDLE_CACHE_NAMESPACE = "deepline-play-artifacts-docflow-jsdoc";
16621
16621
  var PLAY_ARTIFACT_CACHE_DIR = join7(tmpdir2(), PLAY_BUNDLE_CACHE_NAMESPACE);
16622
+ var SOURCE_EXTENSIONS = [
16623
+ ".ts",
16624
+ ".tsx",
16625
+ ".mts",
16626
+ ".cts",
16627
+ ".js",
16628
+ ".jsx",
16629
+ ".mjs",
16630
+ ".cjs",
16631
+ ".json"
16632
+ ];
16633
+ var TEXT_IMPORT_EXTENSIONS = /* @__PURE__ */ new Set([".md", ".txt"]);
16634
+ var EXPLICIT_IMPORT_EXTENSIONS = /* @__PURE__ */ new Set([
16635
+ ...SOURCE_EXTENSIONS,
16636
+ ...TEXT_IMPORT_EXTENSIONS
16637
+ ]);
16622
16638
  var NODE_BUILTIN_SET = new Set(
16623
16639
  builtinModules.flatMap(
16624
16640
  (name) => name.startsWith("node:") ? [name, name.slice(5)] : [name, `node:${name}`]
@@ -17228,6 +17244,22 @@ import {
17228
17244
  relative as relative3,
17229
17245
  resolve as resolve9
17230
17246
  } from "path";
17247
+ var SOURCE_EXTENSIONS2 = [
17248
+ ".ts",
17249
+ ".tsx",
17250
+ ".mts",
17251
+ ".cts",
17252
+ ".js",
17253
+ ".jsx",
17254
+ ".mjs",
17255
+ ".cjs",
17256
+ ".json"
17257
+ ];
17258
+ var TEXT_IMPORT_EXTENSIONS2 = /* @__PURE__ */ new Set([".md", ".txt"]);
17259
+ var EXPLICIT_IMPORT_EXTENSIONS2 = /* @__PURE__ */ new Set([
17260
+ ...SOURCE_EXTENSIONS2,
17261
+ ...TEXT_IMPORT_EXTENSIONS2
17262
+ ]);
17231
17263
 
17232
17264
  // src/plays/bundle-play-file.ts
17233
17265
  var MODULE_DIR = dirname9(fileURLToPath(import.meta.url));
@@ -33845,9 +33877,15 @@ function renderMonitorDeletePlan(payload, fallbackKey) {
33845
33877
  function renderMonitorReactivatePlan(payload, key) {
33846
33878
  const estimate = asRecord2(payload.cost_estimate);
33847
33879
  const credits = estimate ? asFiniteNumber(estimate.credits) : void 0;
33880
+ const monitor = asRecord2(payload.monitor);
33881
+ const tool = monitor ? asString(monitor.tool) : void 0;
33882
+ const hasTamradarHistoricalCatchup = tool === "deepline_native.company_radar" || tool === "deepline_native.contact_radar" || tool === "deepline_native.industry_radar";
33848
33883
  const lines = [
33849
33884
  "DRY RUN \u2014 nothing was reactivated.",
33850
33885
  credits !== void 0 ? `Reactivate cost: would cost ${credits} Deepline credits.` : "Reactivate cost: estimate unavailable from this server.",
33886
+ ...hasTamradarHistoricalCatchup ? [
33887
+ "Source boundary: ordinary reactivation starts at provider creation. Saved updates_since values are not forwarded during reactivation."
33888
+ ] : [],
33851
33889
  "",
33852
33890
  `Reactivate for real: deepline monitors reactivate ${key}`
33853
33891
  ];
@@ -35976,10 +36014,13 @@ Notes:
35976
36014
  no separate repair command or retry queue: rerun the same deploy/update.
35977
36015
  Scheduled reconciliation can also finish that exact saved cleanup; it never
35978
36016
  creates another monitor.
35979
- For TamRadar, deliberately changing payload.updates_since is an explicit
35980
- historical replay request, including when redeploying a disabled monitor.
35981
- Deepline preserves that selected boundary; filter-only deploys and ordinary
35982
- reactivation start from a fresh future-only source boundary instead.
36017
+ For TamRadar, deliberately changing payload.updates_since on an initial or
36018
+ active definition is an explicit historical replay request. A disabled
36019
+ monitor cannot stage this change; Deepline rejects that update. Filter-only
36020
+ deploys and ordinary reactivation omit the field and start the provider
36021
+ resource at creation instead.
36022
+ New Hire and Promotion source dates use calendar-month precision upstream,
36023
+ so Deepline rejects current-month updates_since values for those radar types.
35983
36024
  Operational controls are Deepline-managed. A monitor writes rows; downstream
35984
36025
  automation belongs in a Play with sqlListeners.
35985
36026
 
@@ -36007,11 +36048,13 @@ positionally, via --file <path>, or from stdin with --file -.
36007
36048
  When <patch> includes payload, its top-level fields are merged with the stored
36008
36049
  payload before validation. This lets you change one filter without resending
36009
36050
  domain or radar_type; nested values and arrays replace atomically.
36010
- For TamRadar, changing payload.updates_since is an explicit historical replay
36011
- request. Deepline passes that requested boundary upstream, but previously
36051
+ For TamRadar, changing payload.updates_since on an initial or active definition
36052
+ is an explicit historical replay request. Deepline passes that requested boundary upstream, but previously
36012
36053
  delivered canonical findings are deduplicated before dispatch and billing; only
36013
36054
  previously unseen historical findings are chargeable. Filter-only updates,
36014
- repair, and reactivation instead use a fresh future-only source boundary.
36055
+ repair, and reactivation instead omit the field and start the provider resource
36056
+ at creation. New Hire and Promotion source dates use calendar-month precision,
36057
+ so current-month updates_since values are rejected for those radar types.
36015
36058
 
36016
36059
  Examples:
36017
36060
  deepline monitors update my-monitor '{"name":"Interested replies"}' --json
@@ -36052,6 +36095,11 @@ Notes:
36052
36095
  Mutates workspace state and may spend Deepline credits.
36053
36096
  --dry-run shows the reactivation cost (in Deepline credits) without changing
36054
36097
  anything.
36098
+ Deepline Native radars create a replacement upstream radar from the saved
36099
+ filters. Reactivation always omits updates_since and starts at provider
36100
+ creation; a disabled monitor cannot stage an updates_since change. New Hire
36101
+ and Promotion source dates use calendar-month precision upstream, so
36102
+ current-month updates_since values are rejected for those radar types.
36055
36103
 
36056
36104
  Examples:
36057
36105
  deepline monitors reactivate my-monitor --dry-run
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.106",
863
+ version: "0.3.108",
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.106",
771
+ version: "0.3.108",
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
@@ -2897,6 +2897,10 @@ var SOURCE_EXTENSIONS = [
2897
2897
  ];
2898
2898
  var PLAY_SOURCE_FILE_PATTERN = /\.play\.(?:[cm]?[jt]sx?)$/i;
2899
2899
  var TEXT_IMPORT_EXTENSIONS = /* @__PURE__ */ new Set([".md", ".txt"]);
2900
+ var EXPLICIT_IMPORT_EXTENSIONS = /* @__PURE__ */ new Set([
2901
+ ...SOURCE_EXTENSIONS,
2902
+ ...TEXT_IMPORT_EXTENSIONS
2903
+ ]);
2900
2904
  var NODE_BUILTIN_SET = new Set(
2901
2905
  builtinModules.flatMap(
2902
2906
  (name) => name.startsWith("node:") ? [name, name.slice(5)] : [name, `node:${name}`]
@@ -3933,17 +3937,17 @@ async function resolveLocalImport(fromFile, specifier) {
3933
3937
  const base = isAbsolute(specifier) ? resolve(specifier) : resolve(dirname(fromFile), specifier);
3934
3938
  const candidates = [base];
3935
3939
  const explicitExtension = extname(base).toLowerCase();
3936
- if (!explicitExtension) {
3940
+ if ([".js", ".jsx", ".mjs", ".cjs"].includes(explicitExtension)) {
3941
+ const stem = base.slice(0, -explicitExtension.length);
3937
3942
  candidates.push(
3938
- ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`)
3943
+ ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`)
3939
3944
  );
3945
+ } else if (!EXPLICIT_IMPORT_EXTENSIONS.has(explicitExtension)) {
3940
3946
  candidates.push(
3941
- ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`))
3947
+ ...SOURCE_EXTENSIONS.map((extension) => `${base}${extension}`)
3942
3948
  );
3943
- } else if ([".js", ".jsx", ".mjs", ".cjs"].includes(explicitExtension)) {
3944
- const stem = base.slice(0, -explicitExtension.length);
3945
3949
  candidates.push(
3946
- ...SOURCE_EXTENSIONS.map((extension) => `${stem}${extension}`)
3950
+ ...SOURCE_EXTENSIONS.map((extension) => join(base, `index${extension}`))
3947
3951
  );
3948
3952
  }
3949
3953
  for (const candidate of candidates) {
@@ -4547,6 +4551,10 @@ var SOURCE_EXTENSIONS2 = [
4547
4551
  ".json"
4548
4552
  ];
4549
4553
  var TEXT_IMPORT_EXTENSIONS2 = /* @__PURE__ */ new Set([".md", ".txt"]);
4554
+ var EXPLICIT_IMPORT_EXTENSIONS2 = /* @__PURE__ */ new Set([
4555
+ ...SOURCE_EXTENSIONS2,
4556
+ ...TEXT_IMPORT_EXTENSIONS2
4557
+ ]);
4550
4558
  function isTextImportFile2(filePath) {
4551
4559
  return TEXT_IMPORT_EXTENSIONS2.has(extname2(filePath));
4552
4560
  }
@@ -4760,17 +4768,17 @@ async function resolveLocalImport2(fromFile, specifier) {
4760
4768
  const base = isAbsolute2(specifier) ? resolve2(specifier) : resolve2(dirname2(fromFile), specifier);
4761
4769
  const candidates = [base];
4762
4770
  const explicitExtension = extname2(base).toLowerCase();
4763
- if (!explicitExtension) {
4771
+ if ([".js", ".jsx", ".mjs", ".cjs"].includes(explicitExtension)) {
4772
+ const stem = base.slice(0, -explicitExtension.length);
4764
4773
  candidates.push(
4765
- ...SOURCE_EXTENSIONS2.map((extension) => `${base}${extension}`)
4774
+ ...SOURCE_EXTENSIONS2.map((extension) => `${stem}${extension}`)
4766
4775
  );
4776
+ } else if (!EXPLICIT_IMPORT_EXTENSIONS2.has(explicitExtension)) {
4767
4777
  candidates.push(
4768
- ...SOURCE_EXTENSIONS2.map((extension) => join2(base, `index${extension}`))
4778
+ ...SOURCE_EXTENSIONS2.map((extension) => `${base}${extension}`)
4769
4779
  );
4770
- } else if ([".js", ".jsx", ".mjs", ".cjs"].includes(explicitExtension)) {
4771
- const stem = base.slice(0, -explicitExtension.length);
4772
4780
  candidates.push(
4773
- ...SOURCE_EXTENSIONS2.map((extension) => `${stem}${extension}`)
4781
+ ...SOURCE_EXTENSIONS2.map((extension) => join2(base, `index${extension}`))
4774
4782
  );
4775
4783
  }
4776
4784
  for (const candidate of candidates) {
@@ -149,7 +149,7 @@ type SdkRelease = {
149
149
  supportPolicy: SdkSupportPolicy;
150
150
  };
151
151
  declare const SDK_RELEASE: {
152
- readonly version: "0.3.106";
152
+ readonly version: "0.3.108";
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.106";
152
+ readonly version: "0.3.108";
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.106",
77
+ version: "0.3.108",
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.106",
51
+ version: "0.3.108",
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepline",
3
- "version": "0.3.106",
3
+ "version": "0.3.108",
4
4
  "description": "GTM data CLI and TypeScript SDK for coding agents",
5
5
  "license": "MIT",
6
6
  "homepage": "https://code.deepline.com",