deepline 0.2.61 → 0.2.63
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.
|
@@ -160,7 +160,7 @@ export const SDK_RELEASE = {
|
|
|
160
160
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
161
161
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
162
162
|
// release keeps lazy paging semantics independent of row residency.
|
|
163
|
-
version: '0.2.
|
|
163
|
+
version: '0.2.63',
|
|
164
164
|
contracts: {
|
|
165
165
|
api: {
|
|
166
166
|
name: 'sdk-http-api',
|
|
@@ -853,7 +853,20 @@ function buildTargets(
|
|
|
853
853
|
targetGetters?: Record<string, readonly string[]>,
|
|
854
854
|
): Record<string, ToolResultTargetMetadata> {
|
|
855
855
|
const targets: Record<string, ToolResultTargetMetadata> = {};
|
|
856
|
+
const declaredTargetPaths = new Map<string, readonly string[]>();
|
|
857
|
+
const semanticStatusTargets = new Set<string>();
|
|
856
858
|
for (const [target, descriptor] of Object.entries(extractors ?? {})) {
|
|
859
|
+
// Normal scalar getters are total: a declared but absent value reads null.
|
|
860
|
+
// Semantic status getters stay absent when their provider status did not
|
|
861
|
+
// resolve; manufacturing an "unknown" status would blur no signal with an
|
|
862
|
+
// observed provider verdict.
|
|
863
|
+
const isSemanticStatus =
|
|
864
|
+
descriptor.emailStatus !== undefined ||
|
|
865
|
+
descriptor.transforms?.some((transform) =>
|
|
866
|
+
/(emailStatus|phoneStatus|jobChange(?:Status)?)$/.test(transform),
|
|
867
|
+
) === true;
|
|
868
|
+
if (isSemanticStatus) semanticStatusTargets.add(target);
|
|
869
|
+
else declaredTargetPaths.set(target, descriptor.paths);
|
|
857
870
|
const emailStatusTarget = buildEmailStatusTarget(result, descriptor);
|
|
858
871
|
if (emailStatusTarget) {
|
|
859
872
|
targets[target] = emailStatusTarget;
|
|
@@ -873,7 +886,11 @@ function buildTargets(
|
|
|
873
886
|
}
|
|
874
887
|
const metadataTargets = new Set(Object.keys(targetGetters ?? {}));
|
|
875
888
|
for (const target of metadataTargets) {
|
|
876
|
-
if (targets[target]) continue;
|
|
889
|
+
if (targets[target] || semanticStatusTargets.has(target)) continue;
|
|
890
|
+
declaredTargetPaths.set(
|
|
891
|
+
target,
|
|
892
|
+
targetGetters?.[target] ?? declaredTargetPaths.get(target) ?? [],
|
|
893
|
+
);
|
|
877
894
|
const fromMetadata = findFirstTargetByPath(result, targetGetters?.[target]);
|
|
878
895
|
if (fromMetadata) {
|
|
879
896
|
targets[target] = fromMetadata;
|
|
@@ -884,11 +901,20 @@ function buildTargets(
|
|
|
884
901
|
targets[target] = fallback;
|
|
885
902
|
}
|
|
886
903
|
}
|
|
887
|
-
if (metadataTargets.size
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
904
|
+
if (metadataTargets.size === 0) {
|
|
905
|
+
for (const target of ['email', 'phone', 'linkedin', 'domain', 'status']) {
|
|
906
|
+
const found = findFirstTargetByKey(result, target);
|
|
907
|
+
if (found) targets[target] = found;
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
for (const [target, paths] of declaredTargetPaths) {
|
|
911
|
+
if (targets[target]) continue;
|
|
912
|
+
targets[target] = {
|
|
913
|
+
value: null,
|
|
914
|
+
path:
|
|
915
|
+
paths.flatMap(candidateResultPaths).find(Boolean) ??
|
|
916
|
+
`toolResponse.raw.${target}`,
|
|
917
|
+
};
|
|
892
918
|
}
|
|
893
919
|
return targets;
|
|
894
920
|
}
|
package/dist/cli/index.js
CHANGED
|
@@ -1044,7 +1044,7 @@ var SDK_RELEASE = {
|
|
|
1044
1044
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
1045
1045
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
1046
1046
|
// release keeps lazy paging semantics independent of row residency.
|
|
1047
|
-
version: "0.2.
|
|
1047
|
+
version: "0.2.63",
|
|
1048
1048
|
contracts: {
|
|
1049
1049
|
api: {
|
|
1050
1050
|
name: "sdk-http-api",
|
|
@@ -37260,25 +37260,6 @@ function detectSkillsAgents(input2) {
|
|
|
37260
37260
|
).map((marker) => marker.agent);
|
|
37261
37261
|
return detected.length > 0 ? detected : ["*"];
|
|
37262
37262
|
}
|
|
37263
|
-
async function fetchSkillCatalog(baseUrl) {
|
|
37264
|
-
const response = await fetch(skillsIndexUrl(baseUrl));
|
|
37265
|
-
if (!response.ok) {
|
|
37266
|
-
throw new Error(
|
|
37267
|
-
`Skill catalog request failed (status ${response.status}).`
|
|
37268
|
-
);
|
|
37269
|
-
}
|
|
37270
|
-
const index = await response.json();
|
|
37271
|
-
const skillNames = (index.skills ?? []).filter((skill) => skill.install_surface === "v1").map((skill) => skill.name).filter((name) => typeof name === "string" && Boolean(name)).sort((a, b) => a.localeCompare(b));
|
|
37272
|
-
if (skillNames.length === 0) {
|
|
37273
|
-
throw new Error(
|
|
37274
|
-
"The Deepline skill catalog contains no installable skills."
|
|
37275
|
-
);
|
|
37276
|
-
}
|
|
37277
|
-
return {
|
|
37278
|
-
skillNames,
|
|
37279
|
-
version: typeof index.version === "string" && index.version.trim() ? index.version.trim() : "unversioned"
|
|
37280
|
-
};
|
|
37281
|
-
}
|
|
37282
37263
|
function skillsStatePathForScope(baseUrl, scope, root) {
|
|
37283
37264
|
return scope === "local" && root ? (0, import_node_path21.join)(root, ".deepline", "setup", "skills.json") : (0, import_node_path21.join)(sdkCliStateDirPath(baseUrl), "skills-install.json");
|
|
37284
37265
|
}
|
|
@@ -37397,23 +37378,10 @@ async function runSkillsCommand(options, dependencies = {}) {
|
|
|
37397
37378
|
return 2;
|
|
37398
37379
|
}
|
|
37399
37380
|
const baseUrl = autoDetectBaseUrl().replace(/\/$/, "");
|
|
37400
|
-
|
|
37401
|
-
|
|
37402
|
-
|
|
37403
|
-
}
|
|
37404
|
-
printCommandEnvelope(
|
|
37405
|
-
{
|
|
37406
|
-
ok: false,
|
|
37407
|
-
status: "failed",
|
|
37408
|
-
code: "SKILLS_CATALOG_UNAVAILABLE",
|
|
37409
|
-
exitCode: 5,
|
|
37410
|
-
message: error instanceof Error ? error.message : String(error),
|
|
37411
|
-
next: "Retry: deepline skills"
|
|
37412
|
-
},
|
|
37413
|
-
{ json: options.json }
|
|
37414
|
-
);
|
|
37415
|
-
return 5;
|
|
37416
|
-
}
|
|
37381
|
+
const catalog = {
|
|
37382
|
+
skillNames: [...DEFAULT_SDK_SKILL_NAMES],
|
|
37383
|
+
version: SDK_VERSION
|
|
37384
|
+
};
|
|
37417
37385
|
const agents = options.agent ? [options.agent] : detectSkillsAgents({ scope, root });
|
|
37418
37386
|
const plan = buildSkillsPlan({ baseUrl, scope, root, agents, ...catalog });
|
|
37419
37387
|
if (options.dryRun) {
|
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.63",
|
|
1034
1034
|
contracts: {
|
|
1035
1035
|
api: {
|
|
1036
1036
|
name: "sdk-http-api",
|
|
@@ -37340,25 +37340,6 @@ function detectSkillsAgents(input2) {
|
|
|
37340
37340
|
).map((marker) => marker.agent);
|
|
37341
37341
|
return detected.length > 0 ? detected : ["*"];
|
|
37342
37342
|
}
|
|
37343
|
-
async function fetchSkillCatalog(baseUrl) {
|
|
37344
|
-
const response = await fetch(skillsIndexUrl(baseUrl));
|
|
37345
|
-
if (!response.ok) {
|
|
37346
|
-
throw new Error(
|
|
37347
|
-
`Skill catalog request failed (status ${response.status}).`
|
|
37348
|
-
);
|
|
37349
|
-
}
|
|
37350
|
-
const index = await response.json();
|
|
37351
|
-
const skillNames = (index.skills ?? []).filter((skill) => skill.install_surface === "v1").map((skill) => skill.name).filter((name) => typeof name === "string" && Boolean(name)).sort((a, b) => a.localeCompare(b));
|
|
37352
|
-
if (skillNames.length === 0) {
|
|
37353
|
-
throw new Error(
|
|
37354
|
-
"The Deepline skill catalog contains no installable skills."
|
|
37355
|
-
);
|
|
37356
|
-
}
|
|
37357
|
-
return {
|
|
37358
|
-
skillNames,
|
|
37359
|
-
version: typeof index.version === "string" && index.version.trim() ? index.version.trim() : "unversioned"
|
|
37360
|
-
};
|
|
37361
|
-
}
|
|
37362
37343
|
function skillsStatePathForScope(baseUrl, scope, root) {
|
|
37363
37344
|
return scope === "local" && root ? join17(root, ".deepline", "setup", "skills.json") : join17(sdkCliStateDirPath(baseUrl), "skills-install.json");
|
|
37364
37345
|
}
|
|
@@ -37477,23 +37458,10 @@ async function runSkillsCommand(options, dependencies = {}) {
|
|
|
37477
37458
|
return 2;
|
|
37478
37459
|
}
|
|
37479
37460
|
const baseUrl = autoDetectBaseUrl().replace(/\/$/, "");
|
|
37480
|
-
|
|
37481
|
-
|
|
37482
|
-
|
|
37483
|
-
}
|
|
37484
|
-
printCommandEnvelope(
|
|
37485
|
-
{
|
|
37486
|
-
ok: false,
|
|
37487
|
-
status: "failed",
|
|
37488
|
-
code: "SKILLS_CATALOG_UNAVAILABLE",
|
|
37489
|
-
exitCode: 5,
|
|
37490
|
-
message: error instanceof Error ? error.message : String(error),
|
|
37491
|
-
next: "Retry: deepline skills"
|
|
37492
|
-
},
|
|
37493
|
-
{ json: options.json }
|
|
37494
|
-
);
|
|
37495
|
-
return 5;
|
|
37496
|
-
}
|
|
37461
|
+
const catalog = {
|
|
37462
|
+
skillNames: [...DEFAULT_SDK_SKILL_NAMES],
|
|
37463
|
+
version: SDK_VERSION
|
|
37464
|
+
};
|
|
37497
37465
|
const agents = options.agent ? [options.agent] : detectSkillsAgents({ scope, root });
|
|
37498
37466
|
const plan = buildSkillsPlan({ baseUrl, scope, root, agents, ...catalog });
|
|
37499
37467
|
if (options.dryRun) {
|
package/dist/index.js
CHANGED
|
@@ -777,7 +777,7 @@ var SDK_RELEASE = {
|
|
|
777
777
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
778
778
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
779
779
|
// release keeps lazy paging semantics independent of row residency.
|
|
780
|
-
version: "0.2.
|
|
780
|
+
version: "0.2.63",
|
|
781
781
|
contracts: {
|
|
782
782
|
api: {
|
|
783
783
|
name: "sdk-http-api",
|
|
@@ -7490,7 +7490,14 @@ function deriveListKeys(input) {
|
|
|
7490
7490
|
}
|
|
7491
7491
|
function buildTargets(result, extractors, targetGetters) {
|
|
7492
7492
|
const targets = {};
|
|
7493
|
+
const declaredTargetPaths = /* @__PURE__ */ new Map();
|
|
7494
|
+
const semanticStatusTargets = /* @__PURE__ */ new Set();
|
|
7493
7495
|
for (const [target, descriptor] of Object.entries(extractors ?? {})) {
|
|
7496
|
+
const isSemanticStatus = descriptor.emailStatus !== void 0 || descriptor.transforms?.some(
|
|
7497
|
+
(transform) => /(emailStatus|phoneStatus|jobChange(?:Status)?)$/.test(transform)
|
|
7498
|
+
) === true;
|
|
7499
|
+
if (isSemanticStatus) semanticStatusTargets.add(target);
|
|
7500
|
+
else declaredTargetPaths.set(target, descriptor.paths);
|
|
7494
7501
|
const emailStatusTarget = buildEmailStatusTarget(result, descriptor);
|
|
7495
7502
|
if (emailStatusTarget) {
|
|
7496
7503
|
targets[target] = emailStatusTarget;
|
|
@@ -7510,7 +7517,11 @@ function buildTargets(result, extractors, targetGetters) {
|
|
|
7510
7517
|
}
|
|
7511
7518
|
const metadataTargets = new Set(Object.keys(targetGetters ?? {}));
|
|
7512
7519
|
for (const target of metadataTargets) {
|
|
7513
|
-
if (targets[target]) continue;
|
|
7520
|
+
if (targets[target] || semanticStatusTargets.has(target)) continue;
|
|
7521
|
+
declaredTargetPaths.set(
|
|
7522
|
+
target,
|
|
7523
|
+
targetGetters?.[target] ?? declaredTargetPaths.get(target) ?? []
|
|
7524
|
+
);
|
|
7514
7525
|
const fromMetadata = findFirstTargetByPath(result, targetGetters?.[target]);
|
|
7515
7526
|
if (fromMetadata) {
|
|
7516
7527
|
targets[target] = fromMetadata;
|
|
@@ -7521,10 +7532,18 @@ function buildTargets(result, extractors, targetGetters) {
|
|
|
7521
7532
|
targets[target] = fallback;
|
|
7522
7533
|
}
|
|
7523
7534
|
}
|
|
7524
|
-
if (metadataTargets.size
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7535
|
+
if (metadataTargets.size === 0) {
|
|
7536
|
+
for (const target of ["email", "phone", "linkedin", "domain", "status"]) {
|
|
7537
|
+
const found = findFirstTargetByKey(result, target);
|
|
7538
|
+
if (found) targets[target] = found;
|
|
7539
|
+
}
|
|
7540
|
+
}
|
|
7541
|
+
for (const [target, paths] of declaredTargetPaths) {
|
|
7542
|
+
if (targets[target]) continue;
|
|
7543
|
+
targets[target] = {
|
|
7544
|
+
value: null,
|
|
7545
|
+
path: paths.flatMap(candidateResultPaths).find(Boolean) ?? `toolResponse.raw.${target}`
|
|
7546
|
+
};
|
|
7528
7547
|
}
|
|
7529
7548
|
return targets;
|
|
7530
7549
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -700,7 +700,7 @@ var SDK_RELEASE = {
|
|
|
700
700
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
701
701
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
702
702
|
// release keeps lazy paging semantics independent of row residency.
|
|
703
|
-
version: "0.2.
|
|
703
|
+
version: "0.2.63",
|
|
704
704
|
contracts: {
|
|
705
705
|
api: {
|
|
706
706
|
name: "sdk-http-api",
|
|
@@ -7413,7 +7413,14 @@ function deriveListKeys(input) {
|
|
|
7413
7413
|
}
|
|
7414
7414
|
function buildTargets(result, extractors, targetGetters) {
|
|
7415
7415
|
const targets = {};
|
|
7416
|
+
const declaredTargetPaths = /* @__PURE__ */ new Map();
|
|
7417
|
+
const semanticStatusTargets = /* @__PURE__ */ new Set();
|
|
7416
7418
|
for (const [target, descriptor] of Object.entries(extractors ?? {})) {
|
|
7419
|
+
const isSemanticStatus = descriptor.emailStatus !== void 0 || descriptor.transforms?.some(
|
|
7420
|
+
(transform) => /(emailStatus|phoneStatus|jobChange(?:Status)?)$/.test(transform)
|
|
7421
|
+
) === true;
|
|
7422
|
+
if (isSemanticStatus) semanticStatusTargets.add(target);
|
|
7423
|
+
else declaredTargetPaths.set(target, descriptor.paths);
|
|
7417
7424
|
const emailStatusTarget = buildEmailStatusTarget(result, descriptor);
|
|
7418
7425
|
if (emailStatusTarget) {
|
|
7419
7426
|
targets[target] = emailStatusTarget;
|
|
@@ -7433,7 +7440,11 @@ function buildTargets(result, extractors, targetGetters) {
|
|
|
7433
7440
|
}
|
|
7434
7441
|
const metadataTargets = new Set(Object.keys(targetGetters ?? {}));
|
|
7435
7442
|
for (const target of metadataTargets) {
|
|
7436
|
-
if (targets[target]) continue;
|
|
7443
|
+
if (targets[target] || semanticStatusTargets.has(target)) continue;
|
|
7444
|
+
declaredTargetPaths.set(
|
|
7445
|
+
target,
|
|
7446
|
+
targetGetters?.[target] ?? declaredTargetPaths.get(target) ?? []
|
|
7447
|
+
);
|
|
7437
7448
|
const fromMetadata = findFirstTargetByPath(result, targetGetters?.[target]);
|
|
7438
7449
|
if (fromMetadata) {
|
|
7439
7450
|
targets[target] = fromMetadata;
|
|
@@ -7444,10 +7455,18 @@ function buildTargets(result, extractors, targetGetters) {
|
|
|
7444
7455
|
targets[target] = fallback;
|
|
7445
7456
|
}
|
|
7446
7457
|
}
|
|
7447
|
-
if (metadataTargets.size
|
|
7448
|
-
|
|
7449
|
-
|
|
7450
|
-
|
|
7458
|
+
if (metadataTargets.size === 0) {
|
|
7459
|
+
for (const target of ["email", "phone", "linkedin", "domain", "status"]) {
|
|
7460
|
+
const found = findFirstTargetByKey(result, target);
|
|
7461
|
+
if (found) targets[target] = found;
|
|
7462
|
+
}
|
|
7463
|
+
}
|
|
7464
|
+
for (const [target, paths] of declaredTargetPaths) {
|
|
7465
|
+
if (targets[target]) continue;
|
|
7466
|
+
targets[target] = {
|
|
7467
|
+
value: null,
|
|
7468
|
+
path: paths.flatMap(candidateResultPaths).find(Boolean) ?? `toolResponse.raw.${target}`
|
|
7469
|
+
};
|
|
7451
7470
|
}
|
|
7452
7471
|
return targets;
|
|
7453
7472
|
}
|