@idea1/cli 1.0.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 (62) hide show
  1. package/README.md +160 -0
  2. package/dist/cli.d.ts +10 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +105 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/close-worktree.d.ts +3 -0
  7. package/dist/commands/close-worktree.d.ts.map +1 -0
  8. package/dist/commands/close-worktree.js +184 -0
  9. package/dist/commands/close-worktree.js.map +1 -0
  10. package/dist/commands/help.d.ts +3 -0
  11. package/dist/commands/help.d.ts.map +1 -0
  12. package/dist/commands/help.js +45 -0
  13. package/dist/commands/help.js.map +1 -0
  14. package/dist/commands/index.d.ts +18 -0
  15. package/dist/commands/index.d.ts.map +1 -0
  16. package/dist/commands/index.js +46 -0
  17. package/dist/commands/index.js.map +1 -0
  18. package/dist/commands/start-project-item.d.ts +3 -0
  19. package/dist/commands/start-project-item.d.ts.map +1 -0
  20. package/dist/commands/start-project-item.js +214 -0
  21. package/dist/commands/start-project-item.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +18 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/interactive.d.ts +5 -0
  27. package/dist/interactive.d.ts.map +1 -0
  28. package/dist/interactive.js +348 -0
  29. package/dist/interactive.js.map +1 -0
  30. package/dist/lib/logger.d.ts +16 -0
  31. package/dist/lib/logger.d.ts.map +1 -0
  32. package/dist/lib/logger.js +44 -0
  33. package/dist/lib/logger.js.map +1 -0
  34. package/dist/lib/settings.d.ts +10 -0
  35. package/dist/lib/settings.d.ts.map +1 -0
  36. package/dist/lib/settings.js +27 -0
  37. package/dist/lib/settings.js.map +1 -0
  38. package/dist/lib/shell.d.ts +23 -0
  39. package/dist/lib/shell.d.ts.map +1 -0
  40. package/dist/lib/shell.js +61 -0
  41. package/dist/lib/shell.js.map +1 -0
  42. package/dist/services/claude.d.ts +25 -0
  43. package/dist/services/claude.d.ts.map +1 -0
  44. package/dist/services/claude.js +81 -0
  45. package/dist/services/claude.js.map +1 -0
  46. package/dist/services/config.d.ts +35 -0
  47. package/dist/services/config.d.ts.map +1 -0
  48. package/dist/services/config.js +63 -0
  49. package/dist/services/config.js.map +1 -0
  50. package/dist/services/git.d.ts +89 -0
  51. package/dist/services/git.d.ts.map +1 -0
  52. package/dist/services/git.js +246 -0
  53. package/dist/services/git.js.map +1 -0
  54. package/dist/services/github.d.ts +18 -0
  55. package/dist/services/github.d.ts.map +1 -0
  56. package/dist/services/github.js +90 -0
  57. package/dist/services/github.js.map +1 -0
  58. package/dist/types/index.d.ts +61 -0
  59. package/dist/types/index.d.ts.map +1 -0
  60. package/dist/types/index.js +2 -0
  61. package/dist/types/index.js.map +1 -0
  62. package/package.json +53 -0
@@ -0,0 +1,246 @@
1
+ import { exec, execOrThrow } from '../lib/shell.js';
2
+ import { logger } from '../lib/logger.js';
3
+ import { dirname, basename } from 'path';
4
+ /**
5
+ * Get the repository root path from git
6
+ */
7
+ export async function getRepoRoot() {
8
+ return execOrThrow('git', ['rev-parse', '--show-toplevel']);
9
+ }
10
+ /**
11
+ * Get the repository name (directory name of the repo root)
12
+ */
13
+ export async function getRepoName() {
14
+ const repoRoot = await getRepoRoot();
15
+ return basename(repoRoot.trim());
16
+ }
17
+ /**
18
+ * Get the main repository root (even when inside a worktree)
19
+ */
20
+ export async function getMainRepoRoot() {
21
+ const gitCommonDir = await execOrThrow('git', ['rev-parse', '--git-common-dir']);
22
+ // git_common_dir points to main repo's .git directory
23
+ // Parent of .git is the main repo root
24
+ const mainRoot = dirname(gitCommonDir.trim());
25
+ return mainRoot === '.' ? await getRepoRoot() : mainRoot;
26
+ }
27
+ /**
28
+ * Get the current branch name
29
+ */
30
+ export async function getCurrentBranch() {
31
+ const branch = await execOrThrow('git', ['rev-parse', '--abbrev-ref', 'HEAD']);
32
+ return branch.trim();
33
+ }
34
+ /**
35
+ * Check if inside a git worktree (not the main repo)
36
+ */
37
+ export async function isInsideWorktree() {
38
+ try {
39
+ const gitDir = await execOrThrow('git', ['rev-parse', '--git-dir']);
40
+ const gitCommonDir = await execOrThrow('git', ['rev-parse', '--git-common-dir']);
41
+ return gitDir.trim() !== gitCommonDir.trim();
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ /**
48
+ * Ensure the current repository has no uncommitted changes or untracked files
49
+ */
50
+ export async function ensureCleanWorkingDirectory() {
51
+ // Check for uncommitted changes
52
+ const diffResult = await exec('git', ['diff-index', '--quiet', 'HEAD', '--']);
53
+ if (diffResult.exitCode !== 0) {
54
+ throw new Error('You have uncommitted changes in the repository. Please commit, stash, or discard your changes before proceeding.');
55
+ }
56
+ // Check for untracked files
57
+ const untrackedResult = await execOrThrow('git', ['ls-files', '--others', '--exclude-standard']);
58
+ if (untrackedResult.trim()) {
59
+ throw new Error('You have untracked files in the repository. Please commit, stash, or remove untracked files before proceeding.');
60
+ }
61
+ }
62
+ /**
63
+ * Check if there are uncommitted changes (including untracked files)
64
+ */
65
+ export async function hasUncommittedChanges() {
66
+ const diffResult = await exec('git', ['diff', '--quiet']);
67
+ const cachedResult = await exec('git', ['diff', '--cached', '--quiet']);
68
+ const untrackedResult = await execOrThrow('git', ['ls-files', '--others', '--exclude-standard']);
69
+ return diffResult.exitCode !== 0 || cachedResult.exitCode !== 0 || untrackedResult.trim().length > 0;
70
+ }
71
+ /**
72
+ * Fetch latest changes from origin
73
+ */
74
+ export async function fetchLatest() {
75
+ logger.step('Fetching latest changes from origin...');
76
+ await execOrThrow('git', ['fetch', 'origin']);
77
+ }
78
+ /**
79
+ * Checkout and pull the latest from a branch
80
+ */
81
+ export async function checkoutAndPullBranch(branchName) {
82
+ logger.step(`Checking out ${branchName}...`);
83
+ await execOrThrow('git', ['checkout', branchName]);
84
+ logger.step(`Pulling latest from ${branchName}...`);
85
+ await execOrThrow('git', ['pull', 'origin', branchName]);
86
+ }
87
+ /**
88
+ * Create a new branch from a base branch and push it to origin
89
+ */
90
+ export async function createAndPushBranch(fullBranchName, baseBranchName) {
91
+ logger.step(`Creating branch: ${fullBranchName} from ${baseBranchName}...`);
92
+ await execOrThrow('git', ['checkout', '-b', fullBranchName, baseBranchName]);
93
+ logger.step('Pushing branch to origin...');
94
+ await execOrThrow('git', ['push', '--set-upstream', 'origin', fullBranchName]);
95
+ logger.success(`Branch ${fullBranchName} created successfully and pushed to origin`);
96
+ }
97
+ /**
98
+ * Prepare the repository for worktree creation by fetching and syncing branches
99
+ */
100
+ export async function prepareRepoForWorktree(fullBranchName, destBranchName) {
101
+ logger.step('Syncing branches...');
102
+ await fetchLatest();
103
+ await checkoutAndPullBranch(destBranchName);
104
+ await execOrThrow('git', ['pull', 'origin', fullBranchName]);
105
+ await execOrThrow('git', ['checkout', fullBranchName]);
106
+ await execOrThrow('git', ['pull', 'origin', fullBranchName]);
107
+ logger.success(`Branch ${fullBranchName} is ready for development`);
108
+ // Return to dest branch so worktree creation works correctly
109
+ await execOrThrow('git', ['checkout', destBranchName]);
110
+ await execOrThrow('git', ['pull', 'origin', destBranchName]);
111
+ }
112
+ /**
113
+ * Create a git worktree for the given branch
114
+ */
115
+ export async function createWorktree(fullBranchName, shortBranchName) {
116
+ const repoRoot = await getRepoRoot();
117
+ const repoName = await getRepoName();
118
+ const worktreePath = `${dirname(repoRoot.trim())}/${repoName}-${shortBranchName}`;
119
+ logger.step(`Creating git worktree at ${worktreePath}...`);
120
+ await execOrThrow('git', ['worktree', 'add', worktreePath, fullBranchName]);
121
+ logger.success(`Worktree created successfully at ${worktreePath}`);
122
+ return worktreePath;
123
+ }
124
+ /**
125
+ * Remove a git worktree
126
+ */
127
+ export async function removeWorktree(worktreePath) {
128
+ logger.step(`Removing git worktree at ${worktreePath}...`);
129
+ await execOrThrow('git', ['worktree', 'remove', worktreePath]);
130
+ logger.success('Worktree removed');
131
+ }
132
+ /**
133
+ * Enter worktree and set up upstream
134
+ */
135
+ export async function enterWorktreeAndSetup(worktreePath, fullBranchName) {
136
+ // Set upstream branch to enable easy PR creation
137
+ await exec('git', ['push', '-u', 'origin', fullBranchName], { cwd: worktreePath });
138
+ }
139
+ /**
140
+ * Store project item URL in git config for later retrieval
141
+ */
142
+ export async function storeProjectItemUrl(projectItemUrl, branchName) {
143
+ const branch = branchName ?? await getCurrentBranch();
144
+ if (projectItemUrl && branch) {
145
+ await execOrThrow('git', ['config', '--local', `branch.${branch}.idea1ProjectItemUrl`, projectItemUrl]);
146
+ logger.dim(`Project item URL stored in git config for ${branch}`);
147
+ }
148
+ }
149
+ /**
150
+ * Retrieve project item URL from git config
151
+ */
152
+ export async function getProjectItemUrl(branchName) {
153
+ const branch = branchName ?? await getCurrentBranch();
154
+ const result = await exec('git', ['config', '--local', '--get', `branch.${branch}.idea1ProjectItemUrl`]);
155
+ return result.exitCode === 0 && result.stdout.trim() ? result.stdout.trim() : null;
156
+ }
157
+ /**
158
+ * Store base branch in git config for later retrieval
159
+ */
160
+ export async function storeBaseBranch(baseBranch, branchName) {
161
+ const branch = branchName ?? await getCurrentBranch();
162
+ if (baseBranch && branch) {
163
+ await execOrThrow('git', ['config', '--local', `branch.${branch}.baseBranch`, baseBranch]);
164
+ logger.dim(`Base branch stored in git config for ${branch}: ${baseBranch}`);
165
+ }
166
+ }
167
+ /**
168
+ * Retrieve base branch for a branch (with hierarchical resolution)
169
+ */
170
+ export async function getBaseBranch(branchName) {
171
+ const branch = branchName ?? await getCurrentBranch();
172
+ // 1. Primary: query existing PR (authoritative source) - requires github service
173
+ // This is handled in the command layer
174
+ // 2. Fallback: branch-specific config
175
+ const result = await exec('git', ['config', '--local', '--get', `branch.${branch}.baseBranch`]);
176
+ if (result.exitCode === 0 && result.stdout.trim()) {
177
+ return result.stdout.trim();
178
+ }
179
+ // 3. Return null (caller decides default)
180
+ return null;
181
+ }
182
+ /**
183
+ * Validate that a branch exists
184
+ */
185
+ export async function branchExists(branchName) {
186
+ // Check remote first
187
+ const remoteResult = await exec('git', ['rev-parse', '--verify', `origin/${branchName}`]);
188
+ if (remoteResult.exitCode === 0) {
189
+ return true;
190
+ }
191
+ // Check local
192
+ const localResult = await exec('git', ['rev-parse', '--verify', branchName]);
193
+ return localResult.exitCode === 0;
194
+ }
195
+ /**
196
+ * Add all changes and commit
197
+ */
198
+ export async function commitAllChanges(message) {
199
+ logger.step('Adding all changes...');
200
+ await execOrThrow('git', ['add', '-A']);
201
+ // Check if there are changes to commit
202
+ const diffResult = await exec('git', ['diff', '--cached', '--quiet']);
203
+ if (diffResult.exitCode === 0) {
204
+ logger.dim('No changes to commit');
205
+ return;
206
+ }
207
+ logger.step('Committing changes...');
208
+ await execOrThrow('git', ['commit', '-m', message]);
209
+ logger.success('Changes committed successfully');
210
+ }
211
+ /**
212
+ * Push to remote branch
213
+ */
214
+ export async function pushToRemote(branchName) {
215
+ logger.step(`Pushing changes to remote branch ${branchName}...`);
216
+ await execOrThrow('git', ['push', '--set-upstream', 'origin', branchName]);
217
+ logger.success('Changes pushed successfully');
218
+ }
219
+ /**
220
+ * Garbage collect orphaned branch configs
221
+ */
222
+ export async function gcOrphanedBranchConfigs() {
223
+ const result = await exec('git', ['config', '--local', '--list']);
224
+ if (result.exitCode !== 0)
225
+ return;
226
+ const configKeys = result.stdout
227
+ .split('\n')
228
+ .filter(line => /^branch\.[^.]+\.(baseBranch|idea1ProjectItemUrl)=/.test(line))
229
+ .map(line => line.split('=')[0]);
230
+ let removedCount = 0;
231
+ for (const key of configKeys) {
232
+ const match = key.match(/^branch\.(.+)\.(baseBranch|idea1ProjectItemUrl)$/);
233
+ if (!match)
234
+ continue;
235
+ const branchName = match[1];
236
+ const exists = await branchExists(branchName);
237
+ if (!exists) {
238
+ await exec('git', ['config', '--local', '--unset', key]);
239
+ removedCount++;
240
+ }
241
+ }
242
+ if (removedCount > 0) {
243
+ logger.dim(`Removed ${removedCount} orphaned branch config entries`);
244
+ }
245
+ }
246
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/services/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { PrInfo } from '../types/index.js';
2
+ /**
3
+ * Ensure GitHub CLI is available
4
+ */
5
+ export declare function ensureGitHubCli(): Promise<void>;
6
+ /**
7
+ * Check if a PR already exists for the given branch
8
+ */
9
+ export declare function checkPrExists(branchName: string, baseBranchName: string): Promise<PrInfo | null>;
10
+ /**
11
+ * Get base branch from existing PR
12
+ */
13
+ export declare function getPrBaseBranch(branchName: string): Promise<string | null>;
14
+ /**
15
+ * Create a PR if it doesn't already exist
16
+ */
17
+ export declare function createPrIfNeeded(branchName: string, baseBranchName: string, projectItemUrl: string | null, draft?: boolean): Promise<PrInfo | null>;
18
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAIrD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBtG;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAchF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,KAAK,UAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuCxB"}
@@ -0,0 +1,90 @@
1
+ import { exec, commandExists } from '../lib/shell.js';
2
+ import { logger } from '../lib/logger.js';
3
+ /**
4
+ * Ensure GitHub CLI is available
5
+ */
6
+ export async function ensureGitHubCli() {
7
+ if (!await commandExists('gh')) {
8
+ throw new Error('GitHub CLI (gh) is not installed. Please install it: https://cli.github.com/');
9
+ }
10
+ }
11
+ /**
12
+ * Check if a PR already exists for the given branch
13
+ */
14
+ export async function checkPrExists(branchName, baseBranchName) {
15
+ await ensureGitHubCli();
16
+ logger.step(`Checking for existing PR for branch ${branchName}...`);
17
+ const result = await exec('gh', [
18
+ 'pr', 'list',
19
+ '--head', branchName,
20
+ '--base', baseBranchName,
21
+ '--json', 'number,url,state',
22
+ '--jq', '.[0]'
23
+ ]);
24
+ if (result.exitCode === 0 && result.stdout.trim() && result.stdout.trim() !== 'null') {
25
+ try {
26
+ const prInfo = JSON.parse(result.stdout.trim());
27
+ logger.dim(`PR already exists for branch ${branchName} (PR #${prInfo.number})`);
28
+ return prInfo;
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ logger.dim(`No existing PR found for branch ${branchName}`);
35
+ return null;
36
+ }
37
+ /**
38
+ * Get base branch from existing PR
39
+ */
40
+ export async function getPrBaseBranch(branchName) {
41
+ await ensureGitHubCli();
42
+ const result = await exec('gh', [
43
+ 'pr', 'view', branchName,
44
+ '--json', 'baseRefName',
45
+ '-q', '.baseRefName'
46
+ ]);
47
+ if (result.exitCode === 0 && result.stdout.trim()) {
48
+ return result.stdout.trim();
49
+ }
50
+ return null;
51
+ }
52
+ /**
53
+ * Create a PR if it doesn't already exist
54
+ */
55
+ export async function createPrIfNeeded(branchName, baseBranchName, projectItemUrl, draft = false) {
56
+ await ensureGitHubCli();
57
+ // Check if PR already exists
58
+ const existingPr = await checkPrExists(branchName, baseBranchName);
59
+ if (existingPr) {
60
+ logger.dim(`Skipping PR creation - PR #${existingPr.number} already exists`);
61
+ return existingPr;
62
+ }
63
+ logger.step(`Creating new PR for ${branchName} -> ${baseBranchName}...`);
64
+ // Create title and body based on whether project_item_url is provided
65
+ let title;
66
+ let body;
67
+ if (projectItemUrl) {
68
+ title = `${branchName} -- Agent implementation of ${projectItemUrl}`;
69
+ body = `Automated PR for agent implementation of ${branchName} - project item: ${projectItemUrl}`;
70
+ }
71
+ else {
72
+ title = branchName;
73
+ body = `Automated PR for ${branchName}`;
74
+ }
75
+ const args = ['pr', 'create', '--title', title, '--base', baseBranchName, '--body', body];
76
+ if (draft) {
77
+ args.push('--draft');
78
+ }
79
+ const result = await exec('gh', args);
80
+ if (result.exitCode === 0) {
81
+ logger.success('PR created successfully');
82
+ // Try to get the PR info
83
+ return await checkPrExists(branchName, baseBranchName);
84
+ }
85
+ else {
86
+ logger.warning(`Failed to create PR: ${result.stderr}`);
87
+ return null;
88
+ }
89
+ }
90
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Command interface for the command registry
3
+ */
4
+ export interface Command {
5
+ name: string;
6
+ aliases: string[];
7
+ description: string;
8
+ execute: (args: string[]) => Promise<void>;
9
+ options?: CommandOption[];
10
+ }
11
+ /**
12
+ * Command option definition
13
+ */
14
+ export interface CommandOption {
15
+ flags: string;
16
+ description: string;
17
+ defaultValue?: string | boolean;
18
+ }
19
+ /**
20
+ * Idea1 settings from .idea1/settings.json
21
+ */
22
+ export interface Idea1Settings {
23
+ hooks?: {
24
+ 'setup-worktree'?: string;
25
+ };
26
+ }
27
+ /**
28
+ * Start project item options
29
+ */
30
+ export interface StartProjectItemOptions {
31
+ isolationMode: 'worktree' | 'container';
32
+ sourcePath?: string;
33
+ baseBranch: string;
34
+ buildImage: boolean;
35
+ disableFirewall: boolean;
36
+ }
37
+ /**
38
+ * Close worktree options
39
+ */
40
+ export interface CloseWorktreeOptions {
41
+ sourcePath?: string;
42
+ baseBranch?: string;
43
+ promptPr: boolean;
44
+ }
45
+ /**
46
+ * Git branch info
47
+ */
48
+ export interface BranchInfo {
49
+ fullName: string;
50
+ shortName: string;
51
+ baseBranch: string;
52
+ }
53
+ /**
54
+ * PR info
55
+ */
56
+ export interface PrInfo {
57
+ number: number;
58
+ url: string;
59
+ state: string;
60
+ }
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE;QACN,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,UAAU,GAAG,WAAW,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@idea1/cli",
3
+ "version": "1.0.0",
4
+ "description": "CLI tool for Idea1.ai workflow automation - AI-assisted development workflows",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "idea1": "./bin/idea1"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "build:dev": "tsc",
13
+ "dev": "tsc --watch",
14
+ "start": "node dist/index.js",
15
+ "clean": "rm -rf dist",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [
19
+ "cli",
20
+ "idea1",
21
+ "ai",
22
+ "development",
23
+ "workflow",
24
+ "automation"
25
+ ],
26
+ "author": "Idea1.ai",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/idea1-ai/omega.git"
31
+ },
32
+ "engines": {
33
+ "node": ">=20.0.0"
34
+ },
35
+ "dependencies": {
36
+ "boxen": "^8.0.1",
37
+ "chalk": "^5.3.0",
38
+ "commander": "^12.1.0",
39
+ "conf": "^13.0.1",
40
+ "execa": "^9.5.1",
41
+ "inquirer": "^12.1.0",
42
+ "ora": "^8.1.1"
43
+ },
44
+ "devDependencies": {
45
+ "@types/inquirer": "^9.0.7",
46
+ "@types/node": "^22.10.1",
47
+ "typescript": "^5.7.2"
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "bin"
52
+ ]
53
+ }