chkit 0.1.2-beta.7 → 0.2.0-beta.8

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 (157) hide show
  1. package/README.md +35 -16
  2. package/dist/commands/drift/compare.d.ts.map +1 -1
  3. package/dist/commands/drift/compare.js +31 -3
  4. package/dist/commands/drift/compare.js.map +1 -1
  5. package/dist/commands/migrate/async-apply.d.ts.map +1 -1
  6. package/dist/commands/migrate/async-apply.js +1 -3
  7. package/dist/commands/migrate/async-apply.js.map +1 -1
  8. package/dist/runtime/config-merge.d.ts.map +1 -1
  9. package/dist/runtime/config-merge.js +2 -1
  10. package/dist/runtime/config-merge.js.map +1 -1
  11. package/dist/runtime/journal-store.d.ts.map +1 -1
  12. package/dist/runtime/journal-store.js +17 -24
  13. package/dist/runtime/journal-store.js.map +1 -1
  14. package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -1
  15. package/dist/runtime/plugin-runtime/executor-debug.js +2 -0
  16. package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -1
  17. package/package.json +7 -6
  18. package/dist/bin/clickhouse-resource.d.ts +0 -4
  19. package/dist/bin/clickhouse-resource.d.ts.map +0 -1
  20. package/dist/bin/clickhouse-resource.js +0 -11
  21. package/dist/bin/clickhouse-resource.js.map +0 -1
  22. package/dist/bin/command-dispatch.d.ts +0 -13
  23. package/dist/bin/command-dispatch.d.ts.map +0 -1
  24. package/dist/bin/command-dispatch.js +0 -186
  25. package/dist/bin/command-dispatch.js.map +0 -1
  26. package/dist/bin/command-registry.d.ts +0 -34
  27. package/dist/bin/command-registry.d.ts.map +0 -1
  28. package/dist/bin/command-registry.js +0 -87
  29. package/dist/bin/command-registry.js.map +0 -1
  30. package/dist/bin/commands/check.d.ts +0 -3
  31. package/dist/bin/commands/check.d.ts.map +0 -1
  32. package/dist/bin/commands/check.js +0 -181
  33. package/dist/bin/commands/check.js.map +0 -1
  34. package/dist/bin/commands/codegen.d.ts +0 -2
  35. package/dist/bin/commands/codegen.d.ts.map +0 -1
  36. package/dist/bin/commands/codegen.js +0 -25
  37. package/dist/bin/commands/codegen.js.map +0 -1
  38. package/dist/bin/commands/drift.d.ts +0 -27
  39. package/dist/bin/commands/drift.d.ts.map +0 -1
  40. package/dist/bin/commands/drift.js +0 -220
  41. package/dist/bin/commands/drift.js.map +0 -1
  42. package/dist/bin/commands/generate/output.d.ts +0 -8
  43. package/dist/bin/commands/generate/output.d.ts.map +0 -1
  44. package/dist/bin/commands/generate/output.js +0 -58
  45. package/dist/bin/commands/generate/output.js.map +0 -1
  46. package/dist/bin/commands/generate/plan-pipeline.d.ts +0 -7
  47. package/dist/bin/commands/generate/plan-pipeline.d.ts.map +0 -1
  48. package/dist/bin/commands/generate/plan-pipeline.js +0 -143
  49. package/dist/bin/commands/generate/plan-pipeline.js.map +0 -1
  50. package/dist/bin/commands/generate/rename-mappings.d.ts +0 -29
  51. package/dist/bin/commands/generate/rename-mappings.d.ts.map +0 -1
  52. package/dist/bin/commands/generate/rename-mappings.js +0 -195
  53. package/dist/bin/commands/generate/rename-mappings.js.map +0 -1
  54. package/dist/bin/commands/generate.d.ts +0 -3
  55. package/dist/bin/commands/generate.d.ts.map +0 -1
  56. package/dist/bin/commands/generate.js +0 -158
  57. package/dist/bin/commands/generate.js.map +0 -1
  58. package/dist/bin/commands/init.d.ts +0 -2
  59. package/dist/bin/commands/init.d.ts.map +0 -1
  60. package/dist/bin/commands/init.js +0 -12
  61. package/dist/bin/commands/init.js.map +0 -1
  62. package/dist/bin/commands/migrate.d.ts +0 -3
  63. package/dist/bin/commands/migrate.d.ts.map +0 -1
  64. package/dist/bin/commands/migrate.js +0 -288
  65. package/dist/bin/commands/migrate.js.map +0 -1
  66. package/dist/bin/commands/plugin-like.d.ts +0 -38
  67. package/dist/bin/commands/plugin-like.d.ts.map +0 -1
  68. package/dist/bin/commands/plugin-like.js +0 -101
  69. package/dist/bin/commands/plugin-like.js.map +0 -1
  70. package/dist/bin/commands/plugin.d.ts +0 -3
  71. package/dist/bin/commands/plugin.d.ts.map +0 -1
  72. package/dist/bin/commands/plugin.js +0 -148
  73. package/dist/bin/commands/plugin.js.map +0 -1
  74. package/dist/bin/commands/pull.d.ts +0 -2
  75. package/dist/bin/commands/pull.d.ts.map +0 -1
  76. package/dist/bin/commands/pull.js +0 -25
  77. package/dist/bin/commands/pull.js.map +0 -1
  78. package/dist/bin/commands/status.d.ts +0 -3
  79. package/dist/bin/commands/status.d.ts.map +0 -1
  80. package/dist/bin/commands/status.js +0 -63
  81. package/dist/bin/commands/status.js.map +0 -1
  82. package/dist/bin/commands/typegen.d.ts +0 -2
  83. package/dist/bin/commands/typegen.d.ts.map +0 -1
  84. package/dist/bin/commands/typegen.js +0 -25
  85. package/dist/bin/commands/typegen.js.map +0 -1
  86. package/dist/bin/config.d.ts +0 -13
  87. package/dist/bin/config.d.ts.map +0 -1
  88. package/dist/bin/config.js +0 -48
  89. package/dist/bin/config.js.map +0 -1
  90. package/dist/bin/debug.d.ts +0 -3
  91. package/dist/bin/debug.d.ts.map +0 -1
  92. package/dist/bin/debug.js +0 -14
  93. package/dist/bin/debug.js.map +0 -1
  94. package/dist/bin/global-flags.d.ts +0 -16
  95. package/dist/bin/global-flags.d.ts.map +0 -1
  96. package/dist/bin/global-flags.js +0 -7
  97. package/dist/bin/global-flags.js.map +0 -1
  98. package/dist/bin/help.d.ts +0 -5
  99. package/dist/bin/help.d.ts.map +0 -1
  100. package/dist/bin/help.js +0 -84
  101. package/dist/bin/help.js.map +0 -1
  102. package/dist/bin/internal-plugins/index.d.ts +0 -3
  103. package/dist/bin/internal-plugins/index.d.ts.map +0 -1
  104. package/dist/bin/internal-plugins/index.js +0 -5
  105. package/dist/bin/internal-plugins/index.js.map +0 -1
  106. package/dist/bin/internal-plugins/skill-hint.d.ts +0 -31
  107. package/dist/bin/internal-plugins/skill-hint.d.ts.map +0 -1
  108. package/dist/bin/internal-plugins/skill-hint.js +0 -172
  109. package/dist/bin/internal-plugins/skill-hint.js.map +0 -1
  110. package/dist/bin/journal-store.d.ts +0 -10
  111. package/dist/bin/journal-store.d.ts.map +0 -1
  112. package/dist/bin/journal-store.js +0 -137
  113. package/dist/bin/journal-store.js.map +0 -1
  114. package/dist/bin/json-output.d.ts +0 -5
  115. package/dist/bin/json-output.d.ts.map +0 -1
  116. package/dist/bin/json-output.js +0 -21
  117. package/dist/bin/json-output.js.map +0 -1
  118. package/dist/bin/lib.d.ts +0 -5
  119. package/dist/bin/lib.d.ts.map +0 -1
  120. package/dist/bin/lib.js +0 -5
  121. package/dist/bin/lib.js.map +0 -1
  122. package/dist/bin/logging.d.ts +0 -3
  123. package/dist/bin/logging.d.ts.map +0 -1
  124. package/dist/bin/logging.js +0 -31
  125. package/dist/bin/logging.js.map +0 -1
  126. package/dist/bin/migration-store.d.ts +0 -22
  127. package/dist/bin/migration-store.d.ts.map +0 -1
  128. package/dist/bin/migration-store.js +0 -60
  129. package/dist/bin/migration-store.js.map +0 -1
  130. package/dist/bin/plugin-runtime.d.ts +0 -45
  131. package/dist/bin/plugin-runtime.d.ts.map +0 -1
  132. package/dist/bin/plugin-runtime.js +0 -513
  133. package/dist/bin/plugin-runtime.js.map +0 -1
  134. package/dist/bin/safety-markers.d.ts +0 -23
  135. package/dist/bin/safety-markers.d.ts.map +0 -1
  136. package/dist/bin/safety-markers.js +0 -85
  137. package/dist/bin/safety-markers.js.map +0 -1
  138. package/dist/bin/schema-loader.d.ts +0 -3
  139. package/dist/bin/schema-loader.d.ts.map +0 -1
  140. package/dist/bin/schema-loader.js +0 -11
  141. package/dist/bin/schema-loader.js.map +0 -1
  142. package/dist/bin/table-scope.d.ts +0 -38
  143. package/dist/bin/table-scope.d.ts.map +0 -1
  144. package/dist/bin/table-scope.js +0 -167
  145. package/dist/bin/table-scope.js.map +0 -1
  146. package/dist/bin/version.d.ts +0 -2
  147. package/dist/bin/version.d.ts.map +0 -1
  148. package/dist/bin/version.js +0 -5
  149. package/dist/bin/version.js.map +0 -1
  150. package/dist/drift-diff.d.ts +0 -8
  151. package/dist/drift-diff.d.ts.map +0 -1
  152. package/dist/drift-diff.js +0 -46
  153. package/dist/drift-diff.js.map +0 -1
  154. package/dist/drift.d.ts +0 -66
  155. package/dist/drift.d.ts.map +0 -1
  156. package/dist/drift.js +0 -220
  157. package/dist/drift.js.map +0 -1
@@ -1,25 +0,0 @@
1
- import { buildPluginLikeContext, runPluginLikeCommand } from './plugin-like.js';
2
- export async function cmdPull(args) {
3
- const context = await buildPluginLikeContext({
4
- args,
5
- command: 'pull',
6
- handleInvalidPluginOptions: true,
7
- });
8
- if (!context)
9
- return;
10
- const pluginName = 'pull';
11
- const commandName = 'schema';
12
- await runPluginLikeCommand({
13
- context,
14
- pluginName,
15
- commandName,
16
- commandArgs: context.commandArgs,
17
- missingPluginMessage() {
18
- return 'Pull plugin is not configured. Add a plugin with manifest.name "pull" to config.plugins.';
19
- },
20
- missingCommandMessage({ availableCommands }) {
21
- return `Pull plugin is configured but does not expose command "${commandName}". Available: ${availableCommands.length > 0 ? availableCommands.join(', ') : '(none)'}.`;
22
- },
23
- });
24
- }
25
- //# sourceMappingURL=pull.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/bin/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAE/E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC;QAC3C,IAAI;QACJ,OAAO,EAAE,MAAM;QACf,0BAA0B,EAAE,IAAI;KACjC,CAAC,CAAA;IACF,IAAI,CAAC,OAAO;QAAE,OAAM;IAEpB,MAAM,UAAU,GAAG,MAAM,CAAA;IACzB,MAAM,WAAW,GAAG,QAAQ,CAAA;IAC5B,MAAM,oBAAoB,CAAC;QACzB,OAAO;QACP,UAAU;QACV,WAAW;QACX,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,oBAAoB;YAClB,OAAO,0FAA0F,CAAA;QACnG,CAAC;QACD,qBAAqB,CAAC,EAAE,iBAAiB,EAAE;YACzC,OAAO,0DAA0D,WAAW,iBAAiB,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAA;QACxK,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { CommandDef } from '../../plugins.js';
2
- export declare const statusCommand: CommandDef;
3
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAA;AAMrE,eAAO,MAAM,aAAa,EAAE,UAK3B,CAAA"}
@@ -1,63 +0,0 @@
1
- import { mkdir } from 'node:fs/promises';
2
- import { debug } from '../debug.js';
3
- import { emitJson } from '../json-output.js';
4
- import { createJournalStore } from '../journal-store.js';
5
- import { findChecksumMismatches, listMigrations } from '../migration-store.js';
6
- export const statusCommand = {
7
- name: 'status',
8
- description: 'Show migration status and checksum mismatch information',
9
- flags: [],
10
- run: cmdStatus,
11
- };
12
- async function cmdStatus(runCtx) {
13
- const { flags, config, dirs, ctx } = runCtx;
14
- const jsonMode = flags['--json'] === true;
15
- const { migrationsDir } = dirs;
16
- if (!ctx.hasExecutor) {
17
- throw new Error('clickhouse config is required for status (journal is stored in ClickHouse)');
18
- }
19
- const db = ctx.executor;
20
- const database = config.clickhouse?.database;
21
- const journalStore = createJournalStore(db);
22
- await mkdir(migrationsDir, { recursive: true });
23
- const files = await listMigrations(migrationsDir);
24
- const journal = await journalStore.readJournal();
25
- const appliedNames = new Set(journal.applied.map((entry) => entry.name));
26
- const pending = files.filter((f) => !appliedNames.has(f));
27
- const checksumMismatches = await findChecksumMismatches(migrationsDir, journal);
28
- debug('status', `files=${files.length}, applied=${journal.applied.length}, pending=${pending.length}, checksumMismatches=${checksumMismatches.length}`);
29
- const databaseMissing = journalStore.databaseMissing;
30
- const payload = {
31
- migrationsDir,
32
- total: files.length,
33
- applied: journal.applied.length,
34
- pending: pending.length,
35
- pendingMigrations: pending,
36
- checksumMismatchCount: checksumMismatches.length,
37
- checksumMismatches,
38
- ...(databaseMissing ? { databaseMissing: true, database } : {}),
39
- };
40
- if (jsonMode) {
41
- emitJson('status', payload);
42
- return;
43
- }
44
- if (databaseMissing) {
45
- console.log(`\u26A0 Database "${database ?? ''}" does not exist on the target server.`);
46
- console.log(' It will be created when you run: chkit migrate --apply\n');
47
- }
48
- console.log(`Migrations directory: ${migrationsDir}`);
49
- console.log(`Total migrations: ${files.length}`);
50
- console.log(`Applied: ${journal.applied.length}`);
51
- console.log(`Pending: ${pending.length}`);
52
- if (pending.length > 0) {
53
- console.log('\nPending migrations:');
54
- for (const item of pending)
55
- console.log(`- ${item}`);
56
- }
57
- if (checksumMismatches.length > 0) {
58
- console.log('\nChecksum mismatches on applied migrations:');
59
- for (const item of checksumMismatches)
60
- console.log(`- ${item.name}`);
61
- }
62
- }
63
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/bin/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function cmdTypegen(args: string[]): Promise<void>;
2
- //# sourceMappingURL=typegen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typegen.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/typegen.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9D"}
@@ -1,25 +0,0 @@
1
- import { buildPluginLikeContext, runPluginLikeCommand } from './plugin-like.js';
2
- export async function cmdTypegen(args) {
3
- const context = await buildPluginLikeContext({
4
- args,
5
- command: 'typegen',
6
- handleInvalidPluginOptions: true,
7
- });
8
- if (!context)
9
- return;
10
- const pluginName = 'typegen';
11
- const commandName = 'typegen';
12
- await runPluginLikeCommand({
13
- context,
14
- pluginName,
15
- commandName,
16
- commandArgs: context.commandArgs,
17
- missingPluginMessage() {
18
- return 'Typegen plugin is not configured. Add a plugin with manifest.name "typegen" to config.plugins.';
19
- },
20
- missingCommandMessage({ availableCommands }) {
21
- return `Typegen plugin is configured but does not expose command "${commandName}". Available: ${availableCommands.length > 0 ? availableCommands.join(', ') : '(none)'}.`;
22
- },
23
- });
24
- }
25
- //# sourceMappingURL=typegen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../../src/bin/commands/typegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAE/E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC;QAC3C,IAAI;QACJ,OAAO,EAAE,SAAS;QAClB,0BAA0B,EAAE,IAAI;KACjC,CAAC,CAAA;IACF,IAAI,CAAC,OAAO;QAAE,OAAM;IAEpB,MAAM,UAAU,GAAG,SAAS,CAAA;IAC5B,MAAM,WAAW,GAAG,SAAS,CAAA;IAC7B,MAAM,oBAAoB,CAAC;QACzB,OAAO;QACP,UAAU;QACV,WAAW;QACX,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,oBAAoB;YAClB,OAAO,gGAAgG,CAAA;QACzG,CAAC;QACD,qBAAqB,CAAC,EAAE,iBAAiB,EAAE;YACzC,OAAO,6DAA6D,WAAW,iBAAiB,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAA;QAC3K,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1,13 +0,0 @@
1
- import { type ChxConfigEnv, type ResolvedChxConfig } from '@chkit/core';
2
- export declare const DEFAULT_CONFIG_FILE = "clickhouse.config.ts";
3
- export declare function loadConfig(configPathArg?: string, env?: ChxConfigEnv): Promise<{
4
- config: ResolvedChxConfig;
5
- path: string;
6
- }>;
7
- export declare function writeIfMissing(filePath: string, content: string): Promise<void>;
8
- export declare function resolveDirs(config: ResolvedChxConfig): {
9
- outDir: string;
10
- migrationsDir: string;
11
- metaDir: string;
12
- };
13
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/bin/config.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,YAAY,EAGjB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAA;AAGpB,eAAO,MAAM,mBAAmB,yBAAyB,CAAA;AAMzD,wBAAsB,UAAU,CAC9B,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,GAAE,YAAiB,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BtD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAKjH"}
@@ -1,48 +0,0 @@
1
- import { existsSync } from 'node:fs';
2
- import { mkdir, writeFile } from 'node:fs/promises';
3
- import { dirname, resolve } from 'node:path';
4
- import process from 'node:process';
5
- import { pathToFileURL } from 'node:url';
6
- import { resolveConfig, } from '@chkit/core';
7
- import { debug } from './debug.js';
8
- export const DEFAULT_CONFIG_FILE = 'clickhouse.config.ts';
9
- function isConfigFunction(candidate) {
10
- return typeof candidate === 'function';
11
- }
12
- export async function loadConfig(configPathArg, env = {}) {
13
- const configPath = resolve(process.cwd(), configPathArg ?? DEFAULT_CONFIG_FILE);
14
- debug('config', `resolving config at ${configPath}`);
15
- if (!existsSync(configPath)) {
16
- throw new Error(`Config not found at ${configPath}. Run 'chkit init' first.`);
17
- }
18
- const mod = await import(pathToFileURL(configPath).href);
19
- const candidate = (mod.default ?? mod.config);
20
- if (!candidate) {
21
- throw new Error(`Config file ${configPath} must export a default/config object or a function via defineConfig.`);
22
- }
23
- const isFn = isConfigFunction(candidate);
24
- debug('config', `config export is ${isFn ? 'function' : 'object'}`);
25
- const userConfig = isFn ? await candidate(env) : candidate;
26
- const config = resolveConfig(userConfig);
27
- debug('config', `loaded`, {
28
- schema: config.schema,
29
- outDir: config.outDir,
30
- migrationsDir: config.migrationsDir,
31
- clickhouse: config.clickhouse ? `${config.clickhouse.url} (db: ${config.clickhouse.database ?? 'default'})` : 'not configured',
32
- plugins: (config.plugins ?? []).length,
33
- });
34
- return { config, path: configPath };
35
- }
36
- export async function writeIfMissing(filePath, content) {
37
- if (existsSync(filePath))
38
- return;
39
- await mkdir(dirname(filePath), { recursive: true });
40
- await writeFile(filePath, content, 'utf8');
41
- }
42
- export function resolveDirs(config) {
43
- const outDir = resolve(process.cwd(), config.outDir);
44
- const migrationsDir = resolve(process.cwd(), config.migrationsDir);
45
- const metaDir = resolve(process.cwd(), config.metaDir);
46
- return { outDir, migrationsDir, metaDir };
47
- }
48
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/bin/config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function debug(category: string, message: string, detail?: unknown): void;
2
- export { isDebugEnabled } from './logging.js';
3
- //# sourceMappingURL=debug.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/bin/debug.ts"],"names":[],"mappings":"AAIA,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAQ/E;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
package/dist/bin/debug.js DELETED
@@ -1,14 +0,0 @@
1
- import { getLogger } from '@logtape/logtape';
2
- import { isDebugEnabled } from './logging.js';
3
- export function debug(category, message, detail) {
4
- if (!isDebugEnabled())
5
- return;
6
- const logger = getLogger(['chkit', category]);
7
- if (detail !== undefined) {
8
- logger.debug(message, { detail });
9
- return;
10
- }
11
- logger.debug(message);
12
- }
13
- export { isDebugEnabled } from './logging.js';
14
- //# sourceMappingURL=debug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/bin/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,UAAU,KAAK,CAAC,QAAgB,EAAE,OAAe,EAAE,MAAgB;IACvE,IAAI,CAAC,cAAc,EAAE;QAAE,OAAM;IAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QACjC,OAAM;IACR,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
@@ -1,16 +0,0 @@
1
- export declare const GLOBAL_FLAGS: readonly [{
2
- readonly name: "--config";
3
- readonly type: "string";
4
- readonly description: "Path to config file";
5
- readonly placeholder: "<path>";
6
- }, {
7
- readonly name: "--json";
8
- readonly type: "boolean";
9
- readonly description: "Emit machine-readable JSON output";
10
- }, {
11
- readonly name: "--table";
12
- readonly type: "string";
13
- readonly description: "Limit command scope to tables by exact name or trailing wildcard prefix";
14
- readonly placeholder: "<selector>";
15
- }];
16
- //# sourceMappingURL=global-flags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global-flags.d.ts","sourceRoot":"","sources":["../../src/bin/global-flags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;EAId,CAAA"}
@@ -1,7 +0,0 @@
1
- import { defineFlags } from '@chkit/core';
2
- export const GLOBAL_FLAGS = defineFlags([
3
- { name: '--config', type: 'string', description: 'Path to config file', placeholder: '<path>' },
4
- { name: '--json', type: 'boolean', description: 'Emit machine-readable JSON output' },
5
- { name: '--table', type: 'string', description: 'Limit command scope to tables by exact name or trailing wildcard prefix', placeholder: '<selector>' },
6
- ]);
7
- //# sourceMappingURL=global-flags.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global-flags.js","sourceRoot":"","sources":["../../src/bin/global-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;IACtC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE;IAC/F,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE;IACrF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yEAAyE,EAAE,WAAW,EAAE,YAAY,EAAE;CAC9I,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- import type { FlagDef } from '../plugins.js';
2
- import type { CommandRegistry, RegisteredCommand } from './command-registry.js';
3
- export declare function formatGlobalHelp(registry: CommandRegistry, version: string): string;
4
- export declare function formatCommandHelp(command: RegisteredCommand, globalFlags: readonly FlagDef[]): string;
5
- //# sourceMappingURL=help.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/bin/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA0CnF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAuCrG"}
package/dist/bin/help.js DELETED
@@ -1,84 +0,0 @@
1
- export function formatGlobalHelp(registry, version) {
2
- const lines = [];
3
- lines.push(`chkit v${version} - ClickHouse toolkit`);
4
- lines.push('');
5
- lines.push('Usage:');
6
- lines.push(' chkit <command> [options]');
7
- lines.push('');
8
- lines.push('Commands:');
9
- lines.push(` ${'init'.padEnd(14)} Scaffold a new project with config and example schema`);
10
- const coreCommands = registry.commands.filter((c) => !c.isPlugin);
11
- const pluginCommands = registry.commands.filter((c) => c.isPlugin);
12
- for (const cmd of coreCommands) {
13
- lines.push(` ${cmd.name.padEnd(14)} ${cmd.description}`);
14
- }
15
- if (pluginCommands.length > 0) {
16
- lines.push('');
17
- lines.push('Plugin commands:');
18
- for (const cmd of pluginCommands) {
19
- if (cmd.subcommands) {
20
- lines.push(` ${cmd.name.padEnd(14)} ${cmd.description}`);
21
- for (const sub of cmd.subcommands) {
22
- lines.push(` ${sub.name.padEnd(12)} ${sub.description}`);
23
- }
24
- }
25
- else {
26
- lines.push(` ${cmd.name.padEnd(14)} ${cmd.description}`);
27
- }
28
- }
29
- }
30
- lines.push('');
31
- lines.push('Global options:');
32
- for (const flag of registry.globalFlags) {
33
- lines.push(formatFlagLine(flag));
34
- }
35
- lines.push(formatFlagLine({ name: '-h, --help', type: 'boolean', description: 'Show help' }));
36
- lines.push(formatFlagLine({ name: '-v, --version', type: 'boolean', description: 'Show version' }));
37
- return lines.join('\n');
38
- }
39
- export function formatCommandHelp(command, globalFlags) {
40
- const lines = [];
41
- if (command.subcommands) {
42
- lines.push(`chkit ${command.name} <command> [options]`);
43
- lines.push(` ${command.description}`);
44
- lines.push('');
45
- lines.push('Commands:');
46
- for (const sub of command.subcommands) {
47
- lines.push(` ${sub.name.padEnd(14)} ${sub.description}`);
48
- }
49
- }
50
- else {
51
- lines.push(`chkit ${command.name} [options]`);
52
- lines.push(` ${command.description}`);
53
- }
54
- if (command.flags.length > 0) {
55
- lines.push('');
56
- lines.push('Options:');
57
- for (const flag of command.flags) {
58
- lines.push(formatFlagLine(flag));
59
- }
60
- }
61
- for (const pf of command.pluginFlags) {
62
- lines.push('');
63
- lines.push(`Plugin: ${pf.pluginName}`);
64
- for (const flag of pf.flags) {
65
- lines.push(formatFlagLine(flag));
66
- }
67
- }
68
- lines.push('');
69
- lines.push('Global options:');
70
- for (const flag of globalFlags) {
71
- lines.push(formatFlagLine(flag));
72
- }
73
- return lines.join('\n');
74
- }
75
- function formatFlagLine(flag) {
76
- const nameStr = flag.name ?? '';
77
- const placeholder = flag.placeholder ? ` ${flag.placeholder}` : '';
78
- const label = `${nameStr}${placeholder}`;
79
- if (label.length >= 22) {
80
- return ` ${label}\n${''.padEnd(24)}${flag.description}`;
81
- }
82
- return ` ${label.padEnd(22)} ${flag.description}`;
83
- }
84
- //# sourceMappingURL=help.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/bin/help.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ChxPlugin } from '../../plugins.js';
2
- export declare function getInternalPlugins(): ChxPlugin[];
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/internal-plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIjD,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAEhD"}
@@ -1,5 +0,0 @@
1
- import { createSkillHintPlugin } from './skill-hint.js';
2
- export function getInternalPlugins() {
3
- return [createSkillHintPlugin()];
4
- }
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/internal-plugins/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAClC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { type ChxPlugin } from '../../plugins.js';
2
- export type AgentKind = 'claude' | 'cursor' | 'copilot' | 'windsurf' | 'roo' | 'augment' | 'continue' | 'trae' | 'unknown';
3
- interface AgentRootResult {
4
- root: string;
5
- agent: AgentKind;
6
- }
7
- /**
8
- * Walk up from `cwd` to find the best directory for installing agent skills.
9
- *
10
- * 1. Look for agentic markers (.claude/, .cursor/, CLAUDE.md, etc.)
11
- * 2. Fall back to the git root (.git)
12
- * 3. Fall back to `cwd`
13
- */
14
- export declare function findAgentRoot(cwd: string): AgentRootResult;
15
- export declare const SKILL_INSTALL_COMMAND = "npx skills add obsessiondb/chkit";
16
- export declare const HINT_INTERVAL_MS: number;
17
- export interface SkillHintState {
18
- lastDismissed?: string;
19
- }
20
- export interface SkillHintDeps {
21
- detectAgent(): AgentRootResult;
22
- isSkillInstalled(): boolean;
23
- readState(): SkillHintState;
24
- writeState(state: SkillHintState): void;
25
- promptUser(agent: AgentKind): Promise<boolean>;
26
- installSkill(): Promise<boolean>;
27
- now(): number;
28
- }
29
- export declare function createSkillHintPlugin(overrides?: Partial<SkillHintDeps>): ChxPlugin;
30
- export {};
31
- //# sourceMappingURL=skill-hint.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-hint.d.ts","sourceRoot":"","sources":["../../../src/bin/internal-plugins/skill-hint.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE/D,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAA;AA4B1H,UAAU,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE;AAE5D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAsB1D;AAED,eAAO,MAAM,qBAAqB,qCAAqC,CAAA;AACvE,eAAO,MAAM,gBAAgB,QAA2B,CAAA;AAExD,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,IAAI,eAAe,CAAA;IAC9B,gBAAgB,IAAI,OAAO,CAAA;IAC3B,SAAS,IAAI,cAAc,CAAA;IAC3B,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IACvC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,GAAG,IAAI,MAAM,CAAA;CACd;AA4ED,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAsCnF"}
@@ -1,172 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { dirname, join } from 'node:path';
4
- import process from 'node:process';
5
- import { definePlugin } from '../../plugins.js';
6
- const AGENT_REGISTRY = {
7
- claude: { name: 'Claude Code', skillsDir: '.claude/skills' },
8
- cursor: { name: 'Cursor', skillsDir: '.agents/skills' },
9
- copilot: { name: 'Copilot', skillsDir: '.agents/skills' },
10
- windsurf: { name: 'Windsurf', skillsDir: '.windsurf/skills' },
11
- roo: { name: 'Roo Code', skillsDir: '.roo/skills' },
12
- augment: { name: 'Augment', skillsDir: '.augment/skills' },
13
- continue: { name: 'Continue', skillsDir: '.continue/skills' },
14
- trae: { name: 'Trae', skillsDir: '.trae/skills' },
15
- };
16
- const AGENT_MARKERS = [
17
- { path: '.claude', agent: 'claude' },
18
- { path: 'CLAUDE.md', agent: 'claude' },
19
- { path: '.cursor', agent: 'cursor' },
20
- { path: '.cursorrules', agent: 'cursor' },
21
- { path: '.github/copilot-instructions.md', agent: 'copilot' },
22
- { path: '.windsurf', agent: 'windsurf' },
23
- { path: '.roo', agent: 'roo' },
24
- { path: '.augment', agent: 'augment' },
25
- { path: '.continue', agent: 'continue' },
26
- { path: '.trae', agent: 'trae' },
27
- ];
28
- /**
29
- * Walk up from `cwd` to find the best directory for installing agent skills.
30
- *
31
- * 1. Look for agentic markers (.claude/, .cursor/, CLAUDE.md, etc.)
32
- * 2. Fall back to the git root (.git)
33
- * 3. Fall back to `cwd`
34
- */
35
- export function findAgentRoot(cwd) {
36
- // Pass 1: look for agentic markers
37
- let dir = cwd;
38
- while (true) {
39
- for (const marker of AGENT_MARKERS) {
40
- if (existsSync(join(dir, marker.path)))
41
- return { root: dir, agent: marker.agent };
42
- }
43
- const parent = dirname(dir);
44
- if (parent === dir)
45
- break;
46
- dir = parent;
47
- }
48
- // Pass 2: look for .git
49
- dir = cwd;
50
- while (true) {
51
- if (existsSync(join(dir, '.git')))
52
- return { root: dir, agent: 'unknown' };
53
- const parent = dirname(dir);
54
- if (parent === dir)
55
- break;
56
- dir = parent;
57
- }
58
- return { root: cwd, agent: 'unknown' };
59
- }
60
- export const SKILL_INSTALL_COMMAND = 'npx skills add obsessiondb/chkit';
61
- export const HINT_INTERVAL_MS = 30 * 24 * 60 * 60 * 1000; // 30 days
62
- function getStateDir() {
63
- return join(homedir(), '.chkit');
64
- }
65
- function getStateFilePath() {
66
- return join(getStateDir(), 'skill-hint.json');
67
- }
68
- const defaultDeps = {
69
- detectAgent() {
70
- return findAgentRoot(process.cwd());
71
- },
72
- isSkillInstalled() {
73
- const { root, agent } = findAgentRoot(process.cwd());
74
- // Check agent-specific skill path
75
- if (agent !== 'unknown') {
76
- const { skillsDir } = AGENT_REGISTRY[agent];
77
- if (existsSync(join(root, skillsDir, 'chkit', 'SKILL.md')))
78
- return true;
79
- }
80
- // Check universal .agents/skills path
81
- if (existsSync(join(root, '.agents', 'skills', 'chkit', 'SKILL.md')))
82
- return true;
83
- // Check global Claude path
84
- if (existsSync(join(homedir(), '.claude', 'skills', 'chkit', 'SKILL.md')))
85
- return true;
86
- return false;
87
- },
88
- readState() {
89
- try {
90
- return JSON.parse(readFileSync(getStateFilePath(), 'utf-8'));
91
- }
92
- catch {
93
- return {};
94
- }
95
- },
96
- writeState(state) {
97
- const dir = getStateDir();
98
- mkdirSync(dir, { recursive: true });
99
- writeFileSync(getStateFilePath(), `${JSON.stringify(state, null, 2)}\n`);
100
- },
101
- async promptUser(agent) {
102
- const { createInterface } = await import('node:readline/promises');
103
- const rl = createInterface({ input: process.stdin, output: process.stderr });
104
- try {
105
- const agentLabel = agent !== 'unknown' ? AGENT_REGISTRY[agent].name : undefined;
106
- console.error('');
107
- console.error(agentLabel
108
- ? `chkit has an AI agent skill for ${agentLabel}.`
109
- : 'chkit has an AI agent skill available.');
110
- console.error(`Install it with: ${SKILL_INSTALL_COMMAND}`);
111
- console.error('');
112
- const answer = await rl.question('Install now? [y/N] ');
113
- return answer.trim().toLowerCase() === 'y' || answer.trim().toLowerCase() === 'yes';
114
- }
115
- finally {
116
- rl.close();
117
- }
118
- },
119
- async installSkill() {
120
- const { execSync } = await import('node:child_process');
121
- try {
122
- console.error('');
123
- execSync(SKILL_INSTALL_COMMAND, { cwd: findAgentRoot(process.cwd()).root, stdio: 'inherit' });
124
- return true;
125
- }
126
- catch {
127
- console.error(`Failed to install. Run manually: ${SKILL_INSTALL_COMMAND}`);
128
- return false;
129
- }
130
- },
131
- now: () => Date.now(),
132
- };
133
- export function createSkillHintPlugin(overrides) {
134
- const deps = { ...defaultDeps, ...overrides };
135
- let pendingMessage;
136
- return definePlugin({
137
- manifest: {
138
- name: '@chkit/internal-skill-hint',
139
- apiVersion: 1,
140
- },
141
- hooks: {
142
- async onInit(ctx) {
143
- if (!ctx.isInteractive || ctx.jsonMode)
144
- return;
145
- if (deps.isSkillInstalled())
146
- return;
147
- const state = deps.readState();
148
- if (state.lastDismissed) {
149
- const elapsed = deps.now() - new Date(state.lastDismissed).getTime();
150
- if (elapsed < HINT_INTERVAL_MS)
151
- return;
152
- }
153
- const { agent } = deps.detectAgent();
154
- const accepted = await deps.promptUser(agent);
155
- if (accepted) {
156
- await deps.installSkill();
157
- }
158
- else {
159
- deps.writeState({ lastDismissed: new Date(deps.now()).toISOString() });
160
- pendingMessage = `You can install it later with: ${SKILL_INSTALL_COMMAND}`;
161
- }
162
- },
163
- onComplete(ctx) {
164
- if (pendingMessage && !ctx.jsonMode && ctx.exitCode === 0) {
165
- console.error('');
166
- console.error(pendingMessage);
167
- }
168
- },
169
- },
170
- });
171
- }
172
- //# sourceMappingURL=skill-hint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-hint.js","sourceRoot":"","sources":["../../../src/bin/internal-plugins/skill-hint.ts"],"names":[],"mappings":"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"}