chkit 0.1.0-beta.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -2
- package/dist/bin/chkit.js +230 -203
- package/dist/bin/chkit.js.map +1 -1
- package/dist/bin/clickhouse-resource.d.ts +4 -0
- package/dist/bin/clickhouse-resource.d.ts.map +1 -0
- package/dist/bin/clickhouse-resource.js +11 -0
- package/dist/bin/clickhouse-resource.js.map +1 -0
- package/dist/bin/command-dispatch.d.ts +13 -0
- package/dist/bin/command-dispatch.d.ts.map +1 -0
- package/dist/bin/command-dispatch.js +186 -0
- package/dist/bin/command-dispatch.js.map +1 -0
- package/dist/bin/commands/check.d.ts +1 -1
- package/dist/bin/commands/check.d.ts.map +1 -1
- package/dist/bin/commands/check.js +157 -107
- package/dist/bin/commands/check.js.map +1 -1
- package/dist/bin/commands/drift.d.ts +6 -2
- package/dist/bin/commands/drift.d.ts.map +1 -1
- package/dist/bin/commands/drift.js +49 -8
- package/dist/bin/commands/drift.js.map +1 -1
- package/dist/bin/commands/generate.d.ts.map +1 -1
- package/dist/bin/commands/generate.js +4 -0
- package/dist/bin/commands/generate.js.map +1 -1
- package/dist/bin/commands/migrate.d.ts.map +1 -1
- package/dist/bin/commands/migrate.js +189 -171
- package/dist/bin/commands/migrate.js.map +1 -1
- package/dist/bin/commands/status.d.ts.map +1 -1
- package/dist/bin/commands/status.js +15 -5
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/bin/config.d.ts.map +1 -1
- package/dist/bin/config.js +14 -5
- package/dist/bin/config.js.map +1 -1
- package/dist/bin/debug.d.ts +3 -0
- package/dist/bin/debug.d.ts.map +1 -0
- package/dist/bin/debug.js +14 -0
- package/dist/bin/debug.js.map +1 -0
- package/dist/bin/help.d.ts.map +1 -1
- package/dist/bin/help.js +1 -0
- package/dist/bin/help.js.map +1 -1
- package/dist/bin/internal-plugins/index.d.ts +3 -0
- package/dist/bin/internal-plugins/index.d.ts.map +1 -0
- package/dist/bin/internal-plugins/index.js +5 -0
- package/dist/bin/internal-plugins/index.js.map +1 -0
- package/dist/bin/internal-plugins/skill-hint.d.ts +31 -0
- package/dist/bin/internal-plugins/skill-hint.d.ts.map +1 -0
- package/dist/bin/internal-plugins/skill-hint.js +172 -0
- package/dist/bin/internal-plugins/skill-hint.js.map +1 -0
- package/dist/bin/journal-store.d.ts +3 -6
- package/dist/bin/journal-store.d.ts.map +1 -1
- package/dist/bin/journal-store.js +87 -16
- package/dist/bin/journal-store.js.map +1 -1
- package/dist/bin/json-output.d.ts +2 -5
- package/dist/bin/json-output.d.ts.map +1 -1
- package/dist/bin/json-output.js +1 -1
- package/dist/bin/json-output.js.map +1 -1
- package/dist/bin/lib.d.ts +2 -5
- package/dist/bin/lib.d.ts.map +1 -1
- package/dist/bin/lib.js +2 -5
- package/dist/bin/lib.js.map +1 -1
- package/dist/bin/logging.d.ts +3 -0
- package/dist/bin/logging.d.ts.map +1 -0
- package/dist/bin/logging.js +31 -0
- package/dist/bin/logging.js.map +1 -0
- package/dist/bin/migration-store.d.ts +2 -2
- package/dist/bin/migration-store.d.ts.map +1 -1
- package/dist/bin/migration-store.js +1 -1
- package/dist/bin/migration-store.js.map +1 -1
- package/dist/bin/plugin-runtime.d.ts +9 -1
- package/dist/bin/plugin-runtime.d.ts.map +1 -1
- package/dist/bin/plugin-runtime.js +251 -2
- package/dist/bin/plugin-runtime.js.map +1 -1
- package/dist/bin/safety-markers.d.ts +3 -4
- package/dist/bin/safety-markers.d.ts.map +1 -1
- package/dist/bin/safety-markers.js +4 -13
- package/dist/bin/safety-markers.js.map +1 -1
- package/dist/bin/schema-loader.d.ts +1 -1
- package/dist/bin/schema-loader.d.ts.map +1 -1
- package/dist/bin/schema-loader.js +7 -2
- package/dist/bin/schema-loader.js.map +1 -1
- package/dist/bin/table-scope.d.ts +1 -2
- package/dist/bin/table-scope.d.ts.map +1 -1
- package/dist/bin/table-scope.js +1 -1
- package/dist/bin/table-scope.js.map +1 -1
- package/dist/commands/check/command.d.ts +3 -0
- package/dist/commands/check/command.d.ts.map +1 -0
- package/dist/commands/check/command.js +106 -0
- package/dist/commands/check/command.js.map +1 -0
- package/dist/commands/check/output.d.ts +35 -0
- package/dist/commands/check/output.d.ts.map +1 -0
- package/dist/commands/check/output.js +105 -0
- package/dist/commands/check/output.js.map +1 -0
- package/dist/commands/drift/command.d.ts +3 -0
- package/dist/commands/drift/command.d.ts.map +1 -0
- package/dist/commands/drift/command.js +128 -0
- package/dist/commands/drift/command.js.map +1 -0
- package/dist/commands/drift/compare.d.ts +66 -0
- package/dist/commands/drift/compare.d.ts.map +1 -0
- package/dist/commands/drift/compare.js +220 -0
- package/dist/commands/drift/compare.js.map +1 -0
- package/dist/commands/drift/diff.d.ts +8 -0
- package/dist/commands/drift/diff.d.ts.map +1 -0
- package/dist/commands/drift/diff.js +46 -0
- package/dist/commands/drift/diff.js.map +1 -0
- package/dist/commands/drift/payload.d.ts +38 -0
- package/dist/commands/drift/payload.d.ts.map +1 -0
- package/dist/commands/drift/payload.js +111 -0
- package/dist/commands/drift/payload.js.map +1 -0
- package/dist/commands/generate/command.d.ts +3 -0
- package/dist/commands/generate/command.d.ts.map +1 -0
- package/dist/commands/generate/command.js +163 -0
- package/dist/commands/generate/command.js.map +1 -0
- package/dist/commands/generate/output.d.ts +8 -0
- package/dist/commands/generate/output.d.ts.map +1 -0
- package/dist/commands/generate/output.js +59 -0
- package/dist/commands/generate/output.js.map +1 -0
- package/dist/commands/generate/plan-pipeline.d.ts +7 -0
- package/dist/commands/generate/plan-pipeline.d.ts.map +1 -0
- package/dist/commands/generate/plan-pipeline.js +143 -0
- package/dist/commands/generate/plan-pipeline.js.map +1 -0
- package/dist/commands/generate/rename-mappings.d.ts +29 -0
- package/dist/commands/generate/rename-mappings.d.ts.map +1 -0
- package/dist/commands/generate/rename-mappings.js +195 -0
- package/dist/commands/generate/rename-mappings.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +101 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate/apply.d.ts +33 -0
- package/dist/commands/migrate/apply.d.ts.map +1 -0
- package/dist/commands/migrate/apply.js +143 -0
- package/dist/commands/migrate/apply.js.map +1 -0
- package/dist/commands/migrate/async-apply.d.ts +30 -0
- package/dist/commands/migrate/async-apply.d.ts.map +1 -0
- package/dist/commands/migrate/async-apply.js +258 -0
- package/dist/commands/migrate/async-apply.js.map +1 -0
- package/dist/commands/migrate/command.d.ts +3 -0
- package/dist/commands/migrate/command.d.ts.map +1 -0
- package/dist/commands/migrate/command.js +207 -0
- package/dist/commands/migrate/command.js.map +1 -0
- package/dist/commands/migrate/destructive.d.ts +7 -0
- package/dist/commands/migrate/destructive.d.ts.map +1 -0
- package/dist/commands/migrate/destructive.js +24 -0
- package/dist/commands/migrate/destructive.js.map +1 -0
- package/dist/commands/migrate/prompts.d.ts +6 -0
- package/dist/commands/migrate/prompts.d.ts.map +1 -0
- package/dist/commands/migrate/prompts.js +40 -0
- package/dist/commands/migrate/prompts.js.map +1 -0
- package/dist/commands/migrate/scope.d.ts +12 -0
- package/dist/commands/migrate/scope.d.ts.map +1 -0
- package/dist/commands/migrate/scope.js +35 -0
- package/dist/commands/migrate/scope.js.map +1 -0
- package/dist/commands/plugin.d.ts +3 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +129 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/query.d.ts +17 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +155 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/skills.d.ts +13 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +25 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +69 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/drift.d.ts +7 -6
- package/dist/drift.d.ts.map +1 -1
- package/dist/drift.js +19 -8
- package/dist/drift.js.map +1 -1
- package/dist/internal-plugins/core/plugin.d.ts +2 -0
- package/dist/internal-plugins/core/plugin.d.ts.map +1 -0
- package/dist/internal-plugins/core/plugin.js +21 -0
- package/dist/internal-plugins/core/plugin.js.map +1 -0
- package/dist/internal-plugins/index.d.ts +3 -0
- package/dist/internal-plugins/index.d.ts.map +1 -0
- package/dist/internal-plugins/index.js +6 -0
- package/dist/internal-plugins/index.js.map +1 -0
- package/dist/internal-plugins/skill-hint/agent-detect.d.ts +20 -0
- package/dist/internal-plugins/skill-hint/agent-detect.d.ts.map +1 -0
- package/dist/internal-plugins/skill-hint/agent-detect.js +68 -0
- package/dist/internal-plugins/skill-hint/agent-detect.js.map +1 -0
- package/dist/internal-plugins/skill-hint/plugin.d.ts +16 -0
- package/dist/internal-plugins/skill-hint/plugin.d.ts.map +1 -0
- package/dist/internal-plugins/skill-hint/plugin.js +60 -0
- package/dist/internal-plugins/skill-hint/plugin.js.map +1 -0
- package/dist/internal-plugins/skill-hint/prompt.d.ts +5 -0
- package/dist/internal-plugins/skill-hint/prompt.d.ts.map +1 -0
- package/dist/internal-plugins/skill-hint/prompt.js +37 -0
- package/dist/internal-plugins/skill-hint/prompt.js.map +1 -0
- package/dist/internal-plugins/skill-hint/state.d.ts +7 -0
- package/dist/internal-plugins/skill-hint/state.d.ts.map +1 -0
- package/dist/internal-plugins/skill-hint/state.js +23 -0
- package/dist/internal-plugins/skill-hint/state.js.map +1 -0
- package/dist/plugins.d.ts +109 -27
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +0 -6
- package/dist/plugins.js.map +1 -1
- package/dist/runtime/command-dispatch.d.ts +18 -0
- package/dist/runtime/command-dispatch.d.ts.map +1 -0
- package/dist/runtime/command-dispatch.js +227 -0
- package/dist/runtime/command-dispatch.js.map +1 -0
- package/dist/runtime/command-registry.d.ts +31 -0
- package/dist/runtime/command-registry.d.ts.map +1 -0
- package/dist/runtime/command-registry.js +74 -0
- package/dist/runtime/command-registry.js.map +1 -0
- package/dist/runtime/config-merge.d.ts +4 -0
- package/dist/runtime/config-merge.d.ts.map +1 -0
- package/dist/runtime/config-merge.js +72 -0
- package/dist/runtime/config-merge.js.map +1 -0
- package/dist/runtime/config.d.ts +30 -0
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/runtime/config.js +173 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/debug.d.ts +3 -0
- package/dist/runtime/debug.d.ts.map +1 -0
- package/dist/runtime/debug.js +14 -0
- package/dist/runtime/debug.js.map +1 -0
- package/dist/runtime/deps.d.ts +28 -0
- package/dist/runtime/deps.d.ts.map +1 -0
- package/dist/runtime/deps.js +91 -0
- package/dist/runtime/deps.js.map +1 -0
- package/dist/runtime/extract-config-path.d.ts +2 -0
- package/dist/runtime/extract-config-path.d.ts.map +1 -0
- package/dist/runtime/extract-config-path.js +13 -0
- package/dist/runtime/extract-config-path.js.map +1 -0
- package/dist/runtime/global-flags.d.ts +16 -0
- package/dist/runtime/global-flags.d.ts.map +1 -0
- package/dist/runtime/global-flags.js +7 -0
- package/dist/runtime/global-flags.js.map +1 -0
- package/dist/runtime/help.d.ts +5 -0
- package/dist/runtime/help.d.ts.map +1 -0
- package/dist/runtime/help.js +94 -0
- package/dist/runtime/help.js.map +1 -0
- package/dist/runtime/journal-store.d.ts +31 -0
- package/dist/runtime/journal-store.d.ts.map +1 -0
- package/dist/runtime/journal-store.js +235 -0
- package/dist/runtime/journal-store.js.map +1 -0
- package/dist/runtime/json-output.d.ts +25 -0
- package/dist/runtime/json-output.d.ts.map +1 -0
- package/dist/runtime/json-output.js +50 -0
- package/dist/runtime/json-output.js.map +1 -0
- package/dist/runtime/logging.d.ts +3 -0
- package/dist/runtime/logging.d.ts.map +1 -0
- package/dist/runtime/logging.js +31 -0
- package/dist/runtime/logging.js.map +1 -0
- package/dist/runtime/migration-metadata.d.ts +5 -0
- package/dist/runtime/migration-metadata.d.ts.map +1 -0
- package/dist/runtime/migration-metadata.js +29 -0
- package/dist/runtime/migration-metadata.js.map +1 -0
- package/dist/runtime/migration-store.d.ts +22 -0
- package/dist/runtime/migration-store.d.ts.map +1 -0
- package/dist/runtime/migration-store.js +60 -0
- package/dist/runtime/migration-store.js.map +1 -0
- package/dist/runtime/plugin-runtime/errors.d.ts +3 -0
- package/dist/runtime/plugin-runtime/errors.d.ts.map +1 -0
- package/dist/runtime/plugin-runtime/errors.js +13 -0
- package/dist/runtime/plugin-runtime/errors.js.map +1 -0
- package/dist/runtime/plugin-runtime/executor-debug.d.ts +3 -0
- package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -0
- package/dist/runtime/plugin-runtime/executor-debug.js +65 -0
- package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -0
- package/dist/runtime/plugin-runtime/hooks.d.ts +23 -0
- package/dist/runtime/plugin-runtime/hooks.d.ts.map +1 -0
- package/dist/runtime/plugin-runtime/hooks.js +148 -0
- package/dist/runtime/plugin-runtime/hooks.js.map +1 -0
- package/dist/runtime/plugin-runtime/index.d.ts +9 -0
- package/dist/runtime/plugin-runtime/index.d.ts.map +1 -0
- package/dist/runtime/plugin-runtime/index.js +184 -0
- package/dist/runtime/plugin-runtime/index.js.map +1 -0
- package/dist/runtime/plugin-runtime/loader.d.ts +11 -0
- package/dist/runtime/plugin-runtime/loader.d.ts.map +1 -0
- package/dist/runtime/plugin-runtime/loader.js +37 -0
- package/dist/runtime/plugin-runtime/loader.js.map +1 -0
- package/dist/runtime/plugin-runtime/null-executor.d.ts +3 -0
- package/dist/runtime/plugin-runtime/null-executor.d.ts.map +1 -0
- package/dist/runtime/plugin-runtime/null-executor.js +17 -0
- package/dist/runtime/plugin-runtime/null-executor.js.map +1 -0
- package/dist/runtime/safety-markers.d.ts +56 -0
- package/dist/runtime/safety-markers.d.ts.map +1 -0
- package/dist/runtime/safety-markers.js +211 -0
- package/dist/runtime/safety-markers.js.map +1 -0
- package/dist/runtime/schema-loader.d.ts +3 -0
- package/dist/runtime/schema-loader.d.ts.map +1 -0
- package/dist/runtime/schema-loader.js +11 -0
- package/dist/runtime/schema-loader.js.map +1 -0
- package/dist/runtime/table-scope.d.ts +33 -0
- package/dist/runtime/table-scope.d.ts.map +1 -0
- package/dist/runtime/table-scope.js +167 -0
- package/dist/runtime/table-scope.js.map +1 -0
- package/dist/runtime/user-config.d.ts +4 -0
- package/dist/runtime/user-config.d.ts.map +1 -0
- package/dist/runtime/user-config.js +11 -0
- package/dist/runtime/user-config.js.map +1 -0
- package/dist/runtime/version.d.ts +2 -0
- package/dist/runtime/version.d.ts.map +1 -0
- package/dist/runtime/version.js +5 -0
- package/dist/runtime/version.js.map +1 -0
- package/package.json +24 -6
package/README.md
CHANGED
|
@@ -19,9 +19,11 @@ Define your ClickHouse schema in TypeScript, generate migrations automatically,
|
|
|
19
19
|
## Install
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
bun add -d chkit
|
|
22
|
+
bun add -d chkit @chkit/core
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
`@chkit/core` provides the `table()` / schema DSL your `*.schema.ts` files import, so it is required alongside the CLI.
|
|
26
|
+
|
|
25
27
|
## Usage
|
|
26
28
|
|
|
27
29
|
```bash
|
|
@@ -46,6 +48,11 @@ bunx chkit check
|
|
|
46
48
|
|
|
47
49
|
All commands support `--json` for machine-readable output and `--config <path>` to specify a custom config file.
|
|
48
50
|
|
|
51
|
+
## Requirements
|
|
52
|
+
|
|
53
|
+
- **Node 20+** or **Bun** — chkit loads your TypeScript config and schema files on both runtimes.
|
|
54
|
+
- **ClickHouse 24.x or newer** — chkit targets recent ClickHouse (self-hosted, ClickHouse Cloud, or ObsessionDB). Some schema features are version-gated; see [ClickHouse compatibility](https://chkit.obsessiondb.com/guides/clickhouse-compatibility/).
|
|
55
|
+
|
|
49
56
|
## Plugins
|
|
50
57
|
|
|
51
58
|
| Plugin | Description |
|
|
@@ -55,14 +62,43 @@ All commands support `--json` for machine-readable output and `--config <path>`
|
|
|
55
62
|
| [`@chkit/plugin-backfill`](https://www.npmjs.com/package/@chkit/plugin-backfill) | Time-windowed data backfill with checkpoints |
|
|
56
63
|
| [`@chkit/plugin-obsessiondb`](https://www.npmjs.com/package/@chkit/plugin-obsessiondb) | Auto-rewrite Shared engines for ObsessionDB compatibility |
|
|
57
64
|
|
|
65
|
+
## AI Agent Skill
|
|
66
|
+
|
|
67
|
+
Install the chkit agent skill so AI coding assistants understand chkit:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npx skills add obsessiondb/chkit
|
|
71
|
+
```
|
|
72
|
+
|
|
58
73
|
## Documentation
|
|
59
74
|
|
|
60
75
|
See the [chkit documentation](https://chkit.obsessiondb.com).
|
|
61
76
|
|
|
77
|
+
## Versioning & releases
|
|
78
|
+
|
|
79
|
+
chkit is **pre-1.0**. While the version is `0.x`, the public API is still
|
|
80
|
+
stabilizing and **any release may contain breaking changes** — this is the
|
|
81
|
+
standard [SemVer](https://semver.org/#spec-item-4) `0.x` contract. Pin an exact
|
|
82
|
+
version (or a tight range) if you need reproducible installs.
|
|
83
|
+
|
|
84
|
+
- **`latest` tracks the current beta line.** Until 1.0 ships, installing
|
|
85
|
+
`chkit` with no tag (`bun add -d chkit`) gives you the latest `0.1.0-beta.x`
|
|
86
|
+
build. This is intentional for the pre-1.0 period.
|
|
87
|
+
- **All publishable packages release in lockstep.** `chkit`, `create-chkit`,
|
|
88
|
+
and every `@chkit/*` package share a single version, so a given chkit version
|
|
89
|
+
always lines up with matching plugin and core versions — there is no
|
|
90
|
+
cross-package version skew.
|
|
91
|
+
- **Public vs. internal surface.** The supported public API is the `chkit` CLI,
|
|
92
|
+
`@chkit/core`, and the `@chkit/plugin-*` packages. `@chkit/clickhouse` and
|
|
93
|
+
`@chkit/codegen` are internal and not meant to be installed directly.
|
|
94
|
+
- **At 1.0** chkit will commit to real SemVer (breaking changes only in major
|
|
95
|
+
bumps) and a deprecation policy. Until then, treat minor/patch bumps as
|
|
96
|
+
potentially breaking.
|
|
97
|
+
|
|
62
98
|
## License
|
|
63
99
|
|
|
64
100
|
[MIT](../../LICENSE)
|
|
65
101
|
|
|
66
102
|
---
|
|
67
103
|
|
|
68
|
-
|
|
104
|
+
Built and maintained by the team behind [**ObsessionDB**](https://obsessiondb.com) — fully-managed ClickHouse with a first-party chkit integration ([`@chkit/plugin-obsessiondb`](https://www.npmjs.com/package/@chkit/plugin-obsessiondb)).
|
package/dist/bin/chkit.js
CHANGED
|
@@ -1,65 +1,104 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import process from 'node:process';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { resolveTableScope, tableKeysFromDefinitions } from './table-scope.js';
|
|
18
|
-
import { loadSchemaDefinitions } from './schema-loader.js';
|
|
19
|
-
import { CLI_VERSION } from './version.js';
|
|
3
|
+
import { cmdInit } from '../commands/init.js';
|
|
4
|
+
import { cmdSkills } from '../commands/skills.js';
|
|
5
|
+
import { getInternalPlugins } from '../internal-plugins/index.js';
|
|
6
|
+
import { parseCommandArgs, runResolvedCommand } from '../runtime/command-dispatch.js';
|
|
7
|
+
import { createCommandRegistry } from '../runtime/command-registry.js';
|
|
8
|
+
import { loadConfig } from '../runtime/config.js';
|
|
9
|
+
import { debug } from '../runtime/debug.js';
|
|
10
|
+
import { extractConfigPath } from '../runtime/extract-config-path.js';
|
|
11
|
+
import { GLOBAL_FLAGS } from '../runtime/global-flags.js';
|
|
12
|
+
import { formatCommandHelp, formatGlobalHelp } from '../runtime/help.js';
|
|
13
|
+
import { emitJsonError, hasEmittedJson } from '../runtime/json-output.js';
|
|
14
|
+
import { configureCliLogging } from '../runtime/logging.js';
|
|
15
|
+
import { loadPluginRuntime } from '../runtime/plugin-runtime/index.js';
|
|
16
|
+
import { CLI_VERSION } from '../runtime/version.js';
|
|
20
17
|
const WELL_KNOWN_PLUGIN_COMMANDS = {
|
|
21
18
|
codegen: 'Codegen',
|
|
22
19
|
pull: 'Pull',
|
|
23
20
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
for (let i =
|
|
21
|
+
const PROJECT_ONLY_COMMANDS = new Set([
|
|
22
|
+
'generate',
|
|
23
|
+
'migrate',
|
|
24
|
+
'status',
|
|
25
|
+
'drift',
|
|
26
|
+
'check',
|
|
27
|
+
'codegen',
|
|
28
|
+
'pull',
|
|
29
|
+
]);
|
|
30
|
+
function firstPluginPositional(argv) {
|
|
31
|
+
const globalFlags = new Map(GLOBAL_FLAGS.map((flag) => [flag.name, flag]));
|
|
32
|
+
for (let i = 1; i < argv.length; i += 1) {
|
|
36
33
|
const token = argv[i];
|
|
37
|
-
if (token
|
|
38
|
-
jsonMode = true;
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (token === '--config' && i + 1 < argv.length) {
|
|
42
|
-
i++;
|
|
34
|
+
if (!token)
|
|
43
35
|
continue;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
const eqIdx = token.startsWith('--') ? token.indexOf('=') : -1;
|
|
37
|
+
const name = eqIdx === -1 ? token : token.slice(0, eqIdx);
|
|
38
|
+
const flag = globalFlags.get(name);
|
|
39
|
+
if (flag) {
|
|
40
|
+
if (flag.type !== 'boolean' && eqIdx === -1)
|
|
41
|
+
i += 1;
|
|
48
42
|
continue;
|
|
49
43
|
}
|
|
50
|
-
|
|
44
|
+
return token;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function allowsConfiglessObsessionDBBootstrap(commandName, argv) {
|
|
48
|
+
if (commandName === 'obsessiondb')
|
|
49
|
+
return true;
|
|
50
|
+
return commandName === 'plugin' && firstPluginPositional(argv) === 'obsessiondb';
|
|
51
|
+
}
|
|
52
|
+
function formatFatalError(error) {
|
|
53
|
+
if (!(error instanceof Error))
|
|
54
|
+
return String(error);
|
|
55
|
+
if (error.message)
|
|
56
|
+
return error.message;
|
|
57
|
+
if ('errors' in error && Array.isArray(error.errors)) {
|
|
58
|
+
const sub = error.errors;
|
|
59
|
+
const first = sub[0];
|
|
60
|
+
if (first instanceof Error && first.message)
|
|
61
|
+
return first.message;
|
|
62
|
+
}
|
|
63
|
+
if ('code' in error && typeof error.code === 'string') {
|
|
64
|
+
return error.code;
|
|
65
|
+
}
|
|
66
|
+
return String(error) || 'Unknown error';
|
|
67
|
+
}
|
|
68
|
+
function toJsonError(error) {
|
|
69
|
+
const code = error instanceof Error &&
|
|
70
|
+
'code' in error &&
|
|
71
|
+
typeof error.code === 'string'
|
|
72
|
+
? error.code
|
|
73
|
+
: 'error';
|
|
74
|
+
return { code, message: formatFatalError(error) };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Report a usage error from a non-throwing early-return path (unknown command,
|
|
78
|
+
* missing project config, plugin not configured). Mirrors the top-level catch:
|
|
79
|
+
* the human message always goes to stderr; in --json mode a parseable error
|
|
80
|
+
* envelope goes to stdout (instead of nothing — or, for unknown commands, help
|
|
81
|
+
* text that would break a `jq` consumer). Sets a failing exit code.
|
|
82
|
+
*/
|
|
83
|
+
function reportUsageError(input) {
|
|
84
|
+
console.error(input.message);
|
|
85
|
+
if (input.jsonMode) {
|
|
86
|
+
emitJsonError(input.command, { code: input.code, message: input.message });
|
|
51
87
|
}
|
|
52
|
-
|
|
88
|
+
else {
|
|
89
|
+
input.onText?.();
|
|
90
|
+
}
|
|
91
|
+
process.exitCode = 1;
|
|
92
|
+
}
|
|
93
|
+
function resolveExitCode() {
|
|
94
|
+
if (typeof process.exitCode === 'number')
|
|
95
|
+
return process.exitCode;
|
|
96
|
+
return process.exitCode ? Number(process.exitCode) : 0;
|
|
53
97
|
}
|
|
54
98
|
function exitIfNeeded() {
|
|
55
|
-
const code =
|
|
56
|
-
|
|
57
|
-
: process.exitCode
|
|
58
|
-
? Number(process.exitCode)
|
|
59
|
-
: 0;
|
|
60
|
-
if (Number.isFinite(code) && code > 0) {
|
|
99
|
+
const code = resolveExitCode();
|
|
100
|
+
if (Number.isFinite(code) && code > 0)
|
|
61
101
|
process.exit(code);
|
|
62
|
-
}
|
|
63
102
|
}
|
|
64
103
|
function collectExtensions(runtime) {
|
|
65
104
|
return runtime.plugins.flatMap((p) => {
|
|
@@ -77,31 +116,13 @@ function collectPluginCommands(runtime) {
|
|
|
77
116
|
return [{ pluginName: p.plugin.manifest.name, commands, manifestName: p.plugin.manifest.name }];
|
|
78
117
|
});
|
|
79
118
|
}
|
|
80
|
-
async function
|
|
119
|
+
async function run() {
|
|
120
|
+
configureCliLogging();
|
|
81
121
|
const argv = process.argv.slice(2);
|
|
82
122
|
const commandName = argv[0];
|
|
123
|
+
debug('cli', `chkit ${CLI_VERSION} — argv: [${argv.join(', ')}]`);
|
|
83
124
|
if (!commandName || commandName === '-h' || commandName === '--help') {
|
|
84
|
-
|
|
85
|
-
try {
|
|
86
|
-
const { config, path: configPath } = await loadConfig(configPathArg);
|
|
87
|
-
const pluginRuntime = await loadPluginRuntime({ config, configPath, cliVersion: CLI_VERSION });
|
|
88
|
-
const registry = createCommandRegistry({
|
|
89
|
-
coreCommands: [generateCommand, migrateCommand, statusCommand, driftCommand, checkCommand, pluginCommand],
|
|
90
|
-
globalFlags: GLOBAL_FLAGS,
|
|
91
|
-
pluginExtensions: collectExtensions(pluginRuntime),
|
|
92
|
-
pluginCommands: collectPluginCommands(pluginRuntime),
|
|
93
|
-
});
|
|
94
|
-
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
const registry = createCommandRegistry({
|
|
98
|
-
coreCommands: [generateCommand, migrateCommand, statusCommand, driftCommand, checkCommand, pluginCommand],
|
|
99
|
-
globalFlags: GLOBAL_FLAGS,
|
|
100
|
-
pluginExtensions: [],
|
|
101
|
-
pluginCommands: [],
|
|
102
|
-
});
|
|
103
|
-
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
104
|
-
}
|
|
125
|
+
await printGlobalHelp(argv);
|
|
105
126
|
return;
|
|
106
127
|
}
|
|
107
128
|
if (commandName === '-v' || commandName === '--version') {
|
|
@@ -109,169 +130,175 @@ async function main() {
|
|
|
109
130
|
return;
|
|
110
131
|
}
|
|
111
132
|
if (commandName === 'init') {
|
|
112
|
-
await cmdInit();
|
|
133
|
+
await cmdInit(argv.slice(1));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// `skills` proxies to the external `skills` CLI and needs no project config, so handle it
|
|
137
|
+
// before config loading (like `init`).
|
|
138
|
+
if (commandName === 'skills') {
|
|
139
|
+
process.exitCode = await cmdSkills(argv.slice(1));
|
|
113
140
|
return;
|
|
114
141
|
}
|
|
115
142
|
const configPathArg = extractConfigPath(argv);
|
|
116
|
-
const {
|
|
117
|
-
const
|
|
143
|
+
const env = { command: commandName, mode: process.env.NODE_ENV };
|
|
144
|
+
const { config, path: configPath, source: configSource } = await loadConfig(configPathArg, env, {
|
|
145
|
+
command: commandName,
|
|
146
|
+
allowSynthesizedProfileConfig: allowsConfiglessObsessionDBBootstrap(commandName, argv),
|
|
147
|
+
});
|
|
148
|
+
if (configSource !== 'project' && PROJECT_ONLY_COMMANDS.has(commandName)) {
|
|
149
|
+
reportUsageError({
|
|
150
|
+
command: commandName,
|
|
151
|
+
code: 'project_config_required',
|
|
152
|
+
message: `Command "${commandName}" requires a project config (clickhouse.config.ts) in the current directory.\n` +
|
|
153
|
+
`You are running chkit from a user profile (no local config found).`,
|
|
154
|
+
jsonMode: argv.includes('--json'),
|
|
155
|
+
});
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const pluginRuntime = await loadPluginRuntime({
|
|
159
|
+
config,
|
|
160
|
+
configPath,
|
|
161
|
+
cliVersion: CLI_VERSION,
|
|
162
|
+
internalPlugins: getInternalPlugins(),
|
|
163
|
+
});
|
|
118
164
|
const registry = createCommandRegistry({
|
|
119
|
-
coreCommands: [generateCommand, migrateCommand, statusCommand, driftCommand, checkCommand, pluginCommand],
|
|
120
165
|
globalFlags: GLOBAL_FLAGS,
|
|
121
166
|
pluginExtensions: collectExtensions(pluginRuntime),
|
|
122
167
|
pluginCommands: collectPluginCommands(pluginRuntime),
|
|
123
168
|
});
|
|
124
169
|
const resolved = registry.get(commandName);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
170
|
+
let initFlags = {};
|
|
171
|
+
if (resolved &&
|
|
172
|
+
!resolved.subcommands &&
|
|
173
|
+
commandName !== 'plugin' &&
|
|
174
|
+
!argv.includes('--help') &&
|
|
175
|
+
!argv.includes('-h')) {
|
|
176
|
+
const parsed = parseCommandArgs(commandName, argv.slice(1), registry.resolveFlags(commandName));
|
|
177
|
+
if (!parsed)
|
|
130
178
|
return;
|
|
131
|
-
|
|
132
|
-
console.error(`Unknown command: ${commandName}`);
|
|
133
|
-
console.log('');
|
|
134
|
-
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
135
|
-
process.exitCode = 1;
|
|
136
|
-
return;
|
|
179
|
+
initFlags = parsed.flags;
|
|
137
180
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
catch (error) {
|
|
166
|
-
if (error instanceof UnknownFlagError || error instanceof MissingFlagValueError) {
|
|
167
|
-
console.error(error.message);
|
|
168
|
-
process.exitCode = 1;
|
|
181
|
+
const initCtx = {
|
|
182
|
+
command: commandName,
|
|
183
|
+
configPath,
|
|
184
|
+
isInteractive: process.stdin.isTTY === true && process.stderr.isTTY === true,
|
|
185
|
+
jsonMode: argv.includes('--json'),
|
|
186
|
+
flags: initFlags,
|
|
187
|
+
config,
|
|
188
|
+
};
|
|
189
|
+
await pluginRuntime.runOnInit(initCtx);
|
|
190
|
+
let completed = false;
|
|
191
|
+
const complete = async (exitCode) => {
|
|
192
|
+
if (completed)
|
|
193
|
+
return;
|
|
194
|
+
completed = true;
|
|
195
|
+
await pluginRuntime.runOnComplete({ ...initCtx, exitCode });
|
|
196
|
+
};
|
|
197
|
+
debug('cli', `command "${commandName}" resolved: ${resolved ? `plugin (${resolved.pluginName ?? '?'})` : 'not found'}`);
|
|
198
|
+
try {
|
|
199
|
+
if (!resolved) {
|
|
200
|
+
const wellKnown = WELL_KNOWN_PLUGIN_COMMANDS[commandName];
|
|
201
|
+
if (wellKnown) {
|
|
202
|
+
reportUsageError({
|
|
203
|
+
command: commandName,
|
|
204
|
+
code: 'plugin_not_configured',
|
|
205
|
+
message: `${wellKnown} plugin is not configured. Add it to config.plugins first.`,
|
|
206
|
+
jsonMode: argv.includes('--json'),
|
|
207
|
+
});
|
|
169
208
|
return;
|
|
170
209
|
}
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
const gf = typedFlags(flags, GLOBAL_FLAGS);
|
|
174
|
-
const jsonMode = gf['--json'] === true;
|
|
175
|
-
const tableSelector = gf['--table'];
|
|
176
|
-
let tableScope;
|
|
177
|
-
try {
|
|
178
|
-
const definitions = await loadSchemaDefinitions(config.schema);
|
|
179
|
-
tableScope = resolveTableScope(tableSelector, tableKeysFromDefinitions(definitions));
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
tableScope = resolveTableScope(tableSelector, []);
|
|
183
|
-
}
|
|
184
|
-
try {
|
|
185
|
-
await pluginRuntime.runOnConfigLoaded({
|
|
210
|
+
reportUsageError({
|
|
186
211
|
command: commandName,
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
212
|
+
code: 'unknown_command',
|
|
213
|
+
message: `Unknown command: ${commandName}`,
|
|
214
|
+
jsonMode: argv.includes('--json'),
|
|
215
|
+
onText: () => {
|
|
216
|
+
console.log('');
|
|
217
|
+
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
218
|
+
},
|
|
191
219
|
});
|
|
220
|
+
return;
|
|
192
221
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (jsonMode) {
|
|
196
|
-
console.log(JSON.stringify({ ok: false, error: message }));
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
console.error(message);
|
|
200
|
-
}
|
|
201
|
-
process.exitCode = 2;
|
|
202
|
-
exitIfNeeded();
|
|
222
|
+
if (argv.includes('--help') || argv.includes('-h')) {
|
|
223
|
+
console.log(formatCommandHelp(resolved, registry.globalFlags));
|
|
203
224
|
return;
|
|
204
225
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
226
|
+
await runResolvedCommand({
|
|
227
|
+
argv,
|
|
228
|
+
commandName,
|
|
229
|
+
resolved,
|
|
230
|
+
registry,
|
|
209
231
|
config,
|
|
210
232
|
configPath,
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
flags,
|
|
215
|
-
print(value) {
|
|
216
|
-
printOutput(value, jsonMode);
|
|
233
|
+
pluginRuntime,
|
|
234
|
+
onAmbiguousPluginSubcommand() {
|
|
235
|
+
console.log(formatCommandHelp(resolved, registry.globalFlags));
|
|
217
236
|
},
|
|
218
237
|
});
|
|
219
|
-
if (exitCode !== 0)
|
|
220
|
-
process.exitCode = exitCode;
|
|
221
|
-
exitIfNeeded();
|
|
222
|
-
return;
|
|
223
238
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
+
catch (error) {
|
|
240
|
+
try {
|
|
241
|
+
await complete(1);
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// onComplete errors must not mask the original error
|
|
245
|
+
}
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
await complete(resolveExitCode());
|
|
249
|
+
}
|
|
250
|
+
async function printGlobalHelp(argv) {
|
|
251
|
+
const configPathArg = extractConfigPath(argv);
|
|
252
|
+
let registry;
|
|
253
|
+
try {
|
|
254
|
+
const { config, path: configPath } = await loadConfig(configPathArg);
|
|
255
|
+
const pluginRuntime = await loadPluginRuntime({
|
|
239
256
|
config,
|
|
240
257
|
configPath,
|
|
241
|
-
|
|
242
|
-
|
|
258
|
+
cliVersion: CLI_VERSION,
|
|
259
|
+
internalPlugins: getInternalPlugins(),
|
|
260
|
+
});
|
|
261
|
+
registry = createCommandRegistry({
|
|
262
|
+
globalFlags: GLOBAL_FLAGS,
|
|
263
|
+
pluginExtensions: collectExtensions(pluginRuntime),
|
|
264
|
+
pluginCommands: collectPluginCommands(pluginRuntime),
|
|
243
265
|
});
|
|
244
|
-
exitIfNeeded();
|
|
245
|
-
return;
|
|
246
266
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
267
|
+
catch {
|
|
268
|
+
const internal = getInternalPlugins();
|
|
269
|
+
registry = createCommandRegistry({
|
|
270
|
+
globalFlags: GLOBAL_FLAGS,
|
|
271
|
+
pluginExtensions: [],
|
|
272
|
+
pluginCommands: internal.flatMap((plugin) => {
|
|
273
|
+
const commands = plugin.commands;
|
|
274
|
+
if (!commands || commands.length === 0)
|
|
275
|
+
return [];
|
|
276
|
+
return [{ pluginName: plugin.manifest.name, commands, manifestName: plugin.manifest.name }];
|
|
277
|
+
}),
|
|
278
|
+
});
|
|
251
279
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
280
|
+
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
281
|
+
}
|
|
282
|
+
run()
|
|
283
|
+
.then(exitIfNeeded)
|
|
284
|
+
.catch((error) => {
|
|
285
|
+
debug('cli', 'fatal error', error instanceof Error
|
|
286
|
+
? {
|
|
287
|
+
message: error.message,
|
|
288
|
+
stack: error.stack,
|
|
289
|
+
...('code' in error ? { code: error.code } : {}),
|
|
257
290
|
}
|
|
258
|
-
|
|
291
|
+
: error);
|
|
292
|
+
const argv = process.argv.slice(2);
|
|
293
|
+
const jsonMode = argv.includes('--json');
|
|
294
|
+
// In --json mode emit a machine-readable envelope to stdout (so a pipe to
|
|
295
|
+
// jq doesn't break on the first error) unless a command already wrote a
|
|
296
|
+
// structured JSON payload. The human-readable message always goes to
|
|
297
|
+
// stderr — stdout stays parseable, stderr stays diagnostic.
|
|
298
|
+
if (jsonMode && !hasEmittedJson()) {
|
|
299
|
+
emitJsonError(argv[0] ?? 'chkit', toJsonError(error));
|
|
259
300
|
}
|
|
260
|
-
|
|
261
|
-
if (!resolved.run)
|
|
262
|
-
throw new Error(`Command '${commandName}' has no run handler`);
|
|
263
|
-
await resolved.run({
|
|
264
|
-
command: commandName,
|
|
265
|
-
flags,
|
|
266
|
-
config,
|
|
267
|
-
configPath,
|
|
268
|
-
dirs,
|
|
269
|
-
pluginRuntime,
|
|
270
|
-
});
|
|
271
|
-
exitIfNeeded();
|
|
272
|
-
}
|
|
273
|
-
main().catch((error) => {
|
|
274
|
-
console.error(error instanceof Error ? error.message : String(error));
|
|
301
|
+
console.error(formatFatalError(error));
|
|
275
302
|
process.exit(1);
|
|
276
303
|
});
|
|
277
304
|
//# sourceMappingURL=chkit.js.map
|
package/dist/bin/chkit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chkit.js","sourceRoot":"","sources":["../../src/bin/chkit.ts"],"names":[],"mappings":";AACA,OAAO,OAAO,MAAM,cAAc,CAAA;AAGlC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"chkit.js","sourceRoot":"","sources":["../../src/bin/chkit.ts"],"names":[],"mappings":"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"}
|