@stackbilt/cli 0.4.2 → 0.5.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.
Files changed (79) hide show
  1. package/README.md +17 -1
  2. package/dist/__tests__/adf-metrics.test.d.ts +2 -0
  3. package/dist/__tests__/adf-metrics.test.d.ts.map +1 -0
  4. package/dist/__tests__/adf-metrics.test.js +117 -0
  5. package/dist/__tests__/adf-metrics.test.js.map +1 -0
  6. package/dist/__tests__/git-helpers.test.d.ts +2 -0
  7. package/dist/__tests__/git-helpers.test.d.ts.map +1 -0
  8. package/dist/__tests__/git-helpers.test.js +136 -0
  9. package/dist/__tests__/git-helpers.test.js.map +1 -0
  10. package/dist/__tests__/telemetry.test.d.ts +2 -0
  11. package/dist/__tests__/telemetry.test.d.ts.map +1 -0
  12. package/dist/__tests__/telemetry.test.js +119 -0
  13. package/dist/__tests__/telemetry.test.js.map +1 -0
  14. package/dist/commands/adf-bundle.d.ts.map +1 -1
  15. package/dist/commands/adf-bundle.js +5 -15
  16. package/dist/commands/adf-bundle.js.map +1 -1
  17. package/dist/commands/adf-evidence.d.ts.map +1 -1
  18. package/dist/commands/adf-evidence.js +57 -19
  19. package/dist/commands/adf-evidence.js.map +1 -1
  20. package/dist/commands/adf-metrics.d.ts +8 -0
  21. package/dist/commands/adf-metrics.d.ts.map +1 -0
  22. package/dist/commands/adf-metrics.js +242 -0
  23. package/dist/commands/adf-metrics.js.map +1 -0
  24. package/dist/commands/adf-migrate.js +16 -13
  25. package/dist/commands/adf-migrate.js.map +1 -1
  26. package/dist/commands/adf-sync.d.ts.map +1 -1
  27. package/dist/commands/adf-sync.js +2 -8
  28. package/dist/commands/adf-sync.js.map +1 -1
  29. package/dist/commands/adf.d.ts +2 -0
  30. package/dist/commands/adf.d.ts.map +1 -1
  31. package/dist/commands/adf.js +83 -82
  32. package/dist/commands/adf.js.map +1 -1
  33. package/dist/commands/audit.d.ts.map +1 -1
  34. package/dist/commands/audit.js +19 -87
  35. package/dist/commands/audit.js.map +1 -1
  36. package/dist/commands/bootstrap.d.ts.map +1 -1
  37. package/dist/commands/bootstrap.js +32 -33
  38. package/dist/commands/bootstrap.js.map +1 -1
  39. package/dist/commands/doctor.d.ts.map +1 -1
  40. package/dist/commands/doctor.js +4 -15
  41. package/dist/commands/doctor.js.map +1 -1
  42. package/dist/commands/drift.d.ts.map +1 -1
  43. package/dist/commands/drift.js +2 -8
  44. package/dist/commands/drift.js.map +1 -1
  45. package/dist/commands/hook.d.ts.map +1 -1
  46. package/dist/commands/hook.js +4 -14
  47. package/dist/commands/hook.js.map +1 -1
  48. package/dist/commands/init.d.ts.map +1 -1
  49. package/dist/commands/init.js +2 -8
  50. package/dist/commands/init.js.map +1 -1
  51. package/dist/commands/setup.d.ts.map +1 -1
  52. package/dist/commands/setup.js +3 -9
  53. package/dist/commands/setup.js.map +1 -1
  54. package/dist/commands/telemetry.d.ts +8 -0
  55. package/dist/commands/telemetry.d.ts.map +1 -0
  56. package/dist/commands/telemetry.js +184 -0
  57. package/dist/commands/telemetry.js.map +1 -0
  58. package/dist/commands/validate.d.ts.map +1 -1
  59. package/dist/commands/validate.js +11 -97
  60. package/dist/commands/validate.js.map +1 -1
  61. package/dist/commands/why.d.ts.map +1 -1
  62. package/dist/commands/why.js +7 -76
  63. package/dist/commands/why.js.map +1 -1
  64. package/dist/flags.d.ts +20 -0
  65. package/dist/flags.d.ts.map +1 -0
  66. package/dist/flags.js +76 -0
  67. package/dist/flags.js.map +1 -0
  68. package/dist/git-helpers.d.ts +36 -0
  69. package/dist/git-helpers.d.ts.map +1 -0
  70. package/dist/git-helpers.js +146 -0
  71. package/dist/git-helpers.js.map +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +94 -54
  74. package/dist/index.js.map +1 -1
  75. package/dist/telemetry.d.ts +29 -0
  76. package/dist/telemetry.d.ts.map +1 -0
  77. package/dist/telemetry.js +88 -0
  78. package/dist/telemetry.js.map +1 -0
  79. package/package.json +8 -8
package/README.md CHANGED
@@ -68,6 +68,7 @@ charter adf bundle --task "fix React component"
68
68
  charter adf migrate --dry-run # preview agent config → ADF migration
69
69
  charter adf sync --check # verify .adf files match locked hashes
70
70
  charter adf evidence --auto-measure --format json # validate metric ceilings
71
+ charter telemetry report --period 24h --format json # passive local usage summary
71
72
  ```
72
73
 
73
74
  ## Human Onboarding (Copy/Paste)
@@ -138,6 +139,7 @@ npx charter audit --format json
138
139
  npx charter adf migrate --dry-run --format json
139
140
  npx charter adf evidence --auto-measure --format json --ci
140
141
  npx charter adf sync --check --format json
142
+ npx charter telemetry report --period 24h --format json
141
143
 
142
144
  # recurring maintenance
143
145
  npx charter doctor --format json
@@ -280,6 +282,7 @@ charter adf sync --check [--ai-dir <dir>]
280
282
  charter adf sync --write [--ai-dir <dir>]
281
283
  charter adf evidence [--task "<prompt>"] [--ai-dir <dir>] [--auto-measure]
282
284
  [--context '{"key": value}'] [--context-file <path>]
285
+ charter adf metrics recalibrate [--headroom <percent>] [--reason "<text>"|--auto-rationale] [--dry-run]
283
286
  charter adf migrate [--dry-run] [--source <file>] [--no-backup]
284
287
  [--merge-strategy append|dedupe|replace] [--ai-dir <dir>]
285
288
  ```
@@ -292,9 +295,22 @@ charter adf migrate [--dry-run] [--source <file>] [--no-backup]
292
295
  - `bundle`: Read `manifest.adf`, resolve ON_DEMAND modules via keyword matching against the task, and output merged context with token estimate, trigger observability (matched keywords, load reasons), unmatched modules, and advisory-only warnings. Missing ON_DEMAND files are warnings in output (`missingModules` in JSON), while missing DEFAULT_LOAD files still fail.
293
296
  - `sync --check`: Verify source `.adf` files match their locked hashes. Exits 1 if any source has drifted since last sync.
294
297
  - `sync --write`: Update `.adf.lock` with current source hashes.
295
- - `evidence`: Validate all metric ceilings in the merged document and produce a structured pass/fail evidence report. `--auto-measure` counts lines in files referenced by the manifest METRICS section. `--context` or `--context-file` inject external metric overrides that take precedence over auto-measured and document values. In `--ci` mode, exits 1 on constraint failures (warnings don't fail). The governance workflow template runs this automatically on PRs when `.ai/manifest.adf` is present.
298
+ - `evidence`: Validate all metric ceilings in the merged document and produce a structured pass/fail evidence report. `--auto-measure` counts lines in files referenced by the manifest METRICS section. `--context` or `--context-file` inject external metric overrides that take precedence over auto-measured and document values. In `--ci` mode, exits 1 on constraint failures (warnings don't fail). Also reports stale-baseline warnings (baseline vs current delta + recommended ceiling) when baseline values drift significantly. The governance workflow template runs this automatically on PRs when `.ai/manifest.adf` is present.
299
+ - `metrics recalibrate`: Re-measure current LOC from manifest metric sources, propose and apply new ceilings using configurable headroom, and append rationale records to `BUDGET_RATIONALES`. Requires explicit rationale (`--reason`) unless `--auto-rationale` is used.
296
300
  - `migrate`: Scan existing agent config files (CLAUDE.md, .cursorrules, agents.md, GEMINI.md, copilot-instructions.md), classify content using the ADX-002 decision tree, and migrate into ADF modules. `--dry-run` previews the migration plan without writing files. `--source <file>` targets a single file. `--no-backup` skips `.pre-adf-migrate.bak` creation. `--merge-strategy` controls deduplication: `dedupe` (default, skip items already in ADF), `append` (always add), or `replace`. Environment-specific rules (WSL, PATH, credential helpers) are retained in the thin pointer.
297
301
 
302
+ ### `charter telemetry`
303
+
304
+ Passive local observability for Charter/ADF usage. Every CLI run appends command metadata (timestamp, command path, flags, duration, exit code) to `.charter/telemetry/events.ndjson`.
305
+
306
+ ```bash
307
+ charter telemetry report --period 24h
308
+ charter telemetry report --period 7d --format json
309
+ ```
310
+
311
+ - `report`: aggregates events over a time window (`--period` supports `s|m|h|d`, for example `30m`, `24h`, `7d`).
312
+ - Privacy: command metadata only. No prompt body, source code, or file contents are captured.
313
+
298
314
  #### Evidence Example (from Charter's own repo)
299
315
 
300
316
  Charter uses its own ADF system for self-governance. Running evidence with auto-measurement:
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=adf-metrics.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adf-metrics.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/adf-metrics.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("node:fs"));
37
+ const os = __importStar(require("node:os"));
38
+ const path = __importStar(require("node:path"));
39
+ const vitest_1 = require("vitest");
40
+ const adf_metrics_1 = require("../commands/adf-metrics");
41
+ const adf_evidence_1 = require("../commands/adf-evidence");
42
+ const baseOptions = {
43
+ configPath: '.charter',
44
+ format: 'json',
45
+ ciMode: false,
46
+ yes: false,
47
+ };
48
+ const originalCwd = process.cwd();
49
+ const tempDirs = [];
50
+ (0, vitest_1.afterEach)(() => {
51
+ process.chdir(originalCwd);
52
+ while (tempDirs.length > 0) {
53
+ const dir = tempDirs.pop();
54
+ if (dir) {
55
+ fs.rmSync(dir, { recursive: true, force: true });
56
+ }
57
+ }
58
+ vitest_1.vi.restoreAllMocks();
59
+ });
60
+ function writeFixtureRepo(tmp, baseline = 100) {
61
+ fs.mkdirSync(path.join(tmp, '.ai'), { recursive: true });
62
+ fs.mkdirSync(path.join(tmp, 'src'), { recursive: true });
63
+ fs.writeFileSync(path.join(tmp, '.ai', 'manifest.adf'), `ADF: 0.1
64
+ DEFAULT_LOAD:
65
+ - core.adf
66
+ - state.adf
67
+
68
+ METRICS:
69
+ COMPONENTS_TOTAL_LOC: src/components.ts
70
+ `);
71
+ fs.writeFileSync(path.join(tmp, '.ai', 'core.adf'), `ADF: 0.1
72
+ METRICS:
73
+ components_total_loc: ${baseline} / 120 [lines]
74
+ `);
75
+ fs.writeFileSync(path.join(tmp, '.ai', 'state.adf'), 'ADF: 0.1\nSTATE:\n CURRENT: testing\n');
76
+ fs.writeFileSync(path.join(tmp, 'src', 'components.ts'), Array.from({ length: 200 }, (_, i) => `line_${i}`).join('\n') + '\n');
77
+ }
78
+ (0, vitest_1.describe)('adf metrics recalibrate', () => {
79
+ (0, vitest_1.it)('requires rationale by default', () => {
80
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'charter-metrics-test-'));
81
+ tempDirs.push(tmp);
82
+ process.chdir(tmp);
83
+ writeFixtureRepo(tmp);
84
+ (0, vitest_1.expect)(() => (0, adf_metrics_1.adfMetricsCommand)(baseOptions, ['recalibrate'])).toThrow('requires --reason');
85
+ });
86
+ (0, vitest_1.it)('recalibrates metric ceilings and writes rationale entries', () => {
87
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'charter-metrics-test-'));
88
+ tempDirs.push(tmp);
89
+ process.chdir(tmp);
90
+ writeFixtureRepo(tmp);
91
+ const exitCode = (0, adf_metrics_1.adfMetricsCommand)(baseOptions, ['recalibrate', '--headroom', '20', '--reason', 'Scope expanded with new built views']);
92
+ (0, vitest_1.expect)(exitCode).toBe(0);
93
+ const measured = fs.readFileSync(path.join(tmp, 'src', 'components.ts'), 'utf-8').split('\n').length;
94
+ const ceiling = Math.ceil(measured * 1.2);
95
+ const core = fs.readFileSync(path.join(tmp, '.ai', 'core.adf'), 'utf-8');
96
+ (0, vitest_1.expect)(core).toContain(`components_total_loc: ${measured} / ${ceiling} [lines]`);
97
+ (0, vitest_1.expect)(core).toContain('BUDGET_RATIONALES');
98
+ (0, vitest_1.expect)(core).toContain('Scope expanded with new built views');
99
+ });
100
+ });
101
+ (0, vitest_1.describe)('adf evidence stale baseline warnings', () => {
102
+ (0, vitest_1.it)('emits staleBaselines when measured value greatly exceeds baseline value', () => {
103
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'charter-evidence-test-'));
104
+ tempDirs.push(tmp);
105
+ process.chdir(tmp);
106
+ writeFixtureRepo(tmp, 80);
107
+ const logs = [];
108
+ vitest_1.vi.spyOn(console, 'log').mockImplementation((msg) => logs.push(msg));
109
+ const exitCode = (0, adf_evidence_1.adfEvidence)(baseOptions, ['--ai-dir', '.ai', '--auto-measure']);
110
+ (0, vitest_1.expect)(exitCode).toBe(0);
111
+ const out = JSON.parse(logs[0]);
112
+ (0, vitest_1.expect)(out.staleBaselines?.length).toBeGreaterThan(0);
113
+ (0, vitest_1.expect)(out.staleBaselines?.[0].metric).toBe('components_total_loc');
114
+ (0, vitest_1.expect)(out.staleBaselines?.[0].rationaleRequired).toBe(true);
115
+ });
116
+ });
117
+ //# sourceMappingURL=adf-metrics.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adf-metrics.test.js","sourceRoot":"","sources":["../../src/__tests__/adf-metrics.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=git-helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-helpers.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/git-helpers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const vitest_1 = require("vitest");
37
+ const node_child_process_1 = require("node:child_process");
38
+ const fs = __importStar(require("node:fs"));
39
+ const os = __importStar(require("node:os"));
40
+ const path = __importStar(require("node:path"));
41
+ const git_helpers_1 = require("../git-helpers");
42
+ (0, vitest_1.describe)('git-helpers', () => {
43
+ let originalCwd;
44
+ let tempDir;
45
+ (0, vitest_1.beforeEach)(() => {
46
+ originalCwd = process.cwd();
47
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'charter-git-helpers-'));
48
+ process.chdir(tempDir);
49
+ });
50
+ (0, vitest_1.afterEach)(() => {
51
+ process.chdir(originalCwd);
52
+ fs.rmSync(tempDir, { recursive: true, force: true });
53
+ });
54
+ (0, vitest_1.describe)('runGit', () => {
55
+ (0, vitest_1.it)('succeeds inside a git repo', () => {
56
+ (0, node_child_process_1.execFileSync)('git', ['init'], { stdio: 'ignore' });
57
+ const result = (0, git_helpers_1.runGit)(['rev-parse', '--is-inside-work-tree']).trim();
58
+ (0, vitest_1.expect)(result).toBe('true');
59
+ });
60
+ (0, vitest_1.it)('throws outside a git repo', () => {
61
+ (0, vitest_1.expect)(() => (0, git_helpers_1.runGit)(['rev-parse', '--is-inside-work-tree'])).toThrow();
62
+ });
63
+ });
64
+ (0, vitest_1.describe)('isGitRepo', () => {
65
+ (0, vitest_1.it)('returns true inside a git repo', () => {
66
+ (0, node_child_process_1.execFileSync)('git', ['init'], { stdio: 'ignore' });
67
+ (0, vitest_1.expect)((0, git_helpers_1.isGitRepo)()).toBe(true);
68
+ });
69
+ (0, vitest_1.it)('returns false outside a git repo', () => {
70
+ (0, vitest_1.expect)((0, git_helpers_1.isGitRepo)()).toBe(false);
71
+ });
72
+ });
73
+ (0, vitest_1.describe)('hasCommits', () => {
74
+ (0, vitest_1.it)('returns false on empty repo', () => {
75
+ (0, node_child_process_1.execFileSync)('git', ['init'], { stdio: 'ignore' });
76
+ (0, vitest_1.expect)((0, git_helpers_1.hasCommits)()).toBe(false);
77
+ });
78
+ (0, vitest_1.it)('returns true after a commit', () => {
79
+ (0, node_child_process_1.execFileSync)('git', ['init'], { stdio: 'ignore' });
80
+ (0, node_child_process_1.execFileSync)('git', ['config', 'user.email', 'test@test.com'], { stdio: 'ignore' });
81
+ (0, node_child_process_1.execFileSync)('git', ['config', 'user.name', 'Test'], { stdio: 'ignore' });
82
+ fs.writeFileSync(path.join(tempDir, 'file.txt'), 'hello');
83
+ (0, node_child_process_1.execFileSync)('git', ['add', '.'], { stdio: 'ignore' });
84
+ (0, node_child_process_1.execFileSync)('git', ['commit', '-m', 'init'], { stdio: 'ignore' });
85
+ (0, vitest_1.expect)((0, git_helpers_1.hasCommits)()).toBe(true);
86
+ });
87
+ });
88
+ (0, vitest_1.describe)('getGitErrorMessage', () => {
89
+ (0, vitest_1.it)('extracts stderr from exec error', () => {
90
+ const err = Object.assign(new Error('fail'), { stderr: 'fatal: not a repo' });
91
+ (0, vitest_1.expect)((0, git_helpers_1.getGitErrorMessage)(err)).toBe('fatal: not a repo');
92
+ });
93
+ (0, vitest_1.it)('falls back to message', () => {
94
+ (0, vitest_1.expect)((0, git_helpers_1.getGitErrorMessage)(new Error('some error'))).toBe('some error');
95
+ });
96
+ (0, vitest_1.it)('returns fallback for non-Error', () => {
97
+ (0, vitest_1.expect)((0, git_helpers_1.getGitErrorMessage)('string')).toBe('Unknown git error.');
98
+ });
99
+ });
100
+ (0, vitest_1.describe)('parseCommitMetadata', () => {
101
+ (0, vitest_1.it)('parses git log format', () => {
102
+ const log = 'abc123\x1fAlice\x1f2026-01-01T00:00:00Z\x1fInitial commit\x1e';
103
+ const result = (0, git_helpers_1.parseCommitMetadata)(log);
104
+ (0, vitest_1.expect)(result).toHaveLength(1);
105
+ (0, vitest_1.expect)(result[0].sha).toBe('abc123');
106
+ (0, vitest_1.expect)(result[0].author).toBe('Alice');
107
+ (0, vitest_1.expect)(result[0].message).toBe('Initial commit');
108
+ });
109
+ (0, vitest_1.it)('handles multiple commits', () => {
110
+ const log = 'aaa\x1fA\x1f2026-01-01\x1fFirst\x1ebbb\x1fB\x1f2026-01-02\x1fSecond\x1e';
111
+ (0, vitest_1.expect)((0, git_helpers_1.parseCommitMetadata)(log)).toHaveLength(2);
112
+ });
113
+ });
114
+ (0, vitest_1.describe)('parseChangedFilesByCommit', () => {
115
+ (0, vitest_1.it)('parses name-only log', () => {
116
+ const log = [
117
+ 'a'.repeat(40),
118
+ 'src/index.ts',
119
+ 'src/util.ts',
120
+ '',
121
+ 'b'.repeat(40),
122
+ 'README.md',
123
+ ].join('\n');
124
+ const result = (0, git_helpers_1.parseChangedFilesByCommit)(log);
125
+ (0, vitest_1.expect)(result.get('a'.repeat(40))).toEqual(['src/index.ts', 'src/util.ts']);
126
+ (0, vitest_1.expect)(result.get('b'.repeat(40))).toEqual(['README.md']);
127
+ });
128
+ });
129
+ (0, vitest_1.describe)('getRecentCommitRange', () => {
130
+ (0, vitest_1.it)('returns HEAD on empty repo', () => {
131
+ (0, node_child_process_1.execFileSync)('git', ['init'], { stdio: 'ignore' });
132
+ (0, vitest_1.expect)((0, git_helpers_1.getRecentCommitRange)()).toBe('HEAD');
133
+ });
134
+ });
135
+ });
136
+ //# sourceMappingURL=git-helpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-helpers.test.js","sourceRoot":"","sources":["../../src/__tests__/git-helpers.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAqE;AACrE,2DAAkD;AAClD,4CAA8B;AAC9B,4CAA8B;AAC9B,gDAAkC;AAClC,gDAQwB;AAExB,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,WAAmB,CAAC;IACxB,IAAI,OAAe,CAAC;IAEpB,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5B,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3B,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAA,oBAAM,EAAC,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,oBAAM,EAAC,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;QACzB,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAA,eAAM,EAAC,IAAA,uBAAS,GAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,IAAA,eAAM,EAAC,IAAA,uBAAS,GAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAA,eAAM,EAAC,IAAA,wBAAU,GAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpF,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1E,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnE,IAAA,eAAM,EAAC,IAAA,wBAAU,GAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC9E,IAAA,eAAM,EAAC,IAAA,gCAAkB,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,IAAA,eAAM,EAAC,IAAA,gCAAkB,EAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,IAAA,eAAM,EAAC,IAAA,gCAAkB,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,+DAA+D,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAA,iCAAmB,EAAC,GAAG,CAAC,CAAC;YACxC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,yEAAyE,CAAC;YACtF,IAAA,eAAM,EAAC,IAAA,iCAAmB,EAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,GAAG,GAAG;gBACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACd,cAAc;gBACd,aAAa;gBACb,EAAE;gBACF,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACd,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,IAAA,uCAAyB,EAAC,GAAG,CAAC,CAAC;YAC9C,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;YAC5E,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAA,eAAM,EAAC,IAAA,kCAAoB,GAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=telemetry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/telemetry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("node:fs"));
37
+ const os = __importStar(require("node:os"));
38
+ const path = __importStar(require("node:path"));
39
+ const vitest_1 = require("vitest");
40
+ const index_1 = require("../index");
41
+ const telemetry_1 = require("../commands/telemetry");
42
+ const originalCwd = process.cwd();
43
+ const tempDirs = [];
44
+ (0, vitest_1.afterEach)(() => {
45
+ process.chdir(originalCwd);
46
+ while (tempDirs.length > 0) {
47
+ const dir = tempDirs.pop();
48
+ if (dir) {
49
+ fs.rmSync(dir, { recursive: true, force: true });
50
+ }
51
+ }
52
+ vitest_1.vi.restoreAllMocks();
53
+ });
54
+ (0, vitest_1.describe)('telemetry', () => {
55
+ (0, vitest_1.it)('records local telemetry events during command execution', async () => {
56
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'charter-telemetry-test-'));
57
+ tempDirs.push(tmp);
58
+ process.chdir(tmp);
59
+ vitest_1.vi.spyOn(console, 'log').mockImplementation(() => { });
60
+ const exitCode = await (0, index_1.run)(['classify', 'update', 'readme', '--format', 'json', '--config', '.charter']);
61
+ (0, vitest_1.expect)(exitCode).toBe(0);
62
+ const telemetryFile = path.join(tmp, '.charter', 'telemetry', 'events.ndjson');
63
+ (0, vitest_1.expect)(fs.existsSync(telemetryFile)).toBe(true);
64
+ const lines = fs.readFileSync(telemetryFile, 'utf-8').trim().split('\n');
65
+ const event = JSON.parse(lines[lines.length - 1]);
66
+ (0, vitest_1.expect)(event.commandPath).toBe('classify');
67
+ (0, vitest_1.expect)(event.exitCode).toBe(0);
68
+ (0, vitest_1.expect)(event.flags).toContain('--format');
69
+ (0, vitest_1.expect)(event.flags).toContain('--config');
70
+ });
71
+ (0, vitest_1.it)('generates telemetry report from local event log', async () => {
72
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'charter-telemetry-report-'));
73
+ tempDirs.push(tmp);
74
+ process.chdir(tmp);
75
+ const telemetryDir = path.join(tmp, '.charter', 'telemetry');
76
+ fs.mkdirSync(telemetryDir, { recursive: true });
77
+ const now = Date.now();
78
+ const events = [
79
+ {
80
+ version: 1,
81
+ timestamp: new Date(now - 60_000).toISOString(),
82
+ commandPath: 'adf.bundle',
83
+ flags: ['--task'],
84
+ format: 'json',
85
+ ciMode: false,
86
+ durationMs: 120,
87
+ exitCode: 0,
88
+ success: true,
89
+ },
90
+ {
91
+ version: 1,
92
+ timestamp: new Date(now - 30_000).toISOString(),
93
+ commandPath: 'doctor',
94
+ flags: ['--ci'],
95
+ format: 'json',
96
+ ciMode: true,
97
+ durationMs: 90,
98
+ exitCode: 1,
99
+ success: false,
100
+ },
101
+ ];
102
+ fs.writeFileSync(path.join(telemetryDir, 'events.ndjson'), events.map((e) => JSON.stringify(e)).join('\n') + '\n');
103
+ const logs = [];
104
+ vitest_1.vi.spyOn(console, 'log').mockImplementation((msg) => logs.push(msg));
105
+ const options = {
106
+ configPath: '.charter',
107
+ format: 'json',
108
+ ciMode: false,
109
+ yes: false,
110
+ };
111
+ const exitCode = await (0, telemetry_1.telemetryCommand)(options, ['report', '--period', '24h']);
112
+ (0, vitest_1.expect)(exitCode).toBe(0);
113
+ const report = JSON.parse(logs[0]);
114
+ (0, vitest_1.expect)(report.totalEvents).toBe(2);
115
+ (0, vitest_1.expect)(report.failureCount).toBe(1);
116
+ (0, vitest_1.expect)(report.byCommand.some((entry) => entry.command === 'doctor')).toBe(true);
117
+ });
118
+ });
119
+ //# sourceMappingURL=telemetry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.test.js","sourceRoot":"","sources":["../../src/__tests__/telemetry.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adf-bundle.d.ts","sourceRoot":"","sources":["../../src/commands/adf-bundle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CA6JrE"}
1
+ {"version":3,"file":"adf-bundle.d.ts","sourceRoot":"","sources":["../../src/commands/adf-bundle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAyJrE"}
@@ -43,12 +43,13 @@ const fs = __importStar(require("node:fs"));
43
43
  const path = __importStar(require("node:path"));
44
44
  const adf_1 = require("@stackbilt/adf");
45
45
  const index_1 = require("../index");
46
+ const flags_1 = require("../flags");
46
47
  function adfBundle(options, args) {
47
- const task = getFlag(args, '--task');
48
+ const task = (0, flags_1.getFlag)(args, '--task');
48
49
  if (!task) {
49
50
  throw new index_1.CLIError('adf bundle requires --task "<prompt>". Usage: charter adf bundle --task "Fix React component"');
50
51
  }
51
- const aiDir = getFlag(args, '--ai-dir') || '.ai';
52
+ const aiDir = (0, flags_1.getFlag)(args, '--ai-dir') || '.ai';
52
53
  const manifestPath = path.join(aiDir, 'manifest.adf');
53
54
  if (!fs.existsSync(manifestPath)) {
54
55
  throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
@@ -56,11 +57,7 @@ function adfBundle(options, args) {
56
57
  const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
57
58
  const manifestDoc = (0, adf_1.parseAdf)(manifestContent);
58
59
  const manifest = (0, adf_1.parseManifest)(manifestDoc);
59
- // Tokenize task into keywords (simple word split)
60
- const keywords = task
61
- .split(/[\s,;:()[\]{}]+/)
62
- .filter(w => w.length > 1)
63
- .map(w => w.replace(/[^a-zA-Z0-9]/g, ''));
60
+ const keywords = (0, flags_1.tokenizeTask)(task);
64
61
  const modulePaths = (0, adf_1.resolveModules)(manifest, keywords);
65
62
  const defaultLoad = new Set(manifest.defaultLoad);
66
63
  const missingModules = [];
@@ -83,7 +80,7 @@ function adfBundle(options, args) {
83
80
  }
84
81
  const readFile = (p) => fs.readFileSync(p, 'utf-8');
85
82
  try {
86
- const result = (0, adf_1.bundleModules)(aiDir, loadableModulePaths, readFile, keywords);
83
+ const result = (0, adf_1.bundleModules)(aiDir, loadableModulePaths, readFile, keywords, manifest);
87
84
  if (options.format === 'json') {
88
85
  const jsonOut = {
89
86
  task,
@@ -189,11 +186,4 @@ function adfBundle(options, args) {
189
186
  throw e;
190
187
  }
191
188
  }
192
- function getFlag(args, flag) {
193
- const idx = args.indexOf(flag);
194
- if (idx !== -1 && idx + 1 < args.length) {
195
- return args[idx + 1];
196
- }
197
- return undefined;
198
- }
199
189
  //# sourceMappingURL=adf-bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adf-bundle.js","sourceRoot":"","sources":["../../src/commands/adf-bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adf-bundle.js","sourceRoot":"","sources":["../../src/commands/adf-bundle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adf-evidence.d.ts","sourceRoot":"","sources":["../../src/commands/adf-evidence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAW3C,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CA2NvE"}
1
+ {"version":3,"file":"adf-evidence.d.ts","sourceRoot":"","sources":["../../src/commands/adf-evidence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAsB3C,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAyOvE"}