@kweaver-ai/kweaver-sdk 0.8.2 → 0.8.4
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/README.md +26 -52
- package/README.zh.md +27 -46
- package/dist/api/agent-chat.d.ts +10 -2
- package/dist/api/agent-chat.js +19 -5
- package/dist/api/datasources.d.ts +14 -0
- package/dist/api/datasources.js +14 -0
- package/dist/api/resources.d.ts +94 -0
- package/dist/api/resources.js +166 -0
- package/dist/cli.js +103 -23
- package/dist/client.d.ts +10 -4
- package/dist/client.js +12 -6
- package/dist/commands/agent-members.js +27 -11
- package/dist/commands/agent.js +383 -272
- package/dist/commands/auth.js +184 -71
- package/dist/commands/bkn-metric.js +37 -16
- package/dist/commands/bkn-ops.d.ts +1 -1
- package/dist/commands/bkn-ops.js +192 -93
- package/dist/commands/bkn-query.js +99 -31
- package/dist/commands/bkn-schema.d.ts +3 -3
- package/dist/commands/bkn-schema.js +127 -86
- package/dist/commands/bkn.js +158 -116
- package/dist/commands/call.js +23 -13
- package/dist/commands/config.js +22 -12
- package/dist/commands/context-loader.js +98 -92
- package/dist/commands/dataflow.js +14 -6
- package/dist/commands/ds.d.ts +0 -31
- package/dist/commands/ds.js +18 -426
- package/dist/commands/explore-bkn.d.ts +7 -1
- package/dist/commands/explore-bkn.js +32 -3
- package/dist/commands/explore.js +18 -15
- package/dist/commands/model.js +53 -42
- package/dist/commands/resource.d.ts +1 -0
- package/dist/commands/{dataview.js → resource.js} +62 -84
- package/dist/commands/skill.js +201 -65
- package/dist/commands/token.js +11 -0
- package/dist/commands/tool.js +46 -29
- package/dist/commands/toolbox.js +31 -15
- package/dist/commands/vega.js +466 -250
- package/dist/help/format.d.ts +65 -0
- package/dist/help/format.js +141 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/resources/datasources.d.ts +7 -0
- package/dist/resources/datasources.js +7 -0
- package/dist/resources/{dataviews.d.ts → resources.d.ts} +10 -11
- package/dist/resources/{dataviews.js → resources.js} +12 -13
- package/dist/templates/explorer/bkn.js +860 -9
- package/dist/templates/explorer/index.html +1 -0
- package/dist/templates/explorer/style.css +225 -0
- package/dist/templates/explorer/vendor/g6.min.js +68 -0
- package/dist/trace-ai/eval-set/schemas.d.ts +1 -0
- package/dist/trace-ai/eval-set/schemas.js +4 -0
- package/dist/trace-ai/eval-set/types.d.ts +2 -0
- package/dist/trace-ai/exp/capture-fingerprint.d.ts +10 -0
- package/dist/trace-ai/exp/capture-fingerprint.js +12 -0
- package/dist/trace-ai/exp/context/context-assembler.d.ts +18 -0
- package/dist/trace-ai/exp/context/context-assembler.js +42 -0
- package/dist/trace-ai/exp/context/failure-analyzer.d.ts +22 -0
- package/dist/trace-ai/exp/context/failure-analyzer.js +59 -0
- package/dist/trace-ai/exp/context/kn-data-prober.d.ts +13 -0
- package/dist/trace-ai/exp/context/kn-data-prober.js +38 -0
- package/dist/trace-ai/exp/context/kn-schema-client.d.ts +14 -0
- package/dist/trace-ai/exp/context/kn-schema-client.js +41 -0
- package/dist/trace-ai/exp/context/retrieval-health.d.ts +32 -0
- package/dist/trace-ai/exp/context/retrieval-health.js +138 -0
- package/dist/trace-ai/exp/context/vega-catalog-client.d.ts +14 -0
- package/dist/trace-ai/exp/context/vega-catalog-client.js +15 -0
- package/dist/trace-ai/exp/coordinator.d.ts +34 -21
- package/dist/trace-ai/exp/coordinator.js +246 -24
- package/dist/trace-ai/exp/eval-runner.js +4 -2
- package/dist/trace-ai/exp/exp-store/events-jsonl.d.ts +1 -0
- package/dist/trace-ai/exp/exp-store/events-jsonl.js +18 -0
- package/dist/trace-ai/exp/exp-store/expected-fingerprint.d.ts +3 -0
- package/dist/trace-ai/exp/exp-store/expected-fingerprint.js +31 -0
- package/dist/trace-ai/exp/exp-store/index.d.ts +63 -2
- package/dist/trace-ai/exp/exp-store/index.js +2 -1
- package/dist/trace-ai/exp/exp-store/rollback-yaml.d.ts +12 -0
- package/dist/trace-ai/exp/exp-store/rollback-yaml.js +29 -0
- package/dist/trace-ai/exp/index.d.ts +2 -0
- package/dist/trace-ai/exp/index.js +68 -3
- package/dist/trace-ai/exp/info.js +1 -1
- package/dist/trace-ai/exp/patch/index.d.ts +13 -2
- package/dist/trace-ai/exp/patch/index.js +65 -10
- package/dist/trace-ai/exp/patch/kn-api-client.d.ts +40 -0
- package/dist/trace-ai/exp/patch/kn-api-client.js +14 -0
- package/dist/trace-ai/exp/patch/kn.d.ts +8 -0
- package/dist/trace-ai/exp/patch/kn.js +36 -0
- package/dist/trace-ai/exp/patch/skill-api-client.d.ts +17 -0
- package/dist/trace-ai/exp/patch/skill-api-client.js +14 -0
- package/dist/trace-ai/exp/patch/skill-content.d.ts +9 -0
- package/dist/trace-ai/exp/patch/skill-content.js +12 -0
- package/dist/trace-ai/exp/preflight.d.ts +77 -0
- package/dist/trace-ai/exp/preflight.js +148 -0
- package/dist/trace-ai/exp/providers/synthesizer-client.d.ts +3 -14
- package/dist/trace-ai/exp/providers/synthesizer-client.js +53 -35
- package/dist/trace-ai/exp/providers/triage-client.d.ts +15 -2
- package/dist/trace-ai/exp/providers/triage-client.js +143 -28
- package/dist/trace-ai/exp/run-preflight.d.ts +19 -0
- package/dist/trace-ai/exp/run-preflight.js +56 -0
- package/dist/trace-ai/exp/schemas.d.ts +402 -44
- package/dist/trace-ai/exp/schemas.js +131 -18
- package/dist/utils/deprecation.d.ts +1 -0
- package/dist/utils/deprecation.js +18 -0
- package/package.json +2 -1
- package/dist/api/dataviews.d.ts +0 -117
- package/dist/api/dataviews.js +0 -265
- package/dist/commands/dataview.d.ts +0 -8
package/dist/commands/bkn-ops.js
CHANGED
|
@@ -6,13 +6,15 @@ import { prepareBknDirectoryForImport, stripBknEncodingCliArgs, } from "../utils
|
|
|
6
6
|
import { ensureValidToken, formatHttpError } from "../auth/oauth.js";
|
|
7
7
|
import { createKnowledgeNetwork, createObjectTypes, deleteKnowledgeNetwork, buildKnowledgeNetwork, getBuildStatus, } from "../api/knowledge-networks.js";
|
|
8
8
|
import { listTablesWithColumns, scanDatasourceMetadata } from "../api/vega.js";
|
|
9
|
-
import {
|
|
9
|
+
import { createResource, findResource } from "../api/resources.js";
|
|
10
10
|
import { resolveFiles } from "./ds.js";
|
|
11
11
|
import { buildTableName } from "./import-csv.js";
|
|
12
12
|
import { downloadBkn, uploadBkn, listActionSchedules, getActionSchedule, createActionSchedule, updateActionSchedule, setActionScheduleStatus, deleteActionSchedules, listJobs, getJob, getJobTasks, deleteJobs, } from "../api/bkn-backend.js";
|
|
13
13
|
import { formatCallOutput } from "./call.js";
|
|
14
14
|
import { resolveBusinessDomain } from "../config/store.js";
|
|
15
15
|
import { runDsImportCsv } from "./ds.js";
|
|
16
|
+
import { renderHelp } from "../help/format.js";
|
|
17
|
+
import { warnDeprecated } from "../utils/deprecation.js";
|
|
16
18
|
import { pollWithBackoff, detectDisplayKey, formatPkDetectionError, parsePkMap, resolvePrimaryKey, confirmYes, assertVegaCatalogId, } from "./bkn-utils.js";
|
|
17
19
|
// ── BKN object name validation ──────────────────────────────────────────────
|
|
18
20
|
// Mirrors bkn-backend OBJECT_NAME_MAX_LENGTH (interfaces/common.go:28) and
|
|
@@ -35,15 +37,22 @@ export function assertValidBknObjectNames(names, context) {
|
|
|
35
37
|
`(1..${BKN_OBJECT_NAME_MAX_LENGTH} utf-8 chars):\n${lines.join("\n")}`);
|
|
36
38
|
}
|
|
37
39
|
// ── Build ───────────────────────────────────────────────────────────────────
|
|
38
|
-
const KN_BUILD_HELP =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
const KN_BUILD_HELP = renderHelp({
|
|
41
|
+
tagline: "Trigger a full build for a knowledge network",
|
|
42
|
+
usage: "kweaver bkn build <kn-id> [flags]",
|
|
43
|
+
flags: [
|
|
44
|
+
{ name: "--wait", desc: "Poll until build completes (default)" },
|
|
45
|
+
{ name: "--no-wait", desc: "Return immediately after triggering" },
|
|
46
|
+
{ name: "--timeout <seconds>", desc: "Max wait time when --wait (default: 300)" },
|
|
47
|
+
{ name: "-bd, --biz-domain <s>", desc: "Business domain (default: bd_public)" },
|
|
48
|
+
],
|
|
49
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
50
|
+
examples: [
|
|
51
|
+
"kweaver bkn build kn-123",
|
|
52
|
+
"kweaver bkn build kn-123 --no-wait",
|
|
53
|
+
"kweaver bkn build kn-123 --wait --timeout 600",
|
|
54
|
+
],
|
|
55
|
+
});
|
|
47
56
|
export function parseKnBuildArgs(args) {
|
|
48
57
|
let knId = "";
|
|
49
58
|
let wait = true;
|
|
@@ -349,25 +358,52 @@ export function extractTarToDirectory(tarBuffer, dirPath) {
|
|
|
349
358
|
throw new Error(`tar extract failed: ${result.stderr?.toString() ?? result.status}`);
|
|
350
359
|
}
|
|
351
360
|
}
|
|
352
|
-
const KN_PUSH_HELP =
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
361
|
+
const KN_PUSH_HELP = renderHelp({
|
|
362
|
+
tagline: "Pack a BKN directory into a tar and upload to import as a knowledge network",
|
|
363
|
+
usage: "kweaver bkn push <directory> [flags]",
|
|
364
|
+
flags: [
|
|
365
|
+
{
|
|
366
|
+
title: "Target",
|
|
367
|
+
flags: [
|
|
368
|
+
{ name: "--branch <s>", desc: "Branch name (default: main)" },
|
|
369
|
+
{ name: "-bd, --biz-domain <s>", desc: "Business domain (default: bd_public)" },
|
|
370
|
+
],
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
title: "Encoding",
|
|
374
|
+
flags: [
|
|
375
|
+
{ name: "--detect-encoding", desc: "Detect .bkn encoding and normalize to UTF-8 (default: on)" },
|
|
376
|
+
{ name: "--no-detect-encoding", desc: "Do not detect; require UTF-8 .bkn files" },
|
|
377
|
+
{ name: "--source-encoding <name>", desc: "Decode all .bkn files with this encoding, e.g. gb18030 (overrides detection)" },
|
|
378
|
+
],
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
title: "Output",
|
|
382
|
+
flags: [{ name: "--pretty", desc: "Pretty-print JSON output" }],
|
|
383
|
+
},
|
|
384
|
+
],
|
|
385
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
386
|
+
examples: [
|
|
387
|
+
"kweaver bkn push ./my-network",
|
|
388
|
+
"kweaver bkn push ./my-network --branch feature/v2",
|
|
389
|
+
"kweaver bkn push ./legacy --source-encoding gb18030",
|
|
390
|
+
],
|
|
391
|
+
});
|
|
392
|
+
const KN_PULL_HELP = renderHelp({
|
|
393
|
+
tagline: "Download a BKN tar from a knowledge network and extract to a local directory",
|
|
394
|
+
usage: "kweaver bkn pull <kn-id> [<directory>] [flags]",
|
|
395
|
+
flags: [
|
|
396
|
+
{ name: "<directory>", desc: "Output directory (default: <kn-id>)" },
|
|
397
|
+
{ name: "--branch <s>", desc: "Branch name (default: main)" },
|
|
398
|
+
{ name: "-bd, --biz-domain <s>", desc: "Business domain (default: bd_public)" },
|
|
399
|
+
],
|
|
400
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
401
|
+
examples: [
|
|
402
|
+
"kweaver bkn pull kn-123",
|
|
403
|
+
"kweaver bkn pull kn-123 ./out",
|
|
404
|
+
"kweaver bkn pull kn-123 ./out --branch feature/v2",
|
|
405
|
+
],
|
|
406
|
+
});
|
|
371
407
|
export async function runKnPushCommand(args) {
|
|
372
408
|
let options;
|
|
373
409
|
try {
|
|
@@ -472,24 +508,47 @@ export async function runKnPullCommand(args) {
|
|
|
472
508
|
return 1;
|
|
473
509
|
}
|
|
474
510
|
}
|
|
475
|
-
// ── Create from
|
|
476
|
-
const
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
511
|
+
// ── Create from catalog (formerly create-from-ds) ──────────────────────────
|
|
512
|
+
const CREATE_FROM_CATALOG_FLAGS = [
|
|
513
|
+
{ name: "--name <s>", desc: "Knowledge network name (required)" },
|
|
514
|
+
{ name: "--tables <a,b>", desc: "Comma-separated table names (default: all)" },
|
|
515
|
+
{ name: "--pk-map <s>", desc: "Explicit primary keys <table>:<field>[,...]; required when auto-detection fails" },
|
|
516
|
+
{ name: "--build", desc: "Build after creation (default)" },
|
|
517
|
+
{ name: "--no-build", desc: "Skip build after creation" },
|
|
518
|
+
{ name: "--timeout <n>", desc: "Build timeout in seconds (default: 300)" },
|
|
519
|
+
{ name: "--no-rollback", desc: "Keep partially-created KN on failure (debug; default: rollback)" },
|
|
520
|
+
{ name: "-bd, --biz-domain <s>", desc: "Business domain (default: bd_public)" },
|
|
521
|
+
{ name: "--pretty", desc: "Pretty-print output (default)" },
|
|
522
|
+
];
|
|
523
|
+
const KN_CREATE_FROM_CATALOG_HELP = renderHelp({
|
|
524
|
+
tagline: "Create a knowledge network from a vega catalog (resources + object types + optional build).",
|
|
525
|
+
usage: "kweaver bkn create-from-catalog <vega-catalog-id> --name X [flags]",
|
|
526
|
+
flags: CREATE_FROM_CATALOG_FLAGS,
|
|
527
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
528
|
+
examples: [
|
|
529
|
+
"kweaver bkn create-from-catalog vcat-123 --name customers",
|
|
530
|
+
"kweaver bkn create-from-catalog vcat-123 --name orders --tables orders,items --no-build",
|
|
531
|
+
],
|
|
532
|
+
learnMore: [
|
|
533
|
+
"<vega-catalog-id> is a vega catalog id (use `kweaver vega catalog list` to find one)",
|
|
534
|
+
"Legacy data-connection datasource UUIDs are no longer accepted",
|
|
535
|
+
"`kweaver bkn create-from-ds` is kept as a deprecated alias for back-compat",
|
|
536
|
+
],
|
|
537
|
+
});
|
|
538
|
+
const KN_CREATE_FROM_DS_HELP = renderHelp({
|
|
539
|
+
tagline: "[DEPRECATED] Alias for `kweaver bkn create-from-catalog`. Subcommand name retained for back-compat; flags and behavior identical.",
|
|
540
|
+
usage: "kweaver bkn create-from-ds <vega-catalog-id> --name X [flags]",
|
|
541
|
+
flags: CREATE_FROM_CATALOG_FLAGS,
|
|
542
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
543
|
+
examples: [
|
|
544
|
+
"kweaver bkn create-from-ds vcat-123 --name customers",
|
|
545
|
+
"kweaver bkn create-from-ds vcat-123 --name orders --tables orders,items --no-build",
|
|
546
|
+
],
|
|
547
|
+
learnMore: [
|
|
548
|
+
"Prefer `kweaver bkn create-from-catalog` in new scripts.",
|
|
549
|
+
"<vega-catalog-id> is a vega catalog id (use `kweaver vega catalog list` to find one).",
|
|
550
|
+
],
|
|
551
|
+
});
|
|
493
552
|
export function parseKnCreateFromDsArgs(args) {
|
|
494
553
|
let dsId = "";
|
|
495
554
|
let name = "";
|
|
@@ -548,7 +607,7 @@ export function parseKnCreateFromDsArgs(args) {
|
|
|
548
607
|
}
|
|
549
608
|
const tables = tablesStr ? tablesStr.split(",").map((s) => s.trim()).filter(Boolean) : [];
|
|
550
609
|
if (!dsId || !name) {
|
|
551
|
-
throw new Error("Usage: kweaver bkn create-from-
|
|
610
|
+
throw new Error("Usage: kweaver bkn create-from-catalog <vega-catalog-id> --name X [options]");
|
|
552
611
|
}
|
|
553
612
|
assertVegaCatalogId(dsId);
|
|
554
613
|
const pkMap = pkMapStr ? parsePkMap(pkMapStr) : {};
|
|
@@ -564,7 +623,7 @@ function sanitizeBknId(name) {
|
|
|
564
623
|
export function generateObjectTypeBkn(tableName, dvId, pk, dk, columns) {
|
|
565
624
|
const safeId = sanitizeBknId(tableName);
|
|
566
625
|
const header = `## ObjectType: ${safeId}\n\n**${tableName}**\n`;
|
|
567
|
-
const dsTable = `### Data Source\n\n| Type | ID | Name |\n|------|-----|------|\n|
|
|
626
|
+
const dsTable = `### Data Source\n\n| Type | ID | Name |\n|------|-----|------|\n| resource | ${dvId} | ${tableName} |\n`;
|
|
568
627
|
const dpHeader = `### Data Properties\n\n| Property | Display Name | Type | Primary Key | Display Key |\n|----------|-------------|------|-------------|-------------|\n`;
|
|
569
628
|
const dpRows = columns.map((c) => {
|
|
570
629
|
const isPk = c.name === pk ? "yes" : "no";
|
|
@@ -574,19 +633,23 @@ export function generateObjectTypeBkn(tableName, dvId, pk, dk, columns) {
|
|
|
574
633
|
const frontmatter = `---\ntype: object_type\nid: ${safeId}\nname: ${tableName}\n---\n\n`;
|
|
575
634
|
return `${frontmatter}${header}\n${dsTable}\n${dpHeader}${dpRows}\n`;
|
|
576
635
|
}
|
|
577
|
-
export async function
|
|
636
|
+
export async function runKnCreateFromCatalogCommand(args, sampleRows, invokedAs = "create-from-catalog") {
|
|
637
|
+
const help = invokedAs === "create-from-ds" ? KN_CREATE_FROM_DS_HELP : KN_CREATE_FROM_CATALOG_HELP;
|
|
578
638
|
let options;
|
|
579
639
|
try {
|
|
580
640
|
options = parseKnCreateFromDsArgs(args);
|
|
581
641
|
}
|
|
582
642
|
catch (error) {
|
|
583
643
|
if (error instanceof Error && error.message === "help") {
|
|
584
|
-
console.log(
|
|
644
|
+
console.log(help);
|
|
585
645
|
return 0;
|
|
586
646
|
}
|
|
587
647
|
console.error(formatHttpError(error));
|
|
588
648
|
return 1;
|
|
589
649
|
}
|
|
650
|
+
if (invokedAs === "create-from-ds") {
|
|
651
|
+
warnDeprecated("kweaver bkn create-from-ds", "renamed to `kweaver bkn create-from-catalog`. The old name is kept as an alias and will be removed in a future major release.");
|
|
652
|
+
}
|
|
590
653
|
try {
|
|
591
654
|
const token = await ensureValidToken();
|
|
592
655
|
const base = {
|
|
@@ -667,12 +730,12 @@ export async function runKnCreateFromDsCommand(args, sampleRows) {
|
|
|
667
730
|
sampleSize: resolution.sampleSize ?? 0,
|
|
668
731
|
}));
|
|
669
732
|
}
|
|
670
|
-
// Phase 1: Create
|
|
733
|
+
// Phase 1: Create vega-backend Resources for each table. findResource is idempotent;
|
|
671
734
|
// not tracked for rollback so a retry can reuse what's already there.
|
|
672
|
-
console.error(`Creating
|
|
735
|
+
console.error(`Creating resources for ${targetTables.length} table(s) ...`);
|
|
673
736
|
const viewMap = {};
|
|
674
737
|
for (const t of targetTables) {
|
|
675
|
-
const found = await
|
|
738
|
+
const found = await findResource({
|
|
676
739
|
...base,
|
|
677
740
|
name: t.name,
|
|
678
741
|
datasourceId: options.dsId,
|
|
@@ -680,7 +743,7 @@ export async function runKnCreateFromDsCommand(args, sampleRows) {
|
|
|
680
743
|
wait: true,
|
|
681
744
|
});
|
|
682
745
|
const dvId = found[0]?.id ??
|
|
683
|
-
(await
|
|
746
|
+
(await createResource({
|
|
684
747
|
...base,
|
|
685
748
|
name: t.name,
|
|
686
749
|
datasourceId: options.dsId,
|
|
@@ -717,7 +780,7 @@ export async function runKnCreateFromDsCommand(args, sampleRows) {
|
|
|
717
780
|
return {
|
|
718
781
|
branch: "main",
|
|
719
782
|
name: t.name,
|
|
720
|
-
data_source: { type: "
|
|
783
|
+
data_source: { type: "resource", id: viewMap[t.name] },
|
|
721
784
|
primary_keys: [pk],
|
|
722
785
|
display_key: dk,
|
|
723
786
|
data_properties: t.columns.map((c) => ({
|
|
@@ -806,24 +869,32 @@ export async function runKnCreateFromDsCommand(args, sampleRows) {
|
|
|
806
869
|
}
|
|
807
870
|
}
|
|
808
871
|
// ── Create from CSV ─────────────────────────────────────────────────────────
|
|
809
|
-
const KN_CREATE_FROM_CSV_HELP =
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
872
|
+
const KN_CREATE_FROM_CSV_HELP = renderHelp({
|
|
873
|
+
tagline: "Import CSV files into a vega catalog datasource, then create a knowledge network",
|
|
874
|
+
usage: "kweaver bkn create-from-csv <vega-catalog-id> --files <glob> --name X [flags]",
|
|
875
|
+
flags: [
|
|
876
|
+
{ name: "--files <s>", desc: "CSV file paths (comma-separated or glob, required)" },
|
|
877
|
+
{ name: "--name <s>", desc: "Knowledge network name (required)" },
|
|
878
|
+
{ name: "--table-prefix <s>", desc: "Table name prefix (default: none)" },
|
|
879
|
+
{ name: "--batch-size <n>", desc: "Rows per batch (default: 500)" },
|
|
880
|
+
{ name: "--tables <a,b>", desc: "Tables to include in KN (default: all imported)" },
|
|
881
|
+
{ name: "--build", desc: "Build after creation (default)" },
|
|
882
|
+
{ name: "--no-build", desc: "Skip build" },
|
|
883
|
+
{ name: "--pk-map <s>", desc: "Explicit primary keys <table>:<field>[,...]" },
|
|
884
|
+
{ name: "--timeout <n>", desc: "Build timeout in seconds (default: 300)" },
|
|
885
|
+
{ name: "--no-rollback", desc: "Keep partially-created KN on failure (debug; default: rollback)" },
|
|
886
|
+
{ name: "-bd, --biz-domain <s>", desc: "Business domain (default: bd_public)" },
|
|
887
|
+
],
|
|
888
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
889
|
+
examples: [
|
|
890
|
+
"kweaver bkn create-from-csv vcat-123 --files './data/*.csv' --name imports",
|
|
891
|
+
"kweaver bkn create-from-csv vcat-123 --files ./a.csv,./b.csv --name two --table-prefix raw_",
|
|
892
|
+
],
|
|
893
|
+
learnMore: [
|
|
894
|
+
"<vega-catalog-id> is a vega catalog id (use `kweaver vega catalog list` to find one)",
|
|
895
|
+
"Legacy data-connection datasource UUIDs are no longer accepted",
|
|
896
|
+
],
|
|
897
|
+
});
|
|
827
898
|
export function parseKnCreateFromCsvArgs(args) {
|
|
828
899
|
let dsId = "";
|
|
829
900
|
let files = "";
|
|
@@ -894,7 +965,7 @@ export function parseKnCreateFromCsvArgs(args) {
|
|
|
894
965
|
}
|
|
895
966
|
const tables = tablesStr ? tablesStr.split(",").map((s) => s.trim()).filter(Boolean) : [];
|
|
896
967
|
if (!dsId || !files || !name) {
|
|
897
|
-
throw new Error("Usage: kweaver bkn create-from-csv <
|
|
968
|
+
throw new Error("Usage: kweaver bkn create-from-csv <vega-catalog-id> --files <glob> --name X [options]");
|
|
898
969
|
}
|
|
899
970
|
assertVegaCatalogId(dsId);
|
|
900
971
|
const pkMap = pkMapStr ? parsePkMap(pkMapStr) : {};
|
|
@@ -944,7 +1015,7 @@ export async function runKnCreateFromCsvCommand(args) {
|
|
|
944
1015
|
return importResult.code;
|
|
945
1016
|
}
|
|
946
1017
|
// (Phase 1.5 metadata scan removed — runDsImportCsv now self-scans on
|
|
947
|
-
// success, and
|
|
1018
|
+
// success, and runKnCreateFromCatalogCommand's table-discovery retry triggers
|
|
948
1019
|
// a scan if the catalog still lags. Two layers of fallback are enough.)
|
|
949
1020
|
// Phase 2: Create KN from datasource
|
|
950
1021
|
console.error("Phase 2: Creating knowledge network ...");
|
|
@@ -966,7 +1037,7 @@ export async function runKnCreateFromCsvCommand(args) {
|
|
|
966
1037
|
: []),
|
|
967
1038
|
...(options.noRollback ? ["--no-rollback"] : []),
|
|
968
1039
|
];
|
|
969
|
-
return
|
|
1040
|
+
return runKnCreateFromCatalogCommand(knArgs, importResult.sampleRows, "create-from-catalog");
|
|
970
1041
|
}
|
|
971
1042
|
export function parseActionScheduleArgs(args) {
|
|
972
1043
|
const [action, ...rest] = args;
|
|
@@ -1008,15 +1079,30 @@ export async function runKnActionScheduleCommand(args) {
|
|
|
1008
1079
|
}
|
|
1009
1080
|
catch (error) {
|
|
1010
1081
|
if (error instanceof Error && error.message === "help") {
|
|
1011
|
-
console.log(
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1082
|
+
console.log(renderHelp({
|
|
1083
|
+
tagline: "Manage action schedules for a KN",
|
|
1084
|
+
usage: "kweaver bkn action-schedule <action> <kn-id> [args] [--pretty] [-bd value]",
|
|
1085
|
+
sections: [{
|
|
1086
|
+
title: "AVAILABLE COMMANDS",
|
|
1087
|
+
items: [
|
|
1088
|
+
{ name: "list", desc: "List action schedules" },
|
|
1089
|
+
{ name: "get", desc: "Get schedule details" },
|
|
1090
|
+
{ name: "create", desc: "Create schedule" },
|
|
1091
|
+
{ name: "update", desc: "Update schedule" },
|
|
1092
|
+
{ name: "set-status", desc: "Enable/disable schedule (enabled|disabled)" },
|
|
1093
|
+
{ name: "delete", desc: "Delete schedule(s) (comma-separated)" },
|
|
1094
|
+
],
|
|
1095
|
+
}],
|
|
1096
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
1097
|
+
examples: [
|
|
1098
|
+
"kweaver bkn action-schedule list <kn-id>",
|
|
1099
|
+
"kweaver bkn action-schedule get <kn-id> <schedule-id>",
|
|
1100
|
+
"kweaver bkn action-schedule create <kn-id> '<json>'",
|
|
1101
|
+
"kweaver bkn action-schedule update <kn-id> <schedule-id> '<json>'",
|
|
1102
|
+
"kweaver bkn action-schedule set-status <kn-id> <schedule-id> <status>",
|
|
1103
|
+
"kweaver bkn action-schedule delete <kn-id> <schedule-ids> [-y]",
|
|
1104
|
+
],
|
|
1105
|
+
}));
|
|
1020
1106
|
return 0;
|
|
1021
1107
|
}
|
|
1022
1108
|
console.error(formatHttpError(error));
|
|
@@ -1125,13 +1211,26 @@ export async function runKnJobCommand(args) {
|
|
|
1125
1211
|
}
|
|
1126
1212
|
catch (error) {
|
|
1127
1213
|
if (error instanceof Error && error.message === "help") {
|
|
1128
|
-
console.log(
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1214
|
+
console.log(renderHelp({
|
|
1215
|
+
tagline: "Manage jobs for a KN",
|
|
1216
|
+
usage: "kweaver bkn job <action> <kn-id> [args] [--pretty] [-bd value]",
|
|
1217
|
+
sections: [{
|
|
1218
|
+
title: "AVAILABLE COMMANDS",
|
|
1219
|
+
items: [
|
|
1220
|
+
{ name: "list", desc: "List jobs" },
|
|
1221
|
+
{ name: "get", desc: "Get job details" },
|
|
1222
|
+
{ name: "tasks", desc: "List tasks within a job" },
|
|
1223
|
+
{ name: "delete", desc: "Delete job(s) (comma-separated)" },
|
|
1224
|
+
],
|
|
1225
|
+
}],
|
|
1226
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
1227
|
+
examples: [
|
|
1228
|
+
"kweaver bkn job list <kn-id>",
|
|
1229
|
+
"kweaver bkn job get <kn-id> <job-id>",
|
|
1230
|
+
"kweaver bkn job tasks <kn-id> <job-id>",
|
|
1231
|
+
"kweaver bkn job delete <kn-id> <job-ids> [-y]",
|
|
1232
|
+
],
|
|
1233
|
+
}));
|
|
1135
1234
|
return 0;
|
|
1136
1235
|
}
|
|
1137
1236
|
console.error(formatHttpError(error));
|
|
@@ -5,6 +5,7 @@ import { semanticSearch } from "../api/semantic-search.js";
|
|
|
5
5
|
import { formatCallOutput } from "./call.js";
|
|
6
6
|
import { resolveBusinessDomain } from "../config/store.js";
|
|
7
7
|
import { parseOntologyQueryFlags } from "./bkn-utils.js";
|
|
8
|
+
import { renderHelp } from "../help/format.js";
|
|
8
9
|
// ── subgraph ─────────────────────────────────────────────────────────────────
|
|
9
10
|
export async function runKnSubgraphCommand(args) {
|
|
10
11
|
let filteredArgs;
|
|
@@ -18,9 +19,18 @@ export async function runKnSubgraphCommand(args) {
|
|
|
18
19
|
}
|
|
19
20
|
catch (error) {
|
|
20
21
|
if (error instanceof Error && error.message === "help") {
|
|
21
|
-
console.log(
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
console.log(renderHelp({
|
|
23
|
+
tagline: "Query subgraph via ontology-query API. JSON body format see references/json-formats.md#subgraph.",
|
|
24
|
+
usage: "kweaver bkn subgraph <kn-id> '<json>' [flags]",
|
|
25
|
+
flags: [
|
|
26
|
+
{ name: "--pretty", desc: "Pretty-print JSON output" },
|
|
27
|
+
{ name: "-bd, --biz-domain <s>", desc: "Override x-business-domain" },
|
|
28
|
+
],
|
|
29
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
30
|
+
examples: [
|
|
31
|
+
"kweaver bkn subgraph kn-123 '{\"source_object_type_id\":\"ot-1\"}'",
|
|
32
|
+
],
|
|
33
|
+
}));
|
|
24
34
|
return 0;
|
|
25
35
|
}
|
|
26
36
|
throw error;
|
|
@@ -80,9 +90,18 @@ export async function runKnActionExecutionCommand(args) {
|
|
|
80
90
|
}
|
|
81
91
|
catch (error) {
|
|
82
92
|
if (error instanceof Error && error.message === "help") {
|
|
83
|
-
console.log(
|
|
84
|
-
|
|
85
|
-
|
|
93
|
+
console.log(renderHelp({
|
|
94
|
+
tagline: "Get action execution status.",
|
|
95
|
+
usage: "kweaver bkn action-execution get <kn-id> <execution-id> [flags]",
|
|
96
|
+
flags: [
|
|
97
|
+
{ name: "--pretty", desc: "Pretty-print JSON output" },
|
|
98
|
+
{ name: "-bd, --biz-domain <s>", desc: "Override x-business-domain" },
|
|
99
|
+
],
|
|
100
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
101
|
+
examples: [
|
|
102
|
+
"kweaver bkn action-execution get kn-123 exec-456",
|
|
103
|
+
],
|
|
104
|
+
}));
|
|
86
105
|
return 0;
|
|
87
106
|
}
|
|
88
107
|
throw error;
|
|
@@ -113,12 +132,29 @@ Get action execution status.`);
|
|
|
113
132
|
export async function runKnActionLogCommand(args) {
|
|
114
133
|
const [action, ...rest] = args;
|
|
115
134
|
if (!action || action === "--help" || action === "-h") {
|
|
116
|
-
console.log(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
135
|
+
console.log(renderHelp({
|
|
136
|
+
tagline: "List/get execution logs. cancel has side effects - only use when explicitly requested.",
|
|
137
|
+
usage: [
|
|
138
|
+
"kweaver bkn action-log list <kn-id> [flags]",
|
|
139
|
+
"kweaver bkn action-log get <kn-id> <log-id> [flags]",
|
|
140
|
+
"kweaver bkn action-log cancel <kn-id> <log-id> [flags]",
|
|
141
|
+
],
|
|
142
|
+
flags: [
|
|
143
|
+
{ name: "--limit <n>", desc: "Max log entries (list, default: 30)" },
|
|
144
|
+
{ name: "--need-total <bool>", desc: "Include total count (list)" },
|
|
145
|
+
{ name: "--action-type-id <s>", desc: "Filter by action type id (list)" },
|
|
146
|
+
{ name: "--status <s>", desc: "Filter by status (list)" },
|
|
147
|
+
{ name: "--trigger-type <s>", desc: "Filter by trigger type (list)" },
|
|
148
|
+
{ name: "--search-after <s>", desc: "Pagination cursor (list)" },
|
|
149
|
+
{ name: "--pretty", desc: "Pretty-print JSON output" },
|
|
150
|
+
{ name: "-bd, --biz-domain <s>", desc: "Override x-business-domain" },
|
|
151
|
+
],
|
|
152
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
153
|
+
examples: [
|
|
154
|
+
"kweaver bkn action-log list kn-123 --limit 10",
|
|
155
|
+
"kweaver bkn action-log get kn-123 log-456",
|
|
156
|
+
],
|
|
157
|
+
}));
|
|
122
158
|
return 0;
|
|
123
159
|
}
|
|
124
160
|
let pretty = true;
|
|
@@ -233,16 +269,21 @@ Options for list: --limit, --need-total, --action-type-id, --status, --trigger-t
|
|
|
233
269
|
}
|
|
234
270
|
}
|
|
235
271
|
// ── search ───────────────────────────────────────────────────────────────────
|
|
236
|
-
const KN_SEARCH_HELP =
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
272
|
+
const KN_SEARCH_HELP = renderHelp({
|
|
273
|
+
tagline: "Semantic search within a knowledge network — matches object/relation/action types (agent-retrieval API)",
|
|
274
|
+
usage: "kweaver bkn search <kn-id> <query> [flags]",
|
|
275
|
+
flags: [
|
|
276
|
+
{ name: "--max-concepts <n>", desc: "Max concepts to return (default: 10)" },
|
|
277
|
+
{ name: "--mode <mode>", desc: "Search mode (default: keyword_vector_retrieval)" },
|
|
278
|
+
{ name: "--pretty", desc: "Pretty-print JSON output" },
|
|
279
|
+
{ name: "-bd, --biz-domain <s>", desc: "Override x-business-domain" },
|
|
280
|
+
],
|
|
281
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
282
|
+
examples: [
|
|
283
|
+
"kweaver bkn search kn-123 'customer churn'",
|
|
284
|
+
"kweaver bkn search kn-123 'revenue by region' --max-concepts 20",
|
|
285
|
+
],
|
|
286
|
+
});
|
|
246
287
|
export function parseKnSearchArgs(args) {
|
|
247
288
|
let knId = "";
|
|
248
289
|
let query = "";
|
|
@@ -324,18 +365,36 @@ export async function runKnRelationTypePathsCommand(args) {
|
|
|
324
365
|
}
|
|
325
366
|
catch (error) {
|
|
326
367
|
if (error instanceof Error && error.message === "help") {
|
|
327
|
-
console.log(
|
|
328
|
-
|
|
329
|
-
|
|
368
|
+
console.log(renderHelp({
|
|
369
|
+
tagline: "Query relation type paths between object types.",
|
|
370
|
+
usage: "kweaver bkn relation-type-paths <kn-id> '<json>' [flags]",
|
|
371
|
+
flags: [
|
|
372
|
+
{ name: "--pretty", desc: "Pretty-print JSON output" },
|
|
373
|
+
{ name: "-bd, --biz-domain <s>", desc: "Override x-business-domain" },
|
|
374
|
+
],
|
|
375
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
376
|
+
examples: [
|
|
377
|
+
"kweaver bkn relation-type-paths kn-123 '{...}'",
|
|
378
|
+
],
|
|
379
|
+
}));
|
|
330
380
|
return 0;
|
|
331
381
|
}
|
|
332
382
|
throw error;
|
|
333
383
|
}
|
|
334
384
|
const [knId, body] = parsed.filteredArgs;
|
|
335
385
|
if (!knId || !body) {
|
|
336
|
-
console.log(
|
|
337
|
-
|
|
338
|
-
|
|
386
|
+
console.log(renderHelp({
|
|
387
|
+
tagline: "Query relation type paths between object types.",
|
|
388
|
+
usage: "kweaver bkn relation-type-paths <kn-id> '<json>' [flags]",
|
|
389
|
+
flags: [
|
|
390
|
+
{ name: "--pretty", desc: "Pretty-print JSON output" },
|
|
391
|
+
{ name: "-bd, --biz-domain <s>", desc: "Override x-business-domain" },
|
|
392
|
+
],
|
|
393
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
394
|
+
examples: [
|
|
395
|
+
"kweaver bkn relation-type-paths kn-123 '{...}'",
|
|
396
|
+
],
|
|
397
|
+
}));
|
|
339
398
|
return knId && !body ? 1 : 0;
|
|
340
399
|
}
|
|
341
400
|
const token = await ensureValidToken();
|
|
@@ -357,9 +416,18 @@ export async function runKnResourcesCommand(args) {
|
|
|
357
416
|
}
|
|
358
417
|
catch (error) {
|
|
359
418
|
if (error instanceof Error && error.message === "help") {
|
|
360
|
-
console.log(
|
|
361
|
-
|
|
362
|
-
|
|
419
|
+
console.log(renderHelp({
|
|
420
|
+
tagline: "List available resources.",
|
|
421
|
+
usage: "kweaver bkn resources [flags]",
|
|
422
|
+
flags: [
|
|
423
|
+
{ name: "--pretty", desc: "Pretty-print JSON output" },
|
|
424
|
+
{ name: "-bd, --biz-domain <s>", desc: "Override x-business-domain" },
|
|
425
|
+
],
|
|
426
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
427
|
+
examples: [
|
|
428
|
+
"kweaver bkn resources --pretty",
|
|
429
|
+
],
|
|
430
|
+
}));
|
|
363
431
|
return 0;
|
|
364
432
|
}
|
|
365
433
|
throw error;
|
|
@@ -22,13 +22,13 @@ export type ObjectTypeCreateParsed = {
|
|
|
22
22
|
} | {
|
|
23
23
|
mode: "needsDataview";
|
|
24
24
|
knId: string;
|
|
25
|
-
|
|
25
|
+
resourceId: string;
|
|
26
26
|
entry: Record<string, unknown>;
|
|
27
27
|
businessDomain: string;
|
|
28
28
|
branch: string;
|
|
29
29
|
pretty: boolean;
|
|
30
30
|
};
|
|
31
|
-
/** Parse object-type create args: --name --
|
|
31
|
+
/** Parse object-type create args: --name --resource-id --primary-key --display-key [--property '<json>' ...] */
|
|
32
32
|
export declare function parseObjectTypeCreateArgs(args: string[]): ObjectTypeCreateParsed;
|
|
33
33
|
/**
|
|
34
34
|
* Load dataview fields and build data_properties (with mapped_field). Used when no --property flags.
|
|
@@ -36,7 +36,7 @@ export declare function parseObjectTypeCreateArgs(args: string[]): ObjectTypeCre
|
|
|
36
36
|
export declare function finalizeObjectTypeCreateFromDataview(options: {
|
|
37
37
|
baseUrl: string;
|
|
38
38
|
accessToken: string;
|
|
39
|
-
|
|
39
|
+
resourceId: string;
|
|
40
40
|
entry: Record<string, unknown>;
|
|
41
41
|
businessDomain: string;
|
|
42
42
|
}): Promise<string>;
|