corydora 0.3.2 → 1.0.3

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 (63) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +27 -4
  3. package/dist/commands/doctor.js +37 -1
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/init.js +114 -14
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/run.d.ts +3 -0
  8. package/dist/commands/run.js +51 -20
  9. package/dist/commands/run.js.map +1 -1
  10. package/dist/commands/status.js +37 -6
  11. package/dist/commands/status.js.map +1 -1
  12. package/dist/config/files.js +23 -1
  13. package/dist/config/files.js.map +1 -1
  14. package/dist/config/schema.d.ts +0 -80
  15. package/dist/config/schema.js +162 -52
  16. package/dist/config/schema.js.map +1 -1
  17. package/dist/constants.d.ts +1 -0
  18. package/dist/constants.js +9 -0
  19. package/dist/constants.js.map +1 -1
  20. package/dist/filesystem/discovery.d.ts +2 -0
  21. package/dist/filesystem/discovery.js +2 -2
  22. package/dist/filesystem/discovery.js.map +1 -1
  23. package/dist/filesystem/gitignore.d.ts +3 -0
  24. package/dist/filesystem/gitignore.js +37 -7
  25. package/dist/filesystem/gitignore.js.map +1 -1
  26. package/dist/git/isolation.d.ts +1 -0
  27. package/dist/git/isolation.js +5 -4
  28. package/dist/git/isolation.js.map +1 -1
  29. package/dist/git/repository.d.ts +2 -1
  30. package/dist/git/repository.js +21 -11
  31. package/dist/git/repository.js.map +1 -1
  32. package/dist/index.js +17 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/providers/fake.js +16 -0
  35. package/dist/providers/fake.js.map +1 -1
  36. package/dist/providers/utils.js +24 -0
  37. package/dist/providers/utils.js.map +1 -1
  38. package/dist/queue/render.js +10 -3
  39. package/dist/queue/render.js.map +1 -1
  40. package/dist/queue/state.d.ts +53 -4
  41. package/dist/queue/state.js +301 -29
  42. package/dist/queue/state.js.map +1 -1
  43. package/dist/runtime/modes.d.ts +29 -0
  44. package/dist/runtime/modes.js +423 -0
  45. package/dist/runtime/modes.js.map +1 -0
  46. package/dist/runtime/prompts.d.ts +8 -3
  47. package/dist/runtime/prompts.js +58 -12
  48. package/dist/runtime/prompts.js.map +1 -1
  49. package/dist/runtime/routes.d.ts +28 -0
  50. package/dist/runtime/routes.js +87 -0
  51. package/dist/runtime/routes.js.map +1 -0
  52. package/dist/runtime/run-session.d.ts +3 -2
  53. package/dist/runtime/run-session.js +521 -206
  54. package/dist/runtime/run-session.js.map +1 -1
  55. package/dist/runtime/tooling.d.ts +2 -0
  56. package/dist/runtime/tooling.js +79 -0
  57. package/dist/runtime/tooling.js.map +1 -0
  58. package/dist/runtime/validation.d.ts +7 -0
  59. package/dist/runtime/validation.js +115 -0
  60. package/dist/runtime/validation.js.map +1 -0
  61. package/dist/types/domain.d.ts +139 -16
  62. package/package.json +4 -3
  63. package/schemas/corydora.schema.json +165 -4
package/CHANGELOG.md CHANGED
@@ -2,6 +2,75 @@
2
2
 
3
3
  All notable changes to Corydora are documented in this file.
4
4
 
5
+ ## [1.0.3](https://github.com/glorioustephan/corydora/compare/corydora-v1.0.2...corydora-v1.0.3) (2026-04-14)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * republish after npm trusted publishing setup ([853b8a2](https://github.com/glorioustephan/corydora/commit/853b8a250d5a02c5839861b27ca9ac781e27f356))
11
+
12
+ ## [1.0.2](https://github.com/glorioustephan/corydora/compare/corydora-v1.0.1...corydora-v1.0.2) (2026-04-14)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **publish.yml:** the workflow ran pnpm install --frozen-lockfile before any actions/checkout ([#19](https://github.com/glorioustephan/corydora/issues/19)) ([dd6b461](https://github.com/glorioustephan/corydora/commit/dd6b461c2d5609b291168cf41e0657bb6ff54898))
18
+
19
+ ## [1.0.1](https://github.com/glorioustephan/corydora/compare/corydora-v1.0.0...corydora-v1.0.1) (2026-04-14)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * release PR [#17](https://github.com/glorioustephan/corydora/issues/17) changes ([2ded546](https://github.com/glorioustephan/corydora/commit/2ded546cb50365c49dff4e67ceb65396b6f7371d))
25
+
26
+ ## [1.0.0](https://github.com/glorioustephan/corydora/compare/corydora-v0.4.0...corydora-v1.0.0) (2026-04-13)
27
+
28
+
29
+ ### ⚠ BREAKING CHANGES
30
+
31
+ * corydora status --json changed shape and status vocabulary.
32
+
33
+ ### Features
34
+
35
+ * adding modes and introducing a background daemon with vNext ([#14](https://github.com/glorioustephan/corydora/issues/14)) ([66db5fc](https://github.com/glorioustephan/corydora/commit/66db5fc94805e68e6a364bbc4440d6d0d96aa540))
36
+
37
+ ## [0.4.0](https://github.com/glorioustephan/corydora/compare/corydora-v0.3.4...corydora-v0.4.0) (2026-03-31)
38
+
39
+ ### Features
40
+
41
+ - add initial release package and update README with new logo format ([dd696d1](https://github.com/glorioustephan/corydora/commit/dd696d14b8dd5ee2e29d585ac5b288398e7aaecb))
42
+ - **adding caffeine support on macos:** preventing machine from sleeping when preferred ([7838627](https://github.com/glorioustephan/corydora/commit/7838627225526ecb22af6ec744a3fa8e7e405a3e))
43
+ - **cli:** add --no-verify option to skip git commit hooks ([cd9efc3](https://github.com/glorioustephan/corydora/commit/cd9efc3cb7ce7c2168680c495e2638266cdb0a39))
44
+ - **cli:** add --no-verify option to skip git commit hooks ([6fcb797](https://github.com/glorioustephan/corydora/commit/6fcb7977cd2ee2c35728d16ef4b93d7b269f46fc))
45
+ - **cli:** add --no-verify option to skip git commit hooks ([8d27d31](https://github.com/glorioustephan/corydora/commit/8d27d31ec8f6e4639b4a5183912238741e34a51b))
46
+ - **docs and ci:** updating docs infrastructure to work with github actions, adding release-please ([c71da43](https://github.com/glorioustephan/corydora/commit/c71da43b98dcac4f4585e6785492518699018e32))
47
+ - enhance runtime configuration and documentation- Added configurable parameters for request ([7838627](https://github.com/glorioustephan/corydora/commit/7838627225526ecb22af6ec744a3fa8e7e405a3e))
48
+
49
+ ### Bug Fixes
50
+
51
+ - **cli:** enhancing --version and --help flags ([2b65e59](https://github.com/glorioustephan/corydora/commit/2b65e59c97f656325e2e6cd5434d6556082161dd))
52
+ - **cli:** enhancing --version and --help flags ([1832127](https://github.com/glorioustephan/corydora/commit/1832127f79a75c2f3efc7cb21f27f3c9148ab3c8))
53
+ - **publish.yml:** updating publish.yml and release for CI to format changes ([#9](https://github.com/glorioustephan/corydora/issues/9)) ([332a605](https://github.com/glorioustephan/corydora/commit/332a6057dcfb6b27d3a8c9d887d9ca7282e22e2e))
54
+ - **release-please:** updating process for release-please and use of token ([ba9c804](https://github.com/glorioustephan/corydora/commit/ba9c804ecab3be139a0a31ad79ae4adaf33514e9))
55
+ - **release-please:** updating process for release-please and use of token ([#11](https://github.com/glorioustephan/corydora/issues/11)) ([f994a9a](https://github.com/glorioustephan/corydora/commit/f994a9a49ea5722270e859ffd265bbd8196ec55e))
56
+ - **repository.ts:** adding pre-commit formatting ([1c91029](https://github.com/glorioustephan/corydora/commit/1c91029eadbb699786c7202bc8665b010e90ecc4))
57
+ - **repository.ts:** adding pre-commit formatting ([031e1ce](https://github.com/glorioustephan/corydora/commit/031e1ceec47f7c026efa9857ffa2e62a420574bd))
58
+ - **runtime:** avoid undefined optional flags in rebase conflict resolution ([97bf3e2](https://github.com/glorioustephan/corydora/commit/97bf3e26ff8e236d45cd8ef0a12a0dc4b8b967ba))
59
+ - **utils:** making the todo.md file the catch-all for unknown catgories ([87c89db](https://github.com/glorioustephan/corydora/commit/87c89dbf8b8276f27a993edb173676f15ba14176))
60
+ - **utils:** making the todo.md file the catch-all for unknown catgories ([c304926](https://github.com/glorioustephan/corydora/commit/c30492667217bbec9e460fb50e45f931005cc638))
61
+
62
+ ## [0.3.4](https://github.com/glorioustephan/corydora/compare/corydora-v0.3.3...corydora-v0.3.4) (2026-03-31)
63
+
64
+ ### Bug Fixes
65
+
66
+ - **release-please:** updating process for release-please and use of token ([#11](https://github.com/glorioustephan/corydora/issues/11)) ([f994a9a](https://github.com/glorioustephan/corydora/commit/f994a9a49ea5722270e859ffd265bbd8196ec55e))
67
+
68
+ ## [0.3.3](https://github.com/glorioustephan/corydora/compare/corydora-v0.3.2...corydora-v0.3.3) (2026-03-31)
69
+
70
+ ### Bug Fixes
71
+
72
+ - **publish.yml:** updating publish.yml and release for CI to format changes ([#9](https://github.com/glorioustephan/corydora/issues/9)) ([332a605](https://github.com/glorioustephan/corydora/commit/332a6057dcfb6b27d3a8c9d887d9ca7282e22e2e))
73
+
5
74
  ## [0.3.2](https://github.com/glorioustephan/corydora/compare/corydora-v0.3.1...corydora-v0.3.2) (2026-03-31)
6
75
 
7
76
  ### Bug Fixes
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![npm downloads](https://img.shields.io/npm/dm/corydora.svg)](https://www.npmjs.com/package/corydora)
7
7
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
8
8
  [![Docs](https://img.shields.io/badge/docs-vitepress-7c3aed.svg)](https://glorioustephan.github.io/corydora/)
9
-
9
+ [![Socket Badge](https://badge.socket.dev/npm/package/corydora/0.4.0)](https://badge.socket.dev/npm/package/corydora/0.4.0)
10
10
  <p align="center">
11
11
  <img src="./logo.webp" alt="Corydora" width="320px" />
12
12
  </p>
@@ -106,6 +106,21 @@ pnpm check
106
106
 
107
107
  After feature/fix PRs merge into `main`, generate or refresh the release pull request:
108
108
 
109
+ Set one of these tokens before running release planning:
110
+
111
+ ```bash
112
+ export RELEASE_PLEASE_TOKEN=ghp_xxx
113
+ # or:
114
+ # export GITHUB_TOKEN=ghp_xxx
115
+ # export GH_TOKEN=ghp_xxx
116
+ ```
117
+
118
+ Optionally pin the repo explicitly:
119
+
120
+ ```bash
121
+ export RELEASE_PLEASE_REPO_URL=https://github.com/glorioustephan/corydora
122
+ ```
123
+
109
124
  ```bash
110
125
  pnpm release:plan
111
126
  ```
@@ -116,6 +131,14 @@ This uses release-please to:
116
131
  - bump `package.json` version
117
132
  - update `CHANGELOG.md`
118
133
 
134
+ `release:plan` also formats `CHANGELOG.md` after generation.
135
+
136
+ If formatting or checks fail later, rerun:
137
+
138
+ ```bash
139
+ pnpm release:check
140
+ ```
141
+
119
142
  Merge the release PR when ready.
120
143
 
121
144
  #### 3) Publish
@@ -190,8 +213,8 @@ Before the first public release, configure npm trusted publishing for this repos
190
213
  package page and settings exist.
191
214
  4. In npm package settings for `corydora`, add a trusted publisher for GitHub Actions with workflow
192
215
  filename `publish.yml`.
193
- 5. Optionally add a `RELEASE_PLEASE_TOKEN` GitHub secret if you want bot-created release PRs to
194
- trigger other workflows normally.
216
+ 5. Add `RELEASE_PLEASE_TOKEN` as a GitHub secret for `glorioustephan/corydora`; release planning and
217
+ local PR generation use this token and fall back to `GITHUB_TOKEN`/`GH_TOKEN`.
195
218
  6. Optionally protect the `npm` GitHub environment before enabling publish.
196
219
  7. After trusted publishing is configured, publish future releases by merging the release PR that
197
220
  release-please opens against `main`.
@@ -203,7 +226,7 @@ calls `npm publish`.
203
226
  ## Notes
204
227
 
205
228
  - Secrets never belong in `.corydora.json`.
206
- - `.corydora/.env.local` is ignored by default.
229
+ - Add `.corydora/.env.local` to `.gitignore`, or let interactive `corydora init` append Corydora's recommended ignore block.
207
230
  - Markdown queue files are projections of machine state in `.corydora/state/`.
208
231
  - The root `CHANGELOG.md` is the canonical release history and is maintained by release-please.
209
232
  - The npm publish workflow assumes GitHub-hosted runners, which is also what npm trusted publishing
@@ -1,21 +1,51 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
1
3
  import { detectProjectFingerprint } from '../filesystem/project.js';
2
4
  import { probeAvailableRuntimes, getRuntimeAdapters } from '../providers/index.js';
3
5
  import { supportsBackgroundKeepAwake, supportsTmux } from '../runtime/tmux.js';
6
+ import { chooseValidationScript } from '../runtime/validation.js';
7
+ import { preflightIsolationMode, resolveStageRoute } from '../runtime/routes.js';
8
+ import { configExists, loadRequiredConfig } from './helpers.js';
4
9
  export async function runDoctorCommand(projectRoot, json, ui) {
5
- const [fingerprint, probes] = await Promise.all([
10
+ const hasConfig = configExists(projectRoot);
11
+ const [fingerprint, probes, config] = await Promise.all([
6
12
  Promise.resolve(detectProjectFingerprint(projectRoot)),
7
13
  probeAvailableRuntimes(projectRoot),
14
+ hasConfig ? loadRequiredConfig(projectRoot) : Promise.resolve(null),
8
15
  ]);
9
16
  const runtimeChecks = await Promise.all(getRuntimeAdapters().map(async (adapter) => ({
10
17
  provider: adapter.id,
11
18
  checks: await adapter.doctor(projectRoot),
12
19
  })));
20
+ const fixRoute = config ? resolveStageRoute(config, 'fix') : null;
21
+ const validation = config
22
+ ? chooseValidationScript(projectRoot, config.modes.default, config.execution.validateAfterFix)
23
+ : null;
24
+ const isolationCheck = config && fixRoute
25
+ ? preflightIsolationMode({
26
+ projectRoot,
27
+ config,
28
+ fixRoute,
29
+ mode: config.modes.default,
30
+ })
31
+ : null;
13
32
  const payload = {
14
33
  fingerprint,
15
34
  tmuxAvailable: supportsTmux(),
16
35
  backgroundKeepAwakeAvailable: supportsBackgroundKeepAwake(),
17
36
  runtimes: probes,
18
37
  checks: runtimeChecks,
38
+ config: config
39
+ ? {
40
+ mode: config.modes.default,
41
+ fixProvider: fixRoute?.provider,
42
+ effectiveIsolationMode: isolationCheck?.effectiveIsolationMode,
43
+ validationCommand: validation ? [validation.command, ...validation.args].join(' ') : null,
44
+ lintPrerequisite: config.modes.default === 'linting'
45
+ ? existsSync(resolve(projectRoot, 'package.json'))
46
+ : null,
47
+ }
48
+ : null,
19
49
  };
20
50
  if (json) {
21
51
  ui.printJson(payload);
@@ -28,5 +58,11 @@ export async function runDoctorCommand(projectRoot, json, ui) {
28
58
  for (const probe of probes) {
29
59
  ui.info(`${probe.provider}: installed=${probe.installed} auth=${probe.auth.status} (${probe.auth.message})`);
30
60
  }
61
+ if (config && fixRoute && isolationCheck) {
62
+ ui.info(`Configured mode: ${config.modes.default}`);
63
+ ui.info(`Fix route: ${fixRoute.provider} (${fixRoute.model})`);
64
+ ui.info(`Isolation compatibility: ${config.git.isolationMode} -> ${isolationCheck.effectiveIsolationMode}`);
65
+ ui.info(`Validation command: ${validation ? [validation.command, ...validation.args].join(' ') : 'none available'}`);
66
+ }
31
67
  }
32
68
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG/E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB,EAAE,IAAa,EAAE,EAAM;IAC/E,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACtD,sBAAsB,CAAC,WAAW,CAAC;KACpC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,kBAAkB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3C,QAAQ,EAAE,OAAO,CAAC,EAAE;QACpB,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;KAC1C,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,WAAW;QACX,aAAa,EAAE,YAAY,EAAE;QAC7B,4BAA4B,EAAE,2BAA2B,EAAE;QAC3D,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,aAAa;KACtB,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,EAAE,CAAC,IAAI,CAAC,oBAAoB,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,IAAI,CAAC,eAAe,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IAC/E,EAAE,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,EAAE,CAAC,IAAI,CAAC,oCAAoC,2BAA2B,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5F,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,EAAE,CAAC,IAAI,CACL,GAAG,KAAK,CAAC,QAAQ,eAAe,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CACpG,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,78 @@
1
- import { confirm, intro, isCancel, outro, select, spinner, text } from '@clack/prompts';
1
+ import { confirm, intro, isCancel, multiselect, outro, select, spinner, text, } from '@clack/prompts';
2
2
  import { BUILTIN_AGENTS } from '../agents/builtin-agents.js';
3
- import { saveConfig, ensureCorydoraStructure } from '../config/files.js';
3
+ import { loadConfig, saveConfig, ensureCorydoraStructure } from '../config/files.js';
4
4
  import { getDefaultConfig } from '../config/schema.js';
5
- import { CONFIG_FILE_NAME } from '../constants.js';
6
- import { ensureGitignoreEntries } from '../filesystem/gitignore.js';
5
+ import { BUILTIN_TASK_CATEGORIES, CONFIG_FILE_NAME } from '../constants.js';
6
+ import { appendGitignoreEntries, findMissingGitignoreEntries } from '../filesystem/gitignore.js';
7
7
  import { detectProjectFingerprint } from '../filesystem/project.js';
8
8
  import { probeAvailableRuntimes } from '../providers/index.js';
9
+ import { configExists } from './helpers.js';
9
10
  function selectBuiltinAgents(projectTechLenses) {
10
11
  const matching = BUILTIN_AGENTS.filter((agent) => agent.techLenses.some((lens) => projectTechLenses.includes(lens)));
11
12
  return (matching.length > 0 ? matching : BUILTIN_AGENTS).map((agent) => agent.id);
12
13
  }
14
+ function categoriesForBuiltinAgents(selectedBuiltinAgents) {
15
+ const categories = new Set();
16
+ for (const agent of BUILTIN_AGENTS) {
17
+ if (!selectedBuiltinAgents.includes(agent.id)) {
18
+ continue;
19
+ }
20
+ for (const category of agent.categories) {
21
+ categories.add(category);
22
+ }
23
+ }
24
+ const ordered = BUILTIN_TASK_CATEGORIES.filter((category) => categories.has(category));
25
+ return ordered.length > 0 ? [...ordered] : ['bugs'];
26
+ }
27
+ function mergeInitConfig(options) {
28
+ const baseConfig = options.existingConfig ??
29
+ getDefaultConfig({
30
+ provider: options.provider,
31
+ model: options.model,
32
+ isolationMode: options.isolationMode,
33
+ selectedBuiltinAgents: options.selectedBuiltinAgents,
34
+ trackMarkdownQueues: options.trackMarkdownQueues,
35
+ backgroundByDefault: options.backgroundByDefault,
36
+ });
37
+ return {
38
+ ...baseConfig,
39
+ git: {
40
+ ...baseConfig.git,
41
+ isolationMode: options.isolationMode,
42
+ trackMarkdownQueues: options.trackMarkdownQueues,
43
+ },
44
+ runtime: {
45
+ ...baseConfig.runtime,
46
+ provider: options.provider,
47
+ model: options.model,
48
+ },
49
+ agents: {
50
+ ...baseConfig.agents,
51
+ selectedBuiltinAgents: options.selectedBuiltinAgents,
52
+ enabledCategories: options.enabledCategories,
53
+ },
54
+ execution: {
55
+ ...baseConfig.execution,
56
+ backgroundByDefault: options.backgroundByDefault,
57
+ },
58
+ };
59
+ }
60
+ function formatGitignoreGuidance(entries) {
61
+ return [
62
+ 'Corydora did not modify `.gitignore`.',
63
+ 'Add these entries yourself if you want generated files ignored:',
64
+ ...entries.map((entry) => `- ${entry}`),
65
+ ].join('\n');
66
+ }
13
67
  export async function runInitCommand(options, ui) {
68
+ const hasExistingConfig = configExists(options.projectRoot);
69
+ const existingConfig = hasExistingConfig ? await loadConfig(options.projectRoot) : null;
14
70
  const fingerprint = detectProjectFingerprint(options.projectRoot);
15
71
  const runtimeProbes = (await probeAvailableRuntimes(options.projectRoot)).filter((probe) => probe.provider !== 'fake');
16
72
  const recommendedRuntime = runtimeProbes.find((probe) => probe.recommended)?.provider ??
17
73
  runtimeProbes.find((probe) => probe.installed)?.provider ??
18
74
  'claude-cli';
75
+ const detectedBuiltinAgents = selectBuiltinAgents(fingerprint.techLenses);
19
76
  const interactive = !options.yes && !options.json && process.stdout.isTTY;
20
77
  if (interactive) {
21
78
  intro('Corydora init');
@@ -25,15 +82,18 @@ export async function runInitCommand(options, ui) {
25
82
  loading.start('Detecting runtimes and project shape');
26
83
  loading.stop(`Detected ${runtimeProbes.length} runtimes and ${fingerprint.frameworks.length} framework(s).`);
27
84
  }
28
- let provider = recommendedRuntime;
29
- let model = runtimeProbes.find((probe) => probe.provider === provider)?.models[0] ??
85
+ let provider = existingConfig?.runtime.provider ?? recommendedRuntime;
86
+ let model = existingConfig?.runtime.model ??
87
+ runtimeProbes.find((probe) => probe.provider === provider)?.models[0] ??
30
88
  getDefaultConfig({
31
89
  provider,
32
90
  selectedBuiltinAgents: ['bug-investigator'],
33
91
  }).runtime.model;
34
- let isolationMode = 'worktree';
35
- let trackMarkdownQueues = false;
36
- let backgroundByDefault = false;
92
+ let isolationMode = existingConfig?.git.isolationMode ?? 'worktree';
93
+ let trackMarkdownQueues = existingConfig?.git.trackMarkdownQueues ?? false;
94
+ let backgroundByDefault = existingConfig?.execution.backgroundByDefault ?? false;
95
+ const selectedBuiltinAgents = existingConfig?.agents.selectedBuiltinAgents ?? detectedBuiltinAgents;
96
+ let enabledCategories = existingConfig?.agents.enabledCategories ?? categoriesForBuiltinAgents(selectedBuiltinAgents);
37
97
  if (interactive) {
38
98
  const providerSelection = await select({
39
99
  message: 'Choose the default runtime',
@@ -70,9 +130,22 @@ export async function runInitCommand(options, ui) {
70
130
  throw new Error('Init cancelled.');
71
131
  }
72
132
  isolationMode = isolationSelection;
133
+ const categorySelection = await multiselect({
134
+ message: 'Choose which task categories Corydora may scan for',
135
+ options: BUILTIN_TASK_CATEGORIES.map((category) => ({
136
+ value: category,
137
+ label: category.charAt(0).toUpperCase() + category.slice(1),
138
+ })),
139
+ initialValues: enabledCategories,
140
+ required: true,
141
+ });
142
+ if (isCancel(categorySelection)) {
143
+ throw new Error('Init cancelled.');
144
+ }
145
+ enabledCategories = [...categorySelection];
73
146
  const trackQueuesAnswer = await confirm({
74
147
  message: 'Track markdown queue files in git?',
75
- initialValue: false,
148
+ initialValue: trackMarkdownQueues,
76
149
  });
77
150
  if (isCancel(trackQueuesAnswer)) {
78
151
  throw new Error('Init cancelled.');
@@ -80,30 +153,50 @@ export async function runInitCommand(options, ui) {
80
153
  trackMarkdownQueues = Boolean(trackQueuesAnswer);
81
154
  const backgroundAnswer = await confirm({
82
155
  message: 'Launch long runs in the background by default?',
83
- initialValue: false,
156
+ initialValue: backgroundByDefault,
84
157
  });
85
158
  if (isCancel(backgroundAnswer)) {
86
159
  throw new Error('Init cancelled.');
87
160
  }
88
161
  backgroundByDefault = Boolean(backgroundAnswer);
89
162
  }
90
- const config = getDefaultConfig({
163
+ const config = mergeInitConfig({
164
+ existingConfig,
91
165
  provider,
92
166
  model,
93
167
  isolationMode,
94
- selectedBuiltinAgents: selectBuiltinAgents(fingerprint.techLenses),
95
168
  trackMarkdownQueues,
96
169
  backgroundByDefault,
170
+ selectedBuiltinAgents,
171
+ enabledCategories,
97
172
  });
98
173
  await saveConfig(options.projectRoot, config);
99
174
  await ensureCorydoraStructure(options.projectRoot, config);
100
- await ensureGitignoreEntries(options.projectRoot, config.git.trackMarkdownQueues);
175
+ const missingGitignoreEntries = await findMissingGitignoreEntries(options.projectRoot, config.git.trackMarkdownQueues);
176
+ let gitignoreUpdated = false;
177
+ if (interactive && missingGitignoreEntries.length > 0) {
178
+ const updateGitignoreAnswer = await confirm({
179
+ message: 'Append recommended Corydora entries to `.gitignore`?',
180
+ initialValue: false,
181
+ });
182
+ if (isCancel(updateGitignoreAnswer)) {
183
+ throw new Error('Init cancelled.');
184
+ }
185
+ if (updateGitignoreAnswer) {
186
+ gitignoreUpdated = await appendGitignoreEntries(options.projectRoot, missingGitignoreEntries);
187
+ }
188
+ }
101
189
  const payload = {
102
190
  projectRoot: options.projectRoot,
103
191
  provider,
104
192
  model,
105
193
  isolationMode,
194
+ enabledCategories,
106
195
  fingerprint,
196
+ gitignore: {
197
+ modified: gitignoreUpdated,
198
+ missingEntries: gitignoreUpdated ? [] : missingGitignoreEntries,
199
+ },
107
200
  };
108
201
  if (options.json) {
109
202
  ui.printJson(payload);
@@ -112,6 +205,13 @@ export async function runInitCommand(options, ui) {
112
205
  ui.success(`Created ${CONFIG_FILE_NAME} and .corydora/ in ${options.projectRoot}`);
113
206
  ui.info(`Default runtime: ${provider} (${model})`);
114
207
  ui.info(`Isolation mode: ${isolationMode}`);
208
+ ui.info(`Categories: ${enabledCategories.join(', ')}`);
209
+ if (gitignoreUpdated) {
210
+ ui.info('Appended a Corydora block to `.gitignore`.');
211
+ }
212
+ else if (missingGitignoreEntries.length > 0) {
213
+ ui.warn(formatGitignoreGuidance(missingGitignoreEntries));
214
+ }
115
215
  outro('Corydora init complete.');
116
216
  }
117
217
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { CorydoraMode } from '../types/domain.js';
1
2
  import type { Ui } from '../ui/output.js';
2
3
  export interface RunCommandOptions {
3
4
  projectRoot: string;
@@ -8,5 +9,7 @@ export interface RunCommandOptions {
8
9
  resume?: boolean;
9
10
  sessionName?: string;
10
11
  skipCommitHooks?: boolean;
12
+ mode?: CorydoraMode;
13
+ agentIds?: string[];
11
14
  }
12
15
  export declare function runRunCommand(options: RunCommandOptions, ui: Ui): Promise<void>;
@@ -1,39 +1,64 @@
1
1
  import { basename } from 'node:path';
2
2
  import { listAgents } from '../agents/catalog.js';
3
3
  import { loadRequiredConfig } from './helpers.js';
4
- import { discoverCandidateFiles } from '../filesystem/discovery.js';
5
- import { loadRunState, loadTaskStore } from '../queue/state.js';
4
+ import { loadFileStore, loadTaskStore, reconcileFileStore } from '../queue/state.js';
6
5
  import { launchBackgroundRun, supportsTmux } from '../runtime/tmux.js';
7
6
  import { runCorydoraSession } from '../runtime/run-session.js';
8
- import { restoreSchedulerState, selectScanBatch } from '../runtime/scheduler.js';
7
+ import { buildFileQueue, resolveSelectedAgents } from '../runtime/modes.js';
8
+ import { detectProjectFingerprint } from '../filesystem/project.js';
9
+ function nextRunnableTaskTitle(taskStore) {
10
+ const task = taskStore.tasks.find((candidate) => ['queued', 'deferred'].includes(candidate.status));
11
+ return task?.title ?? null;
12
+ }
9
13
  export async function runRunCommand(options, ui) {
10
14
  const config = await loadRequiredConfig(options.projectRoot);
15
+ const mode = options.mode ?? config.modes.default;
16
+ const allAgents = await listAgents(options.projectRoot, config);
17
+ const fingerprint = detectProjectFingerprint(options.projectRoot);
18
+ const selectedAgents = resolveSelectedAgents({
19
+ allAgents,
20
+ config,
21
+ mode,
22
+ projectFingerprint: fingerprint,
23
+ ...(options.agentIds ? { overrideAgentIds: options.agentIds } : {}),
24
+ });
25
+ const selectedAgentIds = selectedAgents.map((agent) => agent.id);
11
26
  if (options.dryRun) {
12
- const [store, runState] = await Promise.all([
27
+ const [taskStore, existingFileStore] = await Promise.all([
13
28
  loadTaskStore(options.projectRoot, config),
14
- loadRunState(options.projectRoot, config),
29
+ loadFileStore(options.projectRoot, config),
15
30
  ]);
16
- const files = discoverCandidateFiles(options.projectRoot, {
17
- includeExtensions: config.scan.includeExtensions,
18
- excludeDirectories: config.scan.excludeDirectories,
19
- });
20
- const scheduler = restoreSchedulerState(runState?.scheduler, files);
21
- const nextScanBatch = selectScanBatch(scheduler, files, config.scan.batchSize);
22
- const nextTask = store.tasks.find((task) => task.status === 'pending' && (config.scan.allowBroadRisk || task.risk !== 'broad')) ?? null;
31
+ const fileStore = reconcileFileStore(existingFileStore, buildFileQueue({
32
+ projectRoot: options.projectRoot,
33
+ workRoot: options.projectRoot,
34
+ config,
35
+ mode,
36
+ taskStore,
37
+ }));
38
+ const nextFiles = fileStore.files
39
+ .filter((file) => ['queued', 'deferred'].includes(file.status))
40
+ .sort((left, right) => right.score.total - left.score.total)
41
+ .slice(0, Math.max(1, config.execution.maxAnalyzeWorkers))
42
+ .map((file) => file.path);
23
43
  const preview = {
24
44
  dryRun: true,
25
45
  provider: config.runtime.provider,
26
46
  model: config.runtime.model,
27
- nextScanBatch,
28
- nextTask,
47
+ mode,
48
+ selectedAgents: selectedAgentIds,
49
+ nextScanBatch: nextFiles,
50
+ nextAnalysisBatch: nextFiles,
51
+ nextTask: nextRunnableTaskTitle(taskStore),
29
52
  };
30
53
  if (options.json) {
31
54
  ui.printJson(preview);
32
55
  return;
33
56
  }
34
57
  ui.info(`Dry run preview for ${config.runtime.provider} (${config.runtime.model})`);
35
- ui.info(`Next scan batch: ${nextScanBatch.length > 0 ? nextScanBatch.join(', ') : 'none'}`);
36
- ui.info(`Next task: ${nextTask ? nextTask.title : 'none queued'}`);
58
+ ui.info(`Mode: ${mode}`);
59
+ ui.info(`Agents: ${selectedAgentIds.join(', ') || 'none selected'}`);
60
+ ui.info(`Next analysis batch: ${nextFiles.length > 0 ? nextFiles.join(', ') : 'none'}`);
61
+ ui.info(`Next task: ${preview.nextTask ?? 'none queued'}`);
37
62
  return;
38
63
  }
39
64
  const shouldBackground = !options.foreground && (Boolean(options.background) || config.execution.backgroundByDefault);
@@ -50,8 +75,10 @@ export async function runRunCommand(options, ui) {
50
75
  '--foreground',
51
76
  '--session-name',
52
77
  sessionName,
78
+ '--mode',
79
+ mode,
80
+ ...(selectedAgentIds.length > 0 ? ['--agent', selectedAgentIds.join(',')] : []),
53
81
  ...(options.resume ? ['--resume'] : []),
54
- ...(options.dryRun ? ['--dry-run'] : []),
55
82
  ...(options.skipCommitHooks ? ['--no-verify'] : []),
56
83
  ];
57
84
  const backgroundLaunch = launchBackgroundRun(sessionName, args, options.projectRoot, config.execution.preventIdleSleep);
@@ -65,13 +92,14 @@ export async function runRunCommand(options, ui) {
65
92
  }
66
93
  return;
67
94
  }
68
- const agents = await listAgents(options.projectRoot, config);
69
95
  const state = await runCorydoraSession({
70
96
  projectRoot: options.projectRoot,
71
97
  config,
72
- agents,
98
+ agents: selectedAgents,
73
99
  dryRun: Boolean(options.dryRun),
74
100
  resume: Boolean(options.resume),
101
+ mode,
102
+ selectedAgentIds,
75
103
  logToConsole: !options.json,
76
104
  skipCommitHooks: Boolean(options.skipCommitHooks),
77
105
  ...(options.sessionName ? { sessionName: options.sessionName } : {}),
@@ -82,7 +110,10 @@ export async function runRunCommand(options, ui) {
82
110
  }
83
111
  ui.success(`Run ${state.runId} finished with status "${state.status}".`);
84
112
  ui.info(`Provider: ${state.provider}`);
85
- ui.info(`Isolation mode: ${state.isolationMode}`);
113
+ ui.info(`Configured isolation: ${state.isolationMode}`);
114
+ ui.info(`Effective isolation: ${state.effectiveIsolationMode}`);
115
+ ui.info(`Mode: ${state.mode}`);
116
+ ui.info(`Agents: ${state.selectedAgentIds.join(', ') || 'none selected'}`);
86
117
  if (state.branchName) {
87
118
  ui.info(`Branch: ${state.branchName}`);
88
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}