coolhand-cli 0.11.1 → 0.12.0

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 (88) hide show
  1. package/README.md +8 -0
  2. package/dist/api/client-file-client.d.ts +19 -0
  3. package/dist/api/client-file-client.d.ts.map +1 -0
  4. package/dist/api/client-file-client.js +47 -0
  5. package/dist/api/client-file-client.js.map +1 -0
  6. package/dist/api/help-center-client.d.ts +26 -0
  7. package/dist/api/help-center-client.d.ts.map +1 -0
  8. package/dist/api/help-center-client.js +89 -0
  9. package/dist/api/help-center-client.js.map +1 -0
  10. package/dist/api/last-sync.d.ts.map +1 -1
  11. package/dist/api/last-sync.js +2 -1
  12. package/dist/api/last-sync.js.map +1 -1
  13. package/dist/api/workload-client.d.ts +16 -0
  14. package/dist/api/workload-client.d.ts.map +1 -0
  15. package/dist/api/workload-client.js +28 -0
  16. package/dist/api/workload-client.js.map +1 -0
  17. package/dist/auth/callback-server.d.ts.map +1 -1
  18. package/dist/auth/callback-server.js +13 -1
  19. package/dist/auth/callback-server.js.map +1 -1
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +429 -4
  22. package/dist/cli.js.map +1 -1
  23. package/dist/commands/download-client-file.d.ts +9 -0
  24. package/dist/commands/download-client-file.d.ts.map +1 -0
  25. package/dist/commands/download-client-file.js +71 -0
  26. package/dist/commands/download-client-file.js.map +1 -0
  27. package/dist/commands/fetch-log.d.ts.map +1 -1
  28. package/dist/commands/fetch-log.js +9 -0
  29. package/dist/commands/fetch-log.js.map +1 -1
  30. package/dist/commands/get-help-article.d.ts +3 -0
  31. package/dist/commands/get-help-article.d.ts.map +1 -0
  32. package/dist/commands/get-help-article.js +49 -0
  33. package/dist/commands/get-help-article.js.map +1 -0
  34. package/dist/commands/get-template.d.ts.map +1 -1
  35. package/dist/commands/get-template.js +18 -1
  36. package/dist/commands/get-template.js.map +1 -1
  37. package/dist/commands/link-feedback.d.ts +5 -0
  38. package/dist/commands/link-feedback.d.ts.map +1 -0
  39. package/dist/commands/link-feedback.js +89 -0
  40. package/dist/commands/link-feedback.js.map +1 -0
  41. package/dist/commands/list-client-files.d.ts +3 -0
  42. package/dist/commands/list-client-files.d.ts.map +1 -0
  43. package/dist/commands/list-client-files.js +55 -0
  44. package/dist/commands/list-client-files.js.map +1 -0
  45. package/dist/commands/list-help-categories.d.ts +3 -0
  46. package/dist/commands/list-help-categories.d.ts.map +1 -0
  47. package/dist/commands/list-help-categories.js +47 -0
  48. package/dist/commands/list-help-categories.js.map +1 -0
  49. package/dist/commands/search-help-articles.d.ts +3 -0
  50. package/dist/commands/search-help-articles.d.ts.map +1 -0
  51. package/dist/commands/search-help-articles.js +73 -0
  52. package/dist/commands/search-help-articles.js.map +1 -0
  53. package/dist/commands/search-logs.d.ts.map +1 -1
  54. package/dist/commands/search-logs.js +26 -0
  55. package/dist/commands/search-logs.js.map +1 -1
  56. package/dist/commands/search-templates.d.ts.map +1 -1
  57. package/dist/commands/search-templates.js +12 -0
  58. package/dist/commands/search-templates.js.map +1 -1
  59. package/dist/commands/search-workloads.d.ts +3 -0
  60. package/dist/commands/search-workloads.d.ts.map +1 -0
  61. package/dist/commands/search-workloads.js +79 -0
  62. package/dist/commands/search-workloads.js.map +1 -0
  63. package/dist/commands/update-client-file.d.ts +3 -0
  64. package/dist/commands/update-client-file.d.ts.map +1 -0
  65. package/dist/commands/update-client-file.js +39 -0
  66. package/dist/commands/update-client-file.js.map +1 -0
  67. package/dist/errors.d.ts +1 -1
  68. package/dist/errors.d.ts.map +1 -1
  69. package/dist/errors.js.map +1 -1
  70. package/dist/format-cost.d.ts +9 -0
  71. package/dist/format-cost.d.ts.map +1 -0
  72. package/dist/format-cost.js +22 -0
  73. package/dist/format-cost.js.map +1 -0
  74. package/dist/logger.d.ts.map +1 -1
  75. package/dist/logger.js +12 -1
  76. package/dist/logger.js.map +1 -1
  77. package/dist/sessions/redact-secrets.d.ts.map +1 -1
  78. package/dist/sessions/redact-secrets.js +9 -3
  79. package/dist/sessions/redact-secrets.js.map +1 -1
  80. package/dist/skills/skill-scanner.d.ts.map +1 -1
  81. package/dist/skills/skill-scanner.js +3 -1
  82. package/dist/skills/skill-scanner.js.map +1 -1
  83. package/dist/types.d.ts +86 -0
  84. package/dist/types.d.ts.map +1 -1
  85. package/dist/types.js.map +1 -1
  86. package/dist/version.d.ts +2 -2
  87. package/dist/version.js +1 -1
  88. package/package.json +6 -4
@@ -0,0 +1,89 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { CliError, ExitCode } from '../errors.js';
3
+ import { logger, redact } from '../logger.js';
4
+ import { getFeedbackClient } from '../api/feedback-client.js';
5
+ /** Ids may be separated by any whitespace or commas, so a file or pipe can be one-per-line or CSV. */
6
+ export function parseIds(text) {
7
+ return text.split(/[\s,]+/).filter((s) => s.length > 0);
8
+ }
9
+ async function readStdin() {
10
+ const chunks = [];
11
+ for await (const chunk of process.stdin) {
12
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
13
+ }
14
+ return Buffer.concat(chunks).toString('utf8');
15
+ }
16
+ async function collectIds(opts) {
17
+ const ids = [...opts.feedbackIds];
18
+ if (opts.file !== undefined) {
19
+ let text;
20
+ try {
21
+ text = opts.file === '-' ? await readStdin() : await readFile(opts.file, 'utf8');
22
+ }
23
+ catch (err) {
24
+ throw new CliError('INVALID_ARGS', `Could not read feedback ids from ${opts.file}: ${err.message}`);
25
+ }
26
+ ids.push(...parseIds(text));
27
+ }
28
+ if (ids.length === 0) {
29
+ throw new CliError('INVALID_ARGS', 'link-feedback requires at least one <feedback-id> (as arguments or via --file)');
30
+ }
31
+ // Repeats would otherwise be counted as already_linked by the server.
32
+ return [...new Set(ids)];
33
+ }
34
+ function mapLinkError(err, optimizationId) {
35
+ const status = err.status;
36
+ if (status === 401) {
37
+ return new CliError('FEEDBACK_ERROR', "The stored private key was rejected (linking feedback requires a private key). Run 'coolhand login --scope private' to re-authenticate.");
38
+ }
39
+ if (status === 404) {
40
+ return new CliError('FEEDBACK_ERROR', `Optimization "${optimizationId}" not found (or does not belong to this client).`);
41
+ }
42
+ if (status !== undefined) {
43
+ return new CliError('FEEDBACK_ERROR', `Link request failed (${status}): ${err.message}`);
44
+ }
45
+ return new CliError('FEEDBACK_ERROR', `Link request failed: ${err.message}`);
46
+ }
47
+ export async function run(opts) {
48
+ try {
49
+ const ids = await collectIds(opts);
50
+ const coolhand = await getFeedbackClient({ clientId: opts.clientId });
51
+ let result;
52
+ try {
53
+ result = await coolhand.bulkLinkFeedback(opts.optimizationId, ids, opts.note !== undefined ? { note: opts.note } : {});
54
+ }
55
+ catch (err) {
56
+ throw mapLinkError(err, opts.optimizationId);
57
+ }
58
+ if (result === null) {
59
+ // coolhand-node resolves to null only in dryRun mode, which this command never enables.
60
+ throw new CliError('FEEDBACK_ERROR', 'Link request was not sent (dry-run mode).');
61
+ }
62
+ const failed = result.errored > 0;
63
+ if (opts.json) {
64
+ logger.json({ ok: !failed, result });
65
+ }
66
+ else {
67
+ logger.info(`Linked: ${result.linked}`);
68
+ logger.info(`Already linked: ${result.already_linked}`);
69
+ logger.info(`Errored: ${result.errored}`);
70
+ if (result.not_found.length > 0) {
71
+ logger.info(`Not found (${result.not_found.length}): ${result.not_found.join(', ')}`);
72
+ }
73
+ }
74
+ return failed ? ExitCode.USER_ERROR : ExitCode.OK;
75
+ }
76
+ catch (err) {
77
+ if (err instanceof CliError) {
78
+ if (opts.json) {
79
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
80
+ }
81
+ else {
82
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
83
+ }
84
+ return err.exitCode;
85
+ }
86
+ throw err;
87
+ }
88
+ }
89
+ //# sourceMappingURL=link-feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-feedback.js","sourceRoot":"","sources":["../../src/commands/link-feedback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ListClientFilesOptions } from '../types.js';
2
+ export declare function run(opts: ListClientFilesOptions): Promise<number>;
3
+ //# sourceMappingURL=list-client-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-client-files.d.ts","sourceRoot":"","sources":["../../src/commands/list-client-files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,wBAAsB,GAAG,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmDvE"}
@@ -0,0 +1,55 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { getClientFileClient, mapClientFileHttpError } from '../api/client-file-client.js';
4
+ export async function run(opts) {
5
+ try {
6
+ const coolhand = await getClientFileClient({ clientId: opts.clientId });
7
+ const params = {};
8
+ if (opts.status !== undefined) {
9
+ params.status = opts.status;
10
+ }
11
+ if (opts.fileType !== undefined) {
12
+ params.fileType = opts.fileType;
13
+ }
14
+ if (opts.page !== undefined) {
15
+ params.page = opts.page;
16
+ }
17
+ if (opts.perPage !== undefined) {
18
+ params.per = opts.perPage;
19
+ }
20
+ let result;
21
+ try {
22
+ result = await coolhand.listClientFiles(params);
23
+ }
24
+ catch (err) {
25
+ throw mapClientFileHttpError(err, 'Client files not found.');
26
+ }
27
+ if (opts.json) {
28
+ logger.json({ ok: true, result });
29
+ }
30
+ else {
31
+ const { pagination, files } = result;
32
+ logger.info(`Page ${pagination.current_page} of ${pagination.total_pages} (${pagination.total_count} total) — use --page N to navigate`);
33
+ if (files.length === 0) {
34
+ logger.info('No client files matched.');
35
+ }
36
+ for (const f of files) {
37
+ logger.info(`${f.id} ${f.status} ${f.file_type} ${f.name}`);
38
+ }
39
+ }
40
+ return ExitCode.OK;
41
+ }
42
+ catch (err) {
43
+ if (err instanceof CliError) {
44
+ if (opts.json) {
45
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
46
+ }
47
+ else {
48
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
49
+ }
50
+ return err.exitCode;
51
+ }
52
+ throw err;
53
+ }
54
+ }
55
+ //# sourceMappingURL=list-client-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-client-files.js","sourceRoot":"","sources":["../../src/commands/list-client-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3F,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAA4B;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAExE,MAAM,MAAM,GAA0B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,CAAC;QAED,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,sBAAsB,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;YACrC,MAAM,CAAC,IAAI,CACT,QAAQ,UAAU,CAAC,YAAY,OAAO,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,WAAW,oCAAoC,CAC5H,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ListHelpCategoriesOptions } from '../types.js';
2
+ export declare function run(opts: ListHelpCategoriesOptions): Promise<number>;
3
+ //# sourceMappingURL=list-help-categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-help-categories.d.ts","sourceRoot":"","sources":["../../src/commands/list-help-categories.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAY7D,wBAAsB,GAAG,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B1E"}
@@ -0,0 +1,47 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { getHelpCenterClient, mapHelpCenterHttpError } from '../api/help-center-client.js';
4
+ function printCategory(c) {
5
+ logger.info(`${c.slug} — ${c.name} (${c.url_prefix})`);
6
+ if (c.description) {
7
+ logger.info(` ${c.description}`);
8
+ }
9
+ if (c.allowed_tags) {
10
+ logger.info(` Allowed tags: ${c.allowed_tags.join(', ')}`);
11
+ }
12
+ }
13
+ export async function run(opts) {
14
+ try {
15
+ const client = await getHelpCenterClient({ clientId: opts.clientId, baseUrl: opts.baseUrl });
16
+ let categories;
17
+ try {
18
+ categories = await client.service.listHelpCategories();
19
+ }
20
+ catch (err) {
21
+ throw mapHelpCenterHttpError(err, client, 'Help center categories not found.');
22
+ }
23
+ if (opts.json) {
24
+ logger.json({ ok: true, result: categories });
25
+ }
26
+ else {
27
+ for (const category of categories) {
28
+ printCategory(category);
29
+ }
30
+ logger.info('\nFilter a search by section: coolhand search-help-articles --category <slug>');
31
+ }
32
+ return ExitCode.OK;
33
+ }
34
+ catch (err) {
35
+ if (err instanceof CliError) {
36
+ if (opts.json) {
37
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
38
+ }
39
+ else {
40
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
41
+ }
42
+ return err.exitCode;
43
+ }
44
+ throw err;
45
+ }
46
+ }
47
+ //# sourceMappingURL=list-help-categories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-help-categories.js","sourceRoot":"","sources":["../../src/commands/list-help-categories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3F,SAAS,aAAa,CAAC,CAAe;IACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAA+B;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7F,IAAI,UAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,mCAAmC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAClC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SearchHelpArticlesOptions } from '../types.js';
2
+ export declare function run(opts: SearchHelpArticlesOptions): Promise<number>;
3
+ //# sourceMappingURL=search-help-articles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-help-articles.d.ts","sourceRoot":"","sources":["../../src/commands/search-help-articles.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAoB7D,wBAAsB,GAAG,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsD1E"}
@@ -0,0 +1,73 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { getHelpCenterClient, mapHelpCenterHttpError } from '../api/help-center-client.js';
4
+ const MAX_PASSAGE_CHARS = 160;
5
+ function passage(headline) {
6
+ const flat = headline.replace(/<\/?mark>/g, '').replace(/\s+/g, ' ').trim();
7
+ return flat.length > MAX_PASSAGE_CHARS ? `${flat.slice(0, MAX_PASSAGE_CHARS)}…` : flat;
8
+ }
9
+ function printArticle(a, hasQuery) {
10
+ logger.info(`${a.slug} — ${a.title} [${a.article_kind}, ${a.category}]`);
11
+ if (a.answer) {
12
+ logger.info(` ${a.answer}`);
13
+ }
14
+ if (hasQuery && a.search_headline) {
15
+ logger.info(` …${passage(a.search_headline)}`);
16
+ }
17
+ logger.info(` ${a.url}`);
18
+ }
19
+ export async function run(opts) {
20
+ try {
21
+ const client = await getHelpCenterClient({ clientId: opts.clientId, baseUrl: opts.baseUrl });
22
+ const params = {};
23
+ if (opts.query !== undefined) {
24
+ params.query = opts.query;
25
+ }
26
+ if (opts.category !== undefined) {
27
+ params.category = opts.category;
28
+ }
29
+ if (opts.page !== undefined) {
30
+ params.page = opts.page;
31
+ }
32
+ if (opts.perPage !== undefined) {
33
+ params.perPage = opts.perPage;
34
+ }
35
+ let result;
36
+ try {
37
+ result = await client.service.searchHelpArticles(params);
38
+ }
39
+ catch (err) {
40
+ throw mapHelpCenterHttpError(err, client, 'Help center search failed.');
41
+ }
42
+ if (opts.json) {
43
+ logger.json({ ok: true, result });
44
+ }
45
+ else {
46
+ const { articles, pagination } = result;
47
+ logger.info(`Page ${pagination.current_page} of ${pagination.total_pages} (${pagination.total_count} total) — use --page N to navigate`);
48
+ if (articles.length === 0) {
49
+ logger.info('No help articles matched.');
50
+ }
51
+ for (const article of articles) {
52
+ printArticle(article, opts.query !== undefined);
53
+ }
54
+ if (articles.length > 0) {
55
+ logger.info('\nRead one in full: coolhand get-help-article <slug>');
56
+ }
57
+ }
58
+ return ExitCode.OK;
59
+ }
60
+ catch (err) {
61
+ if (err instanceof CliError) {
62
+ if (opts.json) {
63
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
64
+ }
65
+ else {
66
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
67
+ }
68
+ return err.exitCode;
69
+ }
70
+ throw err;
71
+ }
72
+ }
73
+ //# sourceMappingURL=search-help-articles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-help-articles.js","sourceRoot":"","sources":["../../src/commands/search-help-articles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-logs.d.ts","sourceRoot":"","sources":["../../src/commands/search-logs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,wBAAsB,GAAG,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyElE"}
1
+ {"version":3,"file":"search-logs.d.ts","sourceRoot":"","sources":["../../src/commands/search-logs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,wBAAsB,GAAG,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkGlE"}
@@ -1,6 +1,7 @@
1
1
  import { CliError, ExitCode } from '../errors.js';
2
2
  import { logger, redact } from '../logger.js';
3
3
  import { getLogClient, mapLogHttpError } from '../api/log-client.js';
4
+ import { formatCost } from '../format-cost.js';
4
5
  export async function run(opts) {
5
6
  try {
6
7
  const coolhand = await getLogClient({ clientId: opts.clientId });
@@ -32,9 +33,31 @@ export async function run(opts) {
32
33
  if (opts.daysBack !== undefined) {
33
34
  params.daysBack = opts.daysBack;
34
35
  }
36
+ if (opts.sourceApplication !== undefined) {
37
+ params.sourceApplication = opts.sourceApplication;
38
+ }
39
+ if (opts.projectPath !== undefined) {
40
+ params.projectPath = opts.projectPath;
41
+ }
42
+ if (opts.since !== undefined) {
43
+ params.since = opts.since;
44
+ }
45
+ if (opts.until !== undefined) {
46
+ params.until = opts.until;
47
+ }
48
+ if (opts.minCost !== undefined) {
49
+ params.minCost = opts.minCost;
50
+ }
51
+ if (opts.order !== undefined) {
52
+ // Not allowlisted client-side: an unknown value is a server 422 that surfaces as a CliError.
53
+ params.order = opts.order;
54
+ }
35
55
  if (opts.includePrompts) {
36
56
  params.includePrompts = true;
37
57
  }
58
+ if (opts.includeTotal) {
59
+ params.includeTotal = true;
60
+ }
38
61
  if (opts.sort !== undefined) {
39
62
  params.sort = opts.sort;
40
63
  }
@@ -57,6 +80,9 @@ export async function run(opts) {
57
80
  else {
58
81
  const { pagination } = result;
59
82
  logger.info(`Page ${pagination.current_page} of ${pagination.total_pages} (${pagination.total_count} total) — use --page N to navigate`);
83
+ for (const log of result.logs) {
84
+ logger.info(`${log.id} cost ${formatCost(log.cost)}`);
85
+ }
60
86
  logger.info(JSON.stringify(result, null, 2));
61
87
  }
62
88
  return ExitCode.OK;
@@ -1 +1 @@
1
- {"version":3,"file":"search-logs.js","sourceRoot":"","sources":["../../src/commands/search-logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-logs.js","sourceRoot":"","sources":["../../src/commands/search-logs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-templates.d.ts","sourceRoot":"","sources":["../../src/commands/search-templates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAK1D,wBAAsB,GAAG,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4DvE"}
1
+ {"version":3,"file":"search-templates.d.ts","sourceRoot":"","sources":["../../src/commands/search-templates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAK1D,wBAAsB,GAAG,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwEvE"}
@@ -21,6 +21,18 @@ export async function run(opts) {
21
21
  if (opts.includeSystem) {
22
22
  params.includeSystem = true;
23
23
  }
24
+ if (opts.includeMetrics) {
25
+ params.includeMetrics = true;
26
+ }
27
+ if (opts.daysBack !== undefined) {
28
+ params.daysBack = opts.daysBack;
29
+ }
30
+ if (opts.since !== undefined) {
31
+ params.since = opts.since;
32
+ }
33
+ if (opts.until !== undefined) {
34
+ params.until = opts.until;
35
+ }
24
36
  if (opts.page !== undefined) {
25
37
  params.page = opts.page;
26
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search-templates.js","sourceRoot":"","sources":["../../src/commands/search-templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-templates.js","sourceRoot":"","sources":["../../src/commands/search-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SearchWorkloadsOptions } from '../types.js';
2
+ export declare function run(opts: SearchWorkloadsOptions): Promise<number>;
3
+ //# sourceMappingURL=search-workloads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-workloads.d.ts","sourceRoot":"","sources":["../../src/commands/search-workloads.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,wBAAsB,GAAG,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4EvE"}
@@ -0,0 +1,79 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { getWorkloadClient, mapWorkloadHttpError } from '../api/workload-client.js';
4
+ import { metricsLines } from '../format-cost.js';
5
+ export async function run(opts) {
6
+ try {
7
+ const coolhand = await getWorkloadClient({ clientId: opts.clientId });
8
+ const params = {};
9
+ if (opts.search !== undefined) {
10
+ params.search = opts.search;
11
+ }
12
+ if (opts.includeArchived) {
13
+ params.includeArchived = true;
14
+ }
15
+ if (opts.includeSystem) {
16
+ params.includeSystem = true;
17
+ }
18
+ if (opts.includeTemplates) {
19
+ params.includeTemplates = true;
20
+ }
21
+ if (opts.includeMetrics) {
22
+ params.includeMetrics = true;
23
+ }
24
+ if (opts.daysBack !== undefined) {
25
+ params.daysBack = opts.daysBack;
26
+ }
27
+ if (opts.since !== undefined) {
28
+ params.since = opts.since;
29
+ }
30
+ if (opts.until !== undefined) {
31
+ params.until = opts.until;
32
+ }
33
+ if (opts.page !== undefined) {
34
+ params.page = opts.page;
35
+ }
36
+ if (opts.perPage !== undefined) {
37
+ params.per = opts.perPage;
38
+ }
39
+ let result;
40
+ try {
41
+ result = await coolhand.searchWorkloads(params);
42
+ }
43
+ catch (err) {
44
+ throw mapWorkloadHttpError(err);
45
+ }
46
+ if (opts.json) {
47
+ logger.json({ ok: true, result });
48
+ }
49
+ else {
50
+ const { pagination } = result;
51
+ logger.info(`Page ${pagination.current_page} of ${pagination.total_pages} (${pagination.total_count} total) — use --page N to navigate`);
52
+ for (const w of result.workloads) {
53
+ logger.info(`${w.id} ${w.name} (${w.template_count} templates, ${w.log_count} logs)`);
54
+ for (const t of w.templates ?? []) {
55
+ logger.info(` template ${t.id} ${t.name}${t.status ? ` (${t.status})` : ''}`);
56
+ }
57
+ if (w.metrics) {
58
+ for (const line of metricsLines(w.metrics)) {
59
+ logger.info(` ${line}`);
60
+ }
61
+ }
62
+ }
63
+ }
64
+ return ExitCode.OK;
65
+ }
66
+ catch (err) {
67
+ if (err instanceof CliError) {
68
+ if (opts.json) {
69
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
70
+ }
71
+ else {
72
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
73
+ }
74
+ return err.exitCode;
75
+ }
76
+ throw err;
77
+ }
78
+ }
79
+ //# sourceMappingURL=search-workloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-workloads.js","sourceRoot":"","sources":["../../src/commands/search-workloads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { UpdateClientFileOptions } from '../types.js';
2
+ export declare function run(opts: UpdateClientFileOptions): Promise<number>;
3
+ //# sourceMappingURL=update-client-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-client-file.d.ts","sourceRoot":"","sources":["../../src/commands/update-client-file.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,wBAAsB,GAAG,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCxE"}
@@ -0,0 +1,39 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { getClientFileClient, mapClientFileHttpError } from '../api/client-file-client.js';
4
+ export async function run(opts) {
5
+ try {
6
+ const coolhand = await getClientFileClient({ clientId: opts.clientId });
7
+ let result;
8
+ try {
9
+ result = await coolhand.updateClientFileStatus(opts.id, opts.status);
10
+ }
11
+ catch (err) {
12
+ throw mapClientFileHttpError(err, `Client file "${opts.id}" not found (or does not belong to this client).`);
13
+ }
14
+ if (result === null) {
15
+ // updateClientFileStatus only resolves to null in the SDK's dryRun mode, which the CLI never enables.
16
+ throw new CliError('CLIENT_FILE_ERROR', `Client file "${opts.id}" was not updated: no response received.`);
17
+ }
18
+ if (opts.json) {
19
+ logger.json({ ok: true, result });
20
+ }
21
+ else {
22
+ logger.info(`Client file "${result.name}" (id: ${result.id}) is now ${result.status}.`);
23
+ }
24
+ return ExitCode.OK;
25
+ }
26
+ catch (err) {
27
+ if (err instanceof CliError) {
28
+ if (opts.json) {
29
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
30
+ }
31
+ else {
32
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
33
+ }
34
+ return err.exitCode;
35
+ }
36
+ throw err;
37
+ }
38
+ }
39
+ //# sourceMappingURL=update-client-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-client-file.js","sourceRoot":"","sources":["../../src/commands/update-client-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3F,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAA6B;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAExE,IAAI,MAAyC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,IAAI,CAAC,EAAE,kDAAkD,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,sGAAsG;YACtG,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,gBAAgB,IAAI,CAAC,EAAE,0CAA0C,CAAC,CAAC;QAC7G,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,EAAE,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -4,7 +4,7 @@ export declare enum ExitCode {
4
4
  INTERNAL = 2,
5
5
  ABORTED = 130
6
6
  }
7
- export type ErrorCode = 'TIMEOUT' | 'STATE_MISMATCH' | 'INVALID_CALLBACK' | 'BROWSER_FAILED' | 'CONFIG_WRITE_FAILED' | 'CONFIG_READ_FAILED' | 'NOT_CONFIGURED' | 'INVALID_REDIRECT_URI' | 'INVALID_BASE_URL' | 'INVALID_ARGS' | 'WRITE_ENV_FAILED' | 'CLIENT_NOT_FOUND' | 'NO_PRIVATE_KEY' | 'MCP_ERROR' | 'INGEST_ERROR' | 'FEEDBACK_ERROR' | 'LOG_ERROR' | 'TEMPLATE_ERROR' | 'LLM_REFERENCE_ERROR' | 'CERT_FILE_INSECURE' | 'UPLOAD_ERROR' | 'OUTPUT_EXISTS';
7
+ export type ErrorCode = 'TIMEOUT' | 'STATE_MISMATCH' | 'INVALID_CALLBACK' | 'BROWSER_FAILED' | 'CONFIG_WRITE_FAILED' | 'CONFIG_READ_FAILED' | 'NOT_CONFIGURED' | 'INVALID_REDIRECT_URI' | 'INVALID_BASE_URL' | 'INVALID_ARGS' | 'WRITE_ENV_FAILED' | 'CLIENT_NOT_FOUND' | 'NO_PRIVATE_KEY' | 'MCP_ERROR' | 'INGEST_ERROR' | 'FEEDBACK_ERROR' | 'LOG_ERROR' | 'TEMPLATE_ERROR' | 'WORKLOAD_ERROR' | 'LLM_REFERENCE_ERROR' | 'HELP_CENTER_ERROR' | 'CERT_FILE_INSECURE' | 'UPLOAD_ERROR' | 'CLIENT_FILE_ERROR' | 'OUTPUT_EXISTS';
8
8
  export declare class CliError extends Error {
9
9
  readonly code: ErrorCode;
10
10
  readonly exitCode: number;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,EAAE,IAAI;IACN,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,OAAO,MAAM;CACd;AAED,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,oBAAoB,GACpB,gBAAgB,GAChB,sBAAsB,GACtB,kBAAkB,GAClB,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,gBAAgB,GAChB,qBAAqB,GACrB,oBAAoB,GACpB,cAAc,GACd,eAAe,CAAC;AAEpB,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA4B;CAMrF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,EAAE,IAAI;IACN,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,OAAO,MAAM;CACd;AAED,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,oBAAoB,GACpB,gBAAgB,GAChB,sBAAsB,GACtB,kBAAkB,GAClB,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,gBAAgB,GAChB,gBAAgB,GAChB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,cAAc,GACd,mBAAmB,GACnB,eAAe,CAAC;AAEpB,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA4B;CAMrF"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,mCAAM,CAAA;IACN,mDAAc,CAAA;IACd,+CAAY,CAAA;IACZ,+CAAa,CAAA;AACf,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AA0BD,MAAM,OAAO,QAAS,SAAQ,KAAK;IAIjC,YAAY,IAAe,EAAE,OAAe,EAAE,WAAmB,QAAQ,CAAC,UAAU;QAClF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,mCAAM,CAAA;IACN,mDAAc,CAAA;IACd,+CAAY,CAAA;IACZ,+CAAa,CAAA;AACf,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AA6BD,MAAM,OAAO,QAAS,SAAQ,KAAK;IAIjC,YAAY,IAAe,EAAE,OAAe,EAAE,WAAmB,QAAQ,CAAC,UAAU;QAClF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import type { LlmMetrics } from 'coolhand-node';
2
+ /**
3
+ * USD with 4 decimals, or `n/a` when the server could not price it (`null`). A positive cost that
4
+ * would round to `$0.0000` prints as `<$0.0001` so a cheap-but-priced log never reads as free.
5
+ */
6
+ export declare function formatCost(cost: number | null | undefined): string;
7
+ /** The human-readable metrics summary shared by search-workloads and get-template. */
8
+ export declare function metricsLines(m: LlmMetrics): string[];
9
+ //# sourceMappingURL=format-cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-cost.d.ts","sourceRoot":"","sources":["../src/format-cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAMlE;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAQpD"}