@xn-intenton-z2a/agentic-lib 7.1.54 → 7.1.55
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.
- package/{src → .github}/workflows/agentic-lib-bot.yml +39 -14
- package/{src/seeds → .github/workflows}/agentic-lib-init.yml +49 -6
- package/{src → .github}/workflows/agentic-lib-schedule.yml +16 -0
- package/{src/seeds → .github/workflows}/agentic-lib-test.yml +11 -4
- package/{src → .github}/workflows/agentic-lib-workflow.yml +80 -20
- package/agentic-lib.toml +39 -0
- package/bin/agentic-lib.js +32 -28
- package/package.json +4 -2
- package/src/actions/commit-if-changed/action.yml +15 -7
- package/src/dist-transform.js +36 -0
- package/src/seeds/zero-SOURCES.md +2 -0
- package/src/seeds/zero-package.json +1 -1
- package/src/seeds/zero-agentic-lib.toml +0 -39
|
@@ -5,24 +5,37 @@
|
|
|
5
5
|
# Discussions bot: responds to GitHub Discussions using the Copilot SDK.
|
|
6
6
|
# Checks thread + repo context, responds, and can escalate to the main
|
|
7
7
|
# workflow by dispatching agentic-lib-workflow.yml with a message parameter.
|
|
8
|
+
#
|
|
9
|
+
# In agentic-lib: discussion triggers are commented out, dry-run defaults to true.
|
|
10
|
+
# During init: #@dist restores triggers and sets dry-run to false.
|
|
8
11
|
|
|
9
12
|
name: agentic-lib-bot
|
|
10
13
|
run-name: "agentic-lib-bot [${{ github.ref_name }}]"
|
|
11
|
-
concurrency:
|
|
12
|
-
group: agentic-lib-bot-${{ github.event.discussion.node_id || github.run_id }}
|
|
13
|
-
cancel-in-progress: false
|
|
14
|
+
#concurrency:
|
|
15
|
+
# group: agentic-lib-bot-${{ github.event.discussion.node_id || github.run_id }}
|
|
16
|
+
# cancel-in-progress: false
|
|
14
17
|
|
|
15
18
|
on:
|
|
16
|
-
discussion:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
discussion_comment:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
#@dist discussion:
|
|
20
|
+
#@dist types:
|
|
21
|
+
#@dist - created
|
|
22
|
+
#@dist - edited
|
|
23
|
+
#@dist - answered
|
|
24
|
+
#@dist - unanswered
|
|
25
|
+
#@dist discussion_comment:
|
|
26
|
+
#@dist types:
|
|
27
|
+
#@dist - created
|
|
28
|
+
#@dist - edited
|
|
29
|
+
workflow_call:
|
|
30
|
+
inputs:
|
|
31
|
+
discussion-url:
|
|
32
|
+
type: string
|
|
33
|
+
required: false
|
|
34
|
+
default: ""
|
|
35
|
+
model:
|
|
36
|
+
type: string
|
|
37
|
+
required: false
|
|
38
|
+
default: "gpt-5-mini"
|
|
26
39
|
workflow_dispatch:
|
|
27
40
|
inputs:
|
|
28
41
|
discussion-url:
|
|
@@ -39,6 +52,11 @@ on:
|
|
|
39
52
|
- gpt-5-mini
|
|
40
53
|
- claude-sonnet-4
|
|
41
54
|
- gpt-4.1
|
|
55
|
+
dry-run:
|
|
56
|
+
description: "Skip all push/PR/merge operations"
|
|
57
|
+
type: boolean
|
|
58
|
+
required: false
|
|
59
|
+
default: true #@dist false
|
|
42
60
|
|
|
43
61
|
permissions:
|
|
44
62
|
contents: read
|
|
@@ -47,7 +65,7 @@ permissions:
|
|
|
47
65
|
actions: write
|
|
48
66
|
|
|
49
67
|
env:
|
|
50
|
-
configPath: "
|
|
68
|
+
configPath: "agentic-lib.toml"
|
|
51
69
|
|
|
52
70
|
jobs:
|
|
53
71
|
params:
|
|
@@ -59,8 +77,11 @@ jobs:
|
|
|
59
77
|
run: |
|
|
60
78
|
MODEL='${{ inputs.model }}'
|
|
61
79
|
echo "model=${MODEL:-gpt-5-mini}" >> $GITHUB_OUTPUT
|
|
80
|
+
DRY_RUN='${{ inputs.dry-run }}'
|
|
81
|
+
echo "dry-run=${DRY_RUN:-true}" >> $GITHUB_OUTPUT
|
|
62
82
|
outputs:
|
|
63
83
|
model: ${{ steps.normalise.outputs.model }}
|
|
84
|
+
dry-run: ${{ steps.normalise.outputs.dry-run }}
|
|
64
85
|
|
|
65
86
|
respond:
|
|
66
87
|
needs: params
|
|
@@ -74,6 +95,10 @@ jobs:
|
|
|
74
95
|
with:
|
|
75
96
|
node-version: "24"
|
|
76
97
|
|
|
98
|
+
- name: Self-init (agentic-lib dev only)
|
|
99
|
+
if: hashFiles('scripts/self-init.sh') != '' && hashFiles('.github/agentic-lib/actions/agentic-step/package.json') == ''
|
|
100
|
+
run: bash scripts/self-init.sh
|
|
101
|
+
|
|
77
102
|
- name: Install agentic-step dependencies
|
|
78
103
|
working-directory: .github/agentic-lib/actions/agentic-step
|
|
79
104
|
run: npm ci
|
|
@@ -5,13 +5,42 @@
|
|
|
5
5
|
# Self-contained init: update agentic-lib, purge, push to main [skip ci].
|
|
6
6
|
# Does NOT create a PR. Does NOT trigger any other workflow.
|
|
7
7
|
# Closes hanging init PRs before running.
|
|
8
|
+
#
|
|
9
|
+
# In agentic-lib: schedule trigger is commented out.
|
|
10
|
+
# During init: #@dist restores the schedule.
|
|
8
11
|
|
|
9
12
|
name: agentic-lib-init
|
|
10
13
|
run-name: "agentic-lib-init [${{ github.ref_name }}]"
|
|
11
14
|
|
|
12
15
|
on:
|
|
13
|
-
schedule:
|
|
14
|
-
|
|
16
|
+
#@dist schedule:
|
|
17
|
+
#@dist - cron: "0 5 * * *"
|
|
18
|
+
workflow_call:
|
|
19
|
+
inputs:
|
|
20
|
+
mode:
|
|
21
|
+
type: string
|
|
22
|
+
required: false
|
|
23
|
+
default: "update"
|
|
24
|
+
dry-run:
|
|
25
|
+
type: string
|
|
26
|
+
required: false
|
|
27
|
+
default: "false"
|
|
28
|
+
mission-seed:
|
|
29
|
+
type: string
|
|
30
|
+
required: false
|
|
31
|
+
default: "hamming-distance"
|
|
32
|
+
mission-text:
|
|
33
|
+
type: string
|
|
34
|
+
required: false
|
|
35
|
+
default: ""
|
|
36
|
+
schedule:
|
|
37
|
+
type: string
|
|
38
|
+
required: false
|
|
39
|
+
default: ""
|
|
40
|
+
model:
|
|
41
|
+
type: string
|
|
42
|
+
required: false
|
|
43
|
+
default: ""
|
|
15
44
|
workflow_dispatch:
|
|
16
45
|
inputs:
|
|
17
46
|
mode:
|
|
@@ -113,6 +142,9 @@ jobs:
|
|
|
113
142
|
INIT_MISSION_TEXT: ${{ needs.params.outputs.mission-text }}
|
|
114
143
|
steps:
|
|
115
144
|
- uses: actions/checkout@v4
|
|
145
|
+
if: needs.params.outputs.dry-run == 'true'
|
|
146
|
+
- uses: actions/checkout@v4
|
|
147
|
+
if: needs.params.outputs.dry-run != 'true'
|
|
116
148
|
with:
|
|
117
149
|
ref: main
|
|
118
150
|
token: ${{ secrets.WORKFLOW_TOKEN }}
|
|
@@ -122,7 +154,7 @@ jobs:
|
|
|
122
154
|
node-version: "24"
|
|
123
155
|
|
|
124
156
|
- name: Close hanging init PRs
|
|
125
|
-
if: env.INIT_MODE == 'purge'
|
|
157
|
+
if: env.INIT_MODE == 'purge' && needs.params.outputs.dry-run != 'true'
|
|
126
158
|
env:
|
|
127
159
|
GH_TOKEN: ${{ secrets.WORKFLOW_TOKEN }}
|
|
128
160
|
run: |
|
|
@@ -145,10 +177,15 @@ jobs:
|
|
|
145
177
|
if [ "$INIT_MODE" = "reseed" ]; then FLAGS="$FLAGS --reseed"; fi
|
|
146
178
|
if [ "$INIT_MODE" = "purge" ]; then FLAGS="$FLAGS --purge --mission $INIT_MISSION_SEED"; fi
|
|
147
179
|
if [ "$INIT_DRY_RUN" = "true" ]; then FLAGS="$FLAGS --dry-run"; fi
|
|
148
|
-
|
|
180
|
+
# Use local CLI if available (agentic-lib dev), otherwise npx
|
|
181
|
+
if [ -f "bin/agentic-lib.js" ]; then
|
|
182
|
+
node bin/agentic-lib.js $FLAGS
|
|
183
|
+
else
|
|
184
|
+
npx @xn-intenton-z2a/agentic-lib $FLAGS
|
|
185
|
+
fi
|
|
149
186
|
|
|
150
187
|
- name: Write mission text (if provided, overrides seed)
|
|
151
|
-
if: env.INIT_MISSION_TEXT != ''
|
|
188
|
+
if: env.INIT_MISSION_TEXT != '' && needs.params.outputs.dry-run != 'true'
|
|
152
189
|
run: |
|
|
153
190
|
printf '# Mission\n\n%s\n' "$INIT_MISSION_TEXT" > MISSION.md
|
|
154
191
|
echo "Wrote custom mission text to MISSION.md"
|
|
@@ -156,12 +193,17 @@ jobs:
|
|
|
156
193
|
- run: npm install
|
|
157
194
|
|
|
158
195
|
- name: Install agentic-step deps
|
|
196
|
+
if: hashFiles('.github/agentic-lib/actions/agentic-step/package.json') != ''
|
|
159
197
|
run: cd .github/agentic-lib/actions/agentic-step && npm ci
|
|
160
198
|
|
|
199
|
+
- name: Install sub-project dependencies (agentic-lib dev only)
|
|
200
|
+
if: hashFiles('src/actions/agentic-step/package.json') != ''
|
|
201
|
+
run: cd src/actions/agentic-step && npm ci
|
|
202
|
+
|
|
161
203
|
- run: npm test
|
|
162
204
|
|
|
163
205
|
- name: Update schedule (if requested)
|
|
164
|
-
if: needs.params.outputs.schedule != ''
|
|
206
|
+
if: needs.params.outputs.schedule != '' && needs.params.outputs.dry-run != 'true'
|
|
165
207
|
uses: actions/github-script@v7
|
|
166
208
|
with:
|
|
167
209
|
script: |
|
|
@@ -213,6 +255,7 @@ jobs:
|
|
|
213
255
|
}
|
|
214
256
|
|
|
215
257
|
- name: Commit and push to main [skip ci]
|
|
258
|
+
if: needs.params.outputs.dry-run != 'true'
|
|
216
259
|
env:
|
|
217
260
|
GH_TOKEN: ${{ secrets.WORKFLOW_TOKEN }}
|
|
218
261
|
run: |
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
#
|
|
5
5
|
# Changes the agentic-lib-workflow's cron schedule by editing the workflow file
|
|
6
6
|
# directly and pushing to main. Also updates the model setting in agentic-lib.toml.
|
|
7
|
+
#
|
|
8
|
+
# No trigger changes needed — uses workflow_call and workflow_dispatch only.
|
|
7
9
|
|
|
8
10
|
name: agentic-lib-schedule
|
|
9
11
|
run-name: "agentic-lib-schedule -> ${{ inputs.frequency }} (${{ inputs.model }})"
|
|
@@ -20,6 +22,11 @@ on:
|
|
|
20
22
|
required: false
|
|
21
23
|
type: string
|
|
22
24
|
default: "gpt-5-mini"
|
|
25
|
+
dry-run:
|
|
26
|
+
description: "Skip commit and push"
|
|
27
|
+
required: false
|
|
28
|
+
type: string
|
|
29
|
+
default: "false"
|
|
23
30
|
workflow_dispatch:
|
|
24
31
|
inputs:
|
|
25
32
|
frequency:
|
|
@@ -41,6 +48,11 @@ on:
|
|
|
41
48
|
- gpt-5-mini
|
|
42
49
|
- claude-sonnet-4
|
|
43
50
|
- gpt-4.1
|
|
51
|
+
dry-run:
|
|
52
|
+
description: "Skip commit and push"
|
|
53
|
+
type: boolean
|
|
54
|
+
required: false
|
|
55
|
+
default: false
|
|
44
56
|
|
|
45
57
|
permissions:
|
|
46
58
|
contents: write
|
|
@@ -50,6 +62,9 @@ jobs:
|
|
|
50
62
|
runs-on: ubuntu-latest
|
|
51
63
|
steps:
|
|
52
64
|
- uses: actions/checkout@v4
|
|
65
|
+
if: inputs.dry-run == 'true' || inputs.dry-run == true
|
|
66
|
+
- uses: actions/checkout@v4
|
|
67
|
+
if: inputs.dry-run != 'true' && inputs.dry-run != true
|
|
53
68
|
with:
|
|
54
69
|
ref: main
|
|
55
70
|
token: ${{ secrets.WORKFLOW_TOKEN }}
|
|
@@ -131,6 +146,7 @@ jobs:
|
|
|
131
146
|
}
|
|
132
147
|
|
|
133
148
|
- name: Commit and push
|
|
149
|
+
if: inputs.dry-run != 'true' && inputs.dry-run != true
|
|
134
150
|
env:
|
|
135
151
|
GH_TOKEN: ${{ secrets.WORKFLOW_TOKEN }}
|
|
136
152
|
run: |
|
|
@@ -4,15 +4,18 @@
|
|
|
4
4
|
#
|
|
5
5
|
# Test workflow seeded by agentic-lib init.
|
|
6
6
|
# Also callable via workflow_call from the main pipeline.
|
|
7
|
+
#
|
|
8
|
+
# In agentic-lib: push/pull_request triggers are commented out.
|
|
9
|
+
# During init: #@dist restores them.
|
|
7
10
|
|
|
8
11
|
name: agentic-lib-test
|
|
9
12
|
run-name: "agentic-lib-test [${{ github.ref_name }}]"
|
|
10
13
|
|
|
11
14
|
on:
|
|
12
|
-
push:
|
|
13
|
-
|
|
14
|
-
pull_request:
|
|
15
|
-
|
|
15
|
+
#@dist push:
|
|
16
|
+
#@dist branches: [main]
|
|
17
|
+
#@dist pull_request:
|
|
18
|
+
#@dist branches: [main]
|
|
16
19
|
workflow_call:
|
|
17
20
|
workflow_dispatch:
|
|
18
21
|
|
|
@@ -29,4 +32,8 @@ jobs:
|
|
|
29
32
|
|
|
30
33
|
- run: npm ci
|
|
31
34
|
|
|
35
|
+
- name: Install sub-project dependencies (agentic-lib dev only)
|
|
36
|
+
if: hashFiles('src/actions/agentic-step/package.json') != ''
|
|
37
|
+
run: cd src/actions/agentic-step && npm ci
|
|
38
|
+
|
|
32
39
|
- run: npm test
|
|
@@ -5,16 +5,37 @@
|
|
|
5
5
|
# Main autonomous pipeline: supervisor + maintain + review + dev + PR cleanup.
|
|
6
6
|
# Replaces agent-supervisor, agent-flow-transform, agent-flow-review,
|
|
7
7
|
# agent-flow-maintain, agent-flow-fix-code, and ci-automerge.
|
|
8
|
+
#
|
|
9
|
+
# In agentic-lib: schedule is commented out, dry-run defaults to true.
|
|
10
|
+
# During init: #@dist restores schedule and sets dry-run to false.
|
|
8
11
|
|
|
9
12
|
name: agentic-lib-workflow
|
|
10
13
|
run-name: "agentic-lib-workflow [${{ github.ref_name }}]"
|
|
11
|
-
concurrency:
|
|
12
|
-
group: agentic-lib-workflow
|
|
13
|
-
cancel-in-progress: false
|
|
14
|
+
#concurrency:
|
|
15
|
+
# group: agentic-lib-workflow
|
|
16
|
+
# cancel-in-progress: false
|
|
14
17
|
|
|
15
18
|
on:
|
|
16
|
-
schedule:
|
|
17
|
-
|
|
19
|
+
#@dist schedule:
|
|
20
|
+
#@dist - cron: "0 6 * * 1"
|
|
21
|
+
workflow_call:
|
|
22
|
+
inputs:
|
|
23
|
+
model:
|
|
24
|
+
type: string
|
|
25
|
+
required: false
|
|
26
|
+
default: "gpt-5-mini"
|
|
27
|
+
mode:
|
|
28
|
+
type: string
|
|
29
|
+
required: false
|
|
30
|
+
default: "full"
|
|
31
|
+
dry-run:
|
|
32
|
+
type: string
|
|
33
|
+
required: false
|
|
34
|
+
default: "true"
|
|
35
|
+
config-path:
|
|
36
|
+
type: string
|
|
37
|
+
required: false
|
|
38
|
+
default: ""
|
|
18
39
|
workflow_dispatch:
|
|
19
40
|
inputs:
|
|
20
41
|
model:
|
|
@@ -64,6 +85,11 @@ on:
|
|
|
64
85
|
type: string
|
|
65
86
|
required: false
|
|
66
87
|
default: ""
|
|
88
|
+
dry-run:
|
|
89
|
+
description: "Skip all push/PR/merge operations"
|
|
90
|
+
type: boolean
|
|
91
|
+
required: false
|
|
92
|
+
default: true #@dist false
|
|
67
93
|
|
|
68
94
|
permissions:
|
|
69
95
|
actions: write
|
|
@@ -74,7 +100,7 @@ permissions:
|
|
|
74
100
|
discussions: write
|
|
75
101
|
|
|
76
102
|
env:
|
|
77
|
-
configPath: "
|
|
103
|
+
configPath: "agentic-lib.toml"
|
|
78
104
|
maxFixAttempts: "3"
|
|
79
105
|
stalePrDays: "3"
|
|
80
106
|
|
|
@@ -98,6 +124,10 @@ jobs:
|
|
|
98
124
|
echo "schedule=${SCHEDULE}" >> $GITHUB_OUTPUT
|
|
99
125
|
PR='${{ inputs.pr-number }}'
|
|
100
126
|
echo "pr-number=${PR}" >> $GITHUB_OUTPUT
|
|
127
|
+
DRY_RUN='${{ inputs.dry-run }}'
|
|
128
|
+
echo "dry-run=${DRY_RUN:-true}" >> $GITHUB_OUTPUT
|
|
129
|
+
CONFIG='${{ inputs.config-path }}'
|
|
130
|
+
echo "config-path=${CONFIG:-${{ env.configPath }}}" >> $GITHUB_OUTPUT
|
|
101
131
|
outputs:
|
|
102
132
|
model: ${{ steps.normalise.outputs.model }}
|
|
103
133
|
mode: ${{ steps.normalise.outputs.mode }}
|
|
@@ -105,11 +135,15 @@ jobs:
|
|
|
105
135
|
issue-number: ${{ steps.normalise.outputs.issue-number }}
|
|
106
136
|
schedule: ${{ steps.normalise.outputs.schedule }}
|
|
107
137
|
pr-number: ${{ steps.normalise.outputs.pr-number }}
|
|
138
|
+
dry-run: ${{ steps.normalise.outputs.dry-run }}
|
|
139
|
+
config-path: ${{ steps.normalise.outputs.config-path }}
|
|
108
140
|
|
|
109
141
|
# ─── PR Cleanup: merge/close/delete stale PRs and branches ─────────
|
|
110
142
|
pr-cleanup:
|
|
111
143
|
needs: params
|
|
112
|
-
if:
|
|
144
|
+
if: |
|
|
145
|
+
needs.params.outputs.dry-run != 'true' &&
|
|
146
|
+
(needs.params.outputs.mode == 'full' || needs.params.outputs.mode == 'pr-cleanup-only')
|
|
113
147
|
runs-on: ubuntu-latest
|
|
114
148
|
steps:
|
|
115
149
|
- name: PR cleanup
|
|
@@ -194,7 +228,9 @@ jobs:
|
|
|
194
228
|
# ─── Telemetry: gather repo state for supervisor ───────────────────
|
|
195
229
|
telemetry:
|
|
196
230
|
needs: params
|
|
197
|
-
if:
|
|
231
|
+
if: |
|
|
232
|
+
needs.params.outputs.dry-run != 'true' &&
|
|
233
|
+
(needs.params.outputs.mode == 'full' || needs.params.outputs.mode == 'dev-only' || needs.params.outputs.mode == 'review-only')
|
|
198
234
|
runs-on: ubuntu-latest
|
|
199
235
|
steps:
|
|
200
236
|
- uses: actions/checkout@v4
|
|
@@ -271,6 +307,7 @@ jobs:
|
|
|
271
307
|
needs: [params, pr-cleanup, telemetry]
|
|
272
308
|
if: |
|
|
273
309
|
always() &&
|
|
310
|
+
needs.params.outputs.dry-run != 'true' &&
|
|
274
311
|
(needs.params.outputs.mode == 'full' || needs.params.outputs.mode == 'dev-only') &&
|
|
275
312
|
needs.params.result == 'success'
|
|
276
313
|
runs-on: ubuntu-latest
|
|
@@ -281,6 +318,10 @@ jobs:
|
|
|
281
318
|
with:
|
|
282
319
|
node-version: "24"
|
|
283
320
|
|
|
321
|
+
- name: Self-init (agentic-lib dev only)
|
|
322
|
+
if: hashFiles('scripts/self-init.sh') != '' && hashFiles('.github/agentic-lib/actions/agentic-step/package.json') == ''
|
|
323
|
+
run: bash scripts/self-init.sh
|
|
324
|
+
|
|
284
325
|
- name: Install agentic-step dependencies
|
|
285
326
|
working-directory: .github/agentic-lib/actions/agentic-step
|
|
286
327
|
run: npm ci
|
|
@@ -292,7 +333,7 @@ jobs:
|
|
|
292
333
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
293
334
|
with:
|
|
294
335
|
task: "supervise"
|
|
295
|
-
config: ${{
|
|
336
|
+
config: ${{ needs.params.outputs.config-path }}
|
|
296
337
|
instructions: ".github/agentic-lib/agents/agent-supervisor.md"
|
|
297
338
|
model: ${{ needs.params.outputs.model }}
|
|
298
339
|
|
|
@@ -313,6 +354,10 @@ jobs:
|
|
|
313
354
|
with:
|
|
314
355
|
node-version: "24"
|
|
315
356
|
|
|
357
|
+
- name: Self-init (agentic-lib dev only)
|
|
358
|
+
if: hashFiles('scripts/self-init.sh') != '' && hashFiles('.github/agentic-lib/actions/agentic-step/package.json') == ''
|
|
359
|
+
run: bash scripts/self-init.sh
|
|
360
|
+
|
|
316
361
|
- name: Install agentic-step dependencies
|
|
317
362
|
working-directory: .github/agentic-lib/actions/agentic-step
|
|
318
363
|
run: npm ci
|
|
@@ -320,7 +365,7 @@ jobs:
|
|
|
320
365
|
- name: Load config
|
|
321
366
|
id: config
|
|
322
367
|
run: |
|
|
323
|
-
CONFIG="${{
|
|
368
|
+
CONFIG="${{ needs.params.outputs.config-path }}"
|
|
324
369
|
FEATURES=$(yq -r '.paths.featuresPath.path // "features/"' "$CONFIG")
|
|
325
370
|
LIBRARY=$(yq -r '.paths.libraryDocumentsPath.path // "library/"' "$CONFIG")
|
|
326
371
|
SOURCES=$(yq -r '.paths.librarySourcesFilepath.path // "SOURCES.md"' "$CONFIG")
|
|
@@ -334,7 +379,7 @@ jobs:
|
|
|
334
379
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
335
380
|
with:
|
|
336
381
|
task: "maintain-features"
|
|
337
|
-
config: ${{
|
|
382
|
+
config: ${{ needs.params.outputs.config-path }}
|
|
338
383
|
instructions: ".github/agentic-lib/agents/agent-maintain-features.md"
|
|
339
384
|
writable-paths: ${{ steps.config.outputs.featuresWritablePaths }}
|
|
340
385
|
model: ${{ needs.params.outputs.model }}
|
|
@@ -346,12 +391,13 @@ jobs:
|
|
|
346
391
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
347
392
|
with:
|
|
348
393
|
task: "maintain-library"
|
|
349
|
-
config: ${{
|
|
394
|
+
config: ${{ needs.params.outputs.config-path }}
|
|
350
395
|
instructions: ".github/agentic-lib/agents/agent-maintain-library.md"
|
|
351
396
|
writable-paths: ${{ steps.config.outputs.libraryWritablePaths }}
|
|
352
397
|
model: ${{ needs.params.outputs.model }}
|
|
353
398
|
|
|
354
399
|
- name: Commit and push changes
|
|
400
|
+
if: needs.params.outputs.dry-run != 'true'
|
|
355
401
|
uses: ./.github/agentic-lib/actions/commit-if-changed
|
|
356
402
|
with:
|
|
357
403
|
commit-message: "agentic-step: maintain features and library"
|
|
@@ -362,6 +408,7 @@ jobs:
|
|
|
362
408
|
needs: [params, supervisor]
|
|
363
409
|
if: |
|
|
364
410
|
always() &&
|
|
411
|
+
needs.params.outputs.dry-run != 'true' &&
|
|
365
412
|
needs.params.outputs.mode == 'full' &&
|
|
366
413
|
needs.params.result == 'success'
|
|
367
414
|
runs-on: ubuntu-latest
|
|
@@ -377,6 +424,10 @@ jobs:
|
|
|
377
424
|
- name: Install project dependencies
|
|
378
425
|
run: npm ci
|
|
379
426
|
|
|
427
|
+
- name: Self-init (agentic-lib dev only)
|
|
428
|
+
if: hashFiles('scripts/self-init.sh') != '' && hashFiles('.github/agentic-lib/actions/agentic-step/package.json') == ''
|
|
429
|
+
run: bash scripts/self-init.sh
|
|
430
|
+
|
|
380
431
|
- name: Install agentic-step dependencies
|
|
381
432
|
working-directory: .github/agentic-lib/actions/agentic-step
|
|
382
433
|
run: npm ci
|
|
@@ -447,7 +498,7 @@ jobs:
|
|
|
447
498
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
448
499
|
with:
|
|
449
500
|
task: "fix-code"
|
|
450
|
-
config: ${{
|
|
501
|
+
config: ${{ needs.params.outputs.config-path }}
|
|
451
502
|
instructions: ".github/agentic-lib/agents/agent-apply-fix.md"
|
|
452
503
|
pr-number: ${{ env.FIX_PR_NUMBER }}
|
|
453
504
|
test-command: "npm test"
|
|
@@ -474,6 +525,10 @@ jobs:
|
|
|
474
525
|
with:
|
|
475
526
|
node-version: "24"
|
|
476
527
|
|
|
528
|
+
- name: Self-init (agentic-lib dev only)
|
|
529
|
+
if: hashFiles('scripts/self-init.sh') != '' && hashFiles('.github/agentic-lib/actions/agentic-step/package.json') == ''
|
|
530
|
+
run: bash scripts/self-init.sh
|
|
531
|
+
|
|
477
532
|
- name: Install agentic-step dependencies
|
|
478
533
|
working-directory: .github/agentic-lib/actions/agentic-step
|
|
479
534
|
run: npm ci
|
|
@@ -485,7 +540,7 @@ jobs:
|
|
|
485
540
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
486
541
|
with:
|
|
487
542
|
task: "review-issue"
|
|
488
|
-
config: ${{
|
|
543
|
+
config: ${{ needs.params.outputs.config-path }}
|
|
489
544
|
instructions: ".github/agentic-lib/agents/agent-review-issue.md"
|
|
490
545
|
model: ${{ needs.params.outputs.model }}
|
|
491
546
|
|
|
@@ -496,7 +551,7 @@ jobs:
|
|
|
496
551
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
497
552
|
with:
|
|
498
553
|
task: "enhance-issue"
|
|
499
|
-
config: ${{
|
|
554
|
+
config: ${{ needs.params.outputs.config-path }}
|
|
500
555
|
instructions: ".github/agentic-lib/agents/agent-ready-issue.md"
|
|
501
556
|
model: ${{ needs.params.outputs.model }}
|
|
502
557
|
|
|
@@ -521,6 +576,10 @@ jobs:
|
|
|
521
576
|
- name: Install project dependencies
|
|
522
577
|
run: npm ci
|
|
523
578
|
|
|
579
|
+
- name: Self-init (agentic-lib dev only)
|
|
580
|
+
if: hashFiles('scripts/self-init.sh') != '' && hashFiles('.github/agentic-lib/actions/agentic-step/package.json') == ''
|
|
581
|
+
run: bash scripts/self-init.sh
|
|
582
|
+
|
|
524
583
|
- name: Install agentic-step dependencies
|
|
525
584
|
working-directory: .github/agentic-lib/actions/agentic-step
|
|
526
585
|
run: npm ci
|
|
@@ -528,7 +587,7 @@ jobs:
|
|
|
528
587
|
- name: Load config
|
|
529
588
|
id: config
|
|
530
589
|
run: |
|
|
531
|
-
CONFIG="${{
|
|
590
|
+
CONFIG="${{ needs.params.outputs.config-path }}"
|
|
532
591
|
SOURCE=$(yq -r '.paths.targetSourcePath.path // "src/lib/"' "$CONFIG")
|
|
533
592
|
TESTS=$(yq -r '.paths.targetTestsPath.path // "tests/unit/"' "$CONFIG")
|
|
534
593
|
FEATURES=$(yq -r '.paths.featuresPath.path // "features/"' "$CONFIG")
|
|
@@ -579,7 +638,7 @@ jobs:
|
|
|
579
638
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
580
639
|
with:
|
|
581
640
|
task: "transform"
|
|
582
|
-
config: ${{
|
|
641
|
+
config: ${{ needs.params.outputs.config-path }}
|
|
583
642
|
instructions: ".github/agentic-lib/agents/agent-issue-resolution.md"
|
|
584
643
|
test-command: "npm test"
|
|
585
644
|
model: ${{ needs.params.outputs.model }}
|
|
@@ -587,14 +646,14 @@ jobs:
|
|
|
587
646
|
writable-paths: ${{ steps.config.outputs.writablePaths }}
|
|
588
647
|
|
|
589
648
|
- name: Commit and push
|
|
590
|
-
if: steps.issue.outputs.issue-number != ''
|
|
649
|
+
if: steps.issue.outputs.issue-number != '' && needs.params.outputs.dry-run != 'true'
|
|
591
650
|
uses: ./.github/agentic-lib/actions/commit-if-changed
|
|
592
651
|
with:
|
|
593
652
|
commit-message: "agentic-step: transform issue #${{ steps.issue.outputs.issue-number }}"
|
|
594
653
|
push-ref: ${{ steps.branch.outputs.branchName }}
|
|
595
654
|
|
|
596
655
|
- name: Create PR and attempt merge
|
|
597
|
-
if: steps.issue.outputs.issue-number != ''
|
|
656
|
+
if: steps.issue.outputs.issue-number != '' && needs.params.outputs.dry-run != 'true'
|
|
598
657
|
uses: actions/github-script@v7
|
|
599
658
|
with:
|
|
600
659
|
script: |
|
|
@@ -696,11 +755,12 @@ jobs:
|
|
|
696
755
|
echo "## agentic-lib-workflow run summary" >> $GITHUB_STEP_SUMMARY
|
|
697
756
|
echo "- Mode: ${{ needs.params.outputs.mode }}" >> $GITHUB_STEP_SUMMARY
|
|
698
757
|
echo "- Model: ${{ needs.params.outputs.model }}" >> $GITHUB_STEP_SUMMARY
|
|
758
|
+
echo "- Dry-run: ${{ needs.params.outputs.dry-run }}" >> $GITHUB_STEP_SUMMARY
|
|
699
759
|
|
|
700
760
|
# ─── Schedule change (if requested) ────────────────────────────────
|
|
701
761
|
update-schedule:
|
|
702
762
|
needs: [params, dev]
|
|
703
|
-
if: always() && needs.params.outputs.schedule != '' && needs.params.result == 'success'
|
|
763
|
+
if: always() && needs.params.outputs.dry-run != 'true' && needs.params.outputs.schedule != '' && needs.params.result == 'success'
|
|
704
764
|
uses: ./.github/workflows/agentic-lib-schedule.yml
|
|
705
765
|
with:
|
|
706
766
|
frequency: ${{ needs.params.outputs.schedule }}
|
package/agentic-lib.toml
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-only
|
|
2
|
+
# Copyright (C) 2025-2026 Polycode Limited
|
|
3
|
+
# agentic-lib.toml — Configuration for agentic-lib workflows
|
|
4
|
+
#
|
|
5
|
+
# Locally: paths point to test/ so dry-run workflows operate on test fixtures.
|
|
6
|
+
# During init: #@dist transforms restore standard paths for consumer repos.
|
|
7
|
+
|
|
8
|
+
[schedule]
|
|
9
|
+
supervisor = "daily" # off | weekly | daily | hourly | continuous
|
|
10
|
+
model = "gpt-5-mini" # gpt-5-mini | claude-sonnet-4 | gpt-4.1
|
|
11
|
+
|
|
12
|
+
[paths]
|
|
13
|
+
mission = "test/MISSION.md" #@dist "MISSION.md"
|
|
14
|
+
source = "test/src/lib/" #@dist "src/lib/"
|
|
15
|
+
tests = "test/tests/unit/" #@dist "tests/unit/"
|
|
16
|
+
features = "test/features/" #@dist "features/"
|
|
17
|
+
library = "test/library/" #@dist "library/"
|
|
18
|
+
docs = "test/docs/" #@dist "docs/"
|
|
19
|
+
examples = "test/examples/" #@dist "examples/"
|
|
20
|
+
readme = "test/README.md" #@dist "README.md"
|
|
21
|
+
dependencies = "test/package.json" #@dist "package.json"
|
|
22
|
+
contributing = "test/CONTRIBUTING.md" #@dist "CONTRIBUTING.md"
|
|
23
|
+
library-sources = "test/SOURCES.md" #@dist "SOURCES.md"
|
|
24
|
+
|
|
25
|
+
[execution]
|
|
26
|
+
build = "npm run build"
|
|
27
|
+
test = "npm test"
|
|
28
|
+
start = "npm run start"
|
|
29
|
+
|
|
30
|
+
[limits]
|
|
31
|
+
feature-issues = 2
|
|
32
|
+
maintenance-issues = 1
|
|
33
|
+
attempts-per-branch = 3
|
|
34
|
+
attempts-per-issue = 2
|
|
35
|
+
features-limit = 2
|
|
36
|
+
library-limit = 32
|
|
37
|
+
|
|
38
|
+
[bot]
|
|
39
|
+
log-file = "test/intentïon.md" #@dist "intentïon.md"
|
package/bin/agentic-lib.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
// npx @xn-intenton-z2a/agentic-lib fix-code
|
|
16
16
|
|
|
17
17
|
import { copyFileSync, existsSync, mkdirSync, rmSync, rmdirSync, readdirSync, readFileSync, writeFileSync } from "fs";
|
|
18
|
+
import { applyDistTransform } from "../src/dist-transform.js";
|
|
18
19
|
import { resolve, dirname, join } from "path";
|
|
19
20
|
import { fileURLToPath } from "url";
|
|
20
21
|
import { execSync } from "child_process";
|
|
@@ -611,6 +612,19 @@ function createCliTools(writablePaths, defineTool) {
|
|
|
611
612
|
|
|
612
613
|
// ─── Init Runner ─────────────────────────────────────────────────────
|
|
613
614
|
|
|
615
|
+
function initTransformFile(src, dst, label) {
|
|
616
|
+
const content = readFileSync(src, "utf8");
|
|
617
|
+
const transformed = applyDistTransform(content);
|
|
618
|
+
if (dryRun) {
|
|
619
|
+
console.log(` TRANSFORM: ${label}`);
|
|
620
|
+
} else {
|
|
621
|
+
mkdirSync(dirname(dst), { recursive: true });
|
|
622
|
+
writeFileSync(dst, transformed);
|
|
623
|
+
console.log(` TRANSFORM: ${label}`);
|
|
624
|
+
}
|
|
625
|
+
initChanges++;
|
|
626
|
+
}
|
|
627
|
+
|
|
614
628
|
function initCopyFile(src, dst, label) {
|
|
615
629
|
if (dryRun) {
|
|
616
630
|
console.log(` COPY: ${label}`);
|
|
@@ -655,33 +669,17 @@ function removeStaleWorkflows(templateWorkflows) {
|
|
|
655
669
|
|
|
656
670
|
function initWorkflows() {
|
|
657
671
|
console.log("--- Workflows ---");
|
|
658
|
-
|
|
659
|
-
|
|
672
|
+
// Distributable workflows live in .github/workflows/agentic-lib-*.yml
|
|
673
|
+
// and are transformed via #@dist markers during init
|
|
674
|
+
const ownWorkflowsDir = resolve(pkgRoot, ".github/workflows");
|
|
675
|
+
if (!existsSync(ownWorkflowsDir)) return;
|
|
660
676
|
const templateWorkflows = new Set();
|
|
661
|
-
for (const f of readdirSync(
|
|
662
|
-
if (f.endsWith(".yml")) {
|
|
677
|
+
for (const f of readdirSync(ownWorkflowsDir)) {
|
|
678
|
+
if (f.startsWith("agentic-lib-") && f.endsWith(".yml")) {
|
|
663
679
|
templateWorkflows.add(f);
|
|
664
|
-
|
|
680
|
+
initTransformFile(resolve(ownWorkflowsDir, f), resolve(target, ".github/workflows", f), `workflows/${f}`);
|
|
665
681
|
}
|
|
666
682
|
}
|
|
667
|
-
const seedTest = resolve(srcDir, "seeds/agentic-lib-test.yml");
|
|
668
|
-
if (existsSync(seedTest)) {
|
|
669
|
-
templateWorkflows.add("agentic-lib-test.yml");
|
|
670
|
-
initCopyFile(
|
|
671
|
-
seedTest,
|
|
672
|
-
resolve(target, ".github/workflows/agentic-lib-test.yml"),
|
|
673
|
-
"workflows/agentic-lib-test.yml (from seeds)",
|
|
674
|
-
);
|
|
675
|
-
}
|
|
676
|
-
const seedInit = resolve(srcDir, "seeds/agentic-lib-init.yml");
|
|
677
|
-
if (existsSync(seedInit)) {
|
|
678
|
-
templateWorkflows.add("agentic-lib-init.yml");
|
|
679
|
-
initCopyFile(
|
|
680
|
-
seedInit,
|
|
681
|
-
resolve(target, ".github/workflows/agentic-lib-init.yml"),
|
|
682
|
-
"workflows/agentic-lib-init.yml (from seeds)",
|
|
683
|
-
);
|
|
684
|
-
}
|
|
685
683
|
removeStaleWorkflows(templateWorkflows);
|
|
686
684
|
}
|
|
687
685
|
|
|
@@ -748,14 +746,15 @@ function initScripts(agenticDir) {
|
|
|
748
746
|
|
|
749
747
|
function initConfig(seedsDir) {
|
|
750
748
|
console.log("\n--- Config ---");
|
|
751
|
-
|
|
749
|
+
// Config TOML lives at project root with #@dist markers — transform for distribution
|
|
750
|
+
const tomlSource = resolve(pkgRoot, "agentic-lib.toml");
|
|
752
751
|
const tomlTarget = resolve(target, "agentic-lib.toml");
|
|
753
|
-
if (existsSync(
|
|
754
|
-
|
|
752
|
+
if (existsSync(tomlSource) && !existsSync(tomlTarget)) {
|
|
753
|
+
initTransformFile(tomlSource, tomlTarget, "agentic-lib.toml (new)");
|
|
755
754
|
} else if (existsSync(tomlTarget)) {
|
|
756
755
|
console.log(" SKIP: agentic-lib.toml already exists");
|
|
757
756
|
} else {
|
|
758
|
-
console.log(" SKIP:
|
|
757
|
+
console.log(" SKIP: source TOML not found");
|
|
759
758
|
}
|
|
760
759
|
|
|
761
760
|
const giSeed = resolve(seedsDir, "zero-.gitignore");
|
|
@@ -856,7 +855,6 @@ function initPurge(seedsDir, missionName) {
|
|
|
856
855
|
"zero-SOURCES.md": "SOURCES.md",
|
|
857
856
|
"zero-package.json": "package.json",
|
|
858
857
|
"zero-README.md": "README.md",
|
|
859
|
-
"zero-agentic-lib.toml": "agentic-lib.toml",
|
|
860
858
|
"zero-.gitignore": ".gitignore",
|
|
861
859
|
};
|
|
862
860
|
for (const [seedFile, targetRel] of Object.entries(SEED_MAP)) {
|
|
@@ -866,6 +864,12 @@ function initPurge(seedsDir, missionName) {
|
|
|
866
864
|
}
|
|
867
865
|
}
|
|
868
866
|
|
|
867
|
+
// Force-overwrite agentic-lib.toml during purge (transformed from root)
|
|
868
|
+
const tomlSource = resolve(pkgRoot, "agentic-lib.toml");
|
|
869
|
+
if (existsSync(tomlSource)) {
|
|
870
|
+
initTransformFile(tomlSource, resolve(target, "agentic-lib.toml"), "SEED: agentic-lib.toml (transformed)");
|
|
871
|
+
}
|
|
872
|
+
|
|
869
873
|
// Copy mission seed file as MISSION.md
|
|
870
874
|
const missionsDir = resolve(seedsDir, "missions");
|
|
871
875
|
const missionFile = resolve(missionsDir, `${missionName}.md`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xn-intenton-z2a/agentic-lib",
|
|
3
|
-
"version": "7.1.
|
|
3
|
+
"version": "7.1.55",
|
|
4
4
|
"description": "Agentic-lib Agentic Coding Systems SDK powering automated GitHub workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -70,7 +70,9 @@
|
|
|
70
70
|
"files": [
|
|
71
71
|
"package.json",
|
|
72
72
|
"bin/",
|
|
73
|
-
"src/
|
|
73
|
+
"src/dist-transform.js",
|
|
74
|
+
".github/workflows/agentic-lib-*.yml",
|
|
75
|
+
"agentic-lib.toml",
|
|
74
76
|
"src/actions/agentic-step/*.js",
|
|
75
77
|
"src/actions/agentic-step/*.yml",
|
|
76
78
|
"src/actions/agentic-step/*.json",
|
|
@@ -40,15 +40,23 @@ runs:
|
|
|
40
40
|
git commit -m "${{ inputs.commit-message }}"
|
|
41
41
|
REF="${{ inputs.push-ref }}"
|
|
42
42
|
MAX_RETRIES=3
|
|
43
|
+
REMOTE_REF_EXISTS=""
|
|
44
|
+
if [ -n "$REF" ]; then
|
|
45
|
+
git ls-remote --exit-code origin "$REF" > /dev/null 2>&1 && REMOTE_REF_EXISTS="true"
|
|
46
|
+
else
|
|
47
|
+
REMOTE_REF_EXISTS="true"
|
|
48
|
+
fi
|
|
43
49
|
for attempt in $(seq 1 $MAX_RETRIES); do
|
|
44
50
|
if [ -n "$REF" ]; then
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
if [ "$REMOTE_REF_EXISTS" = "true" ]; then
|
|
52
|
+
git pull --rebase origin "$REF" || {
|
|
53
|
+
echo "Rebase conflict on attempt $attempt — aborting rebase and retrying"
|
|
54
|
+
git rebase --abort 2>/dev/null || true
|
|
55
|
+
sleep $((attempt * 2))
|
|
56
|
+
continue
|
|
57
|
+
}
|
|
58
|
+
fi
|
|
59
|
+
git push origin "$REF" && { REMOTE_REF_EXISTS="true"; break; }
|
|
52
60
|
else
|
|
53
61
|
git pull --rebase || {
|
|
54
62
|
echo "Rebase conflict on attempt $attempt — aborting rebase and retrying"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-only
|
|
2
|
+
// Copyright (C) 2025-2026 Polycode Limited
|
|
3
|
+
// src/dist-transform.js — #@dist marker transform for distribution
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Apply #@dist transforms to file content for distribution.
|
|
7
|
+
*
|
|
8
|
+
* Two patterns:
|
|
9
|
+
* 1. Line starts with "#@dist " — uncomment by removing the "#@dist " prefix
|
|
10
|
+
* e.g. "#@dist schedule:" → "schedule:"
|
|
11
|
+
* 2. Line contains " #@dist <value>" suffix — replace the preceding value
|
|
12
|
+
* e.g. 'default: true #@dist false' → 'default: false'
|
|
13
|
+
* e.g. 'mission = "test/MISSION.md" #@dist "MISSION.md"' → 'mission = "MISSION.md"'
|
|
14
|
+
*/
|
|
15
|
+
export function applyDistTransform(content) {
|
|
16
|
+
return content
|
|
17
|
+
.split("\n")
|
|
18
|
+
.map((line) => {
|
|
19
|
+
// Pattern 1: line starts with #@dist — uncomment
|
|
20
|
+
const commentMatch = line.match(/^(\s*)#@dist (.*)$/);
|
|
21
|
+
if (commentMatch) {
|
|
22
|
+
return commentMatch[1] + commentMatch[2];
|
|
23
|
+
}
|
|
24
|
+
// Pattern 2: inline #@dist <replacement> — replace preceding value
|
|
25
|
+
const inlineMatch = line.match(/^(.+?)\s+#@dist\s+(.+)$/); // eslint-disable-line sonarjs/slow-regex
|
|
26
|
+
if (inlineMatch) {
|
|
27
|
+
const before = inlineMatch[1];
|
|
28
|
+
const replacement = inlineMatch[2];
|
|
29
|
+
// Replace the last value token on the line before #@dist
|
|
30
|
+
// Handles: 'key: value' (YAML) and 'key = "value"' (TOML)
|
|
31
|
+
return before.replace(/(:\s*|=\s*)(\S+)\s*$/, `$1${replacement}`); // eslint-disable-line sonarjs/slow-regex
|
|
32
|
+
}
|
|
33
|
+
return line;
|
|
34
|
+
})
|
|
35
|
+
.join("\n");
|
|
36
|
+
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: MIT
|
|
2
|
-
# Copyright (C) 2025-2026 Polycode Limited
|
|
3
|
-
# agentic-lib.toml — Configuration for agentic-lib workflows
|
|
4
|
-
#
|
|
5
|
-
# This file controls how agentic workflows operate on your repository.
|
|
6
|
-
# Place it at the root of your project.
|
|
7
|
-
|
|
8
|
-
[schedule]
|
|
9
|
-
supervisor = "daily" # off | weekly | daily | hourly | continuous
|
|
10
|
-
model = "gpt-5-mini" # gpt-5-mini | claude-sonnet-4 | gpt-4.1
|
|
11
|
-
|
|
12
|
-
[paths]
|
|
13
|
-
mission = "MISSION.md"
|
|
14
|
-
source = "src/lib/"
|
|
15
|
-
tests = "tests/unit/"
|
|
16
|
-
features = "features/"
|
|
17
|
-
library = "library/"
|
|
18
|
-
docs = "docs/"
|
|
19
|
-
examples = "examples/"
|
|
20
|
-
readme = "README.md"
|
|
21
|
-
dependencies = "package.json"
|
|
22
|
-
contributing = "CONTRIBUTING.md"
|
|
23
|
-
library-sources = "SOURCES.md"
|
|
24
|
-
|
|
25
|
-
[execution]
|
|
26
|
-
build = "npm run build"
|
|
27
|
-
test = "npm test"
|
|
28
|
-
start = "npm run start"
|
|
29
|
-
|
|
30
|
-
[limits]
|
|
31
|
-
feature-issues = 5
|
|
32
|
-
maintenance-issues = 1
|
|
33
|
-
attempts-per-branch = 3
|
|
34
|
-
attempts-per-issue = 2
|
|
35
|
-
features-limit = 4
|
|
36
|
-
library-limit = 32
|
|
37
|
-
|
|
38
|
-
[bot]
|
|
39
|
-
log-file = "intentïon.md"
|