cngkit 1.1.18 → 1.1.19

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.
Files changed (74) hide show
  1. package/README.md +86 -11
  2. package/dist/chunk-3A6GRNEV.js +1590 -0
  3. package/dist/chunk-3A6GRNEV.js.map +1 -0
  4. package/dist/{chunk-FJ34NVQ4.js → chunk-7SO75QXJ.js} +538 -68
  5. package/dist/chunk-7SO75QXJ.js.map +1 -0
  6. package/dist/chunk-DBA3BZXP.js +231 -0
  7. package/dist/chunk-DBA3BZXP.js.map +1 -0
  8. package/dist/{chunk-IB5B3BLY.js → chunk-GBONV6XP.js} +16 -4
  9. package/dist/chunk-GBONV6XP.js.map +1 -0
  10. package/dist/{chunk-C7HFDK4S.js → chunk-L6ZVQRSY.js} +207 -31
  11. package/dist/chunk-L6ZVQRSY.js.map +1 -0
  12. package/dist/{chunk-ZA4YOWPB.js → chunk-NGEWD4BW.js} +2 -1
  13. package/dist/chunk-TYDIBWZV.js +35 -0
  14. package/dist/chunk-TYDIBWZV.js.map +1 -0
  15. package/dist/{chunk-TWQDLZ6F.js → chunk-X4E7NAN4.js} +2 -2
  16. package/dist/cli.js +55 -14
  17. package/dist/cli.js.map +1 -1
  18. package/dist/commands/coderoom/index.js +6 -6
  19. package/dist/commands/coderoom/index.js.map +1 -1
  20. package/dist/commands/coderoom/join.js +5 -5
  21. package/dist/commands/coderoom/share.js +5 -5
  22. package/dist/commands/hookify/index.js +6 -6
  23. package/dist/commands/hookify/index.js.map +1 -1
  24. package/dist/commands/hookify/ingest.js +52 -13
  25. package/dist/commands/hookify/ingest.js.map +1 -1
  26. package/dist/commands/hooks/index.js +25 -0
  27. package/dist/commands/hooks/index.js.map +1 -0
  28. package/dist/commands/hooks/install.js +40 -0
  29. package/dist/commands/hooks/install.js.map +1 -0
  30. package/dist/commands/hooks/uninstall.js +40 -0
  31. package/dist/commands/hooks/uninstall.js.map +1 -0
  32. package/dist/commands/index.js +5 -5
  33. package/dist/commands/index.js.map +1 -1
  34. package/dist/commands/knowledges/audiences.js +6 -6
  35. package/dist/commands/knowledges/cat.js +31 -0
  36. package/dist/commands/knowledges/cat.js.map +1 -0
  37. package/dist/commands/knowledges/files.js +6 -6
  38. package/dist/commands/knowledges/find.js +66 -0
  39. package/dist/commands/knowledges/find.js.map +1 -0
  40. package/dist/commands/knowledges/glob.js +6 -6
  41. package/dist/commands/knowledges/grep.js +6 -6
  42. package/dist/commands/knowledges/head.js +41 -0
  43. package/dist/commands/knowledges/head.js.map +1 -0
  44. package/dist/commands/knowledges/index.js +6 -6
  45. package/dist/commands/knowledges/index.js.map +1 -1
  46. package/dist/commands/knowledges/list.js +7 -7
  47. package/dist/commands/knowledges/list.js.map +1 -1
  48. package/dist/commands/knowledges/ls.js +16 -7
  49. package/dist/commands/knowledges/ls.js.map +1 -1
  50. package/dist/commands/knowledges/read.js +6 -6
  51. package/dist/commands/knowledges/realpath.js +31 -0
  52. package/dist/commands/knowledges/realpath.js.map +1 -0
  53. package/dist/commands/knowledges/search.js +6 -6
  54. package/dist/commands/knowledges/stat.js +31 -0
  55. package/dist/commands/knowledges/stat.js.map +1 -0
  56. package/dist/commands/knowledges/status.js +6 -6
  57. package/dist/commands/knowledges/tail.js +41 -0
  58. package/dist/commands/knowledges/tail.js.map +1 -0
  59. package/dist/commands/knowledges/tree.js +46 -0
  60. package/dist/commands/knowledges/tree.js.map +1 -0
  61. package/dist/commands/login.js +3 -3
  62. package/dist/commands/scrub.js +3 -3
  63. package/dist/commands/transcripts.js +6 -6
  64. package/dist/commands/transcripts.js.map +1 -1
  65. package/package.json +2 -2
  66. package/dist/chunk-C7HFDK4S.js.map +0 -1
  67. package/dist/chunk-CBIVTEZP.js +0 -222
  68. package/dist/chunk-CBIVTEZP.js.map +0 -1
  69. package/dist/chunk-FJ34NVQ4.js.map +0 -1
  70. package/dist/chunk-IB5B3BLY.js.map +0 -1
  71. package/dist/chunk-KSW6QT5Q.js +0 -628
  72. package/dist/chunk-KSW6QT5Q.js.map +0 -1
  73. /package/dist/{chunk-ZA4YOWPB.js.map → chunk-NGEWD4BW.js.map} +0 -0
  74. /package/dist/{chunk-TWQDLZ6F.js.map → chunk-X4E7NAN4.js.map} +0 -0
@@ -1,10 +1,44 @@
1
- import {
2
- resolveApiBaseUrl
3
- } from "./chunk-CBIVTEZP.js";
4
1
  import {
5
2
  __export
6
3
  } from "./chunk-PZ5AY32C.js";
7
4
 
5
+ // src/shared/config.ts
6
+ import { randomBytes, randomUUID } from "crypto";
7
+ import process2 from "process";
8
+ var packageVersion = "1.1.19";
9
+ var defaultApiBaseUrl = "https://curly.ng";
10
+ function resolveApiBaseUrl(options) {
11
+ void options;
12
+ return defaultApiBaseUrl;
13
+ }
14
+ function resolveOutputFormat() {
15
+ const value = process2.env.CNGKIT_FORMAT?.toLowerCase();
16
+ if (value === "json" || value === "markdown") {
17
+ return value;
18
+ }
19
+ return "text";
20
+ }
21
+ function parseOutputFormat(value) {
22
+ const normalizedValue = value.toLowerCase();
23
+ if (normalizedValue === "text" || normalizedValue === "json" || normalizedValue === "markdown") {
24
+ return normalizedValue;
25
+ }
26
+ throw new Error("Unknown --format value. Use one of: text, json, markdown.");
27
+ }
28
+ function createRoomCode() {
29
+ return randomBytes(4).toString("hex").toUpperCase();
30
+ }
31
+ function createPeerId() {
32
+ return randomUUID();
33
+ }
34
+
35
+ // src/shared/output.ts
36
+ import process3 from "process";
37
+ import { createElement } from "react";
38
+ import { renderToString, Text } from "ink";
39
+ import Markdown from "@inkkit/ink-markdown";
40
+ import stripAnsi from "strip-ansi";
41
+
8
42
  // ../../packages/client/src/generated/core/json.ts
9
43
  var toJson = (value, replacer, space) => {
10
44
  return JSON.stringify(value, replacer, space);
@@ -305,8 +339,21 @@ var HookifyIngestResponse;
305
339
  Sync: "sync",
306
340
  Async: "async"
307
341
  };
342
+ HookifyIngestResponse2.Status = {
343
+ Completed: "completed",
344
+ Pending: "pending"
345
+ };
308
346
  })(HookifyIngestResponse || (HookifyIngestResponse = {}));
309
347
 
348
+ // ../../packages/client/src/generated/api/types/HookifyRequestResponse.ts
349
+ var HookifyRequestResponse;
350
+ ((HookifyRequestResponse2) => {
351
+ HookifyRequestResponse2.Status = {
352
+ Completed: "completed",
353
+ Pending: "pending"
354
+ };
355
+ })(HookifyRequestResponse || (HookifyRequestResponse = {}));
356
+
310
357
  // ../../packages/client/src/generated/core/headers.ts
311
358
  function mergeHeaders(...headersArray) {
312
359
  const result = {};
@@ -2141,6 +2188,70 @@ var HarnessFilesystemClient = class {
2141
2188
  }
2142
2189
  return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/api/harness/filesystem/read");
2143
2190
  }
2191
+ /**
2192
+ * @param {CngApi.GetHarnessFilesystemTailRequest} request
2193
+ * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.
2194
+ *
2195
+ * @throws {@link CngApi.BadRequestError}
2196
+ * @throws {@link CngApi.NotFoundError}
2197
+ * @throws {@link CngApi.ContentTooLargeError}
2198
+ *
2199
+ * @example
2200
+ * await client.harnessFilesystem.getHarnessFilesystemTail({
2201
+ * file_path: "file_path"
2202
+ * })
2203
+ */
2204
+ getHarnessFilesystemTail(request, requestOptions) {
2205
+ return HttpResponsePromise.fromPromise(this.__getHarnessFilesystemTail(request, requestOptions));
2206
+ }
2207
+ async __getHarnessFilesystemTail(request, requestOptions) {
2208
+ const { file_path: filePath, lines } = request;
2209
+ const _queryParams = {
2210
+ file_path: filePath,
2211
+ lines
2212
+ };
2213
+ const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2214
+ const _response = await fetcher({
2215
+ url: url_exports.join(
2216
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment) ?? CngApiEnvironment.Default,
2217
+ "api/harness/filesystem/tail"
2218
+ ),
2219
+ method: "GET",
2220
+ headers: _headers,
2221
+ queryString: url_exports.queryBuilder().addMany(_queryParams).mergeAdditional(requestOptions?.queryParams).build(),
2222
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1e3,
2223
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
2224
+ abortSignal: requestOptions?.abortSignal,
2225
+ fetchFn: this._options?.fetch,
2226
+ logging: this._options.logging
2227
+ });
2228
+ if (_response.ok) {
2229
+ return {
2230
+ data: _response.body,
2231
+ rawResponse: _response.rawResponse
2232
+ };
2233
+ }
2234
+ if (_response.error.reason === "status-code") {
2235
+ switch (_response.error.statusCode) {
2236
+ case 400:
2237
+ throw new BadRequestError(_response.error.body, _response.rawResponse);
2238
+ case 404:
2239
+ throw new NotFoundError(_response.error.body, _response.rawResponse);
2240
+ case 413:
2241
+ throw new ContentTooLargeError(
2242
+ _response.error.body,
2243
+ _response.rawResponse
2244
+ );
2245
+ default:
2246
+ throw new CngApiError({
2247
+ statusCode: _response.error.statusCode,
2248
+ body: _response.error.body,
2249
+ rawResponse: _response.rawResponse
2250
+ });
2251
+ }
2252
+ }
2253
+ return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/api/harness/filesystem/tail");
2254
+ }
2144
2255
  /**
2145
2256
  * @param {CngApi.GetHarnessFilesystemGrepRequest} request
2146
2257
  * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.
@@ -2302,6 +2413,60 @@ var HarnessFilesystemClient = class {
2302
2413
  }
2303
2414
  return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/api/harness/filesystem/ls");
2304
2415
  }
2416
+ /**
2417
+ * @param {CngApi.GetHarnessFilesystemTreeRequest} request
2418
+ * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.
2419
+ *
2420
+ * @throws {@link CngApi.BadRequestError}
2421
+ *
2422
+ * @example
2423
+ * await client.harnessFilesystem.getHarnessFilesystemTree()
2424
+ */
2425
+ getHarnessFilesystemTree(request = {}, requestOptions) {
2426
+ return HttpResponsePromise.fromPromise(this.__getHarnessFilesystemTree(request, requestOptions));
2427
+ }
2428
+ async __getHarnessFilesystemTree(request = {}, requestOptions) {
2429
+ const { path, depth, limit } = request;
2430
+ const _queryParams = {
2431
+ path,
2432
+ depth,
2433
+ limit
2434
+ };
2435
+ const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2436
+ const _response = await fetcher({
2437
+ url: url_exports.join(
2438
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment) ?? CngApiEnvironment.Default,
2439
+ "api/harness/filesystem/tree"
2440
+ ),
2441
+ method: "GET",
2442
+ headers: _headers,
2443
+ queryString: url_exports.queryBuilder().addMany(_queryParams).mergeAdditional(requestOptions?.queryParams).build(),
2444
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1e3,
2445
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
2446
+ abortSignal: requestOptions?.abortSignal,
2447
+ fetchFn: this._options?.fetch,
2448
+ logging: this._options.logging
2449
+ });
2450
+ if (_response.ok) {
2451
+ return {
2452
+ data: _response.body,
2453
+ rawResponse: _response.rawResponse
2454
+ };
2455
+ }
2456
+ if (_response.error.reason === "status-code") {
2457
+ switch (_response.error.statusCode) {
2458
+ case 400:
2459
+ throw new BadRequestError(_response.error.body, _response.rawResponse);
2460
+ default:
2461
+ throw new CngApiError({
2462
+ statusCode: _response.error.statusCode,
2463
+ body: _response.error.body,
2464
+ rawResponse: _response.rawResponse
2465
+ });
2466
+ }
2467
+ }
2468
+ return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/api/harness/filesystem/tree");
2469
+ }
2305
2470
  /**
2306
2471
  * @param {CngApi.GetHarnessFilesystemStatRequest} request
2307
2472
  * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.
@@ -2359,6 +2524,62 @@ var HarnessFilesystemClient = class {
2359
2524
  }
2360
2525
  return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/api/harness/filesystem/stat");
2361
2526
  }
2527
+ /**
2528
+ * @param {CngApi.GetHarnessFilesystemFindRequest} request
2529
+ * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.
2530
+ *
2531
+ * @throws {@link CngApi.BadRequestError}
2532
+ *
2533
+ * @example
2534
+ * await client.harnessFilesystem.getHarnessFilesystemFind()
2535
+ */
2536
+ getHarnessFilesystemFind(request = {}, requestOptions) {
2537
+ return HttpResponsePromise.fromPromise(this.__getHarnessFilesystemFind(request, requestOptions));
2538
+ }
2539
+ async __getHarnessFilesystemFind(request = {}, requestOptions) {
2540
+ const { path, name, type: type_, max_depth: maxDepth, limit } = request;
2541
+ const _queryParams = {
2542
+ path,
2543
+ name,
2544
+ type: type_ != null ? type_ : void 0,
2545
+ max_depth: maxDepth,
2546
+ limit
2547
+ };
2548
+ const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2549
+ const _response = await fetcher({
2550
+ url: url_exports.join(
2551
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment) ?? CngApiEnvironment.Default,
2552
+ "api/harness/filesystem/find"
2553
+ ),
2554
+ method: "GET",
2555
+ headers: _headers,
2556
+ queryString: url_exports.queryBuilder().addMany(_queryParams).mergeAdditional(requestOptions?.queryParams).build(),
2557
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1e3,
2558
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
2559
+ abortSignal: requestOptions?.abortSignal,
2560
+ fetchFn: this._options?.fetch,
2561
+ logging: this._options.logging
2562
+ });
2563
+ if (_response.ok) {
2564
+ return {
2565
+ data: _response.body,
2566
+ rawResponse: _response.rawResponse
2567
+ };
2568
+ }
2569
+ if (_response.error.reason === "status-code") {
2570
+ switch (_response.error.statusCode) {
2571
+ case 400:
2572
+ throw new BadRequestError(_response.error.body, _response.rawResponse);
2573
+ default:
2574
+ throw new CngApiError({
2575
+ statusCode: _response.error.statusCode,
2576
+ body: _response.error.body,
2577
+ rawResponse: _response.rawResponse
2578
+ });
2579
+ }
2580
+ }
2581
+ return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/api/harness/filesystem/find");
2582
+ }
2362
2583
  };
2363
2584
 
2364
2585
  // ../../packages/client/src/generated/api/resources/harnessInternalKnowledges/client/Client.ts
@@ -2374,12 +2595,12 @@ var HarnessInternalKnowledgesClient = class {
2374
2595
  * @throws {@link CngApi.ServiceUnavailableError}
2375
2596
  *
2376
2597
  * @example
2377
- * await client.harnessInternalKnowledges.createHarnessSubskillAssetsSyncPlan()
2598
+ * await client.harnessInternalKnowledges.createHarnessTopicAssetsSyncPlan()
2378
2599
  */
2379
- createHarnessSubskillAssetsSyncPlan(requestOptions) {
2380
- return HttpResponsePromise.fromPromise(this.__createHarnessSubskillAssetsSyncPlan(requestOptions));
2600
+ createHarnessTopicAssetsSyncPlan(requestOptions) {
2601
+ return HttpResponsePromise.fromPromise(this.__createHarnessTopicAssetsSyncPlan(requestOptions));
2381
2602
  }
2382
- async __createHarnessSubskillAssetsSyncPlan(requestOptions) {
2603
+ async __createHarnessTopicAssetsSyncPlan(requestOptions) {
2383
2604
  const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2384
2605
  const _response = await fetcher({
2385
2606
  url: url_exports.join(
@@ -2421,7 +2642,7 @@ var HarnessInternalKnowledgesClient = class {
2421
2642
  );
2422
2643
  }
2423
2644
  /**
2424
- * @param {CngApi.GetHarnessSubskillAssetRawFileRequest} request
2645
+ * @param {CngApi.GetHarnessTopicAssetRawFileRequest} request
2425
2646
  * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.
2426
2647
  *
2427
2648
  * @throws {@link CngApi.UnauthorizedError}
@@ -2429,15 +2650,15 @@ var HarnessInternalKnowledgesClient = class {
2429
2650
  * @throws {@link CngApi.ServiceUnavailableError}
2430
2651
  *
2431
2652
  * @example
2432
- * await client.harnessInternalKnowledges.getHarnessSubskillAssetRawFile({
2653
+ * await client.harnessInternalKnowledges.getHarnessTopicAssetRawFile({
2433
2654
  * path: "x",
2434
2655
  * sha256: "sha256"
2435
2656
  * })
2436
2657
  */
2437
- getHarnessSubskillAssetRawFile(request, requestOptions) {
2438
- return HttpResponsePromise.fromPromise(this.__getHarnessSubskillAssetRawFile(request, requestOptions));
2658
+ getHarnessTopicAssetRawFile(request, requestOptions) {
2659
+ return HttpResponsePromise.fromPromise(this.__getHarnessTopicAssetRawFile(request, requestOptions));
2439
2660
  }
2440
- async __getHarnessSubskillAssetRawFile(request, requestOptions) {
2661
+ async __getHarnessTopicAssetRawFile(request, requestOptions) {
2441
2662
  const { path, sha256 } = request;
2442
2663
  const _queryParams = {
2443
2664
  path,
@@ -2491,12 +2712,12 @@ var HarnessInternalKnowledgesClient = class {
2491
2712
  * @throws {@link CngApi.UnauthorizedError}
2492
2713
  *
2493
2714
  * @example
2494
- * await client.harnessInternalKnowledges.listHarnessSubskillAssetHashes()
2715
+ * await client.harnessInternalKnowledges.listHarnessTopicAssetHashes()
2495
2716
  */
2496
- listHarnessSubskillAssetHashes(requestOptions) {
2497
- return HttpResponsePromise.fromPromise(this.__listHarnessSubskillAssetHashes(requestOptions));
2717
+ listHarnessTopicAssetHashes(requestOptions) {
2718
+ return HttpResponsePromise.fromPromise(this.__listHarnessTopicAssetHashes(requestOptions));
2498
2719
  }
2499
- async __listHarnessSubskillAssetHashes(requestOptions) {
2720
+ async __listHarnessTopicAssetHashes(requestOptions) {
2500
2721
  const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2501
2722
  const _response = await fetcher({
2502
2723
  url: url_exports.join(
@@ -2545,26 +2766,29 @@ var HarnessInternalKnowledgesClient = class {
2545
2766
  * @throws {@link CngApi.ConflictError}
2546
2767
  *
2547
2768
  * @example
2548
- * await client.harnessInternalKnowledges.replaceHarnessSubskillAssets({
2769
+ * await client.harnessInternalKnowledges.replaceHarnessTopicAssets({
2549
2770
  * uploadedAt: "uploadedAt",
2550
2771
  * files: [{
2551
2772
  * path: "path",
2773
+ * slug: "slug",
2552
2774
  * sha256: "sha256",
2553
2775
  * size: 1,
2554
2776
  * mode: "mode",
2555
2777
  * assetKind: "skill",
2556
- * subskillName: "subskillName",
2778
+ * topicName: "topicName",
2557
2779
  * displayTitle: "displayTitle",
2558
2780
  * displayDescription: "displayDescription",
2559
2781
  * displayRating: 1,
2782
+ * sourceText: "sourceText",
2783
+ * frontmatterText: "frontmatterText",
2560
2784
  * bodyText: "bodyText"
2561
2785
  * }]
2562
2786
  * })
2563
2787
  */
2564
- replaceHarnessSubskillAssets(request, requestOptions) {
2565
- return HttpResponsePromise.fromPromise(this.__replaceHarnessSubskillAssets(request, requestOptions));
2788
+ replaceHarnessTopicAssets(request, requestOptions) {
2789
+ return HttpResponsePromise.fromPromise(this.__replaceHarnessTopicAssets(request, requestOptions));
2566
2790
  }
2567
- async __replaceHarnessSubskillAssets(request, requestOptions) {
2791
+ async __replaceHarnessTopicAssets(request, requestOptions) {
2568
2792
  const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2569
2793
  const _response = await fetcher({
2570
2794
  url: url_exports.join(
@@ -2618,15 +2842,15 @@ var HarnessInternalKnowledgesClient = class {
2618
2842
  * @throws {@link CngApi.ConflictError}
2619
2843
  *
2620
2844
  * @example
2621
- * await client.harnessInternalKnowledges.deleteHarnessSubskillAssets({
2845
+ * await client.harnessInternalKnowledges.deleteHarnessTopicAssets({
2622
2846
  * uploadedAt: "uploadedAt",
2623
2847
  * paths: ["paths"]
2624
2848
  * })
2625
2849
  */
2626
- deleteHarnessSubskillAssets(request, requestOptions) {
2627
- return HttpResponsePromise.fromPromise(this.__deleteHarnessSubskillAssets(request, requestOptions));
2850
+ deleteHarnessTopicAssets(request, requestOptions) {
2851
+ return HttpResponsePromise.fromPromise(this.__deleteHarnessTopicAssets(request, requestOptions));
2628
2852
  }
2629
- async __deleteHarnessSubskillAssets(request, requestOptions) {
2853
+ async __deleteHarnessTopicAssets(request, requestOptions) {
2630
2854
  const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2631
2855
  const _response = await fetcher({
2632
2856
  url: url_exports.join(
@@ -2676,23 +2900,23 @@ var HarnessInternalKnowledgesClient = class {
2676
2900
  );
2677
2901
  }
2678
2902
  /**
2679
- * @param {CngApi.HarnessUploadSubskillAssetsIndexRequest} request
2903
+ * @param {CngApi.HarnessUploadTopicAssetsIndexRequest} request
2680
2904
  * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.
2681
2905
  *
2682
2906
  * @throws {@link CngApi.UnauthorizedError}
2683
2907
  * @throws {@link CngApi.InternalServerError}
2684
2908
  *
2685
2909
  * @example
2686
- * await client.harnessInternalKnowledges.createHarnessSubskillAssetsIndex({
2910
+ * await client.harnessInternalKnowledges.createHarnessTopicAssetsIndex({
2687
2911
  * runId: "runId",
2688
2912
  * offset: 1,
2689
2913
  * limit: 1
2690
2914
  * })
2691
2915
  */
2692
- createHarnessSubskillAssetsIndex(request, requestOptions) {
2693
- return HttpResponsePromise.fromPromise(this.__createHarnessSubskillAssetsIndex(request, requestOptions));
2916
+ createHarnessTopicAssetsIndex(request, requestOptions) {
2917
+ return HttpResponsePromise.fromPromise(this.__createHarnessTopicAssetsIndex(request, requestOptions));
2694
2918
  }
2695
- async __createHarnessSubskillAssetsIndex(request, requestOptions) {
2919
+ async __createHarnessTopicAssetsIndex(request, requestOptions) {
2696
2920
  const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
2697
2921
  const _response = await fetcher({
2698
2922
  url: url_exports.join(
@@ -2837,16 +3061,16 @@ var HarnessKnowledgesClient = class {
2837
3061
  );
2838
3062
  }
2839
3063
  /**
2840
- * @param {CngApi.ListHarnessSubskillAssetsRequest} request
3064
+ * @param {CngApi.ListHarnessTopicAssetsRequest} request
2841
3065
  * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.
2842
3066
  *
2843
3067
  * @example
2844
- * await client.harnessKnowledges.listHarnessSubskillAssets()
3068
+ * await client.harnessKnowledges.listHarnessTopicAssets()
2845
3069
  */
2846
- listHarnessSubskillAssets(request = {}, requestOptions) {
2847
- return HttpResponsePromise.fromPromise(this.__listHarnessSubskillAssets(request, requestOptions));
3070
+ listHarnessTopicAssets(request = {}, requestOptions) {
3071
+ return HttpResponsePromise.fromPromise(this.__listHarnessTopicAssets(request, requestOptions));
2848
3072
  }
2849
- async __listHarnessSubskillAssets(request = {}, requestOptions) {
3073
+ async __listHarnessTopicAssets(request = {}, requestOptions) {
2850
3074
  const { q, audience, limit } = request;
2851
3075
  const _queryParams = {
2852
3076
  q,
@@ -2869,10 +3093,7 @@ var HarnessKnowledgesClient = class {
2869
3093
  logging: this._options.logging
2870
3094
  });
2871
3095
  if (_response.ok) {
2872
- return {
2873
- data: _response.body,
2874
- rawResponse: _response.rawResponse
2875
- };
3096
+ return { data: _response.body, rawResponse: _response.rawResponse };
2876
3097
  }
2877
3098
  if (_response.error.reason === "status-code") {
2878
3099
  throw new CngApiError({
@@ -3026,22 +3247,22 @@ var HarnessKnowledgesClient = class {
3026
3247
  return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/api/harness/knowledges/brain");
3027
3248
  }
3028
3249
  /**
3029
- * Returns the full subskill index for agent discovery. Use search for semantic lookup, or filesystem/read for content.
3250
+ * Returns the full topic index for agent discovery. Use search for semantic lookup, or filesystem/read for content.
3030
3251
  *
3031
3252
  * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.
3032
3253
  *
3033
3254
  * @example
3034
- * await client.harnessKnowledges.listHarnessKnowledgesSubskills()
3255
+ * await client.harnessKnowledges.listHarnessKnowledgesTopics()
3035
3256
  */
3036
- listHarnessKnowledgesSubskills(requestOptions) {
3037
- return HttpResponsePromise.fromPromise(this.__listHarnessKnowledgesSubskills(requestOptions));
3257
+ listHarnessKnowledgesTopics(requestOptions) {
3258
+ return HttpResponsePromise.fromPromise(this.__listHarnessKnowledgesTopics(requestOptions));
3038
3259
  }
3039
- async __listHarnessKnowledgesSubskills(requestOptions) {
3260
+ async __listHarnessKnowledgesTopics(requestOptions) {
3040
3261
  const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
3041
3262
  const _response = await fetcher({
3042
3263
  url: url_exports.join(
3043
3264
  await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment) ?? CngApiEnvironment.Default,
3044
- "api/harness/knowledges/subskills"
3265
+ "api/harness/knowledges/topics"
3045
3266
  ),
3046
3267
  method: "GET",
3047
3268
  headers: _headers,
@@ -3066,7 +3287,7 @@ var HarnessKnowledgesClient = class {
3066
3287
  _response.error,
3067
3288
  _response.rawResponse,
3068
3289
  "GET",
3069
- "/api/harness/knowledges/subskills"
3290
+ "/api/harness/knowledges/topics"
3070
3291
  );
3071
3292
  }
3072
3293
  /**
@@ -3212,6 +3433,52 @@ var HookifyClient = class {
3212
3433
  }
3213
3434
  return handleNonStatusCodeError(_response.error, _response.rawResponse, "POST", "/api/hookify/ingest");
3214
3435
  }
3436
+ /**
3437
+ * @param {CngApi.GetHookifyRequestRequest} request
3438
+ * @param {HookifyClient.RequestOptions} requestOptions - Request-specific configuration.
3439
+ *
3440
+ * @example
3441
+ * await client.hookify.getHookifyRequest({
3442
+ * requestId: "requestId"
3443
+ * })
3444
+ */
3445
+ getHookifyRequest(request, requestOptions) {
3446
+ return HttpResponsePromise.fromPromise(this.__getHookifyRequest(request, requestOptions));
3447
+ }
3448
+ async __getHookifyRequest(request, requestOptions) {
3449
+ const { requestId } = request;
3450
+ const _headers = mergeHeaders(this._options?.headers, requestOptions?.headers);
3451
+ const _response = await fetcher({
3452
+ url: url_exports.join(
3453
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment) ?? CngApiEnvironment.Default,
3454
+ `api/hookify/requests/${url_exports.encodePathParam(requestId)}`
3455
+ ),
3456
+ method: "GET",
3457
+ headers: _headers,
3458
+ queryString: url_exports.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),
3459
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1e3,
3460
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
3461
+ abortSignal: requestOptions?.abortSignal,
3462
+ fetchFn: this._options?.fetch,
3463
+ logging: this._options.logging
3464
+ });
3465
+ if (_response.ok) {
3466
+ return { data: _response.body, rawResponse: _response.rawResponse };
3467
+ }
3468
+ if (_response.error.reason === "status-code") {
3469
+ throw new CngApiError({
3470
+ statusCode: _response.error.statusCode,
3471
+ body: _response.error.body,
3472
+ rawResponse: _response.rawResponse
3473
+ });
3474
+ }
3475
+ return handleNonStatusCodeError(
3476
+ _response.error,
3477
+ _response.rawResponse,
3478
+ "GET",
3479
+ "/api/hookify/requests/{requestId}"
3480
+ );
3481
+ }
3215
3482
  };
3216
3483
 
3217
3484
  // ../../packages/client/src/generated/api/resources/llm/client/Client.ts
@@ -3551,32 +3818,235 @@ var logging;
3551
3818
  logging2.ConsoleLogger = ConsoleLogger;
3552
3819
  })(logging || (logging = {}));
3553
3820
 
3554
- // src/shared/api-client.ts
3555
- function createCngApiClient(options) {
3556
- return new CngApiClient({
3557
- baseUrl: resolveApiBaseUrl(options),
3558
- timeoutInSeconds: 15,
3559
- maxRetries: 1
3821
+ // src/shared/theme.ts
3822
+ import { Chalk } from "chalk";
3823
+ var statusStylePropsByOutputStyle = {
3824
+ info: {
3825
+ color: "cyan"
3826
+ },
3827
+ success: {
3828
+ color: "green",
3829
+ bold: true
3830
+ },
3831
+ warning: {
3832
+ color: "yellow",
3833
+ bold: true
3834
+ },
3835
+ muted: {
3836
+ dimColor: true
3837
+ },
3838
+ error: {
3839
+ color: "red",
3840
+ bold: true
3841
+ }
3842
+ };
3843
+ function createMarkdownTheme(useColor) {
3844
+ const chalk = new Chalk({ level: useColor ? 1 : 0 });
3845
+ const identity = (value) => value;
3846
+ return {
3847
+ code: chalk.green,
3848
+ blockquote: chalk.dim.italic,
3849
+ html: chalk.gray,
3850
+ heading: chalk.blueBright.bold,
3851
+ firstHeading: chalk.magentaBright.bold,
3852
+ hr: chalk.gray,
3853
+ listitem: identity,
3854
+ table: identity,
3855
+ paragraph: identity,
3856
+ strong: chalk.bold,
3857
+ em: chalk.italic,
3858
+ codespan: chalk.cyanBright,
3859
+ del: chalk.dim.strikethrough,
3860
+ link: chalk.blueBright,
3861
+ href: chalk.blue.underline,
3862
+ text: identity,
3863
+ showSectionPrefix: false,
3864
+ reflowText: true,
3865
+ unescape: true,
3866
+ emoji: false,
3867
+ tab: 2
3868
+ };
3869
+ }
3870
+
3871
+ // src/shared/output.ts
3872
+ var consoleOutput = createCommandOutput(process3.stdout, process3.stderr);
3873
+ function createCommandOutput(stdout, stderr) {
3874
+ return {
3875
+ info(message) {
3876
+ writeStyledMessage(stdout, "info", message);
3877
+ },
3878
+ success(message) {
3879
+ writeStyledMessage(stdout, "success", message);
3880
+ },
3881
+ warning(message) {
3882
+ writeStyledMessage(stdout, "warning", message);
3883
+ },
3884
+ muted(message) {
3885
+ writeStyledMessage(stdout, "muted", message);
3886
+ },
3887
+ markdown(message) {
3888
+ stdout.write(`${formatMarkdownMessage(stdout, message)}
3889
+ `);
3890
+ },
3891
+ component(element) {
3892
+ stdout.write(`${formatComponentMessage(stdout, element)}
3893
+ `);
3894
+ },
3895
+ raw(message) {
3896
+ stdout.write(`${message}
3897
+ `);
3898
+ },
3899
+ error(message) {
3900
+ writeStyledMessage(stderr, "error", message);
3901
+ }
3902
+ };
3903
+ }
3904
+ function formatError(error) {
3905
+ if (error instanceof CngApiError) {
3906
+ return formatApiError(error);
3907
+ }
3908
+ return error instanceof Error ? error.message : String(error);
3909
+ }
3910
+ function formatApiError(error) {
3911
+ if (resolveOutputFormat() === "json") {
3912
+ return error.message;
3913
+ }
3914
+ const statusCode = error.statusCode ?? 0;
3915
+ if (statusCode >= 500) {
3916
+ return `Backend error (${statusCode}). The service encountered an internal error.`;
3917
+ }
3918
+ if (statusCode >= 400) {
3919
+ const bodyMessage = extractBodyErrorMessage(error.body);
3920
+ if (bodyMessage) {
3921
+ return `Request error (${statusCode}): ${bodyMessage}`;
3922
+ }
3923
+ return `Request error (${statusCode}).`;
3924
+ }
3925
+ return error.message;
3926
+ }
3927
+ function extractBodyErrorMessage(body) {
3928
+ if (body == null || typeof body !== "object") {
3929
+ return void 0;
3930
+ }
3931
+ const record = body;
3932
+ const errorField = record.error;
3933
+ if (errorField != null && typeof errorField === "object") {
3934
+ const message = errorField.message;
3935
+ if (typeof message === "string") {
3936
+ return message;
3937
+ }
3938
+ }
3939
+ if (typeof record.message === "string") {
3940
+ return record.message;
3941
+ }
3942
+ return void 0;
3943
+ }
3944
+ function writeStyledMessage(stream, style, message) {
3945
+ stream.write(`${formatStyledMessage(stream, style, message)}
3946
+ `);
3947
+ }
3948
+ function formatStyledMessage(stream, style, message) {
3949
+ if (!shouldRenderColor(stream)) {
3950
+ return message;
3951
+ }
3952
+ return renderToString(
3953
+ createElement(
3954
+ Text,
3955
+ {
3956
+ ...statusStylePropsByOutputStyle[style],
3957
+ wrap: "wrap"
3958
+ },
3959
+ message
3960
+ ),
3961
+ {
3962
+ columns: 1e4
3963
+ }
3964
+ );
3965
+ }
3966
+ function formatMarkdownMessage(stream, markdown) {
3967
+ if (resolveOutputFormat() === "markdown") {
3968
+ return markdown;
3969
+ }
3970
+ const useColor = shouldRenderColor(stream);
3971
+ const markdownWidth = clampMarkdownWidth(stream.columns);
3972
+ const preparedMarkdown = prepareMarkdownForTerminal(markdown);
3973
+ const renderedMarkdown = renderToString(
3974
+ createElement(Markdown, {
3975
+ ...createMarkdownTheme(useColor),
3976
+ children: preparedMarkdown,
3977
+ width: markdownWidth
3978
+ }),
3979
+ {
3980
+ columns: markdownWidth
3981
+ }
3982
+ );
3983
+ return useColor ? renderedMarkdown.trimEnd() : stripAnsi(renderedMarkdown).trimEnd();
3984
+ }
3985
+ function formatComponentMessage(stream, element) {
3986
+ const useColor = shouldRenderColor(stream);
3987
+ const renderWidth = clampMarkdownWidth(stream.columns);
3988
+ const rendered = renderToString(element, {
3989
+ columns: renderWidth
3560
3990
  });
3991
+ return useColor ? rendered.trimEnd() : stripAnsi(rendered).trimEnd();
3561
3992
  }
3562
- async function readBackendHealth(options) {
3563
- try {
3564
- const client = createCngApiClient(options);
3565
- const health = await client.system.getHealth();
3566
- return {
3567
- ok: true,
3568
- service: health.service
3569
- };
3570
- } catch (error) {
3571
- return {
3572
- ok: false,
3573
- message: error instanceof Error ? error.message : "unknown error"
3574
- };
3993
+ function prepareMarkdownForTerminal(markdown) {
3994
+ if (!markdown.startsWith("---\n")) {
3995
+ return markdown;
3996
+ }
3997
+ const frontmatterEndIndex = markdown.indexOf("\n---", 4);
3998
+ if (frontmatterEndIndex < 0) {
3999
+ return formatFrontmatterForTerminal(markdown.slice(4).trimEnd());
4000
+ }
4001
+ const frontmatter = markdown.slice(4, frontmatterEndIndex).trimEnd();
4002
+ const body = markdown.slice(frontmatterEndIndex + "\n---".length).replace(/^\n+/, "");
4003
+ return `${formatFrontmatterForTerminal(frontmatter)}
4004
+
4005
+ ${body}`;
4006
+ }
4007
+ function formatFrontmatterForTerminal(frontmatter) {
4008
+ return `## Metadata
4009
+
4010
+ \`\`\`yaml
4011
+ ${frontmatter}
4012
+ \`\`\``;
4013
+ }
4014
+ function shouldRenderColor(stream) {
4015
+ if (process3.env.CNGKIT_NO_COLOR === "1") {
4016
+ return false;
4017
+ }
4018
+ const colorMode = process3.env.CNGKIT_COLOR?.toLowerCase();
4019
+ if (colorMode === "never" || colorMode === "0" || colorMode === "false") {
4020
+ return false;
4021
+ }
4022
+ if (colorMode === "always" || colorMode === "1" || colorMode === "true") {
4023
+ return true;
4024
+ }
4025
+ if (process3.env.FORCE_COLOR !== void 0 && process3.env.FORCE_COLOR !== "0") {
4026
+ return true;
4027
+ }
4028
+ if (process3.env.NO_COLOR !== void 0) {
4029
+ return false;
4030
+ }
4031
+ return stream.isTTY === true;
4032
+ }
4033
+ function clampMarkdownWidth(columns) {
4034
+ if (columns === void 0) {
4035
+ return 100;
3575
4036
  }
4037
+ return Math.max(72, Math.min(columns, 120));
3576
4038
  }
3577
4039
 
3578
4040
  export {
3579
- createCngApiClient,
3580
- readBackendHealth
4041
+ CngApiClient,
4042
+ packageVersion,
4043
+ resolveApiBaseUrl,
4044
+ resolveOutputFormat,
4045
+ parseOutputFormat,
4046
+ createRoomCode,
4047
+ createPeerId,
4048
+ consoleOutput,
4049
+ createCommandOutput,
4050
+ formatError
3581
4051
  };
3582
- //# sourceMappingURL=chunk-FJ34NVQ4.js.map
4052
+ //# sourceMappingURL=chunk-7SO75QXJ.js.map