@aicqtools/core 1.0.0-alpha.6 → 1.0.0-alpha.7

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.
@@ -1,4 +1,4 @@
1
1
  export { loadConfig, findConfigPath } from './loader.js';
2
- export { aicqConfigSchema } from './schema.js';
2
+ export { aicqConfigSchema, DEFAULT_EXCLUDE } from './schema.js';
3
3
  export type { AicqConfig } from './schema.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { loadConfig, findConfigPath } from './loader.js';
2
- export { aicqConfigSchema } from './schema.js';
2
+ export { aicqConfigSchema, DEFAULT_EXCLUDE } from './schema.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
@@ -1,5 +1,15 @@
1
1
  import { z } from 'zod';
2
2
  export declare const localeSchema: z.ZodDefault<z.ZodEnum<["ko", "en"]>>;
3
+ /**
4
+ * Default `exclude` globs.
5
+ *
6
+ * Two principles:
7
+ * 1. Only widely-used framework conventions — never a single project's directory names.
8
+ * 2. Only build artifacts / vendored deps / minified output — NEVER source-adjacent dirs like
9
+ * `**\/migrations/**`, `**\/seeders/**`, or `**\/database/**`, because rules such as
10
+ * `camelcase-migration-column` and seeder lints must still see those files.
11
+ */
12
+ export declare const DEFAULT_EXCLUDE: readonly string[];
3
13
  export declare const guardrailModuleSchema: z.ZodDefault<z.ZodObject<{
4
14
  enabled: z.ZodDefault<z.ZodBoolean>;
5
15
  rulesDir: z.ZodDefault<z.ZodString>;
@@ -41,6 +51,13 @@ export declare const aicqConfigSchema: z.ZodObject<{
41
51
  locale: z.ZodDefault<z.ZodEnum<["ko", "en"]>>;
42
52
  include: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
43
53
  exclude: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
54
+ /**
55
+ * When true, the file walker reads the repo-root `.gitignore` and appends its entries to the
56
+ * effective exclude list. Default false to keep behavior deterministic (a project changing
57
+ * `.gitignore` should not silently change what aicqtools scans). Only the root `.gitignore`
58
+ * is honored; nested gitignore files are left for a future release.
59
+ */
60
+ respectGitignore: z.ZodDefault<z.ZodBoolean>;
44
61
  modules: z.ZodDefault<z.ZodObject<{
45
62
  guardrail: z.ZodDefault<z.ZodObject<{
46
63
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -113,6 +130,7 @@ export declare const aicqConfigSchema: z.ZodObject<{
113
130
  locale: "ko" | "en";
114
131
  include: string[];
115
132
  exclude: string[];
133
+ respectGitignore: boolean;
116
134
  modules: {
117
135
  guardrail: {
118
136
  enabled: boolean;
@@ -135,6 +153,7 @@ export declare const aicqConfigSchema: z.ZodObject<{
135
153
  locale?: "ko" | "en" | undefined;
136
154
  include?: string[] | undefined;
137
155
  exclude?: string[] | undefined;
156
+ respectGitignore?: boolean | undefined;
138
157
  modules?: {
139
158
  guardrail?: {
140
159
  enabled?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY,uCAAqC,CAAC;AAE/D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;GAOpB,CAAC;AAEf,eAAO,MAAM,sBAAsB;;;;;;;;;;;;GAMrB,CAAC;AAEf,eAAO,MAAM,uBAAuB;;;;;;GAItB,CAAC;AAEf,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY,uCAAqC,CAAC;AAE/D;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAwC3C,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;GAOpB,CAAC;AAEf,eAAO,MAAM,sBAAsB;;;;;;;;;;;;GAMrB,CAAC;AAEf,eAAO,MAAM,uBAAuB;;;;;;GAItB,CAAC;AAEf,eAAO,MAAM,gBAAgB;;;;;IAK3B;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASH,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -1,5 +1,55 @@
1
1
  import { z } from 'zod';
2
2
  export const localeSchema = z.enum(['ko', 'en']).default('en');
3
+ /**
4
+ * Default `exclude` globs.
5
+ *
6
+ * Two principles:
7
+ * 1. Only widely-used framework conventions — never a single project's directory names.
8
+ * 2. Only build artifacts / vendored deps / minified output — NEVER source-adjacent dirs like
9
+ * `**\/migrations/**`, `**\/seeders/**`, or `**\/database/**`, because rules such as
10
+ * `camelcase-migration-column` and seeder lints must still see those files.
11
+ */
12
+ export const DEFAULT_EXCLUDE = Object.freeze([
13
+ // Node deps + classic build outputs (carried over from alpha.6)
14
+ '**/node_modules/**',
15
+ '**/dist/**',
16
+ '**/.turbo/**',
17
+ '**/build/**',
18
+ // Framework export & cache dirs (Next, Nuxt, SvelteKit, Astro, Docusaurus, VitePress)
19
+ '**/out/**',
20
+ '**/.next/**',
21
+ '**/.nuxt/**',
22
+ '**/.svelte-kit/**',
23
+ '**/.astro/**',
24
+ '**/.docusaurus/**',
25
+ '**/.vitepress/dist/**',
26
+ // Hosting / bundler caches
27
+ '**/.vercel/**',
28
+ '**/.netlify/**',
29
+ '**/.expo/**',
30
+ '**/.cache/**',
31
+ '**/.parcel-cache/**',
32
+ // Test reports, coverage, storybook builds
33
+ '**/coverage/**',
34
+ '**/.nyc_output/**',
35
+ '**/storybook-static/**',
36
+ // Capacitor webDir copies — the mobile native dirs ship a minified copy of the web bundle.
37
+ // (We intentionally do NOT exclude all of ios/** or android/** — only the copied public bundle.)
38
+ '**/ios/App/**/public/**',
39
+ '**/android/app/src/main/assets/public/**',
40
+ '**/android/**/assets/public/**',
41
+ // Python vendored deps & caches
42
+ '**/__pycache__/**',
43
+ '**/.venv/**',
44
+ '**/venv/**',
45
+ '**/.tox/**',
46
+ '**/.mypy_cache/**',
47
+ '**/.pytest_cache/**',
48
+ '**/vendor/**',
49
+ // Minified / pre-bundled output guard (one minified file flips no-magic-number into the thousands)
50
+ '**/*.min.js',
51
+ '**/*.bundle.js',
52
+ ]);
3
53
  export const guardrailModuleSchema = z
4
54
  .object({
5
55
  enabled: z.boolean().default(true),
@@ -24,9 +74,14 @@ export const aicqConfigSchema = z.object({
24
74
  $schema: z.string().optional(),
25
75
  locale: localeSchema,
26
76
  include: z.array(z.string()).default(['**/*.{ts,tsx,js,mjs,cjs,jsx,py}']),
27
- exclude: z
28
- .array(z.string())
29
- .default(['**/node_modules/**', '**/dist/**', '**/.turbo/**', '**/build/**']),
77
+ exclude: z.array(z.string()).default([...DEFAULT_EXCLUDE]),
78
+ /**
79
+ * When true, the file walker reads the repo-root `.gitignore` and appends its entries to the
80
+ * effective exclude list. Default false to keep behavior deterministic (a project changing
81
+ * `.gitignore` should not silently change what aicqtools scans). Only the root `.gitignore`
82
+ * is honored; nested gitignore files are left for a future release.
83
+ */
84
+ respectGitignore: z.boolean().default(false),
30
85
  modules: z
31
86
  .object({
32
87
  guardrail: guardrailModuleSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAChG,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC;CAC9C,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACpC,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,iCAAiC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,OAAO,CAAC,CAAC,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAC/E,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,SAAS,EAAE,qBAAqB;QAChC,UAAU,EAAE,sBAAsB;QAClC,WAAW,EAAE,uBAAuB;KACrC,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,9 @@ export declare const messages: {
17
17
  readonly 'cli.docs.generated': "rule docs generated: {count} files in {dir}";
18
18
  readonly 'cli.error.generic': "aicq error: {message}";
19
19
  readonly 'cli.check.parserFailed': "parser failed on {file}: {message}";
20
+ readonly 'cli.check.largeScanHint': "hint: {files} files scanned and no aicq.config.yaml was found. Consider adding a config to scope `include`/`exclude`, or set `respectGitignore: true`. Run `aicq rules suggest` for a starting point.";
21
+ readonly 'cli.check.unknownRuleId': "aicq.config.yaml references unknown rule `{id}` — ignored.";
22
+ readonly 'cli.check.noisyRuleHint': "hint: `{id}` fired {count} times. Consider setting `{id}: off` under `modules.guardrail.rules` in aicq.config.yaml, or narrow it with project-specific tuning.";
20
23
  readonly 'cli.rules.suggest.header': "{files} files scanned ({langs}), {ms}ms";
21
24
  readonly 'cli.rules.suggest.tableHeader': "rule hits severity message";
22
25
  readonly 'cli.rules.suggest.none': "No built-in rule matched this repo. Nothing to suggest.";
@@ -25,6 +28,9 @@ export declare const messages: {
25
28
  readonly 'cli.rules.suggest.stackMatchNote': "(stack match)";
26
29
  readonly 'cli.rules.suggest.noisyNote': "(very high count — likely noisy, tune before enabling)";
27
30
  readonly 'cli.rules.suggest.patternDraftsHeader': "Draft pattern rules ({count}) — review before placing under rulesDir:";
31
+ readonly 'cli.rules.suggest.snippetBanner': "Generated by `aicq rules suggest` on {date}.\nBaseline suggestion — review every line before committing. Info-severity\nand high-noise rules are emitted commented-out; uncomment after tuning.\nProject-specific rules belong in your `rulesDir`, not in this map.";
32
+ readonly 'cli.rules.suggest.patternDraftsBanner': "Auto-suggested draft pattern rules — review & edit, then place each under your rulesDir.";
33
+ readonly 'cli.rules.suggest.experimentalLabel': "EXPERIMENTAL";
28
34
  readonly 'cli.rules.suggest.written': "wrote {count} suggestion(s) to {path}";
29
35
  };
30
36
  readonly ko: {
@@ -38,6 +44,9 @@ export declare const messages: {
38
44
  readonly 'cli.docs.generated': "룰 docs 생성됨: {dir}에 {count}개 파일";
39
45
  readonly 'cli.error.generic': "aicq 오류: {message}";
40
46
  readonly 'cli.check.parserFailed': "{file} 파서 실패: {message}";
47
+ readonly 'cli.check.largeScanHint': "안내: {files}개 파일을 스캔했고 aicq.config.yaml이 없습니다. `include`/`exclude` 범위를 좁히는 config 작성 또는 `respectGitignore: true` 설정을 검토하세요. 시작점은 `aicq rules suggest`.";
48
+ readonly 'cli.check.unknownRuleId': "aicq.config.yaml에서 알 수 없는 룰 `{id}` 참조 — 무시함.";
49
+ readonly 'cli.check.noisyRuleHint': "안내: `{id}`이(가) {count}회 적중했습니다. aicq.config.yaml의 `modules.guardrail.rules`에 `{id}: off` 또는 프로젝트별 튜닝을 검토하세요.";
41
50
  readonly 'cli.rules.suggest.header': "파일 {files}개 검사 ({langs}), {ms}ms";
42
51
  readonly 'cli.rules.suggest.tableHeader': "룰 적중 심각도 메시지";
43
52
  readonly 'cli.rules.suggest.none': "이 저장소에 매치된 내장 룰이 없습니다. 제안할 항목 없음.";
@@ -46,6 +55,9 @@ export declare const messages: {
46
55
  readonly 'cli.rules.suggest.stackMatchNote': "(스택 매치)";
47
56
  readonly 'cli.rules.suggest.noisyNote': "(적중 매우 많음 — 노이즈 가능성, 활성화 전 조정 권장)";
48
57
  readonly 'cli.rules.suggest.patternDraftsHeader': "룰 초안 ({count}개) — rulesDir에 두기 전 검토하세요:";
58
+ readonly 'cli.rules.suggest.snippetBanner': "`aicq rules suggest`로 {date}에 자동 생성.\n베이스라인 제안일 뿐 — 커밋 전 모든 줄을 검토하세요. info-severity 및\n노이즈가 높은 룰은 주석 처리됐습니다; 튜닝 후 주석 해제하세요.\n프로젝트 고유 룰은 이 맵이 아니라 `rulesDir`에 두세요.";
59
+ readonly 'cli.rules.suggest.patternDraftsBanner': "자동 제안된 패턴 룰 초안 — 검토·수정 후 rulesDir에 배치하세요.";
60
+ readonly 'cli.rules.suggest.experimentalLabel': "실험적";
49
61
  readonly 'cli.rules.suggest.written': "제안 {count}건을 {path}에 기록";
50
62
  };
51
63
  };
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CX,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,QAAQ,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DX,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,QAAQ,CAAC,EAAE,CAAC"}
@@ -16,6 +16,9 @@ export const messages = {
16
16
  'cli.docs.generated': 'rule docs generated: {count} files in {dir}',
17
17
  'cli.error.generic': 'aicq error: {message}',
18
18
  'cli.check.parserFailed': 'parser failed on {file}: {message}',
19
+ 'cli.check.largeScanHint': 'hint: {files} files scanned and no aicq.config.yaml was found. Consider adding a config to scope `include`/`exclude`, or set `respectGitignore: true`. Run `aicq rules suggest` for a starting point.',
20
+ 'cli.check.unknownRuleId': 'aicq.config.yaml references unknown rule `{id}` — ignored.',
21
+ 'cli.check.noisyRuleHint': 'hint: `{id}` fired {count} times. Consider setting `{id}: off` under `modules.guardrail.rules` in aicq.config.yaml, or narrow it with project-specific tuning.',
19
22
  'cli.rules.suggest.header': '{files} files scanned ({langs}), {ms}ms',
20
23
  'cli.rules.suggest.tableHeader': 'rule hits severity message',
21
24
  'cli.rules.suggest.none': 'No built-in rule matched this repo. Nothing to suggest.',
@@ -24,6 +27,9 @@ export const messages = {
24
27
  'cli.rules.suggest.stackMatchNote': '(stack match)',
25
28
  'cli.rules.suggest.noisyNote': '(very high count — likely noisy, tune before enabling)',
26
29
  'cli.rules.suggest.patternDraftsHeader': 'Draft pattern rules ({count}) — review before placing under rulesDir:',
30
+ 'cli.rules.suggest.snippetBanner': 'Generated by `aicq rules suggest` on {date}.\nBaseline suggestion — review every line before committing. Info-severity\nand high-noise rules are emitted commented-out; uncomment after tuning.\nProject-specific rules belong in your `rulesDir`, not in this map.',
31
+ 'cli.rules.suggest.patternDraftsBanner': 'Auto-suggested draft pattern rules — review & edit, then place each under your rulesDir.',
32
+ 'cli.rules.suggest.experimentalLabel': 'EXPERIMENTAL',
27
33
  'cli.rules.suggest.written': 'wrote {count} suggestion(s) to {path}',
28
34
  },
29
35
  ko: {
@@ -37,6 +43,9 @@ export const messages = {
37
43
  'cli.docs.generated': '룰 docs 생성됨: {dir}에 {count}개 파일',
38
44
  'cli.error.generic': 'aicq 오류: {message}',
39
45
  'cli.check.parserFailed': '{file} 파서 실패: {message}',
46
+ 'cli.check.largeScanHint': '안내: {files}개 파일을 스캔했고 aicq.config.yaml이 없습니다. `include`/`exclude` 범위를 좁히는 config 작성 또는 `respectGitignore: true` 설정을 검토하세요. 시작점은 `aicq rules suggest`.',
47
+ 'cli.check.unknownRuleId': 'aicq.config.yaml에서 알 수 없는 룰 `{id}` 참조 — 무시함.',
48
+ 'cli.check.noisyRuleHint': '안내: `{id}`이(가) {count}회 적중했습니다. aicq.config.yaml의 `modules.guardrail.rules`에 `{id}: off` 또는 프로젝트별 튜닝을 검토하세요.',
40
49
  'cli.rules.suggest.header': '파일 {files}개 검사 ({langs}), {ms}ms',
41
50
  'cli.rules.suggest.tableHeader': '룰 적중 심각도 메시지',
42
51
  'cli.rules.suggest.none': '이 저장소에 매치된 내장 룰이 없습니다. 제안할 항목 없음.',
@@ -45,6 +54,9 @@ export const messages = {
45
54
  'cli.rules.suggest.stackMatchNote': '(스택 매치)',
46
55
  'cli.rules.suggest.noisyNote': '(적중 매우 많음 — 노이즈 가능성, 활성화 전 조정 권장)',
47
56
  'cli.rules.suggest.patternDraftsHeader': '룰 초안 ({count}개) — rulesDir에 두기 전 검토하세요:',
57
+ 'cli.rules.suggest.snippetBanner': '`aicq rules suggest`로 {date}에 자동 생성.\n베이스라인 제안일 뿐 — 커밋 전 모든 줄을 검토하세요. info-severity 및\n노이즈가 높은 룰은 주석 처리됐습니다; 튜닝 후 주석 해제하세요.\n프로젝트 고유 룰은 이 맵이 아니라 `rulesDir`에 두세요.',
58
+ 'cli.rules.suggest.patternDraftsBanner': '자동 제안된 패턴 룰 초안 — 검토·수정 후 rulesDir에 배치하세요.',
59
+ 'cli.rules.suggest.experimentalLabel': '실험적',
48
60
  'cli.rules.suggest.written': '제안 {count}건을 {path}에 기록',
49
61
  },
50
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,EAAE,EAAE;QACF,mBAAmB,EAAE,wDAAwD;QAC7E,wBAAwB,EAAE,gBAAgB;QAC1C,2BAA2B,EAAE,2BAA2B;QACxD,kBAAkB,EAAE,iBAAiB;QACrC,yBAAyB,EAAE,6BAA6B;QACxD,wBAAwB,EAAE,wDAAwD;QAClF,+BAA+B,EAAE,4CAA4C;QAC7E,oBAAoB,EAAE,6CAA6C;QACnE,mBAAmB,EAAE,uBAAuB;QAC5C,wBAAwB,EAAE,oCAAoC;QAC9D,0BAA0B,EAAE,yCAAyC;QACrE,+BAA+B,EAAE,+BAA+B;QAChE,wBAAwB,EAAE,yDAAyD;QACnF,iCAAiC,EAAE,wBAAwB;QAC3D,8BAA8B,EAAE,0BAA0B;QAC1D,kCAAkC,EAAE,eAAe;QACnD,6BAA6B,EAAE,wDAAwD;QACvF,uCAAuC,EAAE,uEAAuE;QAChH,2BAA2B,EAAE,uCAAuC;KACrE;IACD,EAAE,EAAE;QACF,mBAAmB,EAAE,6CAA6C;QAClE,wBAAwB,EAAE,QAAQ;QAClC,2BAA2B,EAAE,iBAAiB;QAC9C,kBAAkB,EAAE,aAAa;QACjC,yBAAyB,EAAE,kBAAkB;QAC7C,wBAAwB,EAAE,oDAAoD;QAC9E,+BAA+B,EAAE,+BAA+B;QAChE,oBAAoB,EAAE,gCAAgC;QACtD,mBAAmB,EAAE,oBAAoB;QACzC,wBAAwB,EAAE,yBAAyB;QACnD,0BAA0B,EAAE,kCAAkC;QAC9D,+BAA+B,EAAE,iBAAiB;QAClD,wBAAwB,EAAE,mCAAmC;QAC7D,iCAAiC,EAAE,gBAAgB;QACnD,8BAA8B,EAAE,uBAAuB;QACvD,kCAAkC,EAAE,SAAS;QAC7C,6BAA6B,EAAE,mCAAmC;QAClE,uCAAuC,EAAE,yCAAyC;QAClF,2BAA2B,EAAE,yBAAyB;KACvD;CACO,CAAC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,EAAE,EAAE;QACF,mBAAmB,EAAE,wDAAwD;QAC7E,wBAAwB,EAAE,gBAAgB;QAC1C,2BAA2B,EAAE,2BAA2B;QACxD,kBAAkB,EAAE,iBAAiB;QACrC,yBAAyB,EAAE,6BAA6B;QACxD,wBAAwB,EAAE,wDAAwD;QAClF,+BAA+B,EAAE,4CAA4C;QAC7E,oBAAoB,EAAE,6CAA6C;QACnE,mBAAmB,EAAE,uBAAuB;QAC5C,wBAAwB,EAAE,oCAAoC;QAC9D,yBAAyB,EACvB,uMAAuM;QACzM,yBAAyB,EAAE,4DAA4D;QACvF,yBAAyB,EACvB,gKAAgK;QAClK,0BAA0B,EAAE,yCAAyC;QACrE,+BAA+B,EAAE,+BAA+B;QAChE,wBAAwB,EAAE,yDAAyD;QACnF,iCAAiC,EAAE,wBAAwB;QAC3D,8BAA8B,EAAE,0BAA0B;QAC1D,kCAAkC,EAAE,eAAe;QACnD,6BAA6B,EAAE,wDAAwD;QACvF,uCAAuC,EAAE,uEAAuE;QAChH,iCAAiC,EAC/B,qQAAqQ;QACvQ,uCAAuC,EACrC,0FAA0F;QAC5F,qCAAqC,EAAE,cAAc;QACrD,2BAA2B,EAAE,uCAAuC;KACrE;IACD,EAAE,EAAE;QACF,mBAAmB,EAAE,6CAA6C;QAClE,wBAAwB,EAAE,QAAQ;QAClC,2BAA2B,EAAE,iBAAiB;QAC9C,kBAAkB,EAAE,aAAa;QACjC,yBAAyB,EAAE,kBAAkB;QAC7C,wBAAwB,EAAE,oDAAoD;QAC9E,+BAA+B,EAAE,+BAA+B;QAChE,oBAAoB,EAAE,gCAAgC;QACtD,mBAAmB,EAAE,oBAAoB;QACzC,wBAAwB,EAAE,yBAAyB;QACnD,yBAAyB,EACvB,uJAAuJ;QACzJ,yBAAyB,EAAE,8CAA8C;QACzE,yBAAyB,EACvB,8GAA8G;QAChH,0BAA0B,EAAE,kCAAkC;QAC9D,+BAA+B,EAAE,iBAAiB;QAClD,wBAAwB,EAAE,mCAAmC;QAC7D,iCAAiC,EAAE,gBAAgB;QACnD,8BAA8B,EAAE,uBAAuB;QACvD,kCAAkC,EAAE,SAAS;QAC7C,6BAA6B,EAAE,mCAAmC;QAClE,uCAAuC,EAAE,yCAAyC;QAClF,iCAAiC,EAC/B,mKAAmK;QACrK,uCAAuC,EACrC,2CAA2C;QAC7C,qCAAqC,EAAE,KAAK;QAC5C,2BAA2B,EAAE,yBAAyB;KACvD;CACO,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type { Severity, Language, Position, Range, Fix, Diagnostic, CheckResult, } from './types.js';
2
2
  export { getParser, parseSource, detectLanguage, loadLanguage } from './parser/index.js';
3
- export { loadConfig, findConfigPath, aicqConfigSchema } from './config/index.js';
3
+ export { loadConfig, findConfigPath, aicqConfigSchema, DEFAULT_EXCLUDE } from './config/index.js';
4
4
  export type { AicqConfig } from './config/index.js';
5
5
  export { reportJson, reportText, reportSarif } from './reporter/index.js';
6
6
  export { FileCache, hashRulesetSignature } from './cache/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,EACH,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjF,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,EACH,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClG,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { getParser, parseSource, detectLanguage, loadLanguage } from './parser/index.js';
2
- export { loadConfig, findConfigPath, aicqConfigSchema } from './config/index.js';
2
+ export { loadConfig, findConfigPath, aicqConfigSchema, DEFAULT_EXCLUDE } from './config/index.js';
3
3
  export { reportJson, reportText, reportSarif } from './reporter/index.js';
4
4
  export { FileCache, hashRulesetSignature } from './cache/index.js';
5
5
  export { t, resolveLocale, messages } from './i18n/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAElG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aicqtools/core",
3
- "version": "1.0.0-alpha.6",
3
+ "version": "1.0.0-alpha.7",
4
4
  "type": "module",
5
5
  "description": "Shared core for aicqtools — tree-sitter parser, sqlite incremental cache, SARIF/JSON/text reporters, config loader, i18n.",
6
6
  "keywords": [