@ginkoai/cli 2.0.2 → 2.0.4
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/dist/commands/epic.d.ts +4 -4
- package/dist/commands/epic.d.ts.map +1 -1
- package/dist/commands/epic.js +68 -6
- package/dist/commands/epic.js.map +1 -1
- package/dist/commands/graph/api-client.d.ts +14 -1
- package/dist/commands/graph/api-client.d.ts.map +1 -1
- package/dist/commands/graph/api-client.js.map +1 -1
- package/dist/commands/graph/explore.d.ts.map +1 -1
- package/dist/commands/graph/explore.js +27 -1
- package/dist/commands/graph/explore.js.map +1 -1
- package/dist/commands/graph/index.d.ts +3 -3
- package/dist/commands/graph/index.d.ts.map +1 -1
- package/dist/commands/graph/index.js +39 -3
- package/dist/commands/graph/index.js.map +1 -1
- package/dist/commands/graph/load.d.ts.map +1 -1
- package/dist/commands/graph/load.js +10 -1
- package/dist/commands/graph/load.js.map +1 -1
- package/dist/commands/graph/migrations/009-epic-roadmap-properties.d.ts +41 -0
- package/dist/commands/graph/migrations/009-epic-roadmap-properties.d.ts.map +1 -0
- package/dist/commands/graph/migrations/009-epic-roadmap-properties.js +90 -0
- package/dist/commands/graph/migrations/009-epic-roadmap-properties.js.map +1 -0
- package/dist/commands/graph/migrations/010-epic-graph-id.d.ts +30 -0
- package/dist/commands/graph/migrations/010-epic-graph-id.d.ts.map +1 -0
- package/dist/commands/graph/migrations/010-epic-graph-id.js +67 -0
- package/dist/commands/graph/migrations/010-epic-graph-id.js.map +1 -0
- package/dist/commands/graph/migrations/011-sprint-epic-id.d.ts +32 -0
- package/dist/commands/graph/migrations/011-sprint-epic-id.d.ts.map +1 -0
- package/dist/commands/graph/migrations/011-sprint-epic-id.js +71 -0
- package/dist/commands/graph/migrations/011-sprint-epic-id.js.map +1 -0
- package/dist/commands/roadmap/index.d.ts +27 -0
- package/dist/commands/roadmap/index.d.ts.map +1 -0
- package/dist/commands/roadmap/index.js +208 -0
- package/dist/commands/roadmap/index.js.map +1 -0
- package/dist/commands/start/start-reflection.d.ts +4 -2
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +124 -60
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/commands/sync/sprint-syncer.d.ts.map +1 -1
- package/dist/commands/sync/sprint-syncer.js +8 -0
- package/dist/commands/sync/sprint-syncer.js.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/output-formatter.d.ts +90 -0
- package/dist/lib/output-formatter.d.ts.map +1 -1
- package/dist/lib/output-formatter.js +244 -0
- package/dist/lib/output-formatter.js.map +1 -1
- package/dist/lib/roadmap/changelog-inference.d.ts +84 -0
- package/dist/lib/roadmap/changelog-inference.d.ts.map +1 -0
- package/dist/lib/roadmap/changelog-inference.js +163 -0
- package/dist/lib/roadmap/changelog-inference.js.map +1 -0
- package/dist/lib/sprint-loader.d.ts +25 -1
- package/dist/lib/sprint-loader.d.ts.map +1 -1
- package/dist/lib/sprint-loader.js +196 -2
- package/dist/lib/sprint-loader.js.map +1 -1
- package/dist/lib/user-sprint.d.ts +59 -0
- package/dist/lib/user-sprint.d.ts.map +1 -0
- package/dist/lib/user-sprint.js +147 -0
- package/dist/lib/user-sprint.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-09
|
|
5
|
+
* @tags: [migration, epic, roadmap, graph, ADR-056]
|
|
6
|
+
* @related: [../api-client.ts, ADR-056]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
export interface MigrationOptions {
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface MigrationResult {
|
|
16
|
+
success: boolean;
|
|
17
|
+
migratedCount: number;
|
|
18
|
+
skippedCount: number;
|
|
19
|
+
errors: string[];
|
|
20
|
+
dryRun: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Migration 009: Add roadmap properties to all Epic nodes
|
|
24
|
+
*
|
|
25
|
+
* This migration adds the following properties to Epic nodes:
|
|
26
|
+
* - commitment_status: 'uncommitted' (default)
|
|
27
|
+
* - roadmap_status: 'not_started' (default)
|
|
28
|
+
* - roadmap_visible: true (default)
|
|
29
|
+
* - changelog: [] (empty array, initialized)
|
|
30
|
+
*
|
|
31
|
+
* Epics that already have these properties will be skipped.
|
|
32
|
+
*
|
|
33
|
+
* @param options Migration options
|
|
34
|
+
* @returns Migration result
|
|
35
|
+
*/
|
|
36
|
+
export declare function runMigration009(options?: MigrationOptions): Promise<MigrationResult>;
|
|
37
|
+
/**
|
|
38
|
+
* CLI entry point for migration 009
|
|
39
|
+
*/
|
|
40
|
+
export declare function migrate009Command(options?: MigrationOptions): Promise<void>;
|
|
41
|
+
//# sourceMappingURL=009-epic-roadmap-properties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"009-epic-roadmap-properties.d.ts","sourceRoot":"","sources":["../../../../src/commands/graph/migrations/009-epic-roadmap-properties.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgE9F;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-09
|
|
5
|
+
* @tags: [migration, epic, roadmap, graph, ADR-056]
|
|
6
|
+
* @related: [../api-client.ts, ADR-056]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { GraphApiClient } from '../api-client.js';
|
|
13
|
+
/**
|
|
14
|
+
* Migration 009: Add roadmap properties to all Epic nodes
|
|
15
|
+
*
|
|
16
|
+
* This migration adds the following properties to Epic nodes:
|
|
17
|
+
* - commitment_status: 'uncommitted' (default)
|
|
18
|
+
* - roadmap_status: 'not_started' (default)
|
|
19
|
+
* - roadmap_visible: true (default)
|
|
20
|
+
* - changelog: [] (empty array, initialized)
|
|
21
|
+
*
|
|
22
|
+
* Epics that already have these properties will be skipped.
|
|
23
|
+
*
|
|
24
|
+
* @param options Migration options
|
|
25
|
+
* @returns Migration result
|
|
26
|
+
*/
|
|
27
|
+
export async function runMigration009(options = {}) {
|
|
28
|
+
const { dryRun = false, verbose = false } = options;
|
|
29
|
+
const client = new GraphApiClient();
|
|
30
|
+
console.log(chalk.blue('\n🔄 Migration 009: Epic Roadmap Properties'));
|
|
31
|
+
console.log(chalk.dim(' Adding roadmap properties to Epic nodes (ADR-056)\n'));
|
|
32
|
+
if (dryRun) {
|
|
33
|
+
console.log(chalk.yellow(' 📋 DRY RUN MODE - No changes will be made\n'));
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
// Call the migration API endpoint
|
|
37
|
+
const endpoint = dryRun
|
|
38
|
+
? '/api/v1/migrations/009-epic-roadmap?dryRun=true'
|
|
39
|
+
: '/api/v1/migrations/009-epic-roadmap';
|
|
40
|
+
const response = await client.request('POST', endpoint);
|
|
41
|
+
// Display results
|
|
42
|
+
if (verbose && response.details) {
|
|
43
|
+
console.log(chalk.dim('\n Details:'));
|
|
44
|
+
for (const detail of response.details) {
|
|
45
|
+
const icon = detail.status === 'migrated' ? '✓' :
|
|
46
|
+
detail.status === 'skipped' ? '○' : '✗';
|
|
47
|
+
const color = detail.status === 'migrated' ? chalk.green :
|
|
48
|
+
detail.status === 'skipped' ? chalk.dim : chalk.red;
|
|
49
|
+
console.log(color(` ${icon} ${detail.epic_id}: ${detail.message || detail.status}`));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
console.log(chalk.green(`\n✓ Migration complete`));
|
|
53
|
+
console.log(chalk.dim(` Migrated: ${response.migrated}`));
|
|
54
|
+
console.log(chalk.dim(` Skipped: ${response.skipped}`));
|
|
55
|
+
if (response.errors.length > 0) {
|
|
56
|
+
console.log(chalk.red(` Errors: ${response.errors.length}`));
|
|
57
|
+
for (const error of response.errors) {
|
|
58
|
+
console.log(chalk.red(` - ${error}`));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
success: response.errors.length === 0,
|
|
63
|
+
migratedCount: response.migrated,
|
|
64
|
+
skippedCount: response.skipped,
|
|
65
|
+
errors: response.errors,
|
|
66
|
+
dryRun,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
71
|
+
console.log(chalk.red(`\n✗ Migration failed: ${message}`));
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
migratedCount: 0,
|
|
75
|
+
skippedCount: 0,
|
|
76
|
+
errors: [message],
|
|
77
|
+
dryRun,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* CLI entry point for migration 009
|
|
83
|
+
*/
|
|
84
|
+
export async function migrate009Command(options = {}) {
|
|
85
|
+
const result = await runMigration009(options);
|
|
86
|
+
if (!result.success) {
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=009-epic-roadmap-properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"009-epic-roadmap-properties.js","sourceRoot":"","sources":["../../../../src/commands/graph/migrations/009-epic-roadmap-properties.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-14
|
|
5
|
+
* @tags: [migration, epic, graph_id, EPIC-011]
|
|
6
|
+
* @related: [../api-client.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
export interface MigrationOptions {
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface MigrationResult {
|
|
16
|
+
success: boolean;
|
|
17
|
+
migratedCount: number;
|
|
18
|
+
skippedCount: number;
|
|
19
|
+
errors: string[];
|
|
20
|
+
dryRun: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Migration 010: Add graph_id to Epic nodes
|
|
24
|
+
*
|
|
25
|
+
* Adds graph_id (snake_case) to Epic nodes that only have graphId (camelCase).
|
|
26
|
+
* This ensures consistency with other node types and fixes nodes API filtering.
|
|
27
|
+
*/
|
|
28
|
+
export declare function runMigration010(options?: MigrationOptions): Promise<MigrationResult>;
|
|
29
|
+
export declare function migrate010Command(options?: MigrationOptions): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=010-epic-graph-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"010-epic-graph-id.d.ts","sourceRoot":"","sources":["../../../../src/commands/graph/migrations/010-epic-graph-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAQD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgD9F;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-14
|
|
5
|
+
* @tags: [migration, epic, graph_id, EPIC-011]
|
|
6
|
+
* @related: [../api-client.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { GraphApiClient } from '../api-client.js';
|
|
13
|
+
/**
|
|
14
|
+
* Migration 010: Add graph_id to Epic nodes
|
|
15
|
+
*
|
|
16
|
+
* Adds graph_id (snake_case) to Epic nodes that only have graphId (camelCase).
|
|
17
|
+
* This ensures consistency with other node types and fixes nodes API filtering.
|
|
18
|
+
*/
|
|
19
|
+
export async function runMigration010(options = {}) {
|
|
20
|
+
const { dryRun = false, verbose = false } = options;
|
|
21
|
+
const client = new GraphApiClient();
|
|
22
|
+
console.log(chalk.blue('\n🔄 Migration 010: Epic graph_id Property'));
|
|
23
|
+
console.log(chalk.dim(' Adding graph_id to Epic nodes for API consistency (EPIC-011)\n'));
|
|
24
|
+
if (dryRun) {
|
|
25
|
+
console.log(chalk.yellow(' 📋 DRY RUN MODE - No changes will be made\n'));
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const endpoint = dryRun
|
|
29
|
+
? '/api/v1/migrations/010-epic-graph-id?dryRun=true'
|
|
30
|
+
: '/api/v1/migrations/010-epic-graph-id';
|
|
31
|
+
const response = await client.request('POST', endpoint);
|
|
32
|
+
console.log(chalk.green(`\n✓ Migration complete`));
|
|
33
|
+
console.log(chalk.dim(` Migrated: ${response.migrated}`));
|
|
34
|
+
console.log(chalk.dim(` Skipped: ${response.skipped}`));
|
|
35
|
+
if (response.errors.length > 0) {
|
|
36
|
+
console.log(chalk.red(` Errors: ${response.errors.length}`));
|
|
37
|
+
for (const error of response.errors) {
|
|
38
|
+
console.log(chalk.red(` - ${error}`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
success: response.errors.length === 0,
|
|
43
|
+
migratedCount: response.migrated,
|
|
44
|
+
skippedCount: response.skipped,
|
|
45
|
+
errors: response.errors,
|
|
46
|
+
dryRun,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
51
|
+
console.log(chalk.red(`\n✗ Migration failed: ${message}`));
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
migratedCount: 0,
|
|
55
|
+
skippedCount: 0,
|
|
56
|
+
errors: [message],
|
|
57
|
+
dryRun,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export async function migrate010Command(options = {}) {
|
|
62
|
+
const result = await runMigration010(options);
|
|
63
|
+
if (!result.success) {
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=010-epic-graph-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"010-epic-graph-id.js","sourceRoot":"","sources":["../../../../src/commands/graph/migrations/010-epic-graph-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAqBlD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAA4B,EAAE;IAClE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;IAE5F,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM;YACrB,CAAC,CAAC,kDAAkD;YACpD,CAAC,CAAC,sCAAsC,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAsB,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE3D,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACjE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACrC,aAAa,EAAE,QAAQ,CAAC,QAAQ;YAChC,YAAY,EAAE,QAAQ,CAAC,OAAO;YAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM;SACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC,CAAC;QAE3D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC,OAAO,CAAC;YACjB,MAAM;SACP,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAA4B,EAAE;IACpE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-14
|
|
5
|
+
* @tags: [migration, sprint, task, epic_id, EPIC-011]
|
|
6
|
+
* @related: [../api-client.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
export interface MigrationOptions {
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface MigrationResult {
|
|
16
|
+
success: boolean;
|
|
17
|
+
sprintsMigrated: number;
|
|
18
|
+
tasksMigrated: number;
|
|
19
|
+
errors: string[];
|
|
20
|
+
dryRun: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Migration 011: Add epic_id and graph_id to Sprint and Task nodes
|
|
24
|
+
*
|
|
25
|
+
* This migration:
|
|
26
|
+
* 1. Adds graph_id (snake_case) to Sprint/Task nodes
|
|
27
|
+
* 2. Extracts epic_id from Sprint ID (e{NNN}_s{NN} → EPIC-{N})
|
|
28
|
+
* 3. Adds epic_id to Task nodes based on parent Sprint
|
|
29
|
+
*/
|
|
30
|
+
export declare function runMigration011(options?: MigrationOptions): Promise<MigrationResult>;
|
|
31
|
+
export declare function migrate011Command(options?: MigrationOptions): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=011-sprint-epic-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"011-sprint-epic-id.d.ts","sourceRoot":"","sources":["../../../../src/commands/graph/migrations/011-sprint-epic-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAkD9F;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-14
|
|
5
|
+
* @tags: [migration, sprint, task, epic_id, EPIC-011]
|
|
6
|
+
* @related: [../api-client.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { GraphApiClient } from '../api-client.js';
|
|
13
|
+
/**
|
|
14
|
+
* Migration 011: Add epic_id and graph_id to Sprint and Task nodes
|
|
15
|
+
*
|
|
16
|
+
* This migration:
|
|
17
|
+
* 1. Adds graph_id (snake_case) to Sprint/Task nodes
|
|
18
|
+
* 2. Extracts epic_id from Sprint ID (e{NNN}_s{NN} → EPIC-{N})
|
|
19
|
+
* 3. Adds epic_id to Task nodes based on parent Sprint
|
|
20
|
+
*/
|
|
21
|
+
export async function runMigration011(options = {}) {
|
|
22
|
+
const { dryRun = false, verbose = false } = options;
|
|
23
|
+
const client = new GraphApiClient();
|
|
24
|
+
console.log(chalk.blue('\n🔄 Migration 011: Sprint & Task Hierarchy Properties'));
|
|
25
|
+
console.log(chalk.dim(' Adding epic_id and graph_id to Sprint and Task nodes (EPIC-011)\n'));
|
|
26
|
+
if (dryRun) {
|
|
27
|
+
console.log(chalk.yellow(' 📋 DRY RUN MODE - No changes will be made\n'));
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const endpoint = dryRun
|
|
31
|
+
? '/api/v1/migrations/011-sprint-epic-id?dryRun=true'
|
|
32
|
+
: '/api/v1/migrations/011-sprint-epic-id';
|
|
33
|
+
const response = await client.request('POST', endpoint);
|
|
34
|
+
console.log(chalk.green(`\n✓ Migration complete`));
|
|
35
|
+
console.log(chalk.dim(` Sprints migrated: ${response.sprintsMigrated}`));
|
|
36
|
+
console.log(chalk.dim(` Sprints skipped: ${response.sprintsSkipped}`));
|
|
37
|
+
console.log(chalk.dim(` Tasks migrated: ${response.tasksMigrated}`));
|
|
38
|
+
console.log(chalk.dim(` Tasks skipped: ${response.tasksSkipped}`));
|
|
39
|
+
if (response.errors.length > 0) {
|
|
40
|
+
console.log(chalk.red(` Errors: ${response.errors.length}`));
|
|
41
|
+
for (const error of response.errors) {
|
|
42
|
+
console.log(chalk.red(` - ${error}`));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
success: response.errors.length === 0,
|
|
47
|
+
sprintsMigrated: response.sprintsMigrated,
|
|
48
|
+
tasksMigrated: response.tasksMigrated,
|
|
49
|
+
errors: response.errors,
|
|
50
|
+
dryRun,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
55
|
+
console.log(chalk.red(`\n✗ Migration failed: ${message}`));
|
|
56
|
+
return {
|
|
57
|
+
success: false,
|
|
58
|
+
sprintsMigrated: 0,
|
|
59
|
+
tasksMigrated: 0,
|
|
60
|
+
errors: [message],
|
|
61
|
+
dryRun,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export async function migrate011Command(options = {}) {
|
|
66
|
+
const result = await runMigration011(options);
|
|
67
|
+
if (!result.success) {
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=011-sprint-epic-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"011-sprint-epic-id.js","sourceRoot":"","sources":["../../../../src/commands/graph/migrations/011-sprint-epic-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-11
|
|
5
|
+
* @tags: [roadmap, cli, epic, product-management, ADR-056, now-next-later]
|
|
6
|
+
* @related: [../graph/api-client.ts, ADR-056]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [commander, chalk]
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
interface RoadmapOptions {
|
|
13
|
+
all?: boolean;
|
|
14
|
+
lane?: string;
|
|
15
|
+
status?: string;
|
|
16
|
+
json?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Main roadmap command
|
|
20
|
+
*/
|
|
21
|
+
export declare function roadmapAction(options: RoadmapOptions): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Create the roadmap command
|
|
24
|
+
*/
|
|
25
|
+
export declare function roadmapCommand(): Command;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/roadmap/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCpC,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAmID;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC1E;AAED;;GAEG;AACH,wBAAgB,cAAc,YAgC7B"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-11
|
|
5
|
+
* @tags: [roadmap, cli, epic, product-management, ADR-056, now-next-later]
|
|
6
|
+
* @related: [../graph/api-client.ts, ADR-056]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [commander, chalk]
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import { GraphApiClient } from '../graph/api-client.js';
|
|
14
|
+
import { loadGraphConfig } from '../graph/config.js';
|
|
15
|
+
/**
|
|
16
|
+
* Get status icon based on roadmap_status
|
|
17
|
+
*/
|
|
18
|
+
function getStatusIcon(status) {
|
|
19
|
+
switch (status) {
|
|
20
|
+
case 'not_started':
|
|
21
|
+
return chalk.gray('○');
|
|
22
|
+
case 'in_progress':
|
|
23
|
+
return chalk.blue('◐');
|
|
24
|
+
case 'completed':
|
|
25
|
+
return chalk.green('●');
|
|
26
|
+
case 'cancelled':
|
|
27
|
+
return chalk.red('✗');
|
|
28
|
+
default:
|
|
29
|
+
return chalk.gray('?');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get lane header with icon
|
|
34
|
+
*/
|
|
35
|
+
function getLaneHeader(lane, count) {
|
|
36
|
+
switch (lane) {
|
|
37
|
+
case 'now':
|
|
38
|
+
return chalk.green(`⚡ Now`) + chalk.dim(` (${count})`);
|
|
39
|
+
case 'next':
|
|
40
|
+
return chalk.cyan(`📋 Next`) + chalk.dim(` (${count})`);
|
|
41
|
+
case 'later':
|
|
42
|
+
return chalk.yellow(`💭 Later`) + chalk.dim(` (${count})`);
|
|
43
|
+
case 'done':
|
|
44
|
+
return chalk.gray(`✓ Done`) + chalk.dim(` (${count})`);
|
|
45
|
+
case 'dropped':
|
|
46
|
+
return chalk.red(`✗ Dropped`) + chalk.dim(` (${count})`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format decision factors as tags
|
|
51
|
+
*/
|
|
52
|
+
function formatDecisionFactors(factors) {
|
|
53
|
+
if (!factors || factors.length === 0)
|
|
54
|
+
return '';
|
|
55
|
+
return chalk.dim(`[${factors.slice(0, 2).join(', ')}]`);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Display roadmap in CLI format
|
|
59
|
+
*/
|
|
60
|
+
function displayRoadmap(response, options) {
|
|
61
|
+
const { lanes, summary } = response;
|
|
62
|
+
// Header
|
|
63
|
+
console.log(chalk.bold('\n🗺️ Product Roadmap\n'));
|
|
64
|
+
// Summary line
|
|
65
|
+
const summaryParts = [];
|
|
66
|
+
if (summary.byLane.now > 0) {
|
|
67
|
+
summaryParts.push(chalk.green(`${summary.byLane.now} now`));
|
|
68
|
+
}
|
|
69
|
+
if (summary.byLane.next > 0) {
|
|
70
|
+
summaryParts.push(chalk.cyan(`${summary.byLane.next} next`));
|
|
71
|
+
}
|
|
72
|
+
if (options.all && summary.byLane.later > 0) {
|
|
73
|
+
summaryParts.push(chalk.yellow(`${summary.byLane.later} later`));
|
|
74
|
+
}
|
|
75
|
+
if (options.all && summary.byLane.done > 0) {
|
|
76
|
+
summaryParts.push(chalk.gray(`${summary.byLane.done} done`));
|
|
77
|
+
}
|
|
78
|
+
if (options.all && summary.byLane.dropped > 0) {
|
|
79
|
+
summaryParts.push(chalk.red(`${summary.byLane.dropped} dropped`));
|
|
80
|
+
}
|
|
81
|
+
if (summary.byStatus.in_progress) {
|
|
82
|
+
summaryParts.push(chalk.blue(`${summary.byStatus.in_progress} in progress`));
|
|
83
|
+
}
|
|
84
|
+
if (summaryParts.length > 0) {
|
|
85
|
+
console.log(chalk.dim(` ${summaryParts.join(' · ')}\n`));
|
|
86
|
+
}
|
|
87
|
+
// Check if empty
|
|
88
|
+
const hasContent = lanes.some(l => l.epics.length > 0);
|
|
89
|
+
if (!hasContent) {
|
|
90
|
+
console.log(chalk.yellow(' No epics found on the roadmap.\n'));
|
|
91
|
+
console.log(chalk.dim(' Tip: Run `ginko roadmap --all` to include Later items.'));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
// Display each lane
|
|
95
|
+
for (const laneGroup of lanes) {
|
|
96
|
+
if (laneGroup.epics.length === 0)
|
|
97
|
+
continue;
|
|
98
|
+
console.log(getLaneHeader(laneGroup.lane, laneGroup.epics.length));
|
|
99
|
+
console.log(chalk.dim(' ' + '─'.repeat(50)));
|
|
100
|
+
for (const epic of laneGroup.epics) {
|
|
101
|
+
const icon = getStatusIcon(epic.roadmap_status);
|
|
102
|
+
const title = epic.title;
|
|
103
|
+
const id = chalk.dim(`(${epic.id})`);
|
|
104
|
+
// Build extra info
|
|
105
|
+
const extras = [];
|
|
106
|
+
// Show decision factors for Later items
|
|
107
|
+
if (laneGroup.lane === 'later' && epic.decision_factors) {
|
|
108
|
+
extras.push(formatDecisionFactors(epic.decision_factors));
|
|
109
|
+
}
|
|
110
|
+
// Show tags if present
|
|
111
|
+
if (epic.tags && epic.tags.length > 0) {
|
|
112
|
+
extras.push(chalk.dim(epic.tags.slice(0, 2).join(', ')));
|
|
113
|
+
}
|
|
114
|
+
console.log(` ${icon} ${title} ${id}${extras.length ? ' ' + extras.join(' ') : ''}`);
|
|
115
|
+
}
|
|
116
|
+
console.log('');
|
|
117
|
+
}
|
|
118
|
+
// Footer - show hidden counts
|
|
119
|
+
if (!options.all) {
|
|
120
|
+
const hiddenCounts = [];
|
|
121
|
+
if (summary.byLane.later > 0)
|
|
122
|
+
hiddenCounts.push(`${summary.byLane.later} later`);
|
|
123
|
+
if (summary.byLane.done > 0)
|
|
124
|
+
hiddenCounts.push(`${summary.byLane.done} done`);
|
|
125
|
+
if (summary.byLane.dropped > 0)
|
|
126
|
+
hiddenCounts.push(`${summary.byLane.dropped} dropped`);
|
|
127
|
+
if (hiddenCounts.length > 0) {
|
|
128
|
+
console.log(chalk.dim(` ${hiddenCounts.join(', ')} hidden. Use --all to show.`));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
console.log(chalk.dim(' Tip: Use --lane or --status to filter'));
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Main roadmap command
|
|
135
|
+
*/
|
|
136
|
+
export async function roadmapAction(options) {
|
|
137
|
+
try {
|
|
138
|
+
// Get graph config
|
|
139
|
+
const config = await loadGraphConfig();
|
|
140
|
+
if (!config || !config.graphId) {
|
|
141
|
+
console.log(chalk.red('\n✗ Graph not initialized. Run `ginko graph init` first.\n'));
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
// Build query params
|
|
145
|
+
const params = new URLSearchParams();
|
|
146
|
+
params.set('graphId', config.graphId);
|
|
147
|
+
if (options.all) {
|
|
148
|
+
params.set('all', 'true');
|
|
149
|
+
}
|
|
150
|
+
if (options.lane) {
|
|
151
|
+
params.set('lane', options.lane);
|
|
152
|
+
}
|
|
153
|
+
if (options.status) {
|
|
154
|
+
params.set('status', options.status);
|
|
155
|
+
}
|
|
156
|
+
// Call the API
|
|
157
|
+
const client = new GraphApiClient();
|
|
158
|
+
const response = await client.request('GET', `/api/v1/graph/roadmap?${params.toString()}`);
|
|
159
|
+
// Output
|
|
160
|
+
if (options.json) {
|
|
161
|
+
console.log(JSON.stringify(response, null, 2));
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
displayRoadmap(response, options);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
169
|
+
console.log(chalk.red(`\n✗ Failed to load roadmap: ${message}\n`));
|
|
170
|
+
process.exit(1);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Create the roadmap command
|
|
175
|
+
*/
|
|
176
|
+
export function roadmapCommand() {
|
|
177
|
+
const roadmap = new Command('roadmap')
|
|
178
|
+
.description('View product roadmap (Now/Next/Later priority lanes)')
|
|
179
|
+
.option('-a, --all', 'Include Later, Done, and Dropped items')
|
|
180
|
+
.option('-l, --lane <lane>', 'Filter by lane (now, next, later, done, dropped)')
|
|
181
|
+
.option('-s, --status <status>', 'Filter by status (not_started, in_progress, completed, cancelled)')
|
|
182
|
+
.option('--json', 'Output as JSON')
|
|
183
|
+
.addHelpText('after', `
|
|
184
|
+
${chalk.gray('Lanes (ADR-056):')}
|
|
185
|
+
${chalk.green('⚡ Now')} Fully planned, committed, ready for implementation
|
|
186
|
+
${chalk.cyan('📋 Next')} Committed but may need additional planning
|
|
187
|
+
${chalk.yellow('💭 Later')} Proposed but not yet committed (has decision factors)
|
|
188
|
+
${chalk.gray('✓ Done')} Completed work (hidden by default)
|
|
189
|
+
${chalk.red('✗ Dropped')} Cancelled/abandoned work (hidden by default)
|
|
190
|
+
|
|
191
|
+
${chalk.gray('Examples:')}
|
|
192
|
+
${chalk.green('ginko roadmap')} ${chalk.gray('# Show Now and Next lanes')}
|
|
193
|
+
${chalk.green('ginko roadmap --all')} ${chalk.gray('# Include Later, Done, Dropped')}
|
|
194
|
+
${chalk.green('ginko roadmap --lane now')} ${chalk.gray('# Show only Now lane')}
|
|
195
|
+
${chalk.green('ginko roadmap --lane done')} ${chalk.gray('# Show completed work')}
|
|
196
|
+
${chalk.green('ginko roadmap --status in_progress')} ${chalk.gray('# Show only in-progress epics')}
|
|
197
|
+
|
|
198
|
+
${chalk.gray('Status Icons:')}
|
|
199
|
+
${chalk.gray('○')} not_started ${chalk.blue('◐')} in_progress
|
|
200
|
+
${chalk.green('●')} completed ${chalk.red('✗')} cancelled
|
|
201
|
+
|
|
202
|
+
${chalk.gray('Decision Factors (for Later items):')}
|
|
203
|
+
planning, value, feasibility, architecture, design, risks, market-fit, dependencies
|
|
204
|
+
`)
|
|
205
|
+
.action(roadmapAction);
|
|
206
|
+
return roadmap;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/roadmap/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,8 +115,10 @@ export declare class StartReflectionCommand extends ReflectionCommand {
|
|
|
115
115
|
/**
|
|
116
116
|
* Display concise human output (TASK-11)
|
|
117
117
|
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
118
|
+
* Now uses table view by default (EPIC-012 Sprint 1).
|
|
119
|
+
* - Default: Table view with branding
|
|
120
|
+
* - --compact: Previous concise format without borders
|
|
121
|
+
* - --no-table: Plain text format for piping
|
|
120
122
|
*/
|
|
121
123
|
private displayConciseOutput;
|
|
122
124
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-reflection.d.ts","sourceRoot":"","sources":["../../../src/commands/start/start-reflection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"start-reflection.d.ts","sourceRoot":"","sources":["../../../src/commands/start/start-reflection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAqDrE;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,OAAO,CAAC,cAAc,CAAuB;;IAQ7C;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;;OAGG;YACW,kBAAkB;IAmChC;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IA8ErC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA0V/D;;;;;OAKG;YACW,kBAAkB;IA6VhC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IA+BlC;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDlF;;OAEG;YACW,WAAW;IAuBzB;;OAEG;YACW,0BAA0B;IA2DxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,iBAAiB;IAU/B;;OAEG;YACW,WAAW;IAKzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA6BpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAmCpD;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAI1B;IAEF;;;;;OAKG;YACW,iBAAiB;IAwI/B;;;;;OAKG;YACW,cAAc;IAiJ5B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;OAIG;YACW,cAAc;IAa5B;;OAEG;YACW,oBAAoB;IAuBlC;;;;;OAKG;YACW,kBAAkB;IA0BhC;;;;OAIG;YACW,oBAAoB;CAsDnC;AAGD,eAAe,sBAAsB,CAAC"}
|