@ginkoai/cli 2.5.1 → 2.6.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 (96) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/graph/api-client.d.ts +1 -1
  3. package/dist/commands/graph/api-client.d.ts.map +1 -1
  4. package/dist/commands/handoff.d.ts +1 -0
  5. package/dist/commands/handoff.d.ts.map +1 -1
  6. package/dist/commands/handoff.js +55 -9
  7. package/dist/commands/handoff.js.map +1 -1
  8. package/dist/commands/health.js +1 -0
  9. package/dist/commands/health.js.map +1 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +42 -1
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/pull/pull-command.d.ts.map +1 -1
  14. package/dist/commands/pull/pull-command.js +10 -0
  15. package/dist/commands/pull/pull-command.js.map +1 -1
  16. package/dist/commands/push/push-command.d.ts.map +1 -1
  17. package/dist/commands/push/push-command.js +10 -0
  18. package/dist/commands/push/push-command.js.map +1 -1
  19. package/dist/commands/research/index.d.ts +24 -0
  20. package/dist/commands/research/index.d.ts.map +1 -0
  21. package/dist/commands/research/index.js +73 -0
  22. package/dist/commands/research/index.js.map +1 -0
  23. package/dist/commands/research.d.ts +26 -0
  24. package/dist/commands/research.d.ts.map +1 -0
  25. package/dist/commands/research.js +180 -0
  26. package/dist/commands/research.js.map +1 -0
  27. package/dist/commands/sprint/index.d.ts.map +1 -1
  28. package/dist/commands/sprint/index.js +15 -0
  29. package/dist/commands/sprint/index.js.map +1 -1
  30. package/dist/commands/sprint/plan-check.d.ts +16 -0
  31. package/dist/commands/sprint/plan-check.d.ts.map +1 -0
  32. package/dist/commands/sprint/plan-check.js +122 -0
  33. package/dist/commands/sprint/plan-check.js.map +1 -0
  34. package/dist/commands/sprint/status.d.ts +1 -1
  35. package/dist/commands/sprint/status.d.ts.map +1 -1
  36. package/dist/commands/sprint/status.js +23 -1
  37. package/dist/commands/sprint/status.js.map +1 -1
  38. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  39. package/dist/commands/start/start-reflection.js +28 -11
  40. package/dist/commands/start/start-reflection.js.map +1 -1
  41. package/dist/commands/task/status.d.ts.map +1 -1
  42. package/dist/commands/task/status.js +228 -0
  43. package/dist/commands/task/status.js.map +1 -1
  44. package/dist/index.js +4 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/lib/entity-classifier.d.ts +1 -0
  47. package/dist/lib/entity-classifier.d.ts.map +1 -1
  48. package/dist/lib/entity-classifier.js +3 -0
  49. package/dist/lib/entity-classifier.js.map +1 -1
  50. package/dist/lib/health-checker.d.ts.map +1 -1
  51. package/dist/lib/health-checker.js +75 -0
  52. package/dist/lib/health-checker.js.map +1 -1
  53. package/dist/lib/integration-warnings.d.ts +72 -0
  54. package/dist/lib/integration-warnings.d.ts.map +1 -0
  55. package/dist/lib/integration-warnings.js +273 -0
  56. package/dist/lib/integration-warnings.js.map +1 -0
  57. package/dist/lib/output-formatter.d.ts +1 -1
  58. package/dist/lib/output-formatter.d.ts.map +1 -1
  59. package/dist/lib/output-formatter.js +47 -1
  60. package/dist/lib/output-formatter.js.map +1 -1
  61. package/dist/lib/protected-manifest.d.ts +34 -0
  62. package/dist/lib/protected-manifest.d.ts.map +1 -0
  63. package/dist/lib/protected-manifest.js +112 -0
  64. package/dist/lib/protected-manifest.js.map +1 -0
  65. package/dist/lib/protection-hook.d.ts +35 -0
  66. package/dist/lib/protection-hook.d.ts.map +1 -0
  67. package/dist/lib/protection-hook.js +154 -0
  68. package/dist/lib/protection-hook.js.map +1 -0
  69. package/dist/lib/realtime-cursor.js +3 -3
  70. package/dist/lib/realtime-cursor.js.map +1 -1
  71. package/dist/lib/session-health.d.ts +75 -0
  72. package/dist/lib/session-health.d.ts.map +1 -0
  73. package/dist/lib/session-health.js +252 -0
  74. package/dist/lib/session-health.js.map +1 -0
  75. package/dist/lib/sprint-state.d.ts +82 -0
  76. package/dist/lib/sprint-state.d.ts.map +1 -0
  77. package/dist/lib/sprint-state.js +338 -0
  78. package/dist/lib/sprint-state.js.map +1 -0
  79. package/dist/lib/structural-safeguards.d.ts +26 -0
  80. package/dist/lib/structural-safeguards.d.ts.map +1 -0
  81. package/dist/lib/structural-safeguards.js +91 -0
  82. package/dist/lib/structural-safeguards.js.map +1 -0
  83. package/dist/lib/task-parser.d.ts +2 -0
  84. package/dist/lib/task-parser.d.ts.map +1 -1
  85. package/dist/lib/task-parser.js +30 -0
  86. package/dist/lib/task-parser.js.map +1 -1
  87. package/dist/templates/ai-instructions-template.d.ts.map +1 -1
  88. package/dist/templates/ai-instructions-template.js +8 -1
  89. package/dist/templates/ai-instructions-template.js.map +1 -1
  90. package/dist/templates/research-template.md +172 -0
  91. package/dist/templates/sprint-template.md +52 -0
  92. package/dist/utils/tier.d.ts +40 -0
  93. package/dist/utils/tier.d.ts.map +1 -0
  94. package/dist/utils/tier.js +146 -0
  95. package/dist/utils/tier.js.map +1 -0
  96. package/package.json +1 -1
@@ -382,7 +382,14 @@ After completing ANY sprint task: \`ginko task complete <task_id>\`
382
382
  | \`ginko task pause <id>\` | Return to not_started |
383
383
 
384
384
  Last task in a sprint: \`ginko task complete <id> --cascade --yes\`
385
- Manual sprint completion: \`ginko sprint complete <sprint_id>\``;
385
+ Manual sprint completion: \`ginko sprint complete <sprint_id>\`
386
+
387
+ ### Verification Discipline (EPIC-025)
388
+ Before running \`ginko task complete\`, execute all Verification steps in the sprint file:
389
+ - **API tasks**: Call deployed endpoints, confirm response shape and status codes
390
+ - **UI tasks**: Use \`/browse\` to navigate to the deployed page, take a screenshot, check console for errors
391
+ - **CLI tasks**: Run the command, confirm expected output
392
+ The CLI will display the verification checklist and prompt for confirmation. Skipping logs a warning.`;
386
393
  static LEAN_ENTITY_NAMING = `## Entity Naming Convention (ADR-052)
387
394
 
388
395
  | Entity | Format | Example |
@@ -1 +1 @@
1
- {"version":3,"file":"ai-instructions-template.js","sourceRoot":"","sources":["../../src/templates/ai-instructions-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-instructions-template.js","sourceRoot":"","sources":["../../src/templates/ai-instructions-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ # Research Session Template
2
+
3
+ ## AI-Mediated Research Guide
4
+
5
+ **For AI Partners:** Use this template to guide an open-ended research conversation. Your role is to help the human develop structured understanding of an unfamiliar space. You are NOT planning, NOT building, NOT converging on solutions.
6
+
7
+ **Key distinction:** `ginko explore` is for ideation when the problem outlines are partly known. `ginko research` is for when the space is unknown or unfamiliar and the human wants to work through it in a structured way. Research is upstream of explore — it produces understanding, not product artifacts.
8
+
9
+ ---
10
+
11
+ ## Research Conversation Structure
12
+
13
+ ### Phase 1: Topic Framing
14
+ **Open with:** "What are you trying to understand? What prompted this research?"
15
+
16
+ **Your goal:** Understand what the human knows, doesn't know, and thinks they know.
17
+
18
+ **Probe:**
19
+ - What triggered this investigation?
20
+ - What's the current mental model? (This is what you'll stress-test later.)
21
+ - What would change if the answer were different than expected?
22
+
23
+ **Synthesize into:** A clear topic statement and initial scope.
24
+
25
+ ---
26
+
27
+ ### Phase 2: Context Mapping
28
+ **Ask:** "What do you already know about this space? What assumptions are you carrying?"
29
+
30
+ **Your goal:** Surface the landscape — prior art, existing constraints, adjacent domains.
31
+
32
+ **Probe:**
33
+ - What has been tried before (here or elsewhere)?
34
+ - What constraints are non-negotiable vs. assumed?
35
+ - Who else cares about this topic? What's their perspective?
36
+ - What would an expert in this domain point out that a newcomer would miss?
37
+
38
+ **Synthesize into:** A context section capturing known terrain and assumptions.
39
+
40
+ ---
41
+
42
+ ### Phase 3: Active Investigation
43
+ **This is the core of the session.** Follow the human's curiosity but actively contribute.
44
+
45
+ **Your responsibilities:**
46
+ - When the human makes a claim, ask "What evidence supports that?"
47
+ - When a finding emerges, ask "What would disprove this?"
48
+ - When a path is explored deeply, ask "What haven't we looked at?"
49
+ - Suggest adjacent areas the human hasn't mentioned
50
+ - Play devil's advocate on confident assertions
51
+ - Name patterns you recognize from other domains
52
+ - Surface contradictions between earlier statements and new findings
53
+
54
+ **Synthesize into:** Numbered findings with confidence levels and supporting evidence.
55
+
56
+ ---
57
+
58
+ ### Phase 4: Open Questions
59
+ **Ongoing throughout.** Track questions that emerge but aren't resolved.
60
+
61
+ **Capture:**
62
+ - Questions the human raised but parked
63
+ - Questions YOU raised that the human didn't have answers for
64
+ - "Unasked questions" — gaps in the investigation that neither party addressed
65
+ - Questions that would need external input (user research, data, expert opinion)
66
+
67
+ ---
68
+
69
+ ## Tone & Behavior Guidelines
70
+
71
+ ### Your Stance: Accommodating but Mildly Challenging
72
+
73
+ You are a research partner, not an assistant. Think: smart colleague who's genuinely curious and will push back when something doesn't add up.
74
+
75
+ **Do:**
76
+ - Ask "Why do you believe that?" when the human states something as fact
77
+ - Offer counter-examples and edge cases
78
+ - Say "That's interesting — but have you considered [X]?"
79
+ - Name when the human is making an assumption vs. stating a fact
80
+ - Suggest areas the human hasn't explored (the unasked questions are often the most revealing)
81
+ - Acknowledge genuine uncertainty — "I don't know" is a valid finding
82
+ - Let silences happen; not every pause needs filling
83
+
84
+ **Don't:**
85
+ - Agree with everything — that's not research, that's validation
86
+ - Be adversarial or condescending — challenge ideas, not the person
87
+ - Suggest ending the session ("Should we wrap up?") — NEVER
88
+ - Suggest moving to implementation ("Ready to build?") — NEVER
89
+ - Suggest creating an epic, explore, or plan — NEVER
90
+ - Converge prematurely — breadth before depth
91
+ - Treat findings as conclusions — they're hypotheses until validated
92
+
93
+ ### CRITICAL RULES:
94
+ 1. **NEVER suggest ending the research.** The human decides when to stop.
95
+ 2. **NEVER suggest next steps like "create an epic" or "start building."**
96
+ 3. **NEVER use phrases like "Should we wrap up?" or "I think we have enough."**
97
+ 4. If the human says "I think we're done," acknowledge it and help them capture final open questions — but don't initiate closure yourself.
98
+
99
+ ---
100
+
101
+ ## Unasked Questions Protocol
102
+
103
+ After every 3-4 exchanges, pause and consider:
104
+ - What topic adjacent to this discussion hasn't been raised?
105
+ - What assumption is everyone (including you) taking for granted?
106
+ - What would a skeptic ask about the strongest finding so far?
107
+
108
+ Surface one of these. Frame it as: "Something we haven't discussed yet: [question]. Is that relevant here, or deliberately out of scope?"
109
+
110
+ ---
111
+
112
+ ## Output Format
113
+
114
+ When the human decides the session is complete, create the research document:
115
+
116
+ ### File: `docs/research/RES-XXX-[slug].md`
117
+
118
+ To determine XXX: Check existing files in `docs/research/` and increment. If no files exist, start at RES-001. If `docs/research/` doesn't exist, create it first.
119
+
120
+ ```markdown
121
+ ---
122
+ research_id: RES-XXX
123
+ topic: "[Research Topic]"
124
+ status: open
125
+ created: YYYY-MM-DD
126
+ tags: [tag1, tag2]
127
+ related: [ADR-XXX, EPIC-XXX, or other references]
128
+ ---
129
+
130
+ # RES-XXX: [Research Topic]
131
+
132
+ ## Context
133
+ [What prompted this research. Prior knowledge. Assumptions carried in.
134
+ Constraints — real and assumed.]
135
+
136
+ ## Findings
137
+ 1. **[Finding title]** (confidence: high|medium|low)
138
+ [Description. Evidence. Counter-evidence considered.]
139
+
140
+ 2. **[Finding title]** (confidence: high|medium|low)
141
+ [Description. Evidence. Counter-evidence considered.]
142
+
143
+ ## Open Questions
144
+ - [ ] [Question that emerged but wasn't resolved]
145
+ - [ ] [Question that needs external input]
146
+ - [ ] [Unasked question surfaced during review]
147
+
148
+ ## Raw Notes
149
+ [Optional: key exchanges or reasoning chains worth preserving]
150
+ ```
151
+
152
+ **Status values:**
153
+ - `open` — Research is ongoing or has unresolved questions (default)
154
+ - `closed` — Research is considered complete (all key questions addressed)
155
+
156
+ Default to `open`. Most research stays open — that's fine.
157
+
158
+ ---
159
+
160
+ ## Graph Sync
161
+
162
+ After creating the research file, sync to the graph:
163
+
164
+ ```bash
165
+ ginko push research
166
+ ```
167
+
168
+ This uploads the Research document to the graph for semantic search and cross-referencing with other project knowledge.
169
+
170
+ ---
171
+
172
+ **Remember:** The goal is structured understanding, not a build plan. A research session that concludes "the problem isn't what we thought" is a successful outcome. Resist the urge to make it productive in the conventional sense.
@@ -75,8 +75,30 @@ For each task, generate the full structure:
75
75
  - [ ] {Specific, testable criterion 1}
76
76
  - [ ] {Specific, testable criterion 2}
77
77
  - [ ] {Tests pass}
78
+
79
+ **Verification:**
80
+ - [ ] {Concrete check derived from AC — specify method: endpoint call, browser nav, or CLI command}
81
+ - [ ] {For API tasks: Deploy → call [endpoint] → confirm [expected response]}
82
+ - [ ] {For UI tasks: Deploy → navigate to [page] → screenshot → confirm [element] visible}
83
+ - [ ] {For CLI tasks: Run [command] → confirm [expected output]}
78
84
  ```
79
85
 
86
+ ### Verification Step Generation (EPIC-025)
87
+
88
+ For each acceptance criterion, generate a corresponding **verification step** that specifies the concrete check method:
89
+
90
+ | Task Type | Verification Pattern |
91
+ |-----------|---------------------|
92
+ | **API** | Deploy → `curl [endpoint]` → confirm response shape/status |
93
+ | **UI** | Deploy → navigate to [page] via `/browse` → screenshot → confirm [element] visible → check console |
94
+ | **CLI** | Run `[command]` → confirm [expected output] |
95
+
96
+ **Rules:**
97
+ - Every AC gets a verification step — no "confirm it works" generics
98
+ - UI tasks MUST include browser console check (catches hydration errors, missing props)
99
+ - Verification steps are editable — present them for human review before finalizing
100
+ - If task type is ambiguous, include both API and browser verification
101
+
80
102
  ### Confidence Scoring (Critical)
81
103
 
82
104
  Be honest about your confidence in each task:
@@ -156,6 +178,36 @@ Example: `docs/sprints/SPRINT-2026-02-adhoc_260205_s01-dashboard-fixes.md`
156
178
 
157
179
  ---
158
180
 
181
+ ## Task Dependencies (EPIC-025)
182
+
183
+ {After defining all tasks, derive dependencies from task descriptions and file overlaps.
184
+ Render as ASCII tree. Mark independent tasks explicitly.}
185
+
186
+ ```
187
+ t01 ─── t02 (needs t01's types)
188
+ └──── t03 (needs t01's output)
189
+ t04 ──── (independent)
190
+ t05 ──── (independent)
191
+ ```
192
+
193
+ {Omit this section if all tasks are independent.}
194
+
195
+ ---
196
+
197
+ ## Integration Warnings (EPIC-025)
198
+
199
+ {Auto-generate from task Scope/Files sections. Identify files referenced by 2+ tasks.}
200
+
201
+ ```
202
+ ⚠️ t01, t03 both modify `component.tsx` — t03 depends on t01's changes
203
+ ⚠️ t02, t04 both modify `api-route.ts` — review recommended
204
+ ✅ t05, t06 both modify `utils.ts` — independent changes, safe to parallelize
205
+ ```
206
+
207
+ {Omit this section if no file overlaps detected.}
208
+
209
+ ---
210
+
159
211
  ## Related Documents
160
212
 
161
213
  - **Epic**: {Epic name or "Ad-Hoc Work"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-03-17
5
+ * @tags: [tier, subscription, billing, cli, epic-026]
6
+ * @related: [api-client.ts, commands/start.ts, commands/status.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [chalk]
10
+ *
11
+ * CLI tier resolution and caching (EPIC-026)
12
+ * Fetches user tier from dashboard API, caches locally with TTL.
13
+ */
14
+ export interface TierInfo {
15
+ tier: 'free' | 'pro' | 'suspended';
16
+ isPro: boolean;
17
+ isTrial: boolean;
18
+ trialDaysLeft: number | null;
19
+ isSuspended: boolean;
20
+ subscriptionEndsAt: string | null;
21
+ }
22
+ /**
23
+ * Get the user's subscription tier.
24
+ * Fetches from API, falls back to cache if offline.
25
+ */
26
+ export declare function getTier(): Promise<TierInfo | null>;
27
+ /**
28
+ * Format tier for display in CLI output.
29
+ */
30
+ export declare function formatTierDisplay(tier: TierInfo): string;
31
+ /**
32
+ * Show trial expiry warning if trial ends within 3 days.
33
+ * Call this during `ginko start` to surface urgency.
34
+ */
35
+ export declare function showTrialWarning(tier: TierInfo): void;
36
+ /**
37
+ * Show upgrade prompt for free/suspended users.
38
+ */
39
+ export declare function showUpgradePrompt(): Promise<void>;
40
+ //# sourceMappingURL=tier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../src/utils/tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAUD;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6CxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAWxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAUrD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAavD"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-03-17
5
+ * @tags: [tier, subscription, billing, cli, epic-026]
6
+ * @related: [api-client.ts, commands/start.ts, commands/status.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [chalk]
10
+ *
11
+ * CLI tier resolution and caching (EPIC-026)
12
+ * Fetches user tier from dashboard API, caches locally with TTL.
13
+ */
14
+ import chalk from 'chalk';
15
+ import { api } from './api-client.js';
16
+ import { isAuthenticated } from './auth-storage.js';
17
+ import * as fs from 'fs';
18
+ import * as path from 'path';
19
+ import * as os from 'os';
20
+ const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
21
+ const CACHE_FILE = path.join(os.homedir(), '.ginko', 'tier-cache.json');
22
+ /**
23
+ * Get the user's subscription tier.
24
+ * Fetches from API, falls back to cache if offline.
25
+ */
26
+ export async function getTier() {
27
+ if (!await isAuthenticated()) {
28
+ return null;
29
+ }
30
+ // Try cache first if fresh
31
+ const cached = readCache();
32
+ if (cached) {
33
+ const age = Date.now() - new Date(cached.fetchedAt).getTime();
34
+ if (age < CACHE_TTL_MS) {
35
+ return cached.data;
36
+ }
37
+ }
38
+ // Fetch from API
39
+ try {
40
+ const response = await api.get('/api/v1/user/tier');
41
+ if (response.data) {
42
+ const tierInfo = {
43
+ tier: response.data.tier,
44
+ isPro: response.data.isPro,
45
+ isTrial: response.data.isTrial,
46
+ trialDaysLeft: response.data.trialDaysLeft,
47
+ isSuspended: response.data.isSuspended,
48
+ subscriptionEndsAt: response.data.subscriptionEndsAt,
49
+ };
50
+ writeCache(tierInfo);
51
+ return tierInfo;
52
+ }
53
+ }
54
+ catch {
55
+ // API unreachable — fall back to cache (even if stale)
56
+ if (cached) {
57
+ return cached.data;
58
+ }
59
+ }
60
+ // No cache, no API — default to free
61
+ return {
62
+ tier: 'free',
63
+ isPro: false,
64
+ isTrial: false,
65
+ trialDaysLeft: null,
66
+ isSuspended: false,
67
+ subscriptionEndsAt: null,
68
+ };
69
+ }
70
+ /**
71
+ * Format tier for display in CLI output.
72
+ */
73
+ export function formatTierDisplay(tier) {
74
+ if (tier.isTrial) {
75
+ return chalk.cyan(`Pro Trial (${tier.trialDaysLeft} day${tier.trialDaysLeft === 1 ? '' : 's'} left)`);
76
+ }
77
+ if (tier.isPro) {
78
+ return chalk.green('Pro');
79
+ }
80
+ if (tier.isSuspended) {
81
+ return chalk.yellow('Suspended');
82
+ }
83
+ return chalk.dim('Free');
84
+ }
85
+ /**
86
+ * Show trial expiry warning if trial ends within 3 days.
87
+ * Call this during `ginko start` to surface urgency.
88
+ */
89
+ export function showTrialWarning(tier) {
90
+ if (!tier.isTrial || tier.trialDaysLeft === null)
91
+ return;
92
+ if (tier.trialDaysLeft <= 0) {
93
+ console.log(chalk.yellow('\n ⏰ Your Pro trial has ended. Upgrade to keep Pro features.'));
94
+ console.log(chalk.dim(' Upgrade: https://app.ginkoai.com/pricing'));
95
+ }
96
+ else if (tier.trialDaysLeft <= 3) {
97
+ console.log(chalk.yellow(`\n ⏰ Pro trial ends in ${tier.trialDaysLeft} day${tier.trialDaysLeft === 1 ? '' : 's'}`));
98
+ console.log(chalk.dim(' Upgrade: https://app.ginkoai.com/pricing'));
99
+ }
100
+ }
101
+ /**
102
+ * Show upgrade prompt for free/suspended users.
103
+ */
104
+ export async function showUpgradePrompt() {
105
+ try {
106
+ const response = await api.get('/api/v1/stripe/promo-status', false);
107
+ if (response.data?.isPromoActive && response.data.currentTier) {
108
+ const t = response.data.currentTier;
109
+ const price = `$${t.annualPrice / 100}/yr ($${t.monthlyEquivalent / 100}/mo)`;
110
+ const seats = `${t.seatsDisplayed} of ${t.seatLimit} ${t.label.toLowerCase()} seats claimed`;
111
+ console.log(chalk.yellow(`\n ⭐ ${t.label} adopter pricing: ${price} — ${seats}`));
112
+ console.log(chalk.dim(' Upgrade: https://app.ginkoai.com/pricing'));
113
+ }
114
+ }
115
+ catch {
116
+ // Silently fail — promo display is non-critical
117
+ }
118
+ }
119
+ function readCache() {
120
+ try {
121
+ if (fs.existsSync(CACHE_FILE)) {
122
+ const data = fs.readFileSync(CACHE_FILE, 'utf-8');
123
+ return JSON.parse(data);
124
+ }
125
+ }
126
+ catch {
127
+ // Corrupted cache
128
+ }
129
+ return null;
130
+ }
131
+ function writeCache(data) {
132
+ try {
133
+ const dir = path.dirname(CACHE_FILE);
134
+ if (!fs.existsSync(dir)) {
135
+ fs.mkdirSync(dir, { recursive: true });
136
+ }
137
+ fs.writeFileSync(CACHE_FILE, JSON.stringify({
138
+ data,
139
+ fetchedAt: new Date().toISOString(),
140
+ }), 'utf-8');
141
+ }
142
+ catch {
143
+ // Non-critical
144
+ }
145
+ }
146
+ //# sourceMappingURL=tier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/utils/tier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ginkoai/cli",
3
- "version": "2.5.1",
3
+ "version": "2.6.0",
4
4
  "description": "Git-native session management and cloud context for AI-mediated development. AI Collaboration for Vibe Tribes.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {