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
package/dist/cli.js CHANGED
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- formatCngkitHelp,
4
- formatKnowledgesHelp
5
- } from "./chunk-KSW6QT5Q.js";
3
+ renderCngkitHelp,
4
+ renderKnowledgesHelp
5
+ } from "./chunk-3A6GRNEV.js";
6
6
  import {
7
7
  consoleOutput,
8
8
  formatError,
9
9
  packageVersion,
10
10
  parseOutputFormat
11
- } from "./chunk-CBIVTEZP.js";
11
+ } from "./chunk-7SO75QXJ.js";
12
12
  import "./chunk-PZ5AY32C.js";
13
13
 
14
14
  // src/cli.ts
@@ -16,16 +16,16 @@ import process from "process";
16
16
  import Pastel from "pastel";
17
17
 
18
18
  // src/cli/help.ts
19
- function printMarkdownHelpIfRequested(argv, output = consoleOutput) {
19
+ function printHelpIfRequested(argv, output = consoleOutput) {
20
20
  const commandName = argv[2];
21
21
  if (commandName === void 0 || commandName === "--help" || commandName === "-h") {
22
- output.markdown(formatCngkitHelp());
22
+ output.component(renderCngkitHelp());
23
23
  return true;
24
24
  }
25
25
  if (commandName === "help") {
26
26
  const [topicName, subtopicName] = argv.slice(3);
27
- const topic = (topicName === "knowledges" || topicName === "coderoom" || topicName === "hookify") && subtopicName ? `${topicName}-${subtopicName}` : topicName;
28
- output.markdown(formatCngkitHelp(topic));
27
+ const topic = (topicName === "knowledges" || topicName === "coderoom" || topicName === "hookify" || topicName === "hooks") && subtopicName ? `${topicName}-${subtopicName}` : topicName;
28
+ output.component(renderCngkitHelp(topic));
29
29
  return true;
30
30
  }
31
31
  const commandArgs = argv.slice(3);
@@ -37,31 +37,38 @@ function printMarkdownHelpIfRequested(argv, output = consoleOutput) {
37
37
  const topic = commandArgs.find(
38
38
  (argument, index) => index !== helpIndex && !argument.startsWith("-")
39
39
  );
40
- output.markdown(formatKnowledgesHelp(topic));
40
+ output.component(renderKnowledgesHelp(topic));
41
41
  return true;
42
42
  }
43
43
  if (commandName === "coderoom") {
44
44
  const topic = commandArgs.find(
45
45
  (argument, index) => index !== helpIndex && !argument.startsWith("-")
46
46
  );
47
- output.markdown(formatCngkitHelp(topic ? `coderoom-${topic}` : "coderoom"));
47
+ output.component(renderCngkitHelp(topic ? `coderoom-${topic}` : "coderoom"));
48
48
  return true;
49
49
  }
50
50
  if (commandName === "hookify") {
51
51
  const topic = commandArgs.find(
52
52
  (argument, index) => index !== helpIndex && !argument.startsWith("-")
53
53
  );
54
- output.markdown(formatCngkitHelp(topic ? `hookify-${topic}` : "hookify"));
54
+ output.component(renderCngkitHelp(topic ? `hookify-${topic}` : "hookify"));
55
55
  return true;
56
56
  }
57
- output.markdown(formatCngkitHelp(commandName));
57
+ if (commandName === "hooks") {
58
+ const topic = commandArgs.find(
59
+ (argument, index) => index !== helpIndex && !argument.startsWith("-")
60
+ );
61
+ output.component(renderCngkitHelp(topic ? `hooks-${topic}` : "hooks"));
62
+ return true;
63
+ }
64
+ output.component(renderCngkitHelp(commandName));
58
65
  return true;
59
66
  }
60
67
 
61
68
  // src/cli.ts
62
69
  try {
63
70
  const normalizedArgv = normalizeGlobalOptions(process.argv);
64
- if (printMarkdownHelpIfRequested(normalizedArgv)) {
71
+ if (printHelpIfRequested(normalizedArgv)) {
65
72
  process.exit(0);
66
73
  }
67
74
  guardKnownCommand(normalizedArgv);
@@ -116,8 +123,27 @@ function normalizeGlobalOptions(argv) {
116
123
  index -= 1;
117
124
  }
118
125
  }
126
+ normalizeKnowledgesFindOptions(normalizedArgv);
119
127
  return normalizedArgv;
120
128
  }
129
+ function normalizeKnowledgesFindOptions(argv) {
130
+ if (argv[2] !== "knowledges" || argv[3] !== "find") {
131
+ return;
132
+ }
133
+ for (let index = 4; index < argv.length; index += 1) {
134
+ if (argv[index] === "-name") {
135
+ argv[index] = "--name";
136
+ continue;
137
+ }
138
+ if (argv[index] === "-type") {
139
+ argv[index] = "--type";
140
+ continue;
141
+ }
142
+ if (argv[index] === "-maxdepth") {
143
+ argv[index] = "--max-depth";
144
+ }
145
+ }
146
+ }
121
147
  function guardKnownCommand(argv) {
122
148
  const commandName = argv[2];
123
149
  if (commandName === void 0 || commandName.startsWith("-")) {
@@ -130,6 +156,7 @@ function guardKnownCommand(argv) {
130
156
  "scrub",
131
157
  "transcripts",
132
158
  "knowledges",
159
+ "hooks",
133
160
  "hookify"
134
161
  ]);
135
162
  if (!knownCommands.has(commandName)) {
@@ -156,13 +183,21 @@ function guardKnownSubcommand(commandName, commandArgs) {
156
183
  "list",
157
184
  "files",
158
185
  "read",
186
+ "cat",
187
+ "head",
188
+ "tail",
159
189
  "grep",
160
190
  "glob",
191
+ "ls",
192
+ "tree",
193
+ "find",
194
+ "stat",
195
+ "realpath",
161
196
  "help"
162
197
  ]);
163
198
  if (!knownKnowledgesSubcommands.has(subcommand)) {
164
199
  throw new Error(
165
- `Unknown knowledges command "${subcommand}". Use one of: status, audiences, search, list, files, read, grep, glob.`
200
+ `Unknown knowledges command "${subcommand}". Use one of: status, audiences, search, list, files, read, cat, head, tail, grep, glob, ls, tree, find, stat, realpath.`
166
201
  );
167
202
  }
168
203
  }
@@ -172,5 +207,11 @@ function guardKnownSubcommand(commandName, commandArgs) {
172
207
  throw new Error(`Unknown hookify command "${subcommand}". Use one of: ingest.`);
173
208
  }
174
209
  }
210
+ if (commandName === "hooks") {
211
+ const knownHooksSubcommands = /* @__PURE__ */ new Set(["install", "uninstall"]);
212
+ if (!knownHooksSubcommands.has(subcommand)) {
213
+ throw new Error(`Unknown hooks command "${subcommand}". Use one of: install, uninstall.`);
214
+ }
215
+ }
175
216
  }
176
217
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/cli/help.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport process from \"node:process\";\n\nimport Pastel from \"pastel\";\n\nimport { printMarkdownHelpIfRequested } from \"./cli/help.js\";\nimport { packageVersion, parseOutputFormat } from \"./shared/config.js\";\nimport { formatError } from \"./shared/output.js\";\n\ntry {\n const normalizedArgv = normalizeGlobalOptions(process.argv);\n\n if (printMarkdownHelpIfRequested(normalizedArgv)) {\n process.exit(0);\n }\n\n guardKnownCommand(normalizedArgv);\n\n const app = new Pastel({\n importMeta: import.meta,\n name: \"cngkit\",\n version: packageVersion,\n description: \"Opinionated Curly.ng CLI kit for Coderoom collaboration and website tooling.\",\n });\n\n await app.run(normalizedArgv);\n} catch (error) {\n console.error(formatError(error));\n process.exitCode = 1;\n}\n\nfunction normalizeGlobalOptions(argv: string[]): string[] {\n const normalizedArgv = [...argv];\n\n for (let index = 2; index < normalizedArgv.length; index += 1) {\n const argument = normalizedArgv[index];\n\n if (argument === \"--format\") {\n const value = normalizedArgv[index + 1];\n if (!value || value.startsWith(\"-\")) {\n throw new Error(\"Missing value for --format\");\n }\n\n process.env.CNGKIT_FORMAT = parseOutputFormat(value);\n normalizedArgv.splice(index, 2);\n index -= 1;\n continue;\n }\n\n if (argument.startsWith(\"--format=\")) {\n process.env.CNGKIT_FORMAT = parseOutputFormat(argument.slice(\"--format=\".length));\n normalizedArgv.splice(index, 1);\n index -= 1;\n continue;\n }\n\n if (argument === \"--no-color\" || argument === \"--no-colors\") {\n process.env.CNGKIT_COLOR = \"never\";\n process.env.CNGKIT_NO_COLOR = \"1\";\n normalizedArgv.splice(index, 1);\n index -= 1;\n continue;\n }\n\n if (argument === \"--color\") {\n process.env.CNGKIT_COLOR = \"always\";\n normalizedArgv.splice(index, 1);\n index -= 1;\n continue;\n }\n\n if (argument.startsWith(\"--color=\")) {\n const colorMode = argument.slice(\"--color=\".length);\n process.env.CNGKIT_COLOR =\n colorMode === \"false\" || colorMode === \"never\" ? \"never\" : \"always\";\n normalizedArgv.splice(index, 1);\n index -= 1;\n }\n }\n\n return normalizedArgv;\n}\n\nfunction guardKnownCommand(argv: string[]): void {\n const commandName = argv[2];\n if (commandName === undefined || commandName.startsWith(\"-\")) {\n return;\n }\n\n const knownCommands = new Set([\n \"help\",\n \"login\",\n \"coderoom\",\n \"scrub\",\n \"transcripts\",\n \"knowledges\",\n \"hookify\",\n ]);\n if (!knownCommands.has(commandName)) {\n throw new Error(`Unknown command \"${commandName}\". Run cngkit --help for available commands.`);\n }\n\n guardKnownSubcommand(commandName, argv.slice(3));\n}\n\nfunction guardKnownSubcommand(commandName: string, commandArgs: string[]): void {\n const subcommand = commandArgs.find((argument) => !argument.startsWith(\"-\"));\n if (!subcommand) {\n return;\n }\n\n if (commandName === \"coderoom\") {\n const knownCoderoomSubcommands = new Set([\"share\", \"join\"]);\n if (!knownCoderoomSubcommands.has(subcommand)) {\n throw new Error(`Unknown coderoom command \"${subcommand}\". Use one of: share, join.`);\n }\n }\n\n if (commandName === \"knowledges\") {\n const knownKnowledgesSubcommands = new Set([\n \"status\",\n \"audiences\",\n \"search\",\n \"list\",\n \"files\",\n \"read\",\n \"grep\",\n \"glob\",\n \"help\",\n ]);\n if (!knownKnowledgesSubcommands.has(subcommand)) {\n throw new Error(\n `Unknown knowledges command \"${subcommand}\". Use one of: status, audiences, search, list, files, read, grep, glob.`\n );\n }\n }\n\n if (commandName === \"hookify\") {\n const knownHookifySubcommands = new Set([\"ingest\"]);\n if (!knownHookifySubcommands.has(subcommand)) {\n throw new Error(`Unknown hookify command \"${subcommand}\". Use one of: ingest.`);\n }\n }\n}\n","import { formatCngkitHelp, formatKnowledgesHelp } from \"./help-specs.js\";\nimport { consoleOutput, type CommandOutput } from \"../shared/output.js\";\n\nexport function printMarkdownHelpIfRequested(\n argv: string[],\n output: CommandOutput = consoleOutput\n): boolean {\n const commandName = argv[2];\n\n if (commandName === undefined || commandName === \"--help\" || commandName === \"-h\") {\n output.markdown(formatCngkitHelp());\n return true;\n }\n\n if (commandName === \"help\") {\n const [topicName, subtopicName] = argv.slice(3);\n const topic =\n (topicName === \"knowledges\" || topicName === \"coderoom\" || topicName === \"hookify\") &&\n subtopicName\n ? `${topicName}-${subtopicName}`\n : topicName;\n output.markdown(formatCngkitHelp(topic));\n return true;\n }\n\n const commandArgs = argv.slice(3);\n const helpIndex = commandArgs.findIndex((argument) => argument === \"--help\" || argument === \"-h\");\n\n if (helpIndex < 0) {\n return false;\n }\n\n if (commandName === \"knowledges\") {\n const topic = commandArgs.find(\n (argument, index) => index !== helpIndex && !argument.startsWith(\"-\")\n );\n output.markdown(formatKnowledgesHelp(topic));\n return true;\n }\n\n if (commandName === \"coderoom\") {\n const topic = commandArgs.find(\n (argument, index) => index !== helpIndex && !argument.startsWith(\"-\")\n );\n output.markdown(formatCngkitHelp(topic ? `coderoom-${topic}` : \"coderoom\"));\n return true;\n }\n\n if (commandName === \"hookify\") {\n const topic = commandArgs.find(\n (argument, index) => index !== helpIndex && !argument.startsWith(\"-\")\n );\n output.markdown(formatCngkitHelp(topic ? `hookify-${topic}` : \"hookify\"));\n return true;\n }\n\n output.markdown(formatCngkitHelp(commandName));\n return true;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli.ts","../src/cli/help.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport process from \"node:process\";\n\nimport Pastel from \"pastel\";\n\nimport { printHelpIfRequested } from \"./cli/help.js\";\nimport { packageVersion, parseOutputFormat } from \"./shared/config.js\";\nimport { formatError } from \"./shared/output.js\";\n\ntry {\n const normalizedArgv = normalizeGlobalOptions(process.argv);\n\n if (printHelpIfRequested(normalizedArgv)) {\n process.exit(0);\n }\n\n guardKnownCommand(normalizedArgv);\n\n const app = new Pastel({\n importMeta: import.meta,\n name: \"cngkit\",\n version: packageVersion,\n description: \"Opinionated Curly.ng CLI kit for Coderoom collaboration and website tooling.\",\n });\n\n await app.run(normalizedArgv);\n} catch (error) {\n console.error(formatError(error));\n process.exitCode = 1;\n}\n\nfunction normalizeGlobalOptions(argv: string[]): string[] {\n const normalizedArgv = [...argv];\n\n for (let index = 2; index < normalizedArgv.length; index += 1) {\n const argument = normalizedArgv[index];\n\n if (argument === \"--format\") {\n const value = normalizedArgv[index + 1];\n if (!value || value.startsWith(\"-\")) {\n throw new Error(\"Missing value for --format\");\n }\n\n process.env.CNGKIT_FORMAT = parseOutputFormat(value);\n normalizedArgv.splice(index, 2);\n index -= 1;\n continue;\n }\n\n if (argument.startsWith(\"--format=\")) {\n process.env.CNGKIT_FORMAT = parseOutputFormat(argument.slice(\"--format=\".length));\n normalizedArgv.splice(index, 1);\n index -= 1;\n continue;\n }\n\n if (argument === \"--no-color\" || argument === \"--no-colors\") {\n process.env.CNGKIT_COLOR = \"never\";\n process.env.CNGKIT_NO_COLOR = \"1\";\n normalizedArgv.splice(index, 1);\n index -= 1;\n continue;\n }\n\n if (argument === \"--color\") {\n process.env.CNGKIT_COLOR = \"always\";\n normalizedArgv.splice(index, 1);\n index -= 1;\n continue;\n }\n\n if (argument.startsWith(\"--color=\")) {\n const colorMode = argument.slice(\"--color=\".length);\n process.env.CNGKIT_COLOR =\n colorMode === \"false\" || colorMode === \"never\" ? \"never\" : \"always\";\n normalizedArgv.splice(index, 1);\n index -= 1;\n }\n }\n\n normalizeKnowledgesFindOptions(normalizedArgv);\n return normalizedArgv;\n}\n\nfunction normalizeKnowledgesFindOptions(argv: string[]): void {\n if (argv[2] !== \"knowledges\" || argv[3] !== \"find\") {\n return;\n }\n\n for (let index = 4; index < argv.length; index += 1) {\n if (argv[index] === \"-name\") {\n argv[index] = \"--name\";\n continue;\n }\n\n if (argv[index] === \"-type\") {\n argv[index] = \"--type\";\n continue;\n }\n\n if (argv[index] === \"-maxdepth\") {\n argv[index] = \"--max-depth\";\n }\n }\n}\n\nfunction guardKnownCommand(argv: string[]): void {\n const commandName = argv[2];\n if (commandName === undefined || commandName.startsWith(\"-\")) {\n return;\n }\n\n const knownCommands = new Set([\n \"help\",\n \"login\",\n \"coderoom\",\n \"scrub\",\n \"transcripts\",\n \"knowledges\",\n \"hooks\",\n \"hookify\",\n ]);\n if (!knownCommands.has(commandName)) {\n throw new Error(`Unknown command \"${commandName}\". Run cngkit --help for available commands.`);\n }\n\n guardKnownSubcommand(commandName, argv.slice(3));\n}\n\nfunction guardKnownSubcommand(commandName: string, commandArgs: string[]): void {\n const subcommand = commandArgs.find((argument) => !argument.startsWith(\"-\"));\n if (!subcommand) {\n return;\n }\n\n if (commandName === \"coderoom\") {\n const knownCoderoomSubcommands = new Set([\"share\", \"join\"]);\n if (!knownCoderoomSubcommands.has(subcommand)) {\n throw new Error(`Unknown coderoom command \"${subcommand}\". Use one of: share, join.`);\n }\n }\n\n if (commandName === \"knowledges\") {\n const knownKnowledgesSubcommands = new Set([\n \"status\",\n \"audiences\",\n \"search\",\n \"list\",\n \"files\",\n \"read\",\n \"cat\",\n \"head\",\n \"tail\",\n \"grep\",\n \"glob\",\n \"ls\",\n \"tree\",\n \"find\",\n \"stat\",\n \"realpath\",\n \"help\",\n ]);\n if (!knownKnowledgesSubcommands.has(subcommand)) {\n throw new Error(\n `Unknown knowledges command \"${subcommand}\". Use one of: status, audiences, search, list, files, read, cat, head, tail, grep, glob, ls, tree, find, stat, realpath.`\n );\n }\n }\n\n if (commandName === \"hookify\") {\n const knownHookifySubcommands = new Set([\"ingest\"]);\n if (!knownHookifySubcommands.has(subcommand)) {\n throw new Error(`Unknown hookify command \"${subcommand}\". Use one of: ingest.`);\n }\n }\n\n if (commandName === \"hooks\") {\n const knownHooksSubcommands = new Set([\"install\", \"uninstall\"]);\n if (!knownHooksSubcommands.has(subcommand)) {\n throw new Error(`Unknown hooks command \"${subcommand}\". Use one of: install, uninstall.`);\n }\n }\n}\n","import { renderCngkitHelp, renderKnowledgesHelp } from \"./help-specs.js\";\nimport { consoleOutput, type CommandOutput } from \"../shared/output.js\";\n\nexport function printHelpIfRequested(\n argv: string[],\n output: CommandOutput = consoleOutput\n): boolean {\n const commandName = argv[2];\n\n if (commandName === undefined || commandName === \"--help\" || commandName === \"-h\") {\n output.component(renderCngkitHelp());\n return true;\n }\n\n if (commandName === \"help\") {\n const [topicName, subtopicName] = argv.slice(3);\n const topic =\n (topicName === \"knowledges\" ||\n topicName === \"coderoom\" ||\n topicName === \"hookify\" ||\n topicName === \"hooks\") &&\n subtopicName\n ? `${topicName}-${subtopicName}`\n : topicName;\n output.component(renderCngkitHelp(topic));\n return true;\n }\n\n const commandArgs = argv.slice(3);\n const helpIndex = commandArgs.findIndex((argument) => argument === \"--help\" || argument === \"-h\");\n\n if (helpIndex < 0) {\n return false;\n }\n\n if (commandName === \"knowledges\") {\n const topic = commandArgs.find(\n (argument, index) => index !== helpIndex && !argument.startsWith(\"-\")\n );\n output.component(renderKnowledgesHelp(topic));\n return true;\n }\n\n if (commandName === \"coderoom\") {\n const topic = commandArgs.find(\n (argument, index) => index !== helpIndex && !argument.startsWith(\"-\")\n );\n output.component(renderCngkitHelp(topic ? `coderoom-${topic}` : \"coderoom\"));\n return true;\n }\n\n if (commandName === \"hookify\") {\n const topic = commandArgs.find(\n (argument, index) => index !== helpIndex && !argument.startsWith(\"-\")\n );\n output.component(renderCngkitHelp(topic ? `hookify-${topic}` : \"hookify\"));\n return true;\n }\n\n if (commandName === \"hooks\") {\n const topic = commandArgs.find(\n (argument, index) => index !== helpIndex && !argument.startsWith(\"-\")\n );\n output.component(renderCngkitHelp(topic ? `hooks-${topic}` : \"hooks\"));\n return true;\n }\n\n output.component(renderCngkitHelp(commandName));\n return true;\n}\n"],"mappings":"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","names":[]}
@@ -1,13 +1,13 @@
1
1
  import {
2
- formatCngkitHelp
3
- } from "../../chunk-KSW6QT5Q.js";
2
+ renderCngkitHelp
3
+ } from "../../chunk-3A6GRNEV.js";
4
4
  import {
5
5
  GlobalOptionsSchema
6
- } from "../../chunk-ZA4YOWPB.js";
6
+ } from "../../chunk-NGEWD4BW.js";
7
7
  import {
8
8
  CommandRunner
9
- } from "../../chunk-TWQDLZ6F.js";
10
- import "../../chunk-CBIVTEZP.js";
9
+ } from "../../chunk-X4E7NAN4.js";
10
+ import "../../chunk-7SO75QXJ.js";
11
11
  import "../../chunk-PZ5AY32C.js";
12
12
 
13
13
  // src/commands/coderoom/index.tsx
@@ -15,7 +15,7 @@ import { jsx } from "react/jsx-runtime";
15
15
  var description = "Start or join a real-time repo sync room";
16
16
  var options = GlobalOptionsSchema;
17
17
  function CoderoomCommand() {
18
- return /* @__PURE__ */ jsx(CommandRunner, { run: async (output) => output.markdown(formatCngkitHelp("coderoom")) });
18
+ return /* @__PURE__ */ jsx(CommandRunner, { run: async (output) => output.component(renderCngkitHelp("coderoom")) });
19
19
  }
20
20
  export {
21
21
  CoderoomCommand as default,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/coderoom/index.tsx"],"sourcesContent":["import { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { formatCngkitHelp } from \"../../cli/help-specs.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\n\nexport const description = \"Start or join a real-time repo sync room\";\nexport const options = GlobalOptionsSchema;\n\nexport default function CoderoomCommand() {\n return <CommandRunner run={async (output) => output.markdown(formatCngkitHelp(\"coderoom\"))} />;\n}\n"],"mappings":";;;;;;;;;;;;;AAQS;AAJF,IAAM,cAAc;AACpB,IAAM,UAAU;AAER,SAAR,kBAAmC;AACxC,SAAO,oBAAC,iBAAc,KAAK,OAAO,WAAW,OAAO,SAAS,iBAAiB,UAAU,CAAC,GAAG;AAC9F;","names":[]}
1
+ {"version":3,"sources":["../../../src/commands/coderoom/index.tsx"],"sourcesContent":["import { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { renderCngkitHelp } from \"../../cli/help-specs.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\n\nexport const description = \"Start or join a real-time repo sync room\";\nexport const options = GlobalOptionsSchema;\n\nexport default function CoderoomCommand() {\n return <CommandRunner run={async (output) => output.component(renderCngkitHelp(\"coderoom\"))} />;\n}\n"],"mappings":";;;;;;;;;;;;;AAQS;AAJF,IAAM,cAAc;AACpB,IAAM,UAAU;AAER,SAAR,kBAAmC;AACxC,SAAO,oBAAC,iBAAc,KAAK,OAAO,WAAW,OAAO,UAAU,iBAAiB,UAAU,CAAC,GAAG;AAC/F;","names":[]}
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  runJoinCommand
3
- } from "../../chunk-IB5B3BLY.js";
4
- import "../../chunk-FJ34NVQ4.js";
3
+ } from "../../chunk-GBONV6XP.js";
4
+ import "../../chunk-TYDIBWZV.js";
5
5
  import {
6
6
  GlobalOptionsSchema,
7
7
  RequiredRoomCodeArgsSchema
8
- } from "../../chunk-ZA4YOWPB.js";
8
+ } from "../../chunk-NGEWD4BW.js";
9
9
  import {
10
10
  CommandRunner
11
- } from "../../chunk-TWQDLZ6F.js";
12
- import "../../chunk-CBIVTEZP.js";
11
+ } from "../../chunk-X4E7NAN4.js";
12
+ import "../../chunk-7SO75QXJ.js";
13
13
  import "../../chunk-PZ5AY32C.js";
14
14
 
15
15
  // src/commands/coderoom/join.tsx
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  runShareCommand
3
- } from "../../chunk-IB5B3BLY.js";
4
- import "../../chunk-FJ34NVQ4.js";
3
+ } from "../../chunk-GBONV6XP.js";
4
+ import "../../chunk-TYDIBWZV.js";
5
5
  import {
6
6
  GlobalOptionsSchema,
7
7
  OptionalRoomCodeArgsSchema
8
- } from "../../chunk-ZA4YOWPB.js";
8
+ } from "../../chunk-NGEWD4BW.js";
9
9
  import {
10
10
  CommandRunner
11
- } from "../../chunk-TWQDLZ6F.js";
12
- import "../../chunk-CBIVTEZP.js";
11
+ } from "../../chunk-X4E7NAN4.js";
12
+ import "../../chunk-7SO75QXJ.js";
13
13
  import "../../chunk-PZ5AY32C.js";
14
14
 
15
15
  // src/commands/coderoom/share.tsx
@@ -1,13 +1,13 @@
1
1
  import {
2
- formatCngkitHelp
3
- } from "../../chunk-KSW6QT5Q.js";
2
+ renderCngkitHelp
3
+ } from "../../chunk-3A6GRNEV.js";
4
4
  import {
5
5
  GlobalOptionsSchema
6
- } from "../../chunk-ZA4YOWPB.js";
6
+ } from "../../chunk-NGEWD4BW.js";
7
7
  import {
8
8
  CommandRunner
9
- } from "../../chunk-TWQDLZ6F.js";
10
- import "../../chunk-CBIVTEZP.js";
9
+ } from "../../chunk-X4E7NAN4.js";
10
+ import "../../chunk-7SO75QXJ.js";
11
11
  import "../../chunk-PZ5AY32C.js";
12
12
 
13
13
  // src/commands/hookify/index.tsx
@@ -15,7 +15,7 @@ import { jsx } from "react/jsx-runtime";
15
15
  var description = "Forward hook events to Hookify";
16
16
  var options = GlobalOptionsSchema;
17
17
  function HookifyCommand() {
18
- return /* @__PURE__ */ jsx(CommandRunner, { run: async (output) => output.markdown(formatCngkitHelp("hookify")) });
18
+ return /* @__PURE__ */ jsx(CommandRunner, { run: async (output) => output.component(renderCngkitHelp("hookify")) });
19
19
  }
20
20
  export {
21
21
  HookifyCommand as default,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/hookify/index.tsx"],"sourcesContent":["import { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { formatCngkitHelp } from \"../../cli/help-specs.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\n\nexport const description = \"Forward hook events to Hookify\";\nexport const options = GlobalOptionsSchema;\n\nexport default function HookifyCommand() {\n return <CommandRunner run={async (output) => output.markdown(formatCngkitHelp(\"hookify\"))} />;\n}\n"],"mappings":";;;;;;;;;;;;;AAQS;AAJF,IAAM,cAAc;AACpB,IAAM,UAAU;AAER,SAAR,iBAAkC;AACvC,SAAO,oBAAC,iBAAc,KAAK,OAAO,WAAW,OAAO,SAAS,iBAAiB,SAAS,CAAC,GAAG;AAC7F;","names":[]}
1
+ {"version":3,"sources":["../../../src/commands/hookify/index.tsx"],"sourcesContent":["import { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { renderCngkitHelp } from \"../../cli/help-specs.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\n\nexport const description = \"Forward hook events to Hookify\";\nexport const options = GlobalOptionsSchema;\n\nexport default function HookifyCommand() {\n return <CommandRunner run={async (output) => output.component(renderCngkitHelp(\"hookify\"))} />;\n}\n"],"mappings":";;;;;;;;;;;;;AAQS;AAJF,IAAM,cAAc;AACpB,IAAM,UAAU;AAER,SAAR,iBAAkC;AACvC,SAAO,oBAAC,iBAAc,KAAK,OAAO,WAAW,OAAO,UAAU,iBAAiB,SAAS,CAAC,GAAG;AAC9F;","names":[]}
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCngApiClient
3
- } from "../../chunk-FJ34NVQ4.js";
3
+ } from "../../chunk-TYDIBWZV.js";
4
4
  import {
5
5
  GlobalOptionsSchema
6
- } from "../../chunk-ZA4YOWPB.js";
6
+ } from "../../chunk-NGEWD4BW.js";
7
7
  import {
8
8
  CommandRunner
9
- } from "../../chunk-TWQDLZ6F.js";
10
- import "../../chunk-CBIVTEZP.js";
9
+ } from "../../chunk-X4E7NAN4.js";
10
+ import "../../chunk-7SO75QXJ.js";
11
11
  import "../../chunk-PZ5AY32C.js";
12
12
 
13
13
  // src/commands/hookify/ingest.tsx
@@ -16,23 +16,28 @@ import { z } from "zod";
16
16
 
17
17
  // src/features/hookify/run-hookify-command.ts
18
18
  import process from "process";
19
+ var defaultPollAfterMs = 1e3;
20
+ var minimumPollAfterMs = 25;
21
+ var maximumPollAfterMs = 5e3;
22
+ var pollTimeoutMs = 12e4;
19
23
  async function runHookifyIngestCommand(options2) {
20
24
  const payload = await readStdinBuffer();
21
25
  try {
22
- const response = await forwardHookifyPayload(payload, options2);
23
- if (response.stdout.length > 0) {
24
- process.stdout.write(response.stdout);
26
+ const client = createCngApiClient(options2);
27
+ const response = await forwardHookifyPayload(client, payload, options2);
28
+ const result = await resolveHookifyResult(client, response);
29
+ if (result.stdout.length > 0) {
30
+ process.stdout.write(result.stdout);
25
31
  }
26
- if (response.stderr.length > 0) {
27
- process.stderr.write(response.stderr);
32
+ if (result.stderr.length > 0) {
33
+ process.stderr.write(result.stderr);
28
34
  }
29
- process.exitCode = response.exitCode;
35
+ process.exitCode = result.exitCode;
30
36
  } catch {
31
37
  process.exitCode = 0;
32
38
  }
33
39
  }
34
- async function forwardHookifyPayload(payload, options2) {
35
- const client = createCngApiClient(options2);
40
+ async function forwardHookifyPayload(client, payload, options2) {
36
41
  return client.hookify.ingestHookifyHook(
37
42
  {
38
43
  data: payload,
@@ -45,6 +50,40 @@ async function forwardHookifyPayload(payload, options2) {
45
50
  }
46
51
  );
47
52
  }
53
+ async function resolveHookifyResult(client, response) {
54
+ if (response.status === "completed") {
55
+ return completedHookifyResult(response);
56
+ }
57
+ return pollHookifyRequest(client, response.requestId, response.pollAfterMs);
58
+ }
59
+ async function pollHookifyRequest(client, requestId, initialPollAfterMs) {
60
+ let pollAfterMs = initialPollAfterMs ?? defaultPollAfterMs;
61
+ const deadlineAt = Date.now() + pollTimeoutMs;
62
+ while (Date.now() < deadlineAt) {
63
+ await sleep(clampPollAfterMs(pollAfterMs));
64
+ const response = await client.hookify.getHookifyRequest({ requestId });
65
+ if (response.status === "completed") {
66
+ return completedHookifyResult(response);
67
+ }
68
+ pollAfterMs = response.pollAfterMs ?? defaultPollAfterMs;
69
+ }
70
+ throw new Error("Timed out while polling Hookify request");
71
+ }
72
+ function completedHookifyResult(response) {
73
+ return {
74
+ stdout: response.stdout ?? "",
75
+ stderr: response.stderr ?? "",
76
+ exitCode: response.exitCode ?? 0
77
+ };
78
+ }
79
+ function clampPollAfterMs(pollAfterMs) {
80
+ return Math.min(Math.max(pollAfterMs, minimumPollAfterMs), maximumPollAfterMs);
81
+ }
82
+ function sleep(milliseconds) {
83
+ return new Promise((resolve) => {
84
+ setTimeout(resolve, milliseconds);
85
+ });
86
+ }
48
87
  async function readStdinBuffer() {
49
88
  const chunks = [];
50
89
  for await (const chunk of process.stdin) {
@@ -67,7 +106,7 @@ var description = "Read a hook payload from stdin and forward it to Hookify";
67
106
  var options = GlobalOptionsSchema.extend({
68
107
  async: z.boolean().optional().describe(
69
108
  option({
70
- description: "Accept hook payload asynchronously and return immediately"
109
+ description: "Allow server workflow processing; poll until the hook result is ready"
71
110
  })
72
111
  ),
73
112
  event: z.string().optional().describe(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/hookify/ingest.tsx","../../../src/features/hookify/run-hookify-command.ts"],"sourcesContent":["import { option } from \"pastel\";\nimport { z } from \"zod\";\n\nimport { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\nimport {\n runHookifyIngestCommand,\n type HookifyIngestCommandOptions,\n} from \"../../features/hookify/run-hookify-command.js\";\n\nexport const description = \"Read a hook payload from stdin and forward it to Hookify\";\nexport const options = GlobalOptionsSchema.extend({\n async: z\n .boolean()\n .optional()\n .describe(\n option({\n description: \"Accept hook payload asynchronously and return immediately\",\n })\n ),\n event: z\n .string()\n .optional()\n .describe(\n option({\n description: \"Optional hook event label\",\n valueDescription: \"name\",\n })\n ),\n});\n\ntype HookifyIngestCommandProps = {\n readonly options: HookifyIngestCommandOptions;\n};\n\nexport default function HookifyIngestCommand({ options }: HookifyIngestCommandProps) {\n return <CommandRunner run={() => runHookifyIngestCommand(options)} />;\n}\n","import process from \"node:process\";\nimport type { CngApi } from \"@cng/client\";\n\nimport { createCngApiClient } from \"../../shared/api-client.js\";\nimport type { GlobalCommandOptions } from \"../../shared/config.js\";\n\nexport type HookifyIngestCommandOptions = GlobalCommandOptions & {\n readonly async?: boolean;\n readonly event?: string;\n};\n\nexport async function runHookifyIngestCommand(options: HookifyIngestCommandOptions): Promise<void> {\n const payload = await readStdinBuffer();\n\n try {\n const response = await forwardHookifyPayload(payload, options);\n if (response.stdout.length > 0) {\n process.stdout.write(response.stdout);\n }\n if (response.stderr.length > 0) {\n process.stderr.write(response.stderr);\n }\n process.exitCode = response.exitCode;\n } catch {\n process.exitCode = 0;\n }\n}\n\nasync function forwardHookifyPayload(\n payload: Buffer,\n options: HookifyIngestCommandOptions\n): Promise<CngApi.HookifyIngestResponse> {\n const client = createCngApiClient(options);\n return client.hookify.ingestHookifyHook(\n {\n data: payload,\n contentType: \"application/octet-stream\",\n contentLength: payload.byteLength,\n },\n {\n mode: options.async === true ? \"async\" : \"sync\",\n event: options.event,\n }\n );\n}\n\nasync function readStdinBuffer(): Promise<Buffer> {\n const chunks: Uint8Array[] = [];\n\n for await (const chunk of process.stdin) {\n if (typeof chunk === \"string\") {\n chunks.push(Buffer.from(chunk));\n continue;\n }\n\n if (chunk instanceof Uint8Array) {\n chunks.push(chunk);\n continue;\n }\n\n chunks.push(Buffer.from(String(chunk)));\n }\n\n return Buffer.concat(chunks);\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,cAAc;AACvB,SAAS,SAAS;;;ACDlB,OAAO,aAAa;AAWpB,eAAsB,wBAAwBA,UAAqD;AACjG,QAAM,UAAU,MAAM,gBAAgB;AAEtC,MAAI;AACF,UAAM,WAAW,MAAM,sBAAsB,SAASA,QAAO;AAC7D,QAAI,SAAS,OAAO,SAAS,GAAG;AAC9B,cAAQ,OAAO,MAAM,SAAS,MAAM;AAAA,IACtC;AACA,QAAI,SAAS,OAAO,SAAS,GAAG;AAC9B,cAAQ,OAAO,MAAM,SAAS,MAAM;AAAA,IACtC;AACA,YAAQ,WAAW,SAAS;AAAA,EAC9B,QAAQ;AACN,YAAQ,WAAW;AAAA,EACrB;AACF;AAEA,eAAe,sBACb,SACAA,UACuC;AACvC,QAAM,SAAS,mBAAmBA,QAAO;AACzC,SAAO,OAAO,QAAQ;AAAA,IACpB;AAAA,MACE,MAAM;AAAA,MACN,aAAa;AAAA,MACb,eAAe,QAAQ;AAAA,IACzB;AAAA,IACA;AAAA,MACE,MAAMA,SAAQ,UAAU,OAAO,UAAU;AAAA,MACzC,OAAOA,SAAQ;AAAA,IACjB;AAAA,EACF;AACF;AAEA,eAAe,kBAAmC;AAChD,QAAM,SAAuB,CAAC;AAE9B,mBAAiB,SAAS,QAAQ,OAAO;AACvC,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,KAAK,OAAO,KAAK,KAAK,CAAC;AAC9B;AAAA,IACF;AAEA,QAAI,iBAAiB,YAAY;AAC/B,aAAO,KAAK,KAAK;AACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO,KAAK,CAAC,CAAC;AAAA,EACxC;AAEA,SAAO,OAAO,OAAO,MAAM;AAC7B;;;AD5BS;AA1BF,IAAM,cAAc;AACpB,IAAM,UAAU,oBAAoB,OAAO;AAAA,EAChD,OAAO,EACJ,QAAQ,EACR,SAAS,EACT;AAAA,IACC,OAAO;AAAA,MACL,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACF,OAAO,EACJ,OAAO,EACP,SAAS,EACT;AAAA,IACC,OAAO;AAAA,MACL,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACJ,CAAC;AAMc,SAAR,qBAAsC,EAAE,SAAAC,SAAQ,GAA8B;AACnF,SAAO,oBAAC,iBAAc,KAAK,MAAM,wBAAwBA,QAAO,GAAG;AACrE;","names":["options","options"]}
1
+ {"version":3,"sources":["../../../src/commands/hookify/ingest.tsx","../../../src/features/hookify/run-hookify-command.ts"],"sourcesContent":["import { option } from \"pastel\";\nimport { z } from \"zod\";\n\nimport { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\nimport {\n runHookifyIngestCommand,\n type HookifyIngestCommandOptions,\n} from \"../../features/hookify/run-hookify-command.js\";\n\nexport const description = \"Read a hook payload from stdin and forward it to Hookify\";\nexport const options = GlobalOptionsSchema.extend({\n async: z\n .boolean()\n .optional()\n .describe(\n option({\n description: \"Allow server workflow processing; poll until the hook result is ready\",\n })\n ),\n event: z\n .string()\n .optional()\n .describe(\n option({\n description: \"Optional hook event label\",\n valueDescription: \"name\",\n })\n ),\n});\n\ntype HookifyIngestCommandProps = {\n readonly options: HookifyIngestCommandOptions;\n};\n\nexport default function HookifyIngestCommand({ options }: HookifyIngestCommandProps) {\n return <CommandRunner run={() => runHookifyIngestCommand(options)} />;\n}\n","import process from \"node:process\";\nimport type { CngApi } from \"@cng/client\";\n\nimport { createCngApiClient } from \"../../shared/api-client.js\";\nimport type { GlobalCommandOptions } from \"../../shared/config.js\";\n\nexport type HookifyIngestCommandOptions = GlobalCommandOptions & {\n readonly async?: boolean;\n readonly event?: string;\n};\n\ntype HookifyCompletedResult = {\n readonly stdout: string;\n readonly stderr: string;\n readonly exitCode: number;\n};\n\ntype HookifyClient = ReturnType<typeof createCngApiClient>;\ntype HookifyResponse = CngApi.HookifyIngestResponse | CngApi.HookifyRequestResponse;\n\nconst defaultPollAfterMs = 1000;\nconst minimumPollAfterMs = 25;\nconst maximumPollAfterMs = 5000;\nconst pollTimeoutMs = 120_000;\n\nexport async function runHookifyIngestCommand(options: HookifyIngestCommandOptions): Promise<void> {\n const payload = await readStdinBuffer();\n\n try {\n const client = createCngApiClient(options);\n const response = await forwardHookifyPayload(client, payload, options);\n const result = await resolveHookifyResult(client, response);\n if (result.stdout.length > 0) {\n process.stdout.write(result.stdout);\n }\n if (result.stderr.length > 0) {\n process.stderr.write(result.stderr);\n }\n process.exitCode = result.exitCode;\n } catch {\n process.exitCode = 0;\n }\n}\n\nasync function forwardHookifyPayload(\n client: HookifyClient,\n payload: Buffer,\n options: HookifyIngestCommandOptions\n): Promise<CngApi.HookifyIngestResponse> {\n return client.hookify.ingestHookifyHook(\n {\n data: payload,\n contentType: \"application/octet-stream\",\n contentLength: payload.byteLength,\n },\n {\n mode: options.async === true ? \"async\" : \"sync\",\n event: options.event,\n }\n );\n}\n\nasync function resolveHookifyResult(\n client: HookifyClient,\n response: CngApi.HookifyIngestResponse\n): Promise<HookifyCompletedResult> {\n if (response.status === \"completed\") {\n return completedHookifyResult(response);\n }\n\n return pollHookifyRequest(client, response.requestId, response.pollAfterMs);\n}\n\nasync function pollHookifyRequest(\n client: HookifyClient,\n requestId: string,\n initialPollAfterMs: number | undefined\n): Promise<HookifyCompletedResult> {\n let pollAfterMs = initialPollAfterMs ?? defaultPollAfterMs;\n const deadlineAt = Date.now() + pollTimeoutMs;\n\n while (Date.now() < deadlineAt) {\n await sleep(clampPollAfterMs(pollAfterMs));\n const response = await client.hookify.getHookifyRequest({ requestId });\n\n if (response.status === \"completed\") {\n return completedHookifyResult(response);\n }\n\n pollAfterMs = response.pollAfterMs ?? defaultPollAfterMs;\n }\n\n throw new Error(\"Timed out while polling Hookify request\");\n}\n\nfunction completedHookifyResult(response: HookifyResponse): HookifyCompletedResult {\n return {\n stdout: response.stdout ?? \"\",\n stderr: response.stderr ?? \"\",\n exitCode: response.exitCode ?? 0,\n };\n}\n\nfunction clampPollAfterMs(pollAfterMs: number): number {\n return Math.min(Math.max(pollAfterMs, minimumPollAfterMs), maximumPollAfterMs);\n}\n\nfunction sleep(milliseconds: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, milliseconds);\n });\n}\n\nasync function readStdinBuffer(): Promise<Buffer> {\n const chunks: Uint8Array[] = [];\n\n for await (const chunk of process.stdin) {\n if (typeof chunk === \"string\") {\n chunks.push(Buffer.from(chunk));\n continue;\n }\n\n if (chunk instanceof Uint8Array) {\n chunks.push(chunk);\n continue;\n }\n\n chunks.push(Buffer.from(String(chunk)));\n }\n\n return Buffer.concat(chunks);\n}\n"],"mappings":"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","names":["options","options"]}
@@ -0,0 +1,25 @@
1
+ import {
2
+ renderCngkitHelp
3
+ } from "../../chunk-3A6GRNEV.js";
4
+ import {
5
+ GlobalOptionsSchema
6
+ } from "../../chunk-NGEWD4BW.js";
7
+ import {
8
+ CommandRunner
9
+ } from "../../chunk-X4E7NAN4.js";
10
+ import "../../chunk-7SO75QXJ.js";
11
+ import "../../chunk-PZ5AY32C.js";
12
+
13
+ // src/commands/hooks/index.tsx
14
+ import { jsx } from "react/jsx-runtime";
15
+ var description = "Install cngkit hooks into supported AI coding tools";
16
+ var options = GlobalOptionsSchema;
17
+ function HooksCommand() {
18
+ return /* @__PURE__ */ jsx(CommandRunner, { run: async (output) => output.component(renderCngkitHelp("hooks")) });
19
+ }
20
+ export {
21
+ HooksCommand as default,
22
+ description,
23
+ options
24
+ };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/commands/hooks/index.tsx"],"sourcesContent":["import { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { renderCngkitHelp } from \"../../cli/help-specs.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\n\nexport const description = \"Install cngkit hooks into supported AI coding tools\";\nexport const options = GlobalOptionsSchema;\n\nexport default function HooksCommand() {\n return <CommandRunner run={async (output) => output.component(renderCngkitHelp(\"hooks\"))} />;\n}\n"],"mappings":";;;;;;;;;;;;;AAQS;AAJF,IAAM,cAAc;AACpB,IAAM,UAAU;AAER,SAAR,eAAgC;AACrC,SAAO,oBAAC,iBAAc,KAAK,OAAO,WAAW,OAAO,UAAU,iBAAiB,OAAO,CAAC,GAAG;AAC5F;","names":[]}
@@ -0,0 +1,40 @@
1
+ import {
2
+ hookToolIds,
3
+ runHooksInstallCommand
4
+ } from "../../chunk-DBA3BZXP.js";
5
+ import {
6
+ GlobalOptionsSchema
7
+ } from "../../chunk-NGEWD4BW.js";
8
+ import {
9
+ CommandRunner
10
+ } from "../../chunk-X4E7NAN4.js";
11
+ import "../../chunk-7SO75QXJ.js";
12
+ import "../../chunk-PZ5AY32C.js";
13
+
14
+ // src/commands/hooks/install.tsx
15
+ import { option } from "pastel";
16
+ import { z } from "zod";
17
+ import { jsx } from "react/jsx-runtime";
18
+ var description = "Install Hookify forwarding hooks for supported AI coding tools";
19
+ var options = GlobalOptionsSchema.extend({
20
+ dryRun: z.boolean().optional().describe(
21
+ option({
22
+ description: "Print what would be installed without writing files"
23
+ })
24
+ ),
25
+ tool: z.enum(hookToolIds).optional().describe(
26
+ option({
27
+ description: "Tool to configure",
28
+ valueDescription: "all|claude|codex"
29
+ })
30
+ )
31
+ });
32
+ function HooksInstallCommand({ options: options2 }) {
33
+ return /* @__PURE__ */ jsx(CommandRunner, { run: (output) => runHooksInstallCommand(options2, output) });
34
+ }
35
+ export {
36
+ HooksInstallCommand as default,
37
+ description,
38
+ options
39
+ };
40
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/commands/hooks/install.tsx"],"sourcesContent":["import { option } from \"pastel\";\nimport { z } from \"zod\";\n\nimport { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\nimport {\n hookToolIds,\n runHooksInstallCommand,\n type HookToolId,\n type HooksInstallCommandOptions,\n} from \"../../features/hooks/run-hooks-install-command.js\";\n\nexport const description = \"Install Hookify forwarding hooks for supported AI coding tools\";\nexport const options = GlobalOptionsSchema.extend({\n dryRun: z\n .boolean()\n .optional()\n .describe(\n option({\n description: \"Print what would be installed without writing files\",\n })\n ),\n tool: z\n .enum(hookToolIds)\n .optional()\n .describe(\n option({\n description: \"Tool to configure\",\n valueDescription: \"all|claude|codex\",\n })\n ),\n});\n\ntype HooksInstallCommandProps = {\n readonly options: HooksInstallCommandOptions & {\n readonly tool?: HookToolId;\n };\n};\n\nexport default function HooksInstallCommand({ options }: HooksInstallCommandProps) {\n return <CommandRunner run={(output) => runHooksInstallCommand(options, output)} />;\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,cAAc;AACvB,SAAS,SAAS;AAuCT;AA5BF,IAAM,cAAc;AACpB,IAAM,UAAU,oBAAoB,OAAO;AAAA,EAChD,QAAQ,EACL,QAAQ,EACR,SAAS,EACT;AAAA,IACC,OAAO;AAAA,MACL,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACF,MAAM,EACH,KAAK,WAAW,EAChB,SAAS,EACT;AAAA,IACC,OAAO;AAAA,MACL,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACJ,CAAC;AAQc,SAAR,oBAAqC,EAAE,SAAAA,SAAQ,GAA6B;AACjF,SAAO,oBAAC,iBAAc,KAAK,CAAC,WAAW,uBAAuBA,UAAS,MAAM,GAAG;AAClF;","names":["options"]}
@@ -0,0 +1,40 @@
1
+ import {
2
+ hookToolIds,
3
+ runHooksUninstallCommand
4
+ } from "../../chunk-DBA3BZXP.js";
5
+ import {
6
+ GlobalOptionsSchema
7
+ } from "../../chunk-NGEWD4BW.js";
8
+ import {
9
+ CommandRunner
10
+ } from "../../chunk-X4E7NAN4.js";
11
+ import "../../chunk-7SO75QXJ.js";
12
+ import "../../chunk-PZ5AY32C.js";
13
+
14
+ // src/commands/hooks/uninstall.tsx
15
+ import { option } from "pastel";
16
+ import { z } from "zod";
17
+ import { jsx } from "react/jsx-runtime";
18
+ var description = "Remove cngkit Hookify forwarding hooks from supported AI coding tools";
19
+ var options = GlobalOptionsSchema.extend({
20
+ dryRun: z.boolean().optional().describe(
21
+ option({
22
+ description: "Print what would be removed without writing files"
23
+ })
24
+ ),
25
+ tool: z.enum(hookToolIds).optional().describe(
26
+ option({
27
+ description: "Tool to configure",
28
+ valueDescription: "all|claude|codex"
29
+ })
30
+ )
31
+ });
32
+ function HooksUninstallCommand({ options: options2 }) {
33
+ return /* @__PURE__ */ jsx(CommandRunner, { run: (output) => runHooksUninstallCommand(options2, output) });
34
+ }
35
+ export {
36
+ HooksUninstallCommand as default,
37
+ description,
38
+ options
39
+ };
40
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/commands/hooks/uninstall.tsx"],"sourcesContent":["import { option } from \"pastel\";\nimport { z } from \"zod\";\n\nimport { GlobalOptionsSchema } from \"../../cli/options.js\";\nimport { CommandRunner } from \"../../cli/command-runner.js\";\nimport {\n hookToolIds,\n runHooksUninstallCommand,\n type HookToolId,\n type HooksUninstallCommandOptions,\n} from \"../../features/hooks/run-hooks-install-command.js\";\n\nexport const description = \"Remove cngkit Hookify forwarding hooks from supported AI coding tools\";\nexport const options = GlobalOptionsSchema.extend({\n dryRun: z\n .boolean()\n .optional()\n .describe(\n option({\n description: \"Print what would be removed without writing files\",\n })\n ),\n tool: z\n .enum(hookToolIds)\n .optional()\n .describe(\n option({\n description: \"Tool to configure\",\n valueDescription: \"all|claude|codex\",\n })\n ),\n});\n\ntype HooksUninstallCommandProps = {\n readonly options: HooksUninstallCommandOptions & {\n readonly tool?: HookToolId;\n };\n};\n\nexport default function HooksUninstallCommand({ options }: HooksUninstallCommandProps) {\n return <CommandRunner run={(output) => runHooksUninstallCommand(options, output)} />;\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,cAAc;AACvB,SAAS,SAAS;AAuCT;AA5BF,IAAM,cAAc;AACpB,IAAM,UAAU,oBAAoB,OAAO;AAAA,EAChD,QAAQ,EACL,QAAQ,EACR,SAAS,EACT;AAAA,IACC,OAAO;AAAA,MACL,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACF,MAAM,EACH,KAAK,WAAW,EAChB,SAAS,EACT;AAAA,IACC,OAAO;AAAA,MACL,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACJ,CAAC;AAQc,SAAR,sBAAuC,EAAE,SAAAA,SAAQ,GAA+B;AACrF,SAAO,oBAAC,iBAAc,KAAK,CAAC,WAAW,yBAAyBA,UAAS,MAAM,GAAG;AACpF;","names":["options"]}
@@ -1,17 +1,17 @@
1
1
  import {
2
- formatCngkitHelp
3
- } from "../chunk-KSW6QT5Q.js";
2
+ renderCngkitHelp
3
+ } from "../chunk-3A6GRNEV.js";
4
4
  import {
5
5
  CommandRunner
6
- } from "../chunk-TWQDLZ6F.js";
7
- import "../chunk-CBIVTEZP.js";
6
+ } from "../chunk-X4E7NAN4.js";
7
+ import "../chunk-7SO75QXJ.js";
8
8
  import "../chunk-PZ5AY32C.js";
9
9
 
10
10
  // src/commands/index.tsx
11
11
  import { jsx } from "react/jsx-runtime";
12
12
  var description = "Show cngkit help";
13
13
  function IndexCommand() {
14
- return /* @__PURE__ */ jsx(CommandRunner, { run: async (output) => output.markdown(formatCngkitHelp()) });
14
+ return /* @__PURE__ */ jsx(CommandRunner, { run: async (output) => output.component(renderCngkitHelp()) });
15
15
  }
16
16
  export {
17
17
  IndexCommand as default,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/index.tsx"],"sourcesContent":["import { CommandRunner } from \"../cli/command-runner.js\";\nimport { formatCngkitHelp } from \"../cli/help-specs.js\";\n\nexport const description = \"Show cngkit help\";\n\nexport default function IndexCommand() {\n return <CommandRunner run={async (output) => output.markdown(formatCngkitHelp())} />;\n}\n"],"mappings":";;;;;;;;;;AAMS;AAHF,IAAM,cAAc;AAEZ,SAAR,eAAgC;AACrC,SAAO,oBAAC,iBAAc,KAAK,OAAO,WAAW,OAAO,SAAS,iBAAiB,CAAC,GAAG;AACpF;","names":[]}
1
+ {"version":3,"sources":["../../src/commands/index.tsx"],"sourcesContent":["import { CommandRunner } from \"../cli/command-runner.js\";\nimport { renderCngkitHelp } from \"../cli/help-specs.js\";\n\nexport const description = \"Show cngkit help\";\n\nexport default function IndexCommand() {\n return <CommandRunner run={async (output) => output.component(renderCngkitHelp())} />;\n}\n"],"mappings":";;;;;;;;;;AAMS;AAHF,IAAM,cAAc;AAEZ,SAAR,eAAgC;AACrC,SAAO,oBAAC,iBAAc,KAAK,OAAO,WAAW,OAAO,UAAU,iBAAiB,CAAC,GAAG;AACrF;","names":[]}
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runKnowAudiencesCommand
3
- } from "../../chunk-C7HFDK4S.js";
3
+ } from "../../chunk-L6ZVQRSY.js";
4
4
  import "../../chunk-XQGLUQFM.js";
5
- import "../../chunk-KSW6QT5Q.js";
6
- import "../../chunk-FJ34NVQ4.js";
5
+ import "../../chunk-3A6GRNEV.js";
6
+ import "../../chunk-TYDIBWZV.js";
7
7
  import {
8
8
  JsonOutputOptionsSchema
9
- } from "../../chunk-ZA4YOWPB.js";
9
+ } from "../../chunk-NGEWD4BW.js";
10
10
  import {
11
11
  CommandRunner
12
- } from "../../chunk-TWQDLZ6F.js";
13
- import "../../chunk-CBIVTEZP.js";
12
+ } from "../../chunk-X4E7NAN4.js";
13
+ import "../../chunk-7SO75QXJ.js";
14
14
  import "../../chunk-PZ5AY32C.js";
15
15
 
16
16
  // src/commands/knowledges/audiences.tsx