cngkit 1.1.15 → 1.1.16
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 +30 -12
- package/dist/{chunk-Q3F7DVFP.js → chunk-7KQBSEQV.js} +84 -8
- package/dist/chunk-7KQBSEQV.js.map +1 -0
- package/dist/{chunk-55BKHXBM.js → chunk-F7ZOO3P5.js} +3 -3
- package/dist/{chunk-IG7DJU7W.js → chunk-GZ2DPIU6.js} +39 -30
- package/dist/chunk-GZ2DPIU6.js.map +1 -0
- package/dist/{chunk-CSP6OWQH.js → chunk-MJVMVXV5.js} +15 -15
- package/dist/chunk-MJVMVXV5.js.map +1 -0
- package/dist/{chunk-TNYB67MX.js → chunk-NRWEU6YQ.js} +21 -13
- package/dist/chunk-NRWEU6YQ.js.map +1 -0
- package/dist/{chunk-JX33GP2L.js → chunk-W7X6HWP5.js} +2 -2
- package/dist/{chunk-QZEB4VMX.js → chunk-XQGLUQFM.js} +5 -1
- package/dist/chunk-XQGLUQFM.js.map +1 -0
- package/dist/cli.js +100 -23
- package/dist/cli.js.map +1 -1
- package/dist/commands/coderoom/index.js +3 -3
- package/dist/commands/coderoom/join.js +4 -5
- package/dist/commands/coderoom/join.js.map +1 -1
- package/dist/commands/coderoom/share.js +4 -5
- package/dist/commands/coderoom/share.js.map +1 -1
- package/dist/commands/index.js +3 -3
- package/dist/commands/knowledges/audiences.js +6 -7
- package/dist/commands/knowledges/audiences.js.map +1 -1
- package/dist/commands/knowledges/files.js +6 -7
- package/dist/commands/knowledges/files.js.map +1 -1
- package/dist/commands/knowledges/glob.js +6 -7
- package/dist/commands/knowledges/glob.js.map +1 -1
- package/dist/commands/knowledges/grep.js +6 -7
- package/dist/commands/knowledges/grep.js.map +1 -1
- package/dist/commands/knowledges/index.js +3 -3
- package/dist/commands/knowledges/list.js +6 -7
- package/dist/commands/knowledges/list.js.map +1 -1
- package/dist/commands/knowledges/read.js +6 -7
- package/dist/commands/knowledges/read.js.map +1 -1
- package/dist/commands/knowledges/search.js +7 -8
- package/dist/commands/knowledges/search.js.map +1 -1
- package/dist/commands/knowledges/status.js +6 -7
- package/dist/commands/knowledges/status.js.map +1 -1
- package/dist/commands/login.js +4 -5
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/scrub.js +2 -2
- package/dist/commands/transcripts.js +8 -7
- package/dist/commands/transcripts.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-CSP6OWQH.js.map +0 -1
- package/dist/chunk-IG7DJU7W.js.map +0 -1
- package/dist/chunk-Q3F7DVFP.js.map +0 -1
- package/dist/chunk-QZEB4VMX.js.map +0 -1
- package/dist/chunk-TNYB67MX.js.map +0 -1
- package/dist/chunk-U6XERHCZ.js +0 -22
- package/dist/chunk-U6XERHCZ.js.map +0 -1
- /package/dist/{chunk-55BKHXBM.js.map → chunk-F7ZOO3P5.js.map} +0 -0
- /package/dist/{chunk-JX33GP2L.js.map → chunk-W7X6HWP5.js.map} +0 -0
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ cngkit coderoom share
|
|
|
41
41
|
cngkit coderoom join <room-code>
|
|
42
42
|
cngkit scrub [path]
|
|
43
43
|
cngkit transcripts list --limit 12
|
|
44
|
-
cngkit knowledges search
|
|
44
|
+
cngkit knowledges search Cloudflare --limit 3
|
|
45
45
|
cngkit knowledges read /libraries/lib-cloudflare/SUBSKILL.md --limit 80
|
|
46
46
|
```
|
|
47
47
|
|
|
@@ -94,7 +94,7 @@ cngkit knowledges status
|
|
|
94
94
|
Find relevant knowledge:
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
|
-
cngkit knowledges search
|
|
97
|
+
cngkit knowledges search Cloudflare --limit 3
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Read a catalog file:
|
|
@@ -119,7 +119,7 @@ Return JSON for another tool:
|
|
|
119
119
|
|
|
120
120
|
```bash
|
|
121
121
|
cngkit knowledges status --json
|
|
122
|
-
cngkit knowledges search "vector search" --limit 5
|
|
122
|
+
cngkit --format json knowledges search "vector search" --limit 5
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
Catalog path shortcuts are supported. For example:
|
|
@@ -219,9 +219,26 @@ Or with an environment variable:
|
|
|
219
219
|
CNGKIT_API_BASE_URL=https://curly.ng cngkit knowledges status
|
|
220
220
|
```
|
|
221
221
|
|
|
222
|
+
## Output Format
|
|
223
|
+
|
|
224
|
+
Human-facing output renders as structured terminal text by default, including help
|
|
225
|
+
screens and Markdown catalog reads. Use explicit formats when a script needs data or
|
|
226
|
+
source text:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
cngkit --format text --help
|
|
230
|
+
cngkit --format json knowledges status
|
|
231
|
+
cngkit --format markdown knowledges read /libraries/lib-cloudflare/SUBSKILL.md
|
|
232
|
+
cngkit --no-color knowledges status
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
`--json` remains available on read-only data commands as a short alias for JSON output.
|
|
236
|
+
`--format markdown` is intentionally source-oriented; default terminal output should not
|
|
237
|
+
show raw Markdown syntax.
|
|
238
|
+
|
|
222
239
|
## Help
|
|
223
240
|
|
|
224
|
-
Help is baked into the CLI
|
|
241
|
+
Help is baked into the CLI and rendered for terminal reading:
|
|
225
242
|
|
|
226
243
|
```bash
|
|
227
244
|
cngkit --help
|
|
@@ -232,10 +249,11 @@ cngkit knowledges read --help
|
|
|
232
249
|
cngkit transcripts --help
|
|
233
250
|
```
|
|
234
251
|
|
|
235
|
-
Help uses terminal Markdown rendering in interactive terminals. Status, warnings,
|
|
236
|
-
use Ink color when the terminal supports it,
|
|
237
|
-
results, and
|
|
238
|
-
`CNGKIT_COLOR=
|
|
252
|
+
Help uses terminal Markdown rendering in interactive terminals and pipes. Status, warnings,
|
|
253
|
+
and errors use Ink color when the terminal supports it, while `--format json`, glob results,
|
|
254
|
+
grep results, and other parse-oriented output stay clean. Use `--no-color` or
|
|
255
|
+
`CNGKIT_COLOR=never` to disable CLI color, or `CNGKIT_COLOR=always` to force it in a wrapper
|
|
256
|
+
that does not report itself as a TTY.
|
|
239
257
|
|
|
240
258
|
## Terminal UI Stack
|
|
241
259
|
|
|
@@ -263,8 +281,8 @@ src/commands/
|
|
|
263
281
|
|
|
264
282
|
The CLI does not hand-roll ANSI escape codes. Status styles go through Ink's built-in
|
|
265
283
|
`<Text color="..." bold dimColor>` support, and help screens render through
|
|
266
|
-
`marked-terminal` with a shared Chalk-backed theme. Commands that return
|
|
267
|
-
or shell pipelines write
|
|
284
|
+
`marked-terminal` with a shared Chalk-backed theme. Commands that return parse-oriented
|
|
285
|
+
content for agents or shell pipelines write clean lines instead.
|
|
268
286
|
|
|
269
287
|
## For Contributors
|
|
270
288
|
|
|
@@ -283,8 +301,8 @@ The route files under `src/commands/` should stay thin. Put behavior in
|
|
|
283
301
|
For output, use the shared `CommandOutput` methods:
|
|
284
302
|
|
|
285
303
|
- `success`, `warning`, `info`, `muted`, and `error` for human-facing terminal status.
|
|
286
|
-
- `markdown` for help screens and
|
|
287
|
-
- `raw` for JSON,
|
|
304
|
+
- `markdown` for help screens and Markdown content that should render by default.
|
|
305
|
+
- `raw` for JSON, explicit source output, file paths, grep results, and anything another tool may parse.
|
|
288
306
|
|
|
289
307
|
Useful local checks:
|
|
290
308
|
|
|
@@ -1,5 +1,34 @@
|
|
|
1
|
-
// src/shared/
|
|
1
|
+
// src/shared/config.ts
|
|
2
|
+
import { randomBytes, randomUUID } from "crypto";
|
|
2
3
|
import process from "process";
|
|
4
|
+
var packageVersion = "1.1.16";
|
|
5
|
+
var defaultApiBaseUrl = "https://curly.ng";
|
|
6
|
+
function resolveApiBaseUrl(options) {
|
|
7
|
+
return options.apiBaseUrl ?? process.env.CNGKIT_API_BASE_URL ?? defaultApiBaseUrl;
|
|
8
|
+
}
|
|
9
|
+
function resolveOutputFormat() {
|
|
10
|
+
const value = process.env.CNGKIT_FORMAT?.toLowerCase();
|
|
11
|
+
if (value === "json" || value === "markdown") {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
return "text";
|
|
15
|
+
}
|
|
16
|
+
function parseOutputFormat(value) {
|
|
17
|
+
const normalizedValue = value.toLowerCase();
|
|
18
|
+
if (normalizedValue === "text" || normalizedValue === "json" || normalizedValue === "markdown") {
|
|
19
|
+
return normalizedValue;
|
|
20
|
+
}
|
|
21
|
+
throw new Error("Unknown --format value. Use one of: text, json, markdown.");
|
|
22
|
+
}
|
|
23
|
+
function createRoomCode() {
|
|
24
|
+
return randomBytes(4).toString("hex").toUpperCase();
|
|
25
|
+
}
|
|
26
|
+
function createPeerId() {
|
|
27
|
+
return randomUUID();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// src/shared/output.ts
|
|
31
|
+
import process2 from "process";
|
|
3
32
|
import { Marked } from "marked";
|
|
4
33
|
import { markedTerminal } from "marked-terminal";
|
|
5
34
|
import { createElement } from "react";
|
|
@@ -74,9 +103,18 @@ function decorateMarkdownOutput(output) {
|
|
|
74
103
|
return `${prefix}${chalk.magentaBright("-")} `;
|
|
75
104
|
});
|
|
76
105
|
}
|
|
106
|
+
function normalizeRenderedMarkdownOutput(output) {
|
|
107
|
+
return output.split("\n").map((line) => {
|
|
108
|
+
const headingMatch = line.match(/^(\s*)#{1,6}\s+(.+)$/);
|
|
109
|
+
if (headingMatch) {
|
|
110
|
+
return `${headingMatch[1]}${headingMatch[2]}`;
|
|
111
|
+
}
|
|
112
|
+
return line.replace(/^(\s*)\*\s+/, "$1- ");
|
|
113
|
+
}).join("\n").replace(/`([^`\n]+)`/g, "$1");
|
|
114
|
+
}
|
|
77
115
|
|
|
78
116
|
// src/shared/output.ts
|
|
79
|
-
var consoleOutput = createCommandOutput(
|
|
117
|
+
var consoleOutput = createCommandOutput(process2.stdout, process2.stderr);
|
|
80
118
|
function createCommandOutput(stdout, stderr) {
|
|
81
119
|
return {
|
|
82
120
|
info(message) {
|
|
@@ -130,7 +168,7 @@ function formatStyledMessage(stream, style, message) {
|
|
|
130
168
|
);
|
|
131
169
|
}
|
|
132
170
|
function formatMarkdownMessage(stream, markdown) {
|
|
133
|
-
if (
|
|
171
|
+
if (resolveOutputFormat() === "markdown") {
|
|
134
172
|
return markdown;
|
|
135
173
|
}
|
|
136
174
|
const useColor = shouldRenderColor(stream);
|
|
@@ -138,22 +176,54 @@ function formatMarkdownMessage(stream, markdown) {
|
|
|
138
176
|
const parser = new Marked();
|
|
139
177
|
parser.use(
|
|
140
178
|
markedTerminal({
|
|
141
|
-
...createMarkdownTheme(
|
|
179
|
+
...createMarkdownTheme(false),
|
|
142
180
|
width: markdownWidth
|
|
143
181
|
})
|
|
144
182
|
);
|
|
145
|
-
const
|
|
183
|
+
const preparedMarkdown = prepareMarkdownForTerminal(markdown);
|
|
184
|
+
const renderedMarkdown = normalizeRenderedMarkdownOutput(
|
|
185
|
+
`${preparedMarkdown.prefix}${String(parser.parse(preparedMarkdown.body)).trimEnd()}`
|
|
186
|
+
);
|
|
146
187
|
return useColor ? decorateMarkdownOutput(renderedMarkdown) : stripAnsi2(renderedMarkdown);
|
|
147
188
|
}
|
|
189
|
+
function prepareMarkdownForTerminal(markdown) {
|
|
190
|
+
if (!markdown.startsWith("---\n")) {
|
|
191
|
+
return { prefix: "", body: markdown };
|
|
192
|
+
}
|
|
193
|
+
const frontmatterEndIndex = markdown.indexOf("\n---", 4);
|
|
194
|
+
if (frontmatterEndIndex < 0) {
|
|
195
|
+
return {
|
|
196
|
+
prefix: formatFrontmatterForTerminal(markdown.slice(4).trimEnd()),
|
|
197
|
+
body: ""
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
const frontmatter = markdown.slice(4, frontmatterEndIndex).trimEnd();
|
|
201
|
+
const body = markdown.slice(frontmatterEndIndex + "\n---".length).replace(/^\n+/, "");
|
|
202
|
+
return {
|
|
203
|
+
prefix: formatFrontmatterForTerminal(frontmatter),
|
|
204
|
+
body
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function formatFrontmatterForTerminal(frontmatter) {
|
|
208
|
+
const formattedFrontmatter = frontmatter.split("\n").map((line) => ` ${line}`).join("\n");
|
|
209
|
+
return `Metadata
|
|
210
|
+
|
|
211
|
+
${formattedFrontmatter}
|
|
212
|
+
|
|
213
|
+
`;
|
|
214
|
+
}
|
|
148
215
|
function shouldRenderColor(stream) {
|
|
149
|
-
|
|
216
|
+
if (process2.env.NO_COLOR !== void 0 || process2.env.CNGKIT_NO_COLOR === "1") {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
const colorMode = process2.env.CNGKIT_COLOR?.toLowerCase();
|
|
150
220
|
if (colorMode === "never" || colorMode === "0" || colorMode === "false") {
|
|
151
221
|
return false;
|
|
152
222
|
}
|
|
153
223
|
if (colorMode === "always" || colorMode === "1" || colorMode === "true") {
|
|
154
224
|
return true;
|
|
155
225
|
}
|
|
156
|
-
if (
|
|
226
|
+
if (process2.env.FORCE_COLOR !== void 0 && process2.env.FORCE_COLOR !== "0") {
|
|
157
227
|
return true;
|
|
158
228
|
}
|
|
159
229
|
return stream.isTTY === true;
|
|
@@ -166,8 +236,14 @@ function clampMarkdownWidth(columns) {
|
|
|
166
236
|
}
|
|
167
237
|
|
|
168
238
|
export {
|
|
239
|
+
packageVersion,
|
|
240
|
+
resolveApiBaseUrl,
|
|
241
|
+
resolveOutputFormat,
|
|
242
|
+
parseOutputFormat,
|
|
243
|
+
createRoomCode,
|
|
244
|
+
createPeerId,
|
|
169
245
|
consoleOutput,
|
|
170
246
|
createCommandOutput,
|
|
171
247
|
formatError
|
|
172
248
|
};
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
249
|
+
//# sourceMappingURL=chunk-7KQBSEQV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/config.ts","../src/shared/output.ts","../src/shared/theme.ts"],"sourcesContent":["import { randomBytes, randomUUID } from \"node:crypto\";\nimport process from \"node:process\";\n\nexport const packageVersion = \"1.1.16\";\nexport const defaultApiBaseUrl = \"https://curly.ng\";\nexport const outputFormats = [\"text\", \"json\", \"markdown\"] as const;\n\nexport type OutputFormat = (typeof outputFormats)[number];\n\nexport type GlobalCommandOptions = {\n apiBaseUrl?: string;\n};\n\nexport function resolveApiBaseUrl(options: GlobalCommandOptions): string {\n return options.apiBaseUrl ?? process.env.CNGKIT_API_BASE_URL ?? defaultApiBaseUrl;\n}\n\nexport function resolveOutputFormat(): OutputFormat {\n const value = process.env.CNGKIT_FORMAT?.toLowerCase();\n if (value === \"json\" || value === \"markdown\") {\n return value;\n }\n\n return \"text\";\n}\n\nexport function parseOutputFormat(value: string): OutputFormat {\n const normalizedValue = value.toLowerCase();\n if (normalizedValue === \"text\" || normalizedValue === \"json\" || normalizedValue === \"markdown\") {\n return normalizedValue;\n }\n\n throw new Error(\"Unknown --format value. Use one of: text, json, markdown.\");\n}\n\nexport function createRoomCode(): string {\n return randomBytes(4).toString(\"hex\").toUpperCase();\n}\n\nexport function createPeerId(): string {\n return randomUUID();\n}\n","import process from \"node:process\";\nimport { Marked, type MarkedExtension } from \"marked\";\nimport { markedTerminal } from \"marked-terminal\";\nimport { createElement } from \"react\";\nimport { renderToString, Text } from \"ink\";\nimport stripAnsi from \"strip-ansi\";\nimport {\n createMarkdownTheme,\n decorateMarkdownOutput,\n normalizeRenderedMarkdownOutput,\n statusStylePropsByOutputStyle,\n type OutputStyle,\n} from \"./theme.js\";\nimport { resolveOutputFormat } from \"./config.js\";\n\ntype OutputStream = NodeJS.WriteStream & {\n isTTY?: boolean;\n columns?: number;\n};\n\nexport type CommandOutput = {\n info(message: string): void;\n success(message: string): void;\n warning(message: string): void;\n muted(message: string): void;\n markdown(message: string): void;\n raw(message: string): void;\n error(message: string): void;\n};\n\nexport const consoleOutput = createCommandOutput(process.stdout, process.stderr);\n\nexport function createCommandOutput(stdout: OutputStream, stderr: OutputStream): CommandOutput {\n return {\n info(message) {\n writeStyledMessage(stdout, \"info\", message);\n },\n success(message) {\n writeStyledMessage(stdout, \"success\", message);\n },\n warning(message) {\n writeStyledMessage(stdout, \"warning\", message);\n },\n muted(message) {\n writeStyledMessage(stdout, \"muted\", message);\n },\n markdown(message) {\n stdout.write(`${formatMarkdownMessage(stdout, message)}\\n`);\n },\n raw(message) {\n stdout.write(`${message}\\n`);\n },\n error(message) {\n writeStyledMessage(stderr, \"error\", message);\n },\n };\n}\n\nexport function formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction writeStyledMessage(stream: OutputStream, style: OutputStyle, message: string): void {\n stream.write(`${formatStyledMessage(stream, style, message)}\\n`);\n}\n\nfunction formatStyledMessage(stream: OutputStream, style: OutputStyle, message: string): string {\n if (!shouldRenderColor(stream)) {\n return message;\n }\n\n return renderToString(\n createElement(\n Text,\n {\n ...statusStylePropsByOutputStyle[style],\n wrap: \"wrap\",\n },\n message\n ),\n {\n columns: 10_000,\n }\n );\n}\n\nfunction formatMarkdownMessage(stream: OutputStream, markdown: string): string {\n if (resolveOutputFormat() === \"markdown\") {\n return markdown;\n }\n\n const useColor = shouldRenderColor(stream);\n const markdownWidth = clampMarkdownWidth(stream.columns);\n const parser = new Marked();\n parser.use(\n markedTerminal({\n ...createMarkdownTheme(false),\n width: markdownWidth,\n }) as unknown as MarkedExtension\n );\n\n const preparedMarkdown = prepareMarkdownForTerminal(markdown);\n const renderedMarkdown = normalizeRenderedMarkdownOutput(\n `${preparedMarkdown.prefix}${String(parser.parse(preparedMarkdown.body)).trimEnd()}`\n );\n\n return useColor ? decorateMarkdownOutput(renderedMarkdown) : stripAnsi(renderedMarkdown);\n}\n\nfunction prepareMarkdownForTerminal(markdown: string): { prefix: string; body: string } {\n if (!markdown.startsWith(\"---\\n\")) {\n return { prefix: \"\", body: markdown };\n }\n\n const frontmatterEndIndex = markdown.indexOf(\"\\n---\", 4);\n if (frontmatterEndIndex < 0) {\n return {\n prefix: formatFrontmatterForTerminal(markdown.slice(4).trimEnd()),\n body: \"\",\n };\n }\n\n const frontmatter = markdown.slice(4, frontmatterEndIndex).trimEnd();\n const body = markdown.slice(frontmatterEndIndex + \"\\n---\".length).replace(/^\\n+/, \"\");\n\n return {\n prefix: formatFrontmatterForTerminal(frontmatter),\n body,\n };\n}\n\nfunction formatFrontmatterForTerminal(frontmatter: string): string {\n const formattedFrontmatter = frontmatter\n .split(\"\\n\")\n .map((line) => ` ${line}`)\n .join(\"\\n\");\n\n return `Metadata\\n\\n${formattedFrontmatter}\\n\\n`;\n}\n\nfunction shouldRenderColor(stream: OutputStream): boolean {\n if (process.env.NO_COLOR !== undefined || process.env.CNGKIT_NO_COLOR === \"1\") {\n return false;\n }\n\n const colorMode = process.env.CNGKIT_COLOR?.toLowerCase();\n\n if (colorMode === \"never\" || colorMode === \"0\" || colorMode === \"false\") {\n return false;\n }\n\n if (colorMode === \"always\" || colorMode === \"1\" || colorMode === \"true\") {\n return true;\n }\n\n if (process.env.FORCE_COLOR !== undefined && process.env.FORCE_COLOR !== \"0\") {\n return true;\n }\n\n return stream.isTTY === true;\n}\n\nfunction clampMarkdownWidth(columns: number | undefined): number {\n if (columns === undefined) {\n return 100;\n }\n\n return Math.max(72, Math.min(columns, 120));\n}\n","import { Chalk } from \"chalk\";\nimport type { TextProps } from \"ink\";\nimport stripAnsi from \"strip-ansi\";\n\nexport type OutputStyle = \"info\" | \"success\" | \"warning\" | \"muted\" | \"error\";\n\nexport const statusStylePropsByOutputStyle = {\n info: {\n color: \"cyan\",\n },\n success: {\n color: \"green\",\n bold: true,\n },\n warning: {\n color: \"yellow\",\n bold: true,\n },\n muted: {\n dimColor: true,\n },\n error: {\n color: \"red\",\n bold: true,\n },\n} satisfies Record<OutputStyle, TextProps>;\n\nexport function createMarkdownTheme(useColor: boolean) {\n const chalk = new Chalk({ level: useColor ? 1 : 0 });\n const identity = (value: string) => value;\n\n return {\n code: chalk.green,\n blockquote: chalk.dim.italic,\n html: chalk.gray,\n heading: chalk.blueBright.bold,\n firstHeading: chalk.magentaBright.bold,\n hr: chalk.gray,\n listitem: identity,\n table: identity,\n paragraph: identity,\n strong: chalk.bold,\n em: chalk.italic,\n codespan: chalk.cyanBright,\n del: chalk.dim.strikethrough,\n link: chalk.blueBright,\n href: chalk.blue.underline,\n text: identity,\n showSectionPrefix: true,\n reflowText: true,\n unescape: true,\n emoji: false,\n tab: 2,\n };\n}\n\nexport function decorateMarkdownOutput(output: string): string {\n const chalk = new Chalk({ level: 1 });\n\n const decoratedLines = output\n .split(\"\\n\")\n .map((line) => {\n const plainLine = stripAnsi(line);\n\n if (plainLine.startsWith(\"# \")) {\n return chalk.magentaBright.bold(plainLine);\n }\n\n if (plainLine.startsWith(\"## \")) {\n return chalk.blueBright.bold(plainLine);\n }\n\n return line;\n })\n .join(\"\\n\");\n\n return decoratedLines\n .replace(/`([^`\\n]+)`/g, (_match, value: string) => chalk.cyanBright(value))\n .replace(/(^|\\s)(--[a-z][a-z0-9-]*)/g, (_match, prefix: string, flag: string) => {\n return `${prefix}${chalk.yellow(flag)}`;\n })\n .replace(/(https?:\\/\\/[^\\s)]+)/g, (url: string) => chalk.blueBright.underline(url))\n .replace(/^(\\s*)\\*\\s+/gm, (_match, prefix: string) => {\n return `${prefix}${chalk.magentaBright(\"-\")} `;\n });\n}\n\nexport function normalizeRenderedMarkdownOutput(output: string): string {\n return output\n .split(\"\\n\")\n .map((line) => {\n const headingMatch = line.match(/^(\\s*)#{1,6}\\s+(.+)$/);\n if (headingMatch) {\n return `${headingMatch[1]}${headingMatch[2]}`;\n }\n\n return line.replace(/^(\\s*)\\*\\s+/, \"$1- \");\n })\n .join(\"\\n\")\n .replace(/`([^`\\n]+)`/g, \"$1\");\n}\n"],"mappings":"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","names":["process","stripAnsi","process","stripAnsi"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readBackendHealth
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MJVMVXV5.js";
|
|
4
4
|
import {
|
|
5
5
|
createPeerId,
|
|
6
6
|
createRoomCode,
|
|
7
7
|
resolveApiBaseUrl
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7KQBSEQV.js";
|
|
9
9
|
|
|
10
10
|
// src/features/coderoom/run-coderoom-command.ts
|
|
11
11
|
import process2 from "process";
|
|
@@ -412,4 +412,4 @@ export {
|
|
|
412
412
|
runShareCommand,
|
|
413
413
|
runJoinCommand
|
|
414
414
|
};
|
|
415
|
-
//# sourceMappingURL=chunk-
|
|
415
|
+
//# sourceMappingURL=chunk-F7ZOO3P5.js.map
|
|
@@ -13,7 +13,7 @@ var coderoomCommandList = [
|
|
|
13
13
|
var knowledgesCommandList = [
|
|
14
14
|
"- `status` - print remote catalog state.",
|
|
15
15
|
"- `audiences` - list valid audience filters.",
|
|
16
|
-
"- `search <query>` -
|
|
16
|
+
"- `search <query>` - search over Postgres-backed knowledges records.",
|
|
17
17
|
"- `list [query]` - list known subskills.",
|
|
18
18
|
"- `files [query]` - list uploaded catalog files.",
|
|
19
19
|
"- `read <file-path>` - Claude-style file read.",
|
|
@@ -32,7 +32,7 @@ Curly.ng operator CLI for shared code rooms, safe local cleanup, local agent tra
|
|
|
32
32
|
|
|
33
33
|
\`\`\`bash
|
|
34
34
|
npx --yes cngkit@latest --help
|
|
35
|
-
npx --yes cngkit@latest knowledges search
|
|
35
|
+
npx --yes cngkit@latest knowledges search Cloudflare --limit 3
|
|
36
36
|
\`\`\`
|
|
37
37
|
|
|
38
38
|
## Installed Usage
|
|
@@ -41,6 +41,14 @@ npx --yes cngkit@latest knowledges search "cloudflare backend" --limit 3
|
|
|
41
41
|
cngkit <command> [options]
|
|
42
42
|
\`\`\`
|
|
43
43
|
|
|
44
|
+
## Global Options
|
|
45
|
+
|
|
46
|
+
\`\`\`bash
|
|
47
|
+
cngkit --format text|json|markdown ...
|
|
48
|
+
cngkit --no-color ...
|
|
49
|
+
cngkit --api-base-url <url> ...
|
|
50
|
+
\`\`\`
|
|
51
|
+
|
|
44
52
|
## Commands
|
|
45
53
|
|
|
46
54
|
${commandList}
|
|
@@ -59,10 +67,10 @@ cngkit knowledges <subcommand> --help
|
|
|
59
67
|
|
|
60
68
|
## AI And Scripts
|
|
61
69
|
|
|
62
|
-
- Help
|
|
63
|
-
-
|
|
64
|
-
- Use \`--
|
|
65
|
-
- Use \`CNGKIT_COLOR=never\` for logs, screenshots, and strict plain text.
|
|
70
|
+
- Help renders as structured terminal text by default, even in pipes.
|
|
71
|
+
- Use \`--format json\` or \`--json\` on read-only data commands for typed payloads.
|
|
72
|
+
- Use \`--format markdown\` only when raw Markdown source is intentional.
|
|
73
|
+
- Use \`--no-color\` or \`CNGKIT_COLOR=never\` for logs, screenshots, and strict plain text.
|
|
66
74
|
- Use \`npm_config_progress=false npx --yes cngkit@latest ...\` for clean one-shot npx captures.
|
|
67
75
|
|
|
68
76
|
## Backend
|
|
@@ -110,9 +118,9 @@ This is local-only operator tooling. It does not call Curly.ng and it does not u
|
|
|
110
118
|
## Usage
|
|
111
119
|
|
|
112
120
|
\`\`\`bash
|
|
113
|
-
cngkit transcripts list [--source all|codex|claude] [--limit <n>] [--json]
|
|
114
|
-
cngkit transcripts read <path-or-session-id> [--source all|codex|claude] [--limit <n>] [--include-internal] [--json]
|
|
115
|
-
cngkit transcripts grep <query> [--source all|codex|claude] [--limit <n>] [--file-limit <n>] [--include-internal] [--json]
|
|
121
|
+
cngkit transcripts list [--source all|codex|claude] [--limit <n>] [--json|--format json]
|
|
122
|
+
cngkit transcripts read <path-or-session-id> [--source all|codex|claude] [--limit <n>] [--include-internal] [--json|--format json]
|
|
123
|
+
cngkit transcripts grep <query> [--source all|codex|claude] [--limit <n>] [--file-limit <n>] [--include-internal] [--json|--format json]
|
|
116
124
|
\`\`\`
|
|
117
125
|
|
|
118
126
|
## Sources
|
|
@@ -285,7 +293,7 @@ cngkit knowledges glob --help
|
|
|
285
293
|
## Common Examples
|
|
286
294
|
|
|
287
295
|
\`\`\`bash
|
|
288
|
-
npx --yes cngkit@latest knowledges search
|
|
296
|
+
npx --yes cngkit@latest knowledges search Cloudflare --limit 3
|
|
289
297
|
npx --yes cngkit@latest knowledges read /libraries/lib-cloudflare/SUBSKILL.md --limit 80
|
|
290
298
|
npx --yes cngkit@latest knowledges grep Cloudflare --path /libraries/lib-cloudflare --output-mode files_with_matches
|
|
291
299
|
npx --yes cngkit@latest knowledges glob "**/*.md" --path /libraries/lib-cloudflare
|
|
@@ -293,11 +301,11 @@ npx --yes cngkit@latest knowledges glob "**/*.md" --path /libraries/lib-cloudfla
|
|
|
293
301
|
|
|
294
302
|
## AI-Friendly Output
|
|
295
303
|
|
|
296
|
-
- Default output is
|
|
297
|
-
- \`read\`
|
|
304
|
+
- Default output is structured text intended to be directly usable by people and agents.
|
|
305
|
+
- \`read\` renders Markdown files by default and prints exact source with \`--format markdown\`.
|
|
298
306
|
- \`grep --output-mode content\` prints \`path:line\` blocks.
|
|
299
307
|
- \`grep --output-mode files_with_matches\` and \`glob\` print one path per line.
|
|
300
|
-
- \`--json\`
|
|
308
|
+
- \`--format json\` and \`--json\` print typed backend payloads for machine consumption.
|
|
301
309
|
`
|
|
302
310
|
},
|
|
303
311
|
{
|
|
@@ -310,13 +318,13 @@ Print remote Harness catalog state.
|
|
|
310
318
|
## Usage
|
|
311
319
|
|
|
312
320
|
\`\`\`bash
|
|
313
|
-
cngkit knowledges status [--json]
|
|
321
|
+
cngkit knowledges status [--json|--format json]
|
|
314
322
|
\`\`\`
|
|
315
323
|
|
|
316
324
|
## Output
|
|
317
325
|
|
|
318
|
-
- Text mode prints catalog name, file count, blob count,
|
|
319
|
-
- \`--json\`
|
|
326
|
+
- Text mode prints catalog name, file count, blob count, database binding, and latest run when present.
|
|
327
|
+
- \`--format json\` and \`--json\` print the backend data payload.
|
|
320
328
|
`
|
|
321
329
|
},
|
|
322
330
|
{
|
|
@@ -329,7 +337,7 @@ List valid audience filters for catalog browsing.
|
|
|
329
337
|
## Usage
|
|
330
338
|
|
|
331
339
|
\`\`\`bash
|
|
332
|
-
cngkit knowledges audiences [--json]
|
|
340
|
+
cngkit knowledges audiences [--json|--format json]
|
|
333
341
|
\`\`\`
|
|
334
342
|
|
|
335
343
|
## Use When
|
|
@@ -347,7 +355,7 @@ Search the hosted Harness index for relevant skills and subskills.
|
|
|
347
355
|
## Usage
|
|
348
356
|
|
|
349
357
|
\`\`\`bash
|
|
350
|
-
cngkit knowledges search <query> [--limit <n>] [--json]
|
|
358
|
+
cngkit knowledges search <query> [--limit <n>] [--json|--format json]
|
|
351
359
|
\`\`\`
|
|
352
360
|
|
|
353
361
|
## Defaults
|
|
@@ -357,7 +365,7 @@ cngkit knowledges search <query> [--limit <n>] [--json]
|
|
|
357
365
|
## Example
|
|
358
366
|
|
|
359
367
|
\`\`\`bash
|
|
360
|
-
npx --yes cngkit@latest knowledges search
|
|
368
|
+
npx --yes cngkit@latest knowledges search Cloudflare --limit 3
|
|
361
369
|
\`\`\`
|
|
362
370
|
`
|
|
363
371
|
},
|
|
@@ -371,7 +379,7 @@ List hosted Harness subskills, optionally filtered by query.
|
|
|
371
379
|
## Usage
|
|
372
380
|
|
|
373
381
|
\`\`\`bash
|
|
374
|
-
cngkit knowledges list [query] [--limit <n>] [--json]
|
|
382
|
+
cngkit knowledges list [query] [--limit <n>] [--json|--format json]
|
|
375
383
|
\`\`\`
|
|
376
384
|
|
|
377
385
|
## Defaults
|
|
@@ -395,7 +403,7 @@ List uploaded Harness catalog files, optionally filtered by query or audience.
|
|
|
395
403
|
## Usage
|
|
396
404
|
|
|
397
405
|
\`\`\`bash
|
|
398
|
-
cngkit knowledges files [query] [--audience <id>] [--limit <n>] [--json]
|
|
406
|
+
cngkit knowledges files [query] [--audience <id>] [--limit <n>] [--json|--format json]
|
|
399
407
|
\`\`\`
|
|
400
408
|
|
|
401
409
|
## Defaults
|
|
@@ -421,7 +429,7 @@ Read a hosted Harness catalog file by path.
|
|
|
421
429
|
## Usage
|
|
422
430
|
|
|
423
431
|
\`\`\`bash
|
|
424
|
-
cngkit knowledges read <file-path> [--offset <n>] [--limit <n>] [--json]
|
|
432
|
+
cngkit knowledges read <file-path> [--offset <n>] [--limit <n>] [--json|--format json|--format markdown]
|
|
425
433
|
\`\`\`
|
|
426
434
|
|
|
427
435
|
## Inputs
|
|
@@ -432,9 +440,10 @@ cngkit knowledges read <file-path> [--offset <n>] [--limit <n>] [--json]
|
|
|
432
440
|
|
|
433
441
|
## Output
|
|
434
442
|
|
|
435
|
-
- Text mode
|
|
443
|
+
- Text mode renders Markdown files for terminal reading.
|
|
444
|
+
- \`--format markdown\` prints the exact returned file content.
|
|
436
445
|
- If truncated, a final bracketed truncation note is printed after the content.
|
|
437
|
-
- \`--json\`
|
|
446
|
+
- \`--format json\` and \`--json\` print \`{ file_path, content, total_lines, offset, limit, truncated }\`.
|
|
438
447
|
|
|
439
448
|
## Example
|
|
440
449
|
|
|
@@ -453,7 +462,7 @@ Search inside hosted Harness catalog files with a JavaScript regular expression.
|
|
|
453
462
|
## Usage
|
|
454
463
|
|
|
455
464
|
\`\`\`bash
|
|
456
|
-
cngkit knowledges grep <pattern> [--path <path>] [--include <glob>] [--output-mode <mode>] [--context <n>] [--case-insensitive] [--json]
|
|
465
|
+
cngkit knowledges grep <pattern> [--path <path>] [--include <glob>] [--output-mode <mode>] [--context <n>] [--case-insensitive] [--json|--format json]
|
|
457
466
|
\`\`\`
|
|
458
467
|
|
|
459
468
|
## Inputs
|
|
@@ -471,13 +480,13 @@ cngkit knowledges grep <pattern> [--path <path>] [--include <glob>] [--output-mo
|
|
|
471
480
|
- \`content\`: prints blocks as \`file_path:line_number\`, optional context lines, then \`> matching line\`.
|
|
472
481
|
- \`files_with_matches\`: prints one matching file path per line.
|
|
473
482
|
- \`count\`: prints \`file_path: match_count\` lines.
|
|
474
|
-
- \`--json\`
|
|
483
|
+
- \`--format json\` and \`--json\` print the typed backend response union.
|
|
475
484
|
|
|
476
485
|
## Examples
|
|
477
486
|
|
|
478
487
|
\`\`\`bash
|
|
479
488
|
npx --yes cngkit@latest knowledges grep Cloudflare --path /libraries/lib-cloudflare --output-mode files_with_matches
|
|
480
|
-
npx --yes cngkit@latest knowledges grep "
|
|
489
|
+
npx --yes cngkit@latest knowledges grep "Postgres|Hyperdrive" --path /libraries/lib-cloudflare --context 2
|
|
481
490
|
\`\`\`
|
|
482
491
|
`
|
|
483
492
|
},
|
|
@@ -491,7 +500,7 @@ Find hosted Harness catalog files by glob pattern.
|
|
|
491
500
|
## Usage
|
|
492
501
|
|
|
493
502
|
\`\`\`bash
|
|
494
|
-
cngkit knowledges glob [pattern] [--path <path>] [--json]
|
|
503
|
+
cngkit knowledges glob [pattern] [--path <path>] [--json|--format json]
|
|
495
504
|
\`\`\`
|
|
496
505
|
|
|
497
506
|
## Inputs
|
|
@@ -512,7 +521,7 @@ cngkit knowledges glob [pattern] [--path <path>] [--json]
|
|
|
512
521
|
|
|
513
522
|
- Text mode prints one file path per line.
|
|
514
523
|
- If truncated, a final bracketed truncation note is printed.
|
|
515
|
-
- \`--json\`
|
|
524
|
+
- \`--format json\` and \`--json\` print \`{ files, total_files, truncated }\`.
|
|
516
525
|
|
|
517
526
|
## Example
|
|
518
527
|
|
|
@@ -569,4 +578,4 @@ export {
|
|
|
569
578
|
formatCngkitHelp,
|
|
570
579
|
formatKnowledgesHelp
|
|
571
580
|
};
|
|
572
|
-
//# sourceMappingURL=chunk-
|
|
581
|
+
//# sourceMappingURL=chunk-GZ2DPIU6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/help-specs.ts"],"sourcesContent":["type HelpTopic = {\n title: string;\n aliases: string[];\n body: string;\n};\n\nconst commandList = [\n \"- `cngkit login` - open Curly.ng login, or print the URL in headless shells.\",\n \"- `cngkit coderoom ...` - share or join a live developer room for a working tree.\",\n \"- `cngkit scrub [path]` - scan for secrets; rewrite only when `--yes` is passed.\",\n \"- `cngkit transcripts ...` - list, read, and grep local Claude/Codex transcripts.\",\n \"- `cngkit knowledges ...` - search and read the hosted Harness knowledge catalog.\",\n].join(\"\\n\");\n\nconst coderoomCommandList = [\n \"- `share [room-code]` - start a live room from the current directory.\",\n \"- `join <room-code>` - join another developer's live room from the current directory.\",\n].join(\"\\n\");\n\nconst knowledgesCommandList = [\n \"- `status` - print remote catalog state.\",\n \"- `audiences` - list valid audience filters.\",\n \"- `search <query>` - search over Postgres-backed knowledges records.\",\n \"- `list [query]` - list known subskills.\",\n \"- `files [query]` - list uploaded catalog files.\",\n \"- `read <file-path>` - Claude-style file read.\",\n \"- `grep <pattern>` - Claude-style content search.\",\n \"- `glob [pattern]` - Claude-style file discovery.\",\n].join(\"\\n\");\n\nconst helpTopics: HelpTopic[] = [\n {\n title: \"cngkit\",\n aliases: [\"\", \"overview\", \"help\"],\n body: `# cngkit\n\nCurly.ng operator CLI for shared code rooms, safe local cleanup, local agent transcripts, and hosted Harness knowledges.\n\n## Run Now\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest --help\nnpx --yes cngkit@latest knowledges search Cloudflare --limit 3\n\\`\\`\\`\n\n## Installed Usage\n\n\\`\\`\\`bash\ncngkit <command> [options]\n\\`\\`\\`\n\n## Global Options\n\n\\`\\`\\`bash\ncngkit --format text|json|markdown ...\ncngkit --no-color ...\ncngkit --api-base-url <url> ...\n\\`\\`\\`\n\n## Commands\n\n${commandList}\n\n## Help Map\n\n\\`\\`\\`bash\ncngkit help <topic>\ncngkit <command> --help\ncngkit coderoom --help\ncngkit coderoom <subcommand> --help\ncngkit transcripts --help\ncngkit knowledges --help\ncngkit knowledges <subcommand> --help\n\\`\\`\\`\n\n## AI And Scripts\n\n- Help renders as structured terminal text by default, even in pipes.\n- Use \\`--format json\\` or \\`--json\\` on read-only data commands for typed payloads.\n- Use \\`--format markdown\\` only when raw Markdown source is intentional.\n- Use \\`--no-color\\` or \\`CNGKIT_COLOR=never\\` for logs, screenshots, and strict plain text.\n- Use \\`npm_config_progress=false npx --yes cngkit@latest ...\\` for clean one-shot npx captures.\n\n## Backend\n\nDefault API: \\`https://curly.ng\\`\n\nOverride with:\n\n\\`\\`\\`bash\ncngkit --api-base-url <url> ...\nCNGKIT_API_BASE_URL=<url> cngkit ...\n\\`\\`\\`\n`,\n },\n {\n title: \"login\",\n aliases: [\"login\"],\n body: `# cngkit login\n\nOpen Curly.ng login in a browser. In headless shells, print the URL so an agent can show it to the operator.\n\n## Usage\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest login\ncngkit login\n\\`\\`\\`\n\n## Output\n\n- First line names the login URL being opened.\n- If no browser opener exists, the CLI prints a direct URL.\n- No credentials are printed or persisted by this command.\n`,\n },\n {\n title: \"transcripts\",\n aliases: [\"transcripts\", \"transcript\"],\n body: `# cngkit transcripts\n\nRead local Claude and Codex transcript JSONL files.\n\nThis is local-only operator tooling. It does not call Curly.ng and it does not upload transcript content.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit transcripts list [--source all|codex|claude] [--limit <n>] [--json|--format json]\ncngkit transcripts read <path-or-session-id> [--source all|codex|claude] [--limit <n>] [--include-internal] [--json|--format json]\ncngkit transcripts grep <query> [--source all|codex|claude] [--limit <n>] [--file-limit <n>] [--include-internal] [--json|--format json]\n\\`\\`\\`\n\n## Sources\n\n- \\`~/.codex/sessions\\`\n- \\`~/.codex/archived_sessions\\`\n- \\`~/.claude/projects\\`\n- \\`~/.claude/history.jsonl\\`\n\n## Defaults\n\n- \\`list\\`: newest 12 transcript files.\n- \\`read\\`: newest 80 user/assistant entries from the selected file.\n- \\`grep\\`: first 80 matching user/assistant entries from the newest 60 files.\n- \\`--source\\`: \\`all\\`.\n\n## Output\n\n- Text mode prints source, role, timestamp when available, and extracted message text.\n- Internal developer/system payloads and hook/tool noise are skipped unless \\`--include-internal\\` is passed.\n- Direct file paths, home-relative paths, and partial session ids are accepted by \\`read\\`.\n`,\n },\n {\n title: \"coderoom\",\n aliases: [\"coderoom\", \"code-room\", \"repo-sync\"],\n body: `# cngkit coderoom\n\nCreate or join a temporary live room for sharing a working tree over the Curly backend.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit coderoom <subcommand> [options]\n\\`\\`\\`\n\n## Subcommands\n\n${coderoomCommandList}\n\n## Common Flow\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest coderoom share\nnpx --yes cngkit@latest coderoom join <room-code>\n\\`\\`\\`\n\n## Behavior\n\n- Connects to \\`/api/cng/sync/:roomCode\\` on the configured Curly backend.\n- Uses WebSocket transport backed by the \\`CngSyncRoom\\` Durable Object.\n- Sends an initial snapshot, then file and delete events.\n- Last received change wins.\n- Current rooms are live relays, not durable cloud storage.\n`,\n },\n {\n title: \"coderoom share\",\n aliases: [\"coderoom-share\"],\n body: `# cngkit coderoom share\n\nStart a live repository sync room from the current directory.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit coderoom share [room-code]\n\\`\\`\\`\n\n## Behavior\n\n- Connects to \\`/api/cng/sync/:roomCode\\` on the configured Curly backend.\n- Uses WebSocket transport backed by the \\`CngSyncRoom\\` Durable Object.\n- Sends an initial snapshot, then file and delete events.\n- Last received change wins.\n\n## Filesystem Contract\n\n- Preserves \\`.git/\\`.\n- Preserves files ignored by the repo's \\`.gitignore\\`.\n- Sends regular files as base64 payloads in the sync protocol.\n\n## Output\n\n- Prints room code, repo root, peer id, backend health, and concise sync events.\n- Keeps running until the socket closes or the process receives a termination signal.\n`,\n },\n {\n title: \"coderoom join\",\n aliases: [\"coderoom-join\"],\n body: `# cngkit coderoom join\n\nJoin an existing live repository sync room from the current directory.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit coderoom join <room-code>\n\\`\\`\\`\n\n## Behavior\n\nSame transport and filesystem contract as \\`cngkit coderoom share\\`. The supplied room code selects the Durable Object room.\n\n## Output\n\n- Prints backend health, room code, repo root, peer id, and concise sync events.\n- Missing room code exits with a usage error.\n`,\n },\n {\n title: \"scrub\",\n aliases: [\"scrub\"],\n body: `# cngkit scrub\n\nScan a file or directory for secrets with TruffleHog. Report-only is the default.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit scrub [path]\ncngkit scrub [path] --yes\n\\`\\`\\`\n\n## Safety\n\n- Default mode does not rewrite files.\n- Inline masking rewrites files and requires \\`--yes\\`.\n- Raw and redacted secret values are never printed.\n\n## Requirements\n\n- \\`trufflehog\\` must be available on \\`PATH\\`.\n\n## Mask Format\n\n\\`\\`\\`text\n[CNGKIT_SECRET:<detector>:<verified|unverified>]\n\\`\\`\\`\n`,\n },\n {\n title: \"knowledges\",\n aliases: [\"knowledges\", \"knowledge\"],\n body: `# cngkit knowledges\n\nSearch and read the hosted Harness knowledges catalog from the Curly backend.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges <subcommand> [options]\n\\`\\`\\`\n\n## Subcommands\n\n${knowledgesCommandList}\n\n## Progressive Help\n\n\\`\\`\\`bash\ncngkit help knowledges <subcommand>\ncngkit knowledges <subcommand> --help\ncngkit knowledges read --help\ncngkit knowledges grep --help\ncngkit knowledges glob --help\n\\`\\`\\`\n\n## Common Examples\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest knowledges search Cloudflare --limit 3\nnpx --yes cngkit@latest knowledges read /libraries/lib-cloudflare/SUBSKILL.md --limit 80\nnpx --yes cngkit@latest knowledges grep Cloudflare --path /libraries/lib-cloudflare --output-mode files_with_matches\nnpx --yes cngkit@latest knowledges glob \"**/*.md\" --path /libraries/lib-cloudflare\n\\`\\`\\`\n\n## AI-Friendly Output\n\n- Default output is structured text intended to be directly usable by people and agents.\n- \\`read\\` renders Markdown files by default and prints exact source with \\`--format markdown\\`.\n- \\`grep --output-mode content\\` prints \\`path:line\\` blocks.\n- \\`grep --output-mode files_with_matches\\` and \\`glob\\` print one path per line.\n- \\`--format json\\` and \\`--json\\` print typed backend payloads for machine consumption.\n`,\n },\n {\n title: \"knowledges status\",\n aliases: [\"knowledges-status\", \"status\"],\n body: `# cngkit knowledges status\n\nPrint remote Harness catalog state.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges status [--json|--format json]\n\\`\\`\\`\n\n## Output\n\n- Text mode prints catalog name, file count, blob count, database binding, and latest run when present.\n- \\`--format json\\` and \\`--json\\` print the backend data payload.\n`,\n },\n {\n title: \"knowledges audiences\",\n aliases: [\"knowledges-audiences\", \"audiences\"],\n body: `# cngkit knowledges audiences\n\nList valid audience filters for catalog browsing.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges audiences [--json|--format json]\n\\`\\`\\`\n\n## Use When\n\nRun this before \\`cngkit knowledges files --audience <id>\\`.\n`,\n },\n {\n title: \"knowledges search\",\n aliases: [\"knowledges-search\", \"search\"],\n body: `# cngkit knowledges search\n\nSearch the hosted Harness index for relevant skills and subskills.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges search <query> [--limit <n>] [--json|--format json]\n\\`\\`\\`\n\n## Defaults\n\n- \\`--limit\\`: \\`5\\`\n\n## Example\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest knowledges search Cloudflare --limit 3\n\\`\\`\\`\n`,\n },\n {\n title: \"knowledges list\",\n aliases: [\"knowledges-list\", \"list\"],\n body: `# cngkit knowledges list\n\nList hosted Harness subskills, optionally filtered by query.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges list [query] [--limit <n>] [--json|--format json]\n\\`\\`\\`\n\n## Defaults\n\n- \\`--limit\\`: \\`25\\`\n\n## Example\n\n\\`\\`\\`bash\ncngkit knowledges list cloudflare --limit 10\n\\`\\`\\`\n`,\n },\n {\n title: \"knowledges files\",\n aliases: [\"knowledges-files\", \"files\"],\n body: `# cngkit knowledges files\n\nList uploaded Harness catalog files, optionally filtered by query or audience.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges files [query] [--audience <id>] [--limit <n>] [--json|--format json]\n\\`\\`\\`\n\n## Defaults\n\n- \\`--limit\\`: \\`25\\`\n- \\`--audience\\`: omitted\n\n## Example\n\n\\`\\`\\`bash\ncngkit knowledges files cloudflare --limit 10\ncngkit knowledges files \"vector search\" --audience builders\n\\`\\`\\`\n`,\n },\n {\n title: \"knowledges read\",\n aliases: [\"knowledges-read\", \"read\"],\n body: `# cngkit knowledges read\n\nRead a hosted Harness catalog file by path.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges read <file-path> [--offset <n>] [--limit <n>] [--json|--format json|--format markdown]\n\\`\\`\\`\n\n## Inputs\n\n- \\`file-path\\`: normalized catalog path. Shorthand paths such as \\`/libraries/lib-cloudflare/SUBSKILL.md\\` are expanded to \\`skills/knowledges/subskills/libraries/lib-cloudflare/SUBSKILL.md\\`.\n- \\`--offset\\`: zero-based starting line. Default: \\`0\\`.\n- \\`--limit\\`: maximum lines. Default in CLI: \\`200\\`. Backend max: \\`2000\\`.\n\n## Output\n\n- Text mode renders Markdown files for terminal reading.\n- \\`--format markdown\\` prints the exact returned file content.\n- If truncated, a final bracketed truncation note is printed after the content.\n- \\`--format json\\` and \\`--json\\` print \\`{ file_path, content, total_lines, offset, limit, truncated }\\`.\n\n## Example\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest knowledges read /libraries/lib-cloudflare/SUBSKILL.md --limit 80\n\\`\\`\\`\n`,\n },\n {\n title: \"knowledges grep\",\n aliases: [\"knowledges-grep\", \"grep\"],\n body: `# cngkit knowledges grep\n\nSearch inside hosted Harness catalog files with a JavaScript regular expression.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges grep <pattern> [--path <path>] [--include <glob>] [--output-mode <mode>] [--context <n>] [--case-insensitive] [--json|--format json]\n\\`\\`\\`\n\n## Inputs\n\n- \\`pattern\\`: JavaScript regular expression source.\n- \\`--path\\`: catalog path prefix. Default: \\`skills\\`.\n- \\`--include\\`: filename include filter. Default: \\`*\\`.\n- Modes: content, files_with_matches, or count.\n- \\`--output-mode\\`: \\`content\\`, \\`files_with_matches\\`, or \\`count\\`. Default: \\`content\\`.\n- \\`--context\\`: context lines around content matches. Default: \\`0\\`. Backend max: \\`20\\`.\n- \\`--case-insensitive\\`: maps to backend \\`case_insensitive=true\\`.\n\n## Output\n\n- \\`content\\`: prints blocks as \\`file_path:line_number\\`, optional context lines, then \\`> matching line\\`.\n- \\`files_with_matches\\`: prints one matching file path per line.\n- \\`count\\`: prints \\`file_path: match_count\\` lines.\n- \\`--format json\\` and \\`--json\\` print the typed backend response union.\n\n## Examples\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest knowledges grep Cloudflare --path /libraries/lib-cloudflare --output-mode files_with_matches\nnpx --yes cngkit@latest knowledges grep \"Postgres|Hyperdrive\" --path /libraries/lib-cloudflare --context 2\n\\`\\`\\`\n`,\n },\n {\n title: \"knowledges glob\",\n aliases: [\"knowledges-glob\", \"glob\"],\n body: `# cngkit knowledges glob\n\nFind hosted Harness catalog files by glob pattern.\n\n## Usage\n\n\\`\\`\\`bash\ncngkit knowledges glob [pattern] [--path <path>] [--json|--format json]\n\\`\\`\\`\n\n## Inputs\n\n- \\`pattern\\`: supported glob pattern. CLI default: \\`**/*.md\\`.\n- \\`--path\\`: catalog path prefix. Default: \\`skills\\`.\n\n## Supported Patterns\n\n- \\`**/*.md\\`\n- \\`**/*.SUBSKILL.md\\`\n- \\`**/SKILL.md\\`\n- \\`*.md\\`\n- \\`*.SUBSKILL.md\\`\n- \\`SKILL.md\\`\n\n## Output\n\n- Text mode prints one file path per line.\n- If truncated, a final bracketed truncation note is printed.\n- \\`--format json\\` and \\`--json\\` print \\`{ files, total_files, truncated }\\`.\n\n## Example\n\n\\`\\`\\`bash\nnpx --yes cngkit@latest knowledges glob \"**/*.md\" --path /libraries/lib-cloudflare\n\\`\\`\\`\n`,\n },\n];\n\nconst helpTopicNames = helpTopics\n .filter((topic) => topic.title !== \"cngkit\")\n .map((topic) => topic.title)\n .sort();\n\nconst helpTopicByAlias = new Map<string, HelpTopic>();\n\nfor (const topic of helpTopics) {\n for (const alias of topic.aliases) {\n helpTopicByAlias.set(alias, topic);\n }\n}\n\nexport function formatCngkitHelp(topicName?: string): string {\n const normalizedTopicName = normalizeHelpTopicName(topicName);\n const topic = helpTopicByAlias.get(normalizedTopicName);\n\n if (topic) {\n return topic.body.trim();\n }\n\n if (normalizedTopicName === \"\") {\n return helpTopicByAlias.get(\"\")?.body.trim() ?? \"\";\n }\n\n return formatUnknownHelpTopic(normalizedTopicName);\n}\n\nexport function formatKnowledgesHelp(topicName?: string): string {\n const normalizedTopicName = normalizeHelpTopicName(topicName);\n const topicKey = normalizedTopicName ? `knowledges-${normalizedTopicName}` : \"knowledges\";\n return formatCngkitHelp(topicKey);\n}\n\nfunction normalizeHelpTopicName(value: string | undefined): string {\n return value?.trim().toLowerCase().replace(/\\s+/g, \"-\") ?? \"\";\n}\n\nfunction formatUnknownHelpTopic(topicName: string): string {\n return `# cngkit help\n\nNo help topic named \\`${topicName}\\`.\n\n## Available Topics\n\n${helpTopicNames.map((name) => `- \\`${name}\\``).join(\"\\n\")}\n\n## Usage\n\n\\`\\`\\`bash\ncngkit help <topic>\ncngkit <command> --help\n\\`\\`\\``;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveApiBaseUrl
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7KQBSEQV.js";
|
|
4
4
|
import {
|
|
5
5
|
__export
|
|
6
6
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -279,25 +279,25 @@ var HarnessCatalogSummary;
|
|
|
279
279
|
};
|
|
280
280
|
})(HarnessCatalogSummary || (HarnessCatalogSummary = {}));
|
|
281
281
|
|
|
282
|
+
// ../../packages/client/src/generated/api/types/HarnessDatabaseBinding.ts
|
|
283
|
+
var HarnessDatabaseBinding;
|
|
284
|
+
((HarnessDatabaseBinding2) => {
|
|
285
|
+
HarnessDatabaseBinding2.Engine = {
|
|
286
|
+
Postgres: "postgres"
|
|
287
|
+
};
|
|
288
|
+
HarnessDatabaseBinding2.Binding = {
|
|
289
|
+
Hyperdrive: "HYPERDRIVE"
|
|
290
|
+
};
|
|
291
|
+
})(HarnessDatabaseBinding || (HarnessDatabaseBinding = {}));
|
|
292
|
+
|
|
282
293
|
// ../../packages/client/src/generated/api/types/HarnessSemanticSearchResponse.ts
|
|
283
294
|
var HarnessSemanticSearchResponse;
|
|
284
295
|
((HarnessSemanticSearchResponse2) => {
|
|
285
296
|
HarnessSemanticSearchResponse2.Model = {
|
|
286
|
-
|
|
297
|
+
PostgresTextSearch: "postgres-text-search"
|
|
287
298
|
};
|
|
288
299
|
})(HarnessSemanticSearchResponse || (HarnessSemanticSearchResponse = {}));
|
|
289
300
|
|
|
290
|
-
// ../../packages/client/src/generated/api/types/HarnessVectorizeBinding.ts
|
|
291
|
-
var HarnessVectorizeBinding;
|
|
292
|
-
((HarnessVectorizeBinding2) => {
|
|
293
|
-
HarnessVectorizeBinding2.Index = {
|
|
294
|
-
CurlyNgAgents: "curly-ng-agents"
|
|
295
|
-
};
|
|
296
|
-
HarnessVectorizeBinding2.Binding = {
|
|
297
|
-
Vectorize: "VECTORIZE"
|
|
298
|
-
};
|
|
299
|
-
})(HarnessVectorizeBinding || (HarnessVectorizeBinding = {}));
|
|
300
|
-
|
|
301
301
|
// ../../packages/client/src/generated/core/headers.ts
|
|
302
302
|
function mergeHeaders(...headersArray) {
|
|
303
303
|
const result = {};
|
|
@@ -2389,7 +2389,7 @@ var HarnessInternalKnowledgesClient = class {
|
|
|
2389
2389
|
);
|
|
2390
2390
|
}
|
|
2391
2391
|
/**
|
|
2392
|
-
* @param {CngApi.
|
|
2392
|
+
* @param {CngApi.HarnessUploadSubskillAssetsIndexRequest} request
|
|
2393
2393
|
* @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.
|
|
2394
2394
|
*
|
|
2395
2395
|
* @throws {@link CngApi.UnauthorizedError}
|
|
@@ -3231,4 +3231,4 @@ export {
|
|
|
3231
3231
|
createCngApiClient,
|
|
3232
3232
|
readBackendHealth
|
|
3233
3233
|
};
|
|
3234
|
-
//# sourceMappingURL=chunk-
|
|
3234
|
+
//# sourceMappingURL=chunk-MJVMVXV5.js.map
|