@ginkoai/cli 2.1.4 → 2.1.6-beta.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 (119) hide show
  1. package/dist/commands/charter.d.ts +1 -0
  2. package/dist/commands/charter.d.ts.map +1 -1
  3. package/dist/commands/charter.js +185 -30
  4. package/dist/commands/charter.js.map +1 -1
  5. package/dist/commands/diff/diff-command.d.ts +20 -0
  6. package/dist/commands/diff/diff-command.d.ts.map +1 -0
  7. package/dist/commands/diff/diff-command.js +181 -0
  8. package/dist/commands/diff/diff-command.js.map +1 -0
  9. package/dist/commands/diff/index.d.ts +20 -0
  10. package/dist/commands/diff/index.d.ts.map +1 -0
  11. package/dist/commands/diff/index.js +39 -0
  12. package/dist/commands/diff/index.js.map +1 -0
  13. package/dist/commands/epic/index.d.ts.map +1 -1
  14. package/dist/commands/epic/index.js +18 -1
  15. package/dist/commands/epic/index.js.map +1 -1
  16. package/dist/commands/graph/api-client.d.ts +36 -0
  17. package/dist/commands/graph/api-client.d.ts.map +1 -1
  18. package/dist/commands/graph/api-client.js +7 -0
  19. package/dist/commands/graph/api-client.js.map +1 -1
  20. package/dist/commands/graph/index.d.ts.map +1 -1
  21. package/dist/commands/graph/index.js +8 -2
  22. package/dist/commands/graph/index.js.map +1 -1
  23. package/dist/commands/handoff.d.ts.map +1 -1
  24. package/dist/commands/handoff.js +12 -2
  25. package/dist/commands/handoff.js.map +1 -1
  26. package/dist/commands/init.d.ts.map +1 -1
  27. package/dist/commands/init.js +50 -3
  28. package/dist/commands/init.js.map +1 -1
  29. package/dist/commands/pull/index.d.ts +21 -0
  30. package/dist/commands/pull/index.d.ts.map +1 -0
  31. package/dist/commands/pull/index.js +90 -0
  32. package/dist/commands/pull/index.js.map +1 -0
  33. package/dist/commands/pull/pull-command.d.ts +23 -0
  34. package/dist/commands/pull/pull-command.d.ts.map +1 -0
  35. package/dist/commands/pull/pull-command.js +89 -0
  36. package/dist/commands/pull/pull-command.js.map +1 -0
  37. package/dist/commands/push/index.d.ts +21 -0
  38. package/dist/commands/push/index.d.ts.map +1 -0
  39. package/dist/commands/push/index.js +120 -0
  40. package/dist/commands/push/index.js.map +1 -0
  41. package/dist/commands/push/push-command.d.ts +39 -0
  42. package/dist/commands/push/push-command.d.ts.map +1 -0
  43. package/dist/commands/push/push-command.js +451 -0
  44. package/dist/commands/push/push-command.js.map +1 -0
  45. package/dist/commands/status.d.ts.map +1 -1
  46. package/dist/commands/status.js +39 -0
  47. package/dist/commands/status.js.map +1 -1
  48. package/dist/commands/sync/index.d.ts.map +1 -1
  49. package/dist/commands/sync/index.js +12 -10
  50. package/dist/commands/sync/index.js.map +1 -1
  51. package/dist/commands/task/status.d.ts.map +1 -1
  52. package/dist/commands/task/status.js +9 -0
  53. package/dist/commands/task/status.js.map +1 -1
  54. package/dist/core/utils/paths.d.ts +4 -0
  55. package/dist/core/utils/paths.d.ts.map +1 -1
  56. package/dist/core/utils/paths.js +19 -1
  57. package/dist/core/utils/paths.js.map +1 -1
  58. package/dist/index.js +10 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/lib/auto-push.d.ts +32 -0
  61. package/dist/lib/auto-push.d.ts.map +1 -0
  62. package/dist/lib/auto-push.js +79 -0
  63. package/dist/lib/auto-push.js.map +1 -0
  64. package/dist/lib/charter-loader.d.ts.map +1 -1
  65. package/dist/lib/charter-loader.js +4 -1
  66. package/dist/lib/charter-loader.js.map +1 -1
  67. package/dist/lib/dead-letter-queue.d.ts +4 -3
  68. package/dist/lib/dead-letter-queue.d.ts.map +1 -1
  69. package/dist/lib/dead-letter-queue.js +4 -3
  70. package/dist/lib/dead-letter-queue.js.map +1 -1
  71. package/dist/lib/entity-classifier.d.ts +53 -0
  72. package/dist/lib/entity-classifier.d.ts.map +1 -0
  73. package/dist/lib/entity-classifier.js +95 -0
  74. package/dist/lib/entity-classifier.js.map +1 -0
  75. package/dist/lib/event-queue.d.ts +4 -3
  76. package/dist/lib/event-queue.d.ts.map +1 -1
  77. package/dist/lib/event-queue.js +4 -3
  78. package/dist/lib/event-queue.js.map +1 -1
  79. package/dist/lib/git-change-detector.d.ts +38 -0
  80. package/dist/lib/git-change-detector.d.ts.map +1 -0
  81. package/dist/lib/git-change-detector.js +105 -0
  82. package/dist/lib/git-change-detector.js.map +1 -0
  83. package/dist/lib/sprint-parser.d.ts.map +1 -1
  84. package/dist/lib/sprint-parser.js +4 -1
  85. package/dist/lib/sprint-parser.js.map +1 -1
  86. package/dist/lib/sync-state.d.ts +38 -0
  87. package/dist/lib/sync-state.d.ts.map +1 -0
  88. package/dist/lib/sync-state.js +86 -0
  89. package/dist/lib/sync-state.js.map +1 -0
  90. package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts +2 -1
  91. package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts.map +1 -1
  92. package/dist/lib/write-dispatcher/adapters/graph-adapter.js +2 -1
  93. package/dist/lib/write-dispatcher/adapters/graph-adapter.js.map +1 -1
  94. package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts +2 -1
  95. package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts.map +1 -1
  96. package/dist/lib/write-dispatcher/adapters/local-adapter.js +2 -1
  97. package/dist/lib/write-dispatcher/adapters/local-adapter.js.map +1 -1
  98. package/dist/lib/write-dispatcher/write-dispatcher.d.ts +4 -3
  99. package/dist/lib/write-dispatcher/write-dispatcher.d.ts.map +1 -1
  100. package/dist/lib/write-dispatcher/write-dispatcher.js +4 -3
  101. package/dist/lib/write-dispatcher/write-dispatcher.js.map +1 -1
  102. package/dist/templates/ai-instructions-template.d.ts.map +1 -1
  103. package/dist/templates/ai-instructions-template.js +48 -9
  104. package/dist/templates/ai-instructions-template.js.map +1 -1
  105. package/dist/templates/charter-template.md +17 -0
  106. package/dist/templates/epic-template.md +18 -6
  107. package/dist/templates/skills/ginko/SKILL.md +209 -0
  108. package/dist/templates/skills/ginko/commands-reference.md +221 -0
  109. package/dist/templates/skills/pull.md +56 -0
  110. package/dist/templates/skills/push.md +73 -0
  111. package/dist/templates/skills/skills/ginko/SKILL.md +209 -0
  112. package/dist/templates/skills/skills/ginko/commands-reference.md +221 -0
  113. package/dist/templates/skills/skills/pull.md +56 -0
  114. package/dist/templates/skills/skills/push.md +73 -0
  115. package/dist/utils/dispatcher-logger.d.ts +4 -3
  116. package/dist/utils/dispatcher-logger.d.ts.map +1 -1
  117. package/dist/utils/dispatcher-logger.js +4 -3
  118. package/dist/utils/dispatcher-logger.js.map +1 -1
  119. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/pull/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,iBAAiB,IAAI,OAAO,CAyE3C;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @fileType: command-entry
3
+ * @status: current
4
+ * @updated: 2026-01-30
5
+ * @tags: [pull, command, graph-to-local, ADR-077]
6
+ * @related: [pull-command.ts, ../sync/sync-command.ts]
7
+ * @priority: critical
8
+ * @complexity: low
9
+ * @dependencies: [commander]
10
+ */
11
+ /**
12
+ * Pull Command Entry Point (ADR-077)
13
+ *
14
+ * Registers the `ginko pull` command with subcommands for entity-specific pull.
15
+ * Replaces `ginko sync` with a git-inspired interface.
16
+ */
17
+ import { Command } from 'commander';
18
+ import chalk from 'chalk';
19
+ import { pullCommand } from './pull-command.js';
20
+ export function createPullCommand() {
21
+ const pull = new Command('pull')
22
+ .description('Pull dashboard changes to local git (ADR-077: git-integrated sync)')
23
+ .option('--dry-run', 'Preview what would be pulled without making changes')
24
+ .option('--force', 'Overwrite local files with graph versions')
25
+ .addHelpText('after', `
26
+ ${chalk.gray('Subcommands:')}
27
+ ${chalk.green('ginko pull')} ${chalk.dim('Pull all changes from graph')}
28
+ ${chalk.green('ginko pull sprint')} ${chalk.dim('Pull only sprint changes')}
29
+ ${chalk.green('ginko pull adr')} ${chalk.dim('Pull only ADR changes')}
30
+
31
+ ${chalk.gray('Options:')}
32
+ ${chalk.dim('--dry-run Preview what would be pulled')}
33
+ ${chalk.dim('--force Overwrite local files with graph versions')}
34
+
35
+ ${chalk.gray('Examples:')}
36
+ ${chalk.green('ginko pull')} ${chalk.dim('# Pull all changes from dashboard')}
37
+ ${chalk.green('ginko pull --dry-run')} ${chalk.dim('# Preview changes')}
38
+ ${chalk.green('ginko pull sprint')} ${chalk.dim('# Pull only sprint changes')}
39
+ ${chalk.green('ginko pull --force')} ${chalk.dim('# Overwrite local with graph')}
40
+ `);
41
+ // Default action: pull all changes
42
+ pull.action(async (options) => {
43
+ await pullCommand({
44
+ dryRun: options.dryRun === true,
45
+ force: options.force === true,
46
+ });
47
+ });
48
+ // Subcommand: pull sprint
49
+ pull
50
+ .command('sprint')
51
+ .description('Pull sprint changes from graph')
52
+ .option('--dry-run', 'Preview what would be pulled')
53
+ .option('--force', 'Overwrite local files')
54
+ .action(async (subOptions) => {
55
+ await pullCommand({
56
+ entityType: 'sprint',
57
+ dryRun: subOptions.dryRun === true || pull.opts().dryRun === true,
58
+ force: subOptions.force === true || pull.opts().force === true,
59
+ });
60
+ });
61
+ // Subcommand: pull adr
62
+ pull
63
+ .command('adr')
64
+ .description('Pull ADR changes from graph')
65
+ .option('--dry-run', 'Preview what would be pulled')
66
+ .option('--force', 'Overwrite local files')
67
+ .action(async (subOptions) => {
68
+ await pullCommand({
69
+ entityType: 'adr',
70
+ dryRun: subOptions.dryRun === true || pull.opts().dryRun === true,
71
+ force: subOptions.force === true || pull.opts().force === true,
72
+ });
73
+ });
74
+ // Subcommand: pull epic
75
+ pull
76
+ .command('epic')
77
+ .description('Pull epic changes from graph')
78
+ .option('--dry-run', 'Preview what would be pulled')
79
+ .option('--force', 'Overwrite local files')
80
+ .action(async (subOptions) => {
81
+ await pullCommand({
82
+ entityType: 'epic',
83
+ dryRun: subOptions.dryRun === true || pull.opts().dryRun === true,
84
+ force: subOptions.force === true || pull.opts().force === true,
85
+ });
86
+ });
87
+ return pull;
88
+ }
89
+ export { pullCommand } from './pull-command.js';
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/pull/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2026-01-30
5
+ * @tags: [pull, sync, graph-to-local, ADR-077]
6
+ * @related: [index.ts, ../sync/sync-command.ts, ../../lib/sync-state.ts]
7
+ * @priority: critical
8
+ * @complexity: medium
9
+ * @dependencies: [chalk]
10
+ */
11
+ export interface PullOptions {
12
+ dryRun?: boolean;
13
+ force?: boolean;
14
+ /** Entity type filter (from subcommand: epic, sprint, adr, etc.) */
15
+ entityType?: string;
16
+ /** Quiet mode for auto-pull */
17
+ quiet?: boolean;
18
+ }
19
+ /**
20
+ * Main pull command implementation
21
+ */
22
+ export declare function pullCommand(options: PullOptions): Promise<void>;
23
+ //# sourceMappingURL=pull-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-command.d.ts","sourceRoot":"","sources":["../../../src/commands/pull/pull-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAsBD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CrE"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2026-01-30
5
+ * @tags: [pull, sync, graph-to-local, ADR-077]
6
+ * @related: [index.ts, ../sync/sync-command.ts, ../../lib/sync-state.ts]
7
+ * @priority: critical
8
+ * @complexity: medium
9
+ * @dependencies: [chalk]
10
+ */
11
+ /**
12
+ * Pull Command (ADR-077)
13
+ *
14
+ * Wraps existing sync logic from sync-command.ts with a git-inspired interface.
15
+ * Pulls dashboard edits from graph to local git.
16
+ *
17
+ * Usage:
18
+ * ginko pull # Pull all changes
19
+ * ginko pull epic # Pull only epics
20
+ * ginko pull sprint # Pull only sprints
21
+ * ginko pull --force # Overwrite local with graph version
22
+ * ginko pull --dry-run # Preview what would be pulled
23
+ */
24
+ import chalk from 'chalk';
25
+ import { syncCommand } from '../sync/sync-command.js';
26
+ import { recordPull, readSyncState } from '../../lib/sync-state.js';
27
+ /**
28
+ * Map subcommand entity types to sync NodeType
29
+ */
30
+ function mapEntityType(entityType) {
31
+ if (!entityType)
32
+ return undefined;
33
+ const mapping = {
34
+ 'epic': 'Charter', // Epics don't have a direct NodeType in sync, we'll handle specially
35
+ 'sprint': 'Sprint',
36
+ 'adr': 'ADR',
37
+ 'prd': 'PRD',
38
+ 'pattern': 'Pattern',
39
+ 'gotcha': 'Gotcha',
40
+ 'charter': 'Charter',
41
+ 'task': 'Task',
42
+ };
43
+ return mapping[entityType.toLowerCase()];
44
+ }
45
+ /**
46
+ * Main pull command implementation
47
+ */
48
+ export async function pullCommand(options) {
49
+ const quiet = !!options.quiet;
50
+ if (!quiet) {
51
+ console.log(chalk.bold.cyan('\n\u2b07 Pull: Graph \u2192 Git\n'));
52
+ }
53
+ // Read sync state for display
54
+ const syncState = await readSyncState();
55
+ if (!quiet && syncState.lastPullTimestamp) {
56
+ console.log(chalk.dim(`Last pull: ${syncState.lastPullTimestamp}`));
57
+ }
58
+ // Map entity type to sync NodeType
59
+ const nodeType = mapEntityType(options.entityType);
60
+ // Build sync options - delegate to existing sync logic
61
+ const syncOptions = {
62
+ dryRun: options.dryRun,
63
+ force: options.force,
64
+ type: nodeType,
65
+ interactive: !options.force,
66
+ skipMembershipCheck: quiet,
67
+ };
68
+ try {
69
+ const result = await syncCommand(syncOptions);
70
+ // Update sync state on successful pull
71
+ if (!options.dryRun && result.synced.length > 0) {
72
+ await recordPull();
73
+ }
74
+ // Summary with reinforcement
75
+ if (!quiet && !options.dryRun) {
76
+ if (result.synced.length > 0) {
77
+ console.log(chalk.dim('\n\ud83d\udca1 Local files are up to date. Use `ginko push` to sync your changes to graph.'));
78
+ }
79
+ }
80
+ }
81
+ catch (error) {
82
+ if (!quiet) {
83
+ const msg = error instanceof Error ? error.message : String(error);
84
+ console.error(chalk.red(`\u2717 Pull failed: ${msg}`));
85
+ }
86
+ throw error;
87
+ }
88
+ }
89
+ //# sourceMappingURL=pull-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-command.js","sourceRoot":"","sources":["../../../src/commands/pull/pull-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAYpE;;GAEG;AACH,SAAS,aAAa,CAAC,UAAmB;IACxC,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,OAAO,GAA6B;QACxC,MAAM,EAAE,SAAS,EAAE,qEAAqE;QACxF,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,MAAM;KACf,CAAC;IAEF,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,mCAAmC;IACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnD,uDAAuD;IACvD,MAAM,WAAW,GAAoB;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK;QAC3B,mBAAmB,EAAE,KAAK;KAC3B,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;QAE9C,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,UAAU,EAAE,CAAC;QACrB,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC,CAAC;YACvH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileType: command-entry
3
+ * @status: current
4
+ * @updated: 2026-01-30
5
+ * @tags: [push, command, git-to-graph, ADR-077]
6
+ * @related: [push-command.ts, ../../lib/sync-state.ts, ../../lib/git-change-detector.ts]
7
+ * @priority: critical
8
+ * @complexity: low
9
+ * @dependencies: [commander]
10
+ */
11
+ /**
12
+ * Push Command Entry Point (ADR-077)
13
+ *
14
+ * Registers the `ginko push` command with subcommands for entity-specific push.
15
+ * Replaces `ginko graph load` and `--sync` flags.
16
+ */
17
+ import { Command } from 'commander';
18
+ export declare function createPushCommand(): Command;
19
+ export { pushCommand } from './push-command.js';
20
+ export type { PushOptions, PushResult } from './push-command.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/push/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,iBAAiB,IAAI,OAAO,CAwG3C;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @fileType: command-entry
3
+ * @status: current
4
+ * @updated: 2026-01-30
5
+ * @tags: [push, command, git-to-graph, ADR-077]
6
+ * @related: [push-command.ts, ../../lib/sync-state.ts, ../../lib/git-change-detector.ts]
7
+ * @priority: critical
8
+ * @complexity: low
9
+ * @dependencies: [commander]
10
+ */
11
+ /**
12
+ * Push Command Entry Point (ADR-077)
13
+ *
14
+ * Registers the `ginko push` command with subcommands for entity-specific push.
15
+ * Replaces `ginko graph load` and `--sync` flags.
16
+ */
17
+ import { Command } from 'commander';
18
+ import chalk from 'chalk';
19
+ import { pushCommand } from './push-command.js';
20
+ export function createPushCommand() {
21
+ const push = new Command('push')
22
+ .description('Push local changes to graph (ADR-077: git-integrated sync)')
23
+ .option('--dry-run', 'Preview what would be pushed without making changes')
24
+ .option('--force', 'Overwrite graph content even if conflicts exist')
25
+ .option('--all', 'Push all content files (ignore change detection)')
26
+ .option('--no-events', 'Skip pushing event files (JSONL)')
27
+ .addHelpText('after', `
28
+ ${chalk.gray('Subcommands:')}
29
+ ${chalk.green('ginko push')} ${chalk.dim('Push all changes since last push')}
30
+ ${chalk.green('ginko push epic')} ${chalk.dim('Push only changed epics')}
31
+ ${chalk.green('ginko push epic EPIC-001')} ${chalk.dim('Push specific epic')}
32
+ ${chalk.green('ginko push sprint e001_s01')} ${chalk.dim('Push specific sprint')}
33
+ ${chalk.green('ginko push charter')} ${chalk.dim('Push charter')}
34
+ ${chalk.green('ginko push adr')} ${chalk.dim('Push all changed ADRs')}
35
+
36
+ ${chalk.gray('Options:')}
37
+ ${chalk.dim('--dry-run Preview what would be pushed')}
38
+ ${chalk.dim('--force Overwrite graph even if conflicts')}
39
+ ${chalk.dim('--all Push all content (not just changes)')}
40
+ ${chalk.dim('--no-events Skip event files')}
41
+
42
+ ${chalk.gray('Examples:')}
43
+ ${chalk.green('ginko push')} ${chalk.dim('# Push all changes since last push')}
44
+ ${chalk.green('ginko push --dry-run')} ${chalk.dim('# Preview changes')}
45
+ ${chalk.green('ginko push epic')} ${chalk.dim('# Push only epics')}
46
+ ${chalk.green('ginko push sprint e015_s01')} ${chalk.dim('# Push specific sprint')}
47
+ ${chalk.green('ginko push --all')} ${chalk.dim('# Full push (like graph load)')}
48
+ `);
49
+ // Default action (no subcommand): push all changes
50
+ push.action(async (options) => {
51
+ await pushCommand({
52
+ dryRun: options.dryRun === true,
53
+ force: options.force === true,
54
+ all: options.all === true,
55
+ events: options.events !== false,
56
+ });
57
+ });
58
+ // Subcommand: push epic [id]
59
+ push
60
+ .command('epic [epicId]')
61
+ .description('Push changed epic(s) to graph')
62
+ .option('--dry-run', 'Preview what would be pushed')
63
+ .option('--force', 'Overwrite graph content')
64
+ .action(async (epicId, subOptions) => {
65
+ await pushCommand({
66
+ entityType: 'epic',
67
+ entityId: epicId,
68
+ dryRun: subOptions.dryRun === true || push.opts().dryRun === true,
69
+ force: subOptions.force === true || push.opts().force === true,
70
+ events: false,
71
+ });
72
+ });
73
+ // Subcommand: push sprint [id]
74
+ push
75
+ .command('sprint [sprintId]')
76
+ .description('Push changed sprint(s) to graph')
77
+ .option('--dry-run', 'Preview what would be pushed')
78
+ .option('--force', 'Overwrite graph content')
79
+ .action(async (sprintId, subOptions) => {
80
+ await pushCommand({
81
+ entityType: 'sprint',
82
+ entityId: sprintId,
83
+ dryRun: subOptions.dryRun === true || push.opts().dryRun === true,
84
+ force: subOptions.force === true || push.opts().force === true,
85
+ events: false,
86
+ });
87
+ });
88
+ // Subcommand: push charter
89
+ push
90
+ .command('charter')
91
+ .description('Push project charter to graph')
92
+ .option('--dry-run', 'Preview what would be pushed')
93
+ .option('--force', 'Overwrite graph content')
94
+ .action(async (subOptions) => {
95
+ await pushCommand({
96
+ entityType: 'charter',
97
+ dryRun: subOptions.dryRun === true || push.opts().dryRun === true,
98
+ force: subOptions.force === true || push.opts().force === true,
99
+ events: false,
100
+ });
101
+ });
102
+ // Subcommand: push adr [id]
103
+ push
104
+ .command('adr [adrId]')
105
+ .description('Push changed ADR(s) to graph')
106
+ .option('--dry-run', 'Preview what would be pushed')
107
+ .option('--force', 'Overwrite graph content')
108
+ .action(async (adrId, subOptions) => {
109
+ await pushCommand({
110
+ entityType: 'adr',
111
+ entityId: adrId,
112
+ dryRun: subOptions.dryRun === true || push.opts().dryRun === true,
113
+ force: subOptions.force === true || push.opts().force === true,
114
+ events: false,
115
+ });
116
+ });
117
+ return push;
118
+ }
119
+ export { pushCommand } from './push-command.js';
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/push/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2026-01-30
5
+ * @tags: [push, sync, graph, git, ADR-077]
6
+ * @related: [index.ts, ../../lib/sync-state.ts, ../../lib/git-change-detector.ts, ../../lib/entity-classifier.ts, ../graph/api-client.ts]
7
+ * @priority: critical
8
+ * @complexity: high
9
+ * @dependencies: [chalk, fs-extra, crypto, simple-git]
10
+ */
11
+ export interface PushOptions {
12
+ dryRun?: boolean;
13
+ force?: boolean;
14
+ all?: boolean;
15
+ /** Entity type filter (from subcommand: epic, sprint, charter, adr, etc.) */
16
+ entityType?: string;
17
+ /** Specific entity ID (e.g., EPIC-001, e001_s01) */
18
+ entityId?: string;
19
+ /** Include events (session JSONL) in push */
20
+ events?: boolean;
21
+ /** Quiet mode for auto-push (minimal output) */
22
+ quiet?: boolean;
23
+ }
24
+ export interface PushResult {
25
+ pushed: string[];
26
+ skipped: string[];
27
+ errors: string[];
28
+ tasksSynced: {
29
+ created: number;
30
+ updated: number;
31
+ relationships: number;
32
+ };
33
+ eventsPushed: number;
34
+ }
35
+ /**
36
+ * Main push command implementation
37
+ */
38
+ export declare function pushCommand(options: PushOptions): Promise<PushResult>;
39
+ //# sourceMappingURL=push-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-command.d.ts","sourceRoot":"","sources":["../../../src/commands/push/push-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+BH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,YAAY,EAAE,MAAM,CAAC;CACtB;AA+JD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAoT3E"}