@xn-intenton-z2a/agentic-lib 7.1.61 → 7.1.62

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.
@@ -90,11 +90,11 @@ jobs:
90
90
  action: ${{ steps.respond.outputs.action }}
91
91
  action-arg: ${{ steps.respond.outputs.action-arg }}
92
92
  steps:
93
- - uses: actions/checkout@v4
93
+ - uses: actions/checkout@v6
94
94
  with:
95
95
  fetch-depth: 0
96
96
 
97
- - uses: actions/setup-node@v4
97
+ - uses: actions/setup-node@v6
98
98
  with:
99
99
  node-version: "24"
100
100
 
@@ -106,9 +106,32 @@ jobs:
106
106
  working-directory: .github/agentic-lib/actions/agentic-step
107
107
  run: npm ci
108
108
 
109
+ - name: Read test command from config
110
+ id: config
111
+ shell: bash
112
+ run: |
113
+ if [ -f agentic-lib.toml ]; then
114
+ TEST_CMD=$(grep '^\s*test\s*=' agentic-lib.toml | head -1 | sed 's/.*=\s*"\([^"]*\)".*/\1/')
115
+ fi
116
+ echo "test-command=${TEST_CMD:-npm ci && npm test}" >> $GITHUB_OUTPUT
117
+
118
+ - name: Run tests before responding
119
+ id: tests
120
+ shell: bash
121
+ run: |
122
+ set +e
123
+ ${{ steps.config.outputs.test-command }}
124
+ EXIT_CODE=$?
125
+ set -e
126
+ if [ $EXIT_CODE -eq 0 ]; then
127
+ echo "result=pass" >> $GITHUB_OUTPUT
128
+ else
129
+ echo "result=fail" >> $GITHUB_OUTPUT
130
+ fi
131
+
109
132
  - name: Get discussion URL
110
133
  id: discussion-url
111
- uses: actions/github-script@v7
134
+ uses: actions/github-script@v8
112
135
  with:
113
136
  script: |
114
137
  let url = '${{ inputs.discussion-url }}' || '';
@@ -134,6 +157,7 @@ jobs:
134
157
  env:
135
158
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
136
159
  COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
160
+ TEST_RESULT: ${{ steps.tests.outputs.result }}
137
161
  with:
138
162
  task: "discussions"
139
163
  config: ${{ env.configPath }}
@@ -141,15 +141,15 @@ jobs:
141
141
  INIT_MISSION_SEED: ${{ needs.params.outputs.mission-seed }}
142
142
  INIT_MISSION_TEXT: ${{ needs.params.outputs.mission-text }}
143
143
  steps:
144
- - uses: actions/checkout@v4
144
+ - uses: actions/checkout@v6
145
145
  if: needs.params.outputs.dry-run == 'true'
146
- - uses: actions/checkout@v4
146
+ - uses: actions/checkout@v6
147
147
  if: needs.params.outputs.dry-run != 'true'
148
148
  with:
149
149
  ref: main
150
150
  token: ${{ secrets.WORKFLOW_TOKEN }}
151
151
 
152
- - uses: actions/setup-node@v4
152
+ - uses: actions/setup-node@v6
153
153
  with:
154
154
  node-version: "24"
155
155
 
@@ -204,7 +204,7 @@ jobs:
204
204
 
205
205
  - name: Update schedule (if requested)
206
206
  if: github.repository != 'xn-intenton-z2a/agentic-lib' && needs.params.outputs.schedule != '' && needs.params.outputs.dry-run != 'true'
207
- uses: actions/github-script@v7
207
+ uses: actions/github-script@v8
208
208
  with:
209
209
  script: |
210
210
  const fs = require('fs');
@@ -61,16 +61,16 @@ jobs:
61
61
  update-schedule:
62
62
  runs-on: ubuntu-latest
63
63
  steps:
64
- - uses: actions/checkout@v4
64
+ - uses: actions/checkout@v6
65
65
  if: inputs.dry-run == 'true' || inputs.dry-run == true
66
- - uses: actions/checkout@v4
66
+ - uses: actions/checkout@v6
67
67
  if: inputs.dry-run != 'true' && inputs.dry-run != true
68
68
  with:
69
69
  ref: main
70
70
  token: ${{ secrets.WORKFLOW_TOKEN }}
71
71
 
72
72
  - name: Update workflow schedule and model
73
- uses: actions/github-script@v7
73
+ uses: actions/github-script@v8
74
74
  with:
75
75
  script: |
76
76
  const fs = require('fs');
@@ -23,17 +23,25 @@ jobs:
23
23
  test:
24
24
  runs-on: ubuntu-latest
25
25
  steps:
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v6
27
27
 
28
- - uses: actions/setup-node@v4
28
+ - uses: actions/setup-node@v6
29
29
  with:
30
30
  node-version: 24
31
31
  cache: "npm"
32
32
 
33
- - run: npm ci
33
+ - name: Read test command from config
34
+ id: config
35
+ shell: bash
36
+ run: |
37
+ if [ -f agentic-lib.toml ]; then
38
+ TEST_CMD=$(grep '^\s*test\s*=' agentic-lib.toml | head -1 | sed 's/.*=\s*"\([^"]*\)".*/\1/')
39
+ fi
40
+ echo "test-command=${TEST_CMD:-npm ci && npm test}" >> $GITHUB_OUTPUT
34
41
 
35
42
  - name: Install sub-project dependencies (agentic-lib dev only)
36
43
  if: hashFiles('src/actions/agentic-step/package.json') != ''
37
44
  run: cd src/actions/agentic-step && npm ci
38
45
 
39
- - run: npm test
46
+ - name: Run tests
47
+ run: ${{ steps.config.outputs.test-command }}
@@ -154,7 +154,7 @@ jobs:
154
154
  steps:
155
155
  - name: PR cleanup
156
156
  if: github.repository != 'xn-intenton-z2a/agentic-lib' && needs.params.outputs.dry-run != 'true'
157
- uses: actions/github-script@v7
157
+ uses: actions/github-script@v8
158
158
  with:
159
159
  script: |
160
160
  const owner = context.repo.owner;
@@ -224,10 +224,10 @@ jobs:
224
224
  needs.params.outputs.mode == 'full' || needs.params.outputs.mode == 'dev-only' || needs.params.outputs.mode == 'review-only'
225
225
  runs-on: ubuntu-latest
226
226
  steps:
227
- - uses: actions/checkout@v4
227
+ - uses: actions/checkout@v6
228
228
  - name: Gather telemetry
229
229
  id: gather
230
- uses: actions/github-script@v7
230
+ uses: actions/github-script@v8
231
231
  with:
232
232
  script: |
233
233
  const fs = require('fs');
@@ -302,9 +302,9 @@ jobs:
302
302
  needs.params.result == 'success'
303
303
  runs-on: ubuntu-latest
304
304
  steps:
305
- - uses: actions/checkout@v4
305
+ - uses: actions/checkout@v6
306
306
 
307
- - uses: actions/setup-node@v4
307
+ - uses: actions/setup-node@v6
308
308
  with:
309
309
  node-version: "24"
310
310
 
@@ -337,11 +337,22 @@ jobs:
337
337
  needs.params.result == 'success'
338
338
  runs-on: ubuntu-latest
339
339
  steps:
340
- - uses: actions/checkout@v4
340
+ - uses: actions/checkout@v6
341
341
  with:
342
342
  fetch-depth: 0
343
343
 
344
- - uses: actions/setup-node@v4
344
+ - name: Check mission-complete signal
345
+ id: mission-check
346
+ run: |
347
+ if [ -f MISSION_COMPLETE.md ]; then
348
+ echo "mission-complete=true" >> $GITHUB_OUTPUT
349
+ echo "Mission is complete — skipping budget-consuming tasks"
350
+ cat MISSION_COMPLETE.md
351
+ else
352
+ echo "mission-complete=false" >> $GITHUB_OUTPUT
353
+ fi
354
+
355
+ - uses: actions/setup-node@v6
345
356
  with:
346
357
  node-version: "24"
347
358
 
@@ -364,6 +375,7 @@ jobs:
364
375
  echo "libraryWritablePaths=${LIBRARY};${SOURCES}" >> $GITHUB_OUTPUT
365
376
 
366
377
  - name: Maintain features
378
+ if: steps.mission-check.outputs.mission-complete != 'true'
367
379
  uses: ./.github/agentic-lib/actions/agentic-step
368
380
  env:
369
381
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -376,6 +388,7 @@ jobs:
376
388
  model: ${{ needs.params.outputs.model }}
377
389
 
378
390
  - name: Maintain library
391
+ if: steps.mission-check.outputs.mission-complete != 'true'
379
392
  uses: ./.github/agentic-lib/actions/agentic-step
380
393
  env:
381
394
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -403,11 +416,11 @@ jobs:
403
416
  needs.params.result == 'success'
404
417
  runs-on: ubuntu-latest
405
418
  steps:
406
- - uses: actions/checkout@v4
419
+ - uses: actions/checkout@v6
407
420
  with:
408
421
  fetch-depth: 0
409
422
 
410
- - uses: actions/setup-node@v4
423
+ - uses: actions/setup-node@v6
411
424
  with:
412
425
  node-version: "24"
413
426
 
@@ -422,8 +435,19 @@ jobs:
422
435
  working-directory: .github/agentic-lib/actions/agentic-step
423
436
  run: npm ci
424
437
 
438
+ - name: Check mission-complete signal
439
+ id: fix-mission-check
440
+ run: |
441
+ if [ -f MISSION_COMPLETE.md ]; then
442
+ echo "mission-complete=true" >> $GITHUB_OUTPUT
443
+ echo "Mission is complete — skipping fix-stuck"
444
+ else
445
+ echo "mission-complete=false" >> $GITHUB_OUTPUT
446
+ fi
447
+
425
448
  - name: Find and fix stuck PRs
426
- uses: actions/github-script@v7
449
+ if: steps.fix-mission-check.outputs.mission-complete != 'true'
450
+ uses: actions/github-script@v8
427
451
  env:
428
452
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
429
453
  with:
@@ -483,14 +507,14 @@ jobs:
483
507
  }
484
508
 
485
509
  - name: Checkout PR branch
486
- if: env.FIX_PR_NUMBER != ''
510
+ if: env.FIX_PR_NUMBER != '' && steps.fix-mission-check.outputs.mission-complete != 'true'
487
511
  run: |
488
512
  gh pr checkout ${{ env.FIX_PR_NUMBER }}
489
513
  env:
490
514
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
491
515
 
492
516
  - name: "Tier 1: Auto-resolve trivial merge conflicts"
493
- if: env.FIX_PR_NUMBER != '' && env.FIX_REASON == 'merge conflicts'
517
+ if: env.FIX_PR_NUMBER != '' && env.FIX_REASON == 'merge conflicts' && steps.fix-mission-check.outputs.mission-complete != 'true'
494
518
  id: trivial-resolve
495
519
  run: |
496
520
  git fetch origin main
@@ -522,6 +546,7 @@ jobs:
522
546
  - name: "Tier 2: LLM fix (conflicts or failing checks)"
523
547
  if: |
524
548
  env.FIX_PR_NUMBER != '' &&
549
+ steps.fix-mission-check.outputs.mission-complete != 'true' &&
525
550
  (env.FIX_REASON != 'merge conflicts' ||
526
551
  steps.trivial-resolve.outputs.resolved == 'none')
527
552
  uses: ./.github/agentic-lib/actions/agentic-step
@@ -534,11 +559,11 @@ jobs:
534
559
  config: ${{ needs.params.outputs.config-path }}
535
560
  instructions: ".github/agentic-lib/agents/agent-apply-fix.md"
536
561
  pr-number: ${{ env.FIX_PR_NUMBER }}
537
- test-command: "npm test"
562
+ # test-command read from [execution].test in agentic-lib.toml
538
563
  model: ${{ needs.params.outputs.model }}
539
564
 
540
565
  - name: Commit and push fixes
541
- if: github.repository != 'xn-intenton-z2a/agentic-lib' && env.FIX_PR_NUMBER != ''
566
+ if: github.repository != 'xn-intenton-z2a/agentic-lib' && env.FIX_PR_NUMBER != '' && steps.fix-mission-check.outputs.mission-complete != 'true'
542
567
  uses: ./.github/agentic-lib/actions/commit-if-changed
543
568
  with:
544
569
  commit-message: "agentic-step: fix failing tests / resolve conflicts"
@@ -552,9 +577,9 @@ jobs:
552
577
  needs.params.result == 'success'
553
578
  runs-on: ubuntu-latest
554
579
  steps:
555
- - uses: actions/checkout@v4
580
+ - uses: actions/checkout@v6
556
581
 
557
- - uses: actions/setup-node@v4
582
+ - uses: actions/setup-node@v6
558
583
  with:
559
584
  node-version: "24"
560
585
 
@@ -597,12 +622,12 @@ jobs:
597
622
  needs.params.result == 'success'
598
623
  runs-on: ubuntu-latest
599
624
  steps:
600
- - uses: actions/checkout@v4
625
+ - uses: actions/checkout@v6
601
626
  with:
602
627
  fetch-depth: 0
603
628
  token: ${{ secrets.GITHUB_TOKEN }}
604
629
 
605
- - uses: actions/setup-node@v4
630
+ - uses: actions/setup-node@v6
606
631
  with:
607
632
  node-version: "24"
608
633
 
@@ -631,9 +656,21 @@ jobs:
631
656
  DEPS=$(yq -r '.paths.dependenciesFilepath.path // "package.json"' "$CONFIG")
632
657
  echo "writablePaths=${SOURCE};${TESTS};${FEATURES};${DOCS};${LIBRARY};${SOURCES};${README};${DEPS}" >> $GITHUB_OUTPUT
633
658
 
659
+ - name: Check mission-complete signal
660
+ id: dev-mission-check
661
+ run: |
662
+ if [ -f MISSION_COMPLETE.md ]; then
663
+ echo "mission-complete=true" >> $GITHUB_OUTPUT
664
+ echo "Mission is complete — skipping dev transformation"
665
+ cat MISSION_COMPLETE.md
666
+ else
667
+ echo "mission-complete=false" >> $GITHUB_OUTPUT
668
+ fi
669
+
634
670
  - name: Find target issue
671
+ if: steps.dev-mission-check.outputs.mission-complete != 'true'
635
672
  id: issue
636
- uses: actions/github-script@v7
673
+ uses: actions/github-script@v8
637
674
  with:
638
675
  script: |
639
676
  const specificIssue = '${{ needs.params.outputs.issue-number }}';
@@ -673,7 +710,7 @@ jobs:
673
710
  task: "transform"
674
711
  config: ${{ needs.params.outputs.config-path }}
675
712
  instructions: ".github/agentic-lib/agents/agent-issue-resolution.md"
676
- test-command: "npm test"
713
+ # test-command read from [execution].test in agentic-lib.toml
677
714
  model: ${{ needs.params.outputs.model }}
678
715
  issue-number: ${{ steps.issue.outputs.issue-number }}
679
716
  writable-paths: ${{ steps.config.outputs.writablePaths }}
@@ -687,7 +724,7 @@ jobs:
687
724
 
688
725
  - name: Create PR and attempt merge
689
726
  if: github.repository != 'xn-intenton-z2a/agentic-lib' && steps.issue.outputs.issue-number != '' && needs.params.outputs.dry-run != 'true'
690
- uses: actions/github-script@v7
727
+ uses: actions/github-script@v8
691
728
  with:
692
729
  script: |
693
730
  const owner = context.repo.owner;
@@ -779,7 +816,7 @@ jobs:
779
816
  if: always() && needs.params.result == 'success'
780
817
  runs-on: ubuntu-latest
781
818
  steps:
782
- - uses: actions/checkout@v4
819
+ - uses: actions/checkout@v6
783
820
  with:
784
821
  fetch-depth: 0
785
822
 
package/README.md CHANGED
@@ -172,22 +172,37 @@ contributing = "CONTRIBUTING.md"
172
172
  library-sources = "SOURCES.md"
173
173
 
174
174
  [execution]
175
- build = "npm run build"
176
- test = "npm test"
177
- start = "npm run start"
175
+ test = "npm ci && npm test"
178
176
 
179
177
  [limits]
180
- feature-issues = 2
181
- maintenance-issues = 1
182
- attempts-per-branch = 3
183
- attempts-per-issue = 2
178
+ max-feature-issues = 2
179
+ max-maintenance-issues = 1
180
+ max-attempts-per-branch = 3
181
+ max-attempts-per-issue = 2
184
182
  features-limit = 4
185
183
  library-limit = 32
186
184
 
185
+ [tuning]
186
+ profile = "recommended" # min | recommended | max
187
+ # model = "gpt-5-mini" # override model per-profile
188
+ # transformation-budget = 8 # max code-changing cycles per run
189
+
187
190
  [bot]
188
191
  log-file = "intentïon.md"
189
192
  ```
190
193
 
194
+ ### Tuning Profiles
195
+
196
+ The `profile` setting controls all tuning defaults. Three profiles are built in:
197
+
198
+ | Profile | Budget | Source scan | Issues | Best for |
199
+ |---------|--------|-------------|--------|----------|
200
+ | `min` | 4 cycles | 3 files, 1000 chars | 5, 14d stale | CI testing, quick validation |
201
+ | `recommended` | 8 cycles | 10 files, 5000 chars | 20, 30d stale | Balanced cost/quality |
202
+ | `max` | 32 cycles | 50 files, 20000 chars | 100, 90d stale | Complex missions |
203
+
204
+ Override individual knobs in `[tuning]` to deviate from a profile. Limits (`[limits]`) also scale with the profile.
205
+
191
206
  The YAML config at `.github/agentic-lib/agents/agentic-lib.yml` is also supported as a fallback.
192
207
 
193
208
  ## The `agentic-step` Action
@@ -217,6 +232,7 @@ npx @xn-intenton-z2a/agentic-lib transform # advance code toward the
217
232
  npx @xn-intenton-z2a/agentic-lib maintain-features # generate feature files from mission
218
233
  npx @xn-intenton-z2a/agentic-lib maintain-library # update library docs from SOURCES.md
219
234
  npx @xn-intenton-z2a/agentic-lib fix-code # fix failing tests
235
+ npx @xn-intenton-z2a/agentic-lib iterate # run N cycles with budget tracking
220
236
  ```
221
237
 
222
238
  All task commands accept these flags:
@@ -226,6 +242,9 @@ All task commands accept these flags:
226
242
  | `--dry-run` | off | Show the prompt without calling the Copilot SDK |
227
243
  | `--target <path>` | current directory | Target repository to transform |
228
244
  | `--model <name>` | `claude-sonnet-4` | Copilot SDK model |
245
+ | `--cycles <N>` | from budget | Max iteration cycles (iterate only) |
246
+ | `--steps <list>` | all three | Comma-separated steps per cycle (iterate only) |
247
+ | `--mission <name>` | hamming-distance | Init with --purge before iterating (iterate only) |
229
248
 
230
249
  ### Example: Full Walkthrough
231
250
 
@@ -278,6 +297,28 @@ Use `--dry-run` to see what prompt would be sent without calling the SDK:
278
297
  npx @xn-intenton-z2a/agentic-lib transform --dry-run
279
298
  ```
280
299
 
300
+ ### Iterator
301
+
302
+ The `iterate` command runs multiple cycles of maintain → transform → fix with automatic stop conditions and budget tracking:
303
+
304
+ ```bash
305
+ # Init a mission and iterate with default budget
306
+ npx @xn-intenton-z2a/agentic-lib iterate --mission fizz-buzz --model gpt-5-mini
307
+
308
+ # Run 4 cycles on an existing workspace
309
+ npx @xn-intenton-z2a/agentic-lib iterate --cycles 4
310
+
311
+ # Transform-only cycles (skip maintain)
312
+ npx @xn-intenton-z2a/agentic-lib iterate --steps transform,fix-code --cycles 3
313
+ ```
314
+
315
+ **Stop conditions:**
316
+ - Tests pass for 2 consecutive cycles
317
+ - No files change for 2 consecutive cycles
318
+ - Transformation budget exhausted (configurable via `transformation-budget` in `agentic-lib.toml`)
319
+
320
+ Each cycle logs `**agentic-lib transformation cost:** 1` to `intentïon.md` when source files change. The iterator reads these to track cumulative cost against the budget.
321
+
281
322
  ### Environment
282
323
 
283
324
  | Variable | Required | Purpose |
@@ -301,6 +342,8 @@ Built-in safety mechanisms:
301
342
 
302
343
  - **WIP limits** -- maximum concurrent issues to prevent runaway generation
303
344
  - **Attempt limits** -- maximum retries per branch and per issue
345
+ - **Transformation budget** -- caps code-changing cycles per run (profile-scaled)
346
+ - **Mission-complete signal** -- `MISSION_COMPLETE.md` gates budget-consuming jobs without LLM calls
304
347
  - **Path enforcement** -- writable and read-only path separation
305
348
  - **TDD mode** -- optionally require tests before implementation
306
349
  - **Mission protection** -- MISSION.md is read-only to the agent
@@ -331,7 +374,7 @@ src/
331
374
 
332
375
  ### Testing
333
376
 
334
- 269 unit tests across 22 test files, plus system tests:
377
+ 393 unit tests across 26 test files, plus system tests:
335
378
 
336
379
  ```bash
337
380
  npm test # Run all tests (vitest)
package/agentic-lib.toml CHANGED
@@ -22,21 +22,20 @@ contributing = "test/CONTRIBUTING.md" #@dist "CONTRIBUTING.md"
22
22
  library-sources = "test/SOURCES.md" #@dist "SOURCES.md"
23
23
 
24
24
  [execution]
25
- build = "npm run build"
26
- test = "npm test"
27
- start = "npm run start"
25
+ test = "npm ci && npm test"
28
26
 
29
27
  [limits]
30
- feature-issues = 2
31
- maintenance-issues = 1
32
- attempts-per-branch = 3
33
- attempts-per-issue = 2
34
- features-limit = 2
35
- library-limit = 32
28
+ # Override profile defaults here. Omit to use the active profile's values.
29
+ # max-feature-issues = 2
30
+ # max-maintenance-issues = 1
31
+ # max-attempts-per-branch = 3
32
+ # max-attempts-per-issue = 2
33
+ # features-limit = 2
34
+ # library-limit = 32
36
35
 
37
36
  [tuning]
38
- # Profile sets defaults for all tuning knobs: min | recommended | max
39
- # min = fast & cheap (CI testing), recommended = balanced, max = thorough
37
+ # Profile sets defaults for all tuning and limit knobs: min | recommended | max
38
+ # Profile definitions live in [profiles.*] sections below.
40
39
  profile = "min" #@dist "recommended"
41
40
  #
42
41
  # Model selection — each has different strengths:
@@ -50,12 +49,84 @@ model = "gpt-5-mini"
50
49
  # Override individual knobs below. Omit or comment out to use profile defaults.
51
50
  # reasoning-effort = "low" # low | medium | high | none (none = disable entirely)
52
51
  infinite-sessions = false # set to true for long sessions with compaction
53
- # features-scan = 3 # feature files to include in prompts
54
- # source-scan = 3 # source files to include
55
- # source-content = 1000 # max chars per source file
56
- # issues-scan = 5 # open issues to include
57
- # document-summary = 500 # max chars for document summaries
58
- # discussion-comments = 5 # discussion comments to include
52
+ # transformation-budget = 4 # max code-changing cycles per run (0 = unlimited)
53
+ # max-feature-files = 3
54
+ # max-source-files = 3
55
+ # max-source-chars = 1000
56
+ # max-test-chars = 500
57
+ # max-issues = 5
58
+ # issue-body-limit = 200
59
+ # stale-days = 14
60
+ # max-summary-chars = 500
61
+ # max-discussion-comments = 5
62
+
63
+ # ─── Profile Definitions ────────────────────────────────────────────
64
+ # Each profile defines tuning and limits defaults. The active profile
65
+ # is set by [tuning].profile above. Override individual values in
66
+ # [tuning] or [limits] to deviate from the active profile.
67
+
68
+ [profiles.min]
69
+ # Fast & cheap — CI testing, quick validation, budget-conscious iteration.
70
+ reasoning-effort = "low" # low | medium | high | none
71
+ infinite-sessions = false # enable session compaction for long runs
72
+ transformation-budget = 4 # max code-changing cycles per run
73
+ max-feature-files = 3 # max feature files included in prompts
74
+ max-source-files = 3 # max source files included in prompts
75
+ max-source-chars = 1000 # max chars of each source file's content included in prompts
76
+ max-test-chars = 500 # max chars of each test file's content included in prompts
77
+ max-issues = 5 # max open issues included in prompts
78
+ issue-body-limit = 200 # max chars of each issue's body text included in prompts
79
+ stale-days = 14 # days since last activity before an issue is considered stale and excluded
80
+ max-summary-chars = 500 # max chars of each document's summary included in prompts
81
+ max-discussion-comments = 5 # max recent discussion comments (newest first) included in prompts
82
+ max-feature-issues = 1 # max concurrent feature development issues
83
+ max-maintenance-issues = 1 # max concurrent maintenance issues
84
+ max-attempts-per-branch = 2 # max transform attempts before abandoning a branch
85
+ max-attempts-per-issue = 1 # max transform attempts before abandoning an issue
86
+ features-limit = 2 # max feature files in features/ directory
87
+ library-limit = 8 # max library entries in library/ directory
88
+
89
+ [profiles.recommended]
90
+ # Balanced — good results without excessive cost. Default for consumer repos.
91
+ reasoning-effort = "medium" # low | medium | high | none
92
+ infinite-sessions = true # enable session compaction for long runs
93
+ transformation-budget = 8 # max code-changing cycles per run
94
+ max-feature-files = 10 # max feature files included in prompts
95
+ max-source-files = 10 # max source files included in prompts
96
+ max-source-chars = 5000 # max chars of each source file's content included in prompts
97
+ max-test-chars = 3000 # max chars of each test file's content included in prompts
98
+ max-issues = 20 # max open issues included in prompts
99
+ issue-body-limit = 500 # max chars of each issue's body text included in prompts
100
+ stale-days = 30 # days since last activity before an issue is considered stale and excluded
101
+ max-summary-chars = 2000 # max chars of each document's summary included in prompts
102
+ max-discussion-comments = 10 # max recent discussion comments (newest first) included in prompts
103
+ max-feature-issues = 2 # max concurrent feature development issues
104
+ max-maintenance-issues = 1 # max concurrent maintenance issues
105
+ max-attempts-per-branch = 3 # max transform attempts before abandoning a branch
106
+ max-attempts-per-issue = 2 # max transform attempts before abandoning an issue
107
+ features-limit = 4 # max feature files in features/ directory
108
+ library-limit = 32 # max library entries in library/ directory
109
+
110
+ [profiles.max]
111
+ # Thorough — maximum context, highest quality. For complex missions.
112
+ reasoning-effort = "high" # low | medium | high | none
113
+ infinite-sessions = true # enable session compaction for long runs
114
+ transformation-budget = 32 # max code-changing cycles per run
115
+ max-feature-files = 50 # max feature files included in prompts
116
+ max-source-files = 50 # max source files included in prompts
117
+ max-source-chars = 20000 # max chars of each source file's content included in prompts
118
+ max-test-chars = 15000 # max chars of each test file's content included in prompts
119
+ max-issues = 100 # max open issues included in prompts
120
+ issue-body-limit = 2000 # max chars of each issue's body text included in prompts
121
+ stale-days = 90 # days since last activity before an issue is considered stale and excluded
122
+ max-summary-chars = 10000 # max chars of each document's summary included in prompts
123
+ max-discussion-comments = 25 # max recent discussion comments (newest first) included in prompts
124
+ max-feature-issues = 4 # max concurrent feature development issues
125
+ max-maintenance-issues = 2 # max concurrent maintenance issues
126
+ max-attempts-per-branch = 5 # max transform attempts before abandoning a branch
127
+ max-attempts-per-issue = 4 # max transform attempts before abandoning an issue
128
+ features-limit = 8 # max feature files in features/ directory
129
+ library-limit = 64 # max library entries in library/ directory
59
130
 
60
131
  [bot]
61
132
  log-file = "test/intentïon.md" #@dist "intentïon.md"