dorfl 0.14.0 → 0.14.2
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/dist/advance-ci-template.d.ts.map +1 -1
- package/dist/advance-ci-template.js +10 -4
- package/dist/advance-ci-template.js.map +1 -1
- package/dist/advance-lifecycle-template.d.ts.map +1 -1
- package/dist/advance-lifecycle-template.js +73 -21
- package/dist/advance-lifecycle-template.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/close-job-template.d.ts +1 -1
- package/dist/close-job-template.d.ts.map +1 -1
- package/dist/close-job-template.js +15 -2
- package/dist/close-job-template.js.map +1 -1
- package/dist/install-ci-core.d.ts +77 -0
- package/dist/install-ci-core.d.ts.map +1 -1
- package/dist/install-ci-core.js +94 -4
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +15 -1
- package/dist/install-ci-github.d.ts.map +1 -1
- package/dist/install-ci-github.js +32 -0
- package/dist/install-ci-github.js.map +1 -1
- package/dist/install-ci.d.ts.map +1 -1
- package/dist/install-ci.js +21 -0
- package/dist/install-ci.js.map +1 -1
- package/dist/intake-trigger-template.d.ts.map +1 -1
- package/dist/intake-trigger-template.js +22 -6
- package/dist/intake-trigger-template.js.map +1 -1
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +10 -5
- package/dist/intake.js.map +1 -1
- package/dist/mint-adr.d.ts.map +1 -1
- package/dist/mint-adr.js +4 -1
- package/dist/mint-adr.js.map +1 -1
- package/dist/skills/one-shot/SKILL.md +22 -15
- package/dist/slug-namespace.d.ts +4 -3
- package/dist/slug-namespace.d.ts.map +1 -1
- package/dist/slug-namespace.js +28 -3
- package/dist/slug-namespace.js.map +1 -1
- package/dist/slug-safety.d.ts +55 -0
- package/dist/slug-safety.d.ts.map +1 -0
- package/dist/slug-safety.js +76 -0
- package/dist/slug-safety.js.map +1 -0
- package/dist/triage-persist.d.ts.map +1 -1
- package/dist/triage-persist.js +12 -3
- package/dist/triage-persist.js.map +1 -1
- package/dist/verify-workflow-template.d.ts +1 -1
- package/dist/verify-workflow-template.d.ts.map +1 -1
- package/dist/verify-workflow-template.js +14 -2
- package/dist/verify-workflow-template.js.map +1 -1
- package/package.json +3 -2
- package/src/advance-ci-template.ts +12 -4
- package/src/advance-lifecycle-template.ts +75 -21
- package/src/cli.ts +2 -2
- package/src/close-job-template.ts +15 -2
- package/src/install-ci-core.ts +130 -4
- package/src/install-ci-github.ts +40 -1
- package/src/install-ci.ts +25 -0
- package/src/intake-trigger-template.ts +26 -6
- package/src/intake.ts +10 -5
- package/src/mint-adr.ts +4 -1
- package/src/slug-namespace.ts +33 -5
- package/src/slug-safety.ts +83 -0
- package/src/triage-persist.ts +13 -7
- package/src/verify-workflow-template.ts +14 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-ci-template.d.ts","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,yDAAyD;AACzD,MAAM,WAAW,wBAAwB;IACxC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC3C,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,wBAAwB,EAAE,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BtE;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,MAAM,GACV,2BAA2B,
|
|
1
|
+
{"version":3,"file":"advance-ci-template.d.ts","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,yDAAyD;AACzD,MAAM,WAAW,wBAAwB;IACxC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC3C,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,wBAAwB,EAAE,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BtE;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,MAAM,GACV,2BAA2B,CAmG7B"}
|
|
@@ -62,13 +62,19 @@ export function validateAdvanceCiTemplate(text) {
|
|
|
62
62
|
'+ `cwd.repo.specs[]` pools), so a ready ungated SPEC becomes one auto-task ' +
|
|
63
63
|
'matrix leg alongside the eligible-task legs ' +
|
|
64
64
|
'(`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`).');
|
|
65
|
-
require('propose-one-advance-per-item', /dorfl advance "
|
|
66
|
-
'(one PR per item).');
|
|
65
|
+
require('propose-one-advance-per-item', /WORK_ITEM:\s*\$\{\{\s*matrix\.item\s*\}\}[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"/.test(text), 'each matrix leg must run one `dorfl advance <matrix item>` ' +
|
|
66
|
+
'(one PR per item), reading the item from the step env (`WORK_ITEM`).');
|
|
67
|
+
// The item id is a slug that may be hand-written, so it must reach the shell
|
|
68
|
+
// as DATA through `env:`, never as `${{ }}` text spliced into the `run:` script
|
|
69
|
+
// (GitHub Actions script injection).
|
|
70
|
+
require('matrix-item-not-spliced-into-run', !/dorfl advance "?\$\{\{/.test(text), 'the matrix item must NOT be interpolated into the `run:` script as ' +
|
|
71
|
+
'`${{ matrix.item }}` (script injection): pass it through the step `env:` ' +
|
|
72
|
+
'as `WORK_ITEM` and quote it as `"${WORK_ITEM}"`.');
|
|
67
73
|
// The matrix leg must carry `--propose` so the integration mode is TIED to the
|
|
68
74
|
// matrix shape (it cannot desync from the dispatch `integrationMode` input nor
|
|
69
75
|
// fall back to a repo config default of `merge`). Scoped to the `advance-propose`
|
|
70
76
|
// job so it is the LEG that carries it, not merely the file somewhere.
|
|
71
|
-
require('propose-leg-carries-propose-flag', /advance-propose:[\s\S]*?dorfl advance "
|
|
77
|
+
require('propose-leg-carries-propose-flag', /advance-propose:[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"[^\n]*--propose\b/.test(text), 'each `propose` matrix leg must pass `--propose` so the integration mode is ' +
|
|
72
78
|
'TIED to the matrix shape (a leg can never merge to main / desync from the ' +
|
|
73
79
|
'dispatch mode).');
|
|
74
80
|
// --- merge ⇒ a MATRIX per item (parallel build/gate/review, serialised land) -
|
|
@@ -84,7 +90,7 @@ export function validateAdvanceCiTemplate(text) {
|
|
|
84
90
|
// scoped to the `advance-merge:` job so the `--merge` flag is TIED to its leg
|
|
85
91
|
// (cannot desync from the dispatch `integrationMode` input nor fall back to a
|
|
86
92
|
// repo config default of `propose`).
|
|
87
|
-
require('merge-leg-carries-merge-flag', /advance-merge:[\s\S]*?dorfl advance "
|
|
93
|
+
require('merge-leg-carries-merge-flag', /advance-merge:[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"[^\n]*--merge\b/.test(text), 'each `merge` matrix leg must pass `--merge` so the integration mode is ' +
|
|
88
94
|
'TIED to the matrix shape (a leg can never propose-only / desync from the ' +
|
|
89
95
|
'dispatch mode).');
|
|
90
96
|
// The merge fan-out is the SAFETY-FLOOR shape: no `concurrency:` group on the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-ci-template.js","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AA6DvC;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,sEAAsE;IACtE,sEAAsE;IACtE,MAAM,UAAU,GAAG;QAClB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,CAAC;QAC1E,OAAO,CACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,2BAA2B,CAC3B;KACD,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IACD,yEAAyE;IACzE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACtD,OAAO,YAAY,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACxC,IAAY;IAEZ,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,OAAgB,EAAE,OAAe,EAAQ,EAAE;QACvE,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,OAAO,EAAC,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC,CAAC;IAEF,+EAA+E;IAC/E,OAAO,CAAC,cAAc,EAAE,iCAAiC,CAAC,IAAI,CAC7D,IAAI,CACJ,EAAE,yDAAyD,CAAC,CAAC;IAC9D,OAAO,CAAC,6BAA6B,EAAE,mDAAmD,CAAC,IAAI,CAC9F,IAAI,CACJ,EAAE,yEAAyE,CAAC,CAAC;IAE9E,gFAAgF;IAChF,OAAO,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,IAAI,CAC3D,IAAI,CACJ,EAAE,gEAAgE,CAAC,CAAC;IACrE,OAAO,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,IAAI,CAC9D,IAAI,CACJ,EAAE,oEAAoE;QACtE,wBAAwB,CAAC,CAAC;IAC3B,gEAAgE;IAChE,yEAAyE;IACzE,mEAAmE;IACnE,6EAA6E;IAC7E,mFAAmF;IACnF,gEAAgE;IAChE,OAAO,CAAC,mCAAmC,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1E,aAAa,CAAC,IAAI,CACjB,IAAI,CACJ,EAAE,uEAAuE;QAC1E,4EAA4E;QAC5E,6EAA6E;QAC7E,8CAA8C;QAC9C,sEAAsE,CAAC,CAAC;IACzE,OAAO,CAAC,8BAA8B,EAAE,
|
|
1
|
+
{"version":3,"file":"advance-ci-template.js","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-lifecycle-template.d.ts","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,uJACsG,CAAC;AAEtJ,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,oCACV,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,gBAAgB,GACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"advance-lifecycle-template.d.ts","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,uJACsG,CAAC;AAEtJ,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,oCACV,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,gBAAgB,GACtB,MAAM,CAsdR;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACvC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IAC1C,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,MAAM,GACV,0BAA0B,CAmV5B"}
|
|
@@ -296,13 +296,26 @@ jobs:
|
|
|
296
296
|
# surfaceBlockers), so an override that does not reach this job produces an
|
|
297
297
|
# empty matrix and is silently inert. \`if:\` + the inner \`[ -n ... ]\` guard
|
|
298
298
|
# keep schedule/push (and a blank dispatch field) exporting NOTHING — an
|
|
299
|
-
# empty DORFL_* would make env-config coercion throw.
|
|
299
|
+
# empty DORFL_* would make env-config coercion throw. The inputs reach the
|
|
300
|
+
# shell through \`env:\` as DATA, never as \`\${{ }}\` text spliced into the
|
|
301
|
+
# script (GitHub's script-injection guidance), and the \`case\` guard stops a
|
|
302
|
+
# value from appending its own lines to $GITHUB_ENV. Both only matter if an
|
|
303
|
+
# input ever stops being a fixed \`type: choice\`; for the choices below the
|
|
304
|
+
# step writes exactly what it always did.
|
|
300
305
|
if: \${{ github.event_name == 'workflow_dispatch' }}
|
|
306
|
+
env:
|
|
307
|
+
DISPATCH_AUTO_BUILD: \${{ github.event.inputs.autoBuild }}
|
|
308
|
+
DISPATCH_AUTO_TASK: \${{ github.event.inputs.autoTask }}
|
|
309
|
+
DISPATCH_OBSERVATION_TRIAGE: \${{ github.event.inputs.observationTriage }}
|
|
310
|
+
DISPATCH_SURFACE_BLOCKERS: \${{ github.event.inputs.surfaceBlockers }}
|
|
301
311
|
run: |
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
[ -n "\${
|
|
312
|
+
case "\${DISPATCH_AUTO_BUILD}\${DISPATCH_AUTO_TASK}\${DISPATCH_OBSERVATION_TRIAGE}\${DISPATCH_SURFACE_BLOCKERS}" in
|
|
313
|
+
*$'\\n'*|*$'\\r'*) echo "::error::a dispatch gate override contains a line break"; exit 1 ;;
|
|
314
|
+
esac
|
|
315
|
+
[ -n "\${DISPATCH_AUTO_BUILD}" ] && echo "DORFL_AUTO_BUILD=\${DISPATCH_AUTO_BUILD}" >> "$GITHUB_ENV"
|
|
316
|
+
[ -n "\${DISPATCH_AUTO_TASK}" ] && echo "DORFL_AUTO_TASK=\${DISPATCH_AUTO_TASK}" >> "$GITHUB_ENV"
|
|
317
|
+
[ -n "\${DISPATCH_OBSERVATION_TRIAGE}" ] && echo "DORFL_OBSERVATION_TRIAGE=\${DISPATCH_OBSERVATION_TRIAGE}" >> "$GITHUB_ENV"
|
|
318
|
+
[ -n "\${DISPATCH_SURFACE_BLOCKERS}" ] && echo "DORFL_SURFACE_BLOCKERS=\${DISPATCH_SURFACE_BLOCKERS}" >> "$GITHUB_ENV"
|
|
306
319
|
true
|
|
307
320
|
- id: scan
|
|
308
321
|
# Enumerate eligible items as namespaced ids, one matrix leg per id. CI
|
|
@@ -392,11 +405,19 @@ jobs:
|
|
|
392
405
|
# DORFL_* ONLY on a workflow_dispatch with a non-blank input, so the
|
|
393
406
|
# one-shot override also reaches the \`advance\` leg that builds the item.
|
|
394
407
|
if: \${{ github.event_name == 'workflow_dispatch' }}
|
|
408
|
+
env:
|
|
409
|
+
DISPATCH_AUTO_BUILD: \${{ github.event.inputs.autoBuild }}
|
|
410
|
+
DISPATCH_AUTO_TASK: \${{ github.event.inputs.autoTask }}
|
|
411
|
+
DISPATCH_OBSERVATION_TRIAGE: \${{ github.event.inputs.observationTriage }}
|
|
412
|
+
DISPATCH_SURFACE_BLOCKERS: \${{ github.event.inputs.surfaceBlockers }}
|
|
395
413
|
run: |
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
[ -n "\${
|
|
414
|
+
case "\${DISPATCH_AUTO_BUILD}\${DISPATCH_AUTO_TASK}\${DISPATCH_OBSERVATION_TRIAGE}\${DISPATCH_SURFACE_BLOCKERS}" in
|
|
415
|
+
*$'\\n'*|*$'\\r'*) echo "::error::a dispatch gate override contains a line break"; exit 1 ;;
|
|
416
|
+
esac
|
|
417
|
+
[ -n "\${DISPATCH_AUTO_BUILD}" ] && echo "DORFL_AUTO_BUILD=\${DISPATCH_AUTO_BUILD}" >> "$GITHUB_ENV"
|
|
418
|
+
[ -n "\${DISPATCH_AUTO_TASK}" ] && echo "DORFL_AUTO_TASK=\${DISPATCH_AUTO_TASK}" >> "$GITHUB_ENV"
|
|
419
|
+
[ -n "\${DISPATCH_OBSERVATION_TRIAGE}" ] && echo "DORFL_OBSERVATION_TRIAGE=\${DISPATCH_OBSERVATION_TRIAGE}" >> "$GITHUB_ENV"
|
|
420
|
+
[ -n "\${DISPATCH_SURFACE_BLOCKERS}" ] && echo "DORFL_SURFACE_BLOCKERS=\${DISPATCH_SURFACE_BLOCKERS}" >> "$GITHUB_ENV"
|
|
400
421
|
true
|
|
401
422
|
- name: advance one item in-place (propose ⇒ opens a PR)
|
|
402
423
|
# In-place in this checkout (no --isolated/--remote): the CI container IS
|
|
@@ -411,13 +432,19 @@ jobs:
|
|
|
411
432
|
# works zero-config; the job's \`pull-requests: write\` scopes that token.
|
|
412
433
|
env:
|
|
413
434
|
GH_TOKEN: \${{ secrets.DORFL_GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
435
|
+
# The item id is a slug read from work/ (frontmatter \`slug:\` or the
|
|
436
|
+
# file name). dorfl sanitises the slugs it mints, but a hand-written
|
|
437
|
+
# one is only checked when \`advance\` resolves it, so it reaches the
|
|
438
|
+
# shell as DATA through env, never as \`\${{ matrix.item }}\` text
|
|
439
|
+
# spliced into the script.
|
|
440
|
+
WORK_ITEM: \${{ matrix.item }}
|
|
414
441
|
# \`--watch\` streams the build agent's high-signal turns (assistant text,
|
|
415
442
|
# tool calls, finish) into THIS job log live, so the run shows the agent
|
|
416
443
|
# working instead of freezing after "Start work". A read-only observer (no
|
|
417
444
|
# outcome/gate/git effect). It fits because each matrix leg names ONE item
|
|
418
445
|
# (one pi session to tail) — the merge job is now a per-item matrix too
|
|
419
446
|
# (see below) and streams the same way.
|
|
420
|
-
run: dorfl advance "\${
|
|
447
|
+
run: dorfl advance "\${WORK_ITEM}" --propose --watch --arbiter origin
|
|
421
448
|
|
|
422
449
|
# ── MERGE: a MATRIX of independent jobs (parallel build/gate/review, serialised land) ──
|
|
423
450
|
# SPEC \`land-time-reverify-and-parallel-merge-ceiling\` (stories 4 + 6): each item
|
|
@@ -458,11 +485,19 @@ jobs:
|
|
|
458
485
|
# merge job re-scans the pool inside \`advance -n\`, so it needs the override
|
|
459
486
|
# too for the lifecycle/task pools to reflect it.
|
|
460
487
|
if: \${{ github.event_name == 'workflow_dispatch' }}
|
|
488
|
+
env:
|
|
489
|
+
DISPATCH_AUTO_BUILD: \${{ github.event.inputs.autoBuild }}
|
|
490
|
+
DISPATCH_AUTO_TASK: \${{ github.event.inputs.autoTask }}
|
|
491
|
+
DISPATCH_OBSERVATION_TRIAGE: \${{ github.event.inputs.observationTriage }}
|
|
492
|
+
DISPATCH_SURFACE_BLOCKERS: \${{ github.event.inputs.surfaceBlockers }}
|
|
461
493
|
run: |
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
[ -n "\${
|
|
494
|
+
case "\${DISPATCH_AUTO_BUILD}\${DISPATCH_AUTO_TASK}\${DISPATCH_OBSERVATION_TRIAGE}\${DISPATCH_SURFACE_BLOCKERS}" in
|
|
495
|
+
*$'\\n'*|*$'\\r'*) echo "::error::a dispatch gate override contains a line break"; exit 1 ;;
|
|
496
|
+
esac
|
|
497
|
+
[ -n "\${DISPATCH_AUTO_BUILD}" ] && echo "DORFL_AUTO_BUILD=\${DISPATCH_AUTO_BUILD}" >> "$GITHUB_ENV"
|
|
498
|
+
[ -n "\${DISPATCH_AUTO_TASK}" ] && echo "DORFL_AUTO_TASK=\${DISPATCH_AUTO_TASK}" >> "$GITHUB_ENV"
|
|
499
|
+
[ -n "\${DISPATCH_OBSERVATION_TRIAGE}" ] && echo "DORFL_OBSERVATION_TRIAGE=\${DISPATCH_OBSERVATION_TRIAGE}" >> "$GITHUB_ENV"
|
|
500
|
+
[ -n "\${DISPATCH_SURFACE_BLOCKERS}" ] && echo "DORFL_SURFACE_BLOCKERS=\${DISPATCH_SURFACE_BLOCKERS}" >> "$GITHUB_ENV"
|
|
466
501
|
true
|
|
467
502
|
- name: advance one item in-place (merge ⇒ rebase + CAS land on main)
|
|
468
503
|
# In-place (no --isolated/--remote). \`--merge\` ties the integration mode
|
|
@@ -473,10 +508,16 @@ jobs:
|
|
|
473
508
|
# \`GH_TOKEN\` from the env.
|
|
474
509
|
env:
|
|
475
510
|
GH_TOKEN: \${{ secrets.DORFL_GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
511
|
+
# The item id is a slug read from work/ (frontmatter \`slug:\` or the
|
|
512
|
+
# file name). dorfl sanitises the slugs it mints, but a hand-written
|
|
513
|
+
# one is only checked when \`advance\` resolves it, so it reaches the
|
|
514
|
+
# shell as DATA through env, never as \`\${{ matrix.item }}\` text
|
|
515
|
+
# spliced into the script.
|
|
516
|
+
WORK_ITEM: \${{ matrix.item }}
|
|
476
517
|
# \`--watch\` streams the build agent's high-signal turns into THIS job
|
|
477
518
|
# log live; each leg names ONE item, so it fits the same way it does on
|
|
478
519
|
# the propose legs.
|
|
479
|
-
run: dorfl advance "\${
|
|
520
|
+
run: dorfl advance "\${WORK_ITEM}" --merge --watch --arbiter origin
|
|
480
521
|
|
|
481
522
|
# ── REAP merged remote work/* branches (capability F, the hygiene sweep) ─────
|
|
482
523
|
# PRESERVED from the seed (NOT a separate gc-sweep workflow): the provider-
|
|
@@ -555,9 +596,15 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
555
596
|
require('propose-matrix', /strategy:\s*[\s\S]*?matrix:/.test(text), '`propose` mode must emit a MATRIX of jobs (`strategy.matrix`).');
|
|
556
597
|
require('propose-enumerates-via-scan', /dorfl scan --json/.test(text), 'the matrix items must be ENUMERATED via the eligible-pool scan ' +
|
|
557
598
|
'(`dorfl scan --json`).');
|
|
558
|
-
require('propose-one-advance-per-item', /dorfl advance "
|
|
559
|
-
'(one PR per item).');
|
|
560
|
-
|
|
599
|
+
require('propose-one-advance-per-item', /WORK_ITEM:\s*\$\{\{\s*matrix\.item\s*\}\}[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"/.test(text), 'each matrix leg must run one `dorfl advance <matrix item>` ' +
|
|
600
|
+
'(one PR per item), reading the item from the step env (`WORK_ITEM`).');
|
|
601
|
+
// The item id is a slug that may be hand-written (only minted slugs are
|
|
602
|
+
// sanitised), so it must reach the shell as DATA through `env:`, never as `${{ }}` text
|
|
603
|
+
// spliced into the `run:` script (GitHub Actions script injection).
|
|
604
|
+
require('matrix-item-not-spliced-into-run', !/dorfl advance "?\$\{\{/.test(operative), 'the matrix item must NOT be interpolated into the `run:` script as ' +
|
|
605
|
+
'`${{ matrix.item }}` (script injection): pass it through the step `env:` ' +
|
|
606
|
+
'as `WORK_ITEM` and quote it as `"${WORK_ITEM}"`.');
|
|
607
|
+
require('propose-leg-carries-propose-flag', /advance-propose:[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"[^\n]*--propose\b/.test(text), 'each `propose` matrix leg must pass `--propose` so the integration mode is ' +
|
|
561
608
|
'TIED to the matrix shape (a leg can never merge to main / desync from the ' +
|
|
562
609
|
'dispatch mode).');
|
|
563
610
|
// --- merge ⇒ a MATRIX per item (parallel build/gate/review, serialised land) -
|
|
@@ -567,7 +614,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
567
614
|
require('merge-matrix', /advance-merge:[\s\S]*?strategy:\s*[\s\S]*?matrix:/.test(text), 'the `merge` job must use a MATRIX (parallel build/gate/review per item; ' +
|
|
568
615
|
"the land tail is serialised by the engine's `mergeRetries` CAS-retry " +
|
|
569
616
|
"loop, not by the workflow's job shape).");
|
|
570
|
-
require('merge-leg-carries-merge-flag', /advance-merge:[\s\S]*?dorfl advance "
|
|
617
|
+
require('merge-leg-carries-merge-flag', /advance-merge:[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"[^\n]*--merge\b/.test(text), 'each `merge` matrix leg must pass `--merge` so the integration mode is ' +
|
|
571
618
|
'TIED to the matrix shape (a leg can never propose-only / desync from the ' +
|
|
572
619
|
'dispatch mode).');
|
|
573
620
|
// No host-specific cross-job serialiser on the merge job: a GitHub Actions
|
|
@@ -616,8 +663,13 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
616
663
|
['observationTriage', 'DORFL_OBSERVATION_TRIAGE'],
|
|
617
664
|
['surfaceBlockers', 'DORFL_SURFACE_BLOCKERS'],
|
|
618
665
|
]) {
|
|
619
|
-
// The override is a guarded shell write
|
|
620
|
-
|
|
666
|
+
// The override is a guarded shell write of a step-env copy of the input:
|
|
667
|
+
// `env: DISPATCH_<X>: ${{ inputs.<x> }}` then
|
|
668
|
+
// `[ -n "${DISPATCH_<X>}" ] && echo "<ENV>=${DISPATCH_<X>}" >> $GITHUB_ENV`.
|
|
669
|
+
// The input never appears as `${{ }}` text inside the `run:` script.
|
|
670
|
+
const dispatchVar = envVar.replace(/^DORFL_/, 'DISPATCH_');
|
|
671
|
+
const guardedWrite = new RegExp(`${dispatchVar}:\\s*\\$\\{\\{ github\\.event\\.inputs\\.${input} \\}\\}` +
|
|
672
|
+
`[\\s\\S]*?\\[ -n "\\$\\{${dispatchVar}\\}" \\] && echo "${envVar}=\\$\\{${dispatchVar}\\}"`);
|
|
621
673
|
require(`dispatch-${input}-guarded-write`, guardedWrite.test(text), `the \`${input}\` override must be a blank-guarded write of \`${envVar}\` ` +
|
|
622
674
|
'to `$GITHUB_ENV` (blank dispatch input / schedule / push emit nothing).');
|
|
623
675
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-lifecycle-template.js","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAGH,OAAO,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AAE9D,6EAA6E;AAC7E,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAC;AAEnE,oEAAoE;AACpE,MAAM,CAAC,MAAM,kCAAkC,GAC9C,oJAAoJ,CAAC;AAEtJ,8EAA8E;AAC9E,MAAM,CAAC,MAAM,+BAA+B,GAC3C,iCAAiC,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gCAAgC,CAC/C,MAAwB;IAExB,wEAAwE;IACxE,8EAA8E;IAC9E,gFAAgF;IAChF,oEAAoE;IACpE,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO
|
|
1
|
+
{"version":3,"file":"advance-lifecycle-template.js","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -581,8 +581,8 @@ export function formatSyncReport(result, dryRun) {
|
|
|
581
581
|
* it prints the error to stderr and exits 1 (the task-only commands never act on
|
|
582
582
|
* a spec). An OMITTED slug (`start`/`complete`/`prompt` infer it from the branch)
|
|
583
583
|
* passes through untouched. (The legacy ''prd:'' prefix is a DEAD namespace token
|
|
584
|
-
* after the hard cutover
|
|
585
|
-
*
|
|
584
|
+
* after the hard cutover: it is not special-cased here; a ''prd:<slug>'' arg
|
|
585
|
+
* is refused by the shared safe-slug check, since `:` is not a slug character.)
|
|
586
586
|
*
|
|
587
587
|
* `do` is the ONE command that spans both namespaces; it consumes the full
|
|
588
588
|
* `resolveSlug` (with the cross-namespace collision check) in the `do-in-place`
|
|
@@ -46,7 +46,7 @@ export declare const CLOSE_JOB_WORKFLOW_PATH = "workflows/close-job.yml";
|
|
|
46
46
|
* and future per-config wiring, but the close-job shape itself is
|
|
47
47
|
* config-independent.
|
|
48
48
|
*/
|
|
49
|
-
export declare function generateCloseJobWorkflow(
|
|
49
|
+
export declare function generateCloseJobWorkflow(config: ResolvedCIConfig): string;
|
|
50
50
|
/** A single structural problem found in the generated workflow. */
|
|
51
51
|
export interface CloseJobProblem {
|
|
52
52
|
/** A short, stable id for the violated invariant (for tests/assertions). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-job-template.d.ts","sourceRoot":"","sources":["../src/close-job-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"close-job-template.d.ts","sourceRoot":"","sources":["../src/close-job-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B,2EACkC,CAAC;AAE1E,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAmFzE;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC/B,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IAClC,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAuFzE"}
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
* parses + carries the right discipline" the task's acceptance criteria require;
|
|
33
33
|
* the test generates this artifact under `--fake` and asserts every invariant.
|
|
34
34
|
*/
|
|
35
|
+
import { shouldDropCheckoutCredentials } from './install-ci-core.js';
|
|
35
36
|
/** The capability id (the registry key + the emitted workflow file stem). */
|
|
36
37
|
export const CLOSE_JOB_CAPABILITY_ID = 'close-job';
|
|
37
38
|
/** The wizard-facing label for the close-job capability. */
|
|
@@ -45,7 +46,19 @@ export const CLOSE_JOB_WORKFLOW_PATH = 'workflows/close-job.yml';
|
|
|
45
46
|
* and future per-config wiring, but the close-job shape itself is
|
|
46
47
|
* config-independent.
|
|
47
48
|
*/
|
|
48
|
-
export function generateCloseJobWorkflow(
|
|
49
|
+
export function generateCloseJobWorkflow(config) {
|
|
50
|
+
// `persist-credentials: false` ONLY on a repo KNOWN to be public (see
|
|
51
|
+
// {@link shouldDropCheckoutCredentials}): this job has `contents: read`, so
|
|
52
|
+
// the persisted token can only ever read, and on a public repo reads need
|
|
53
|
+
// no token. Unknown / private / internal ⇒ today's checkout, unchanged.
|
|
54
|
+
const checkoutCredentials = shouldDropCheckoutCredentials(config)
|
|
55
|
+
? `
|
|
56
|
+
# Public repository: every git read works without a token, and this
|
|
57
|
+
# job cannot push, so do not leave the token in .git/config for later
|
|
58
|
+
# steps (the setup action, including any project-setup hook, and
|
|
59
|
+
# close-merged-issues) to read.
|
|
60
|
+
persist-credentials: false`
|
|
61
|
+
: '';
|
|
49
62
|
return `\
|
|
50
63
|
# dorfl — the ISSUE CLOSE-JOB in CI (capability E, spec runner-in-ci).
|
|
51
64
|
# EMITTED by \`dorfl install-ci\`; the human commits it. DO NOT hand-edit a
|
|
@@ -105,7 +118,7 @@ jobs:
|
|
|
105
118
|
steps:
|
|
106
119
|
- uses: actions/checkout@v5
|
|
107
120
|
with:
|
|
108
|
-
fetch-depth: 0
|
|
121
|
+
fetch-depth: 0${checkoutCredentials}
|
|
109
122
|
- uses: ./.github/actions/dorfl-setup
|
|
110
123
|
- name: close issues whose work has landed on main
|
|
111
124
|
# In-place in this checkout (no --isolated/--remote): the CI container IS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-job-template.js","sourceRoot":"","sources":["../src/close-job-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;
|
|
1
|
+
{"version":3,"file":"close-job-template.js","sourceRoot":"","sources":["../src/close-job-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -132,7 +132,35 @@ export interface ResolvedCIConfig {
|
|
|
132
132
|
projectSetup?: Record<string, unknown>;
|
|
133
133
|
/** See {@link CIConfigFile.maxParallel}. Always resolved (default applied). */
|
|
134
134
|
maxParallel: number;
|
|
135
|
+
/**
|
|
136
|
+
* The repo's visibility, DETECTED at generation time through the provider
|
|
137
|
+
* seam ({@link CIProviderContext.getRepoVisibility}); never read from or
|
|
138
|
+
* written to a config file (it is a fact about the repo, not a choice).
|
|
139
|
+
* `undefined` ⇒ unknown, which keeps the conservative output. See
|
|
140
|
+
* {@link shouldDropCheckoutCredentials}.
|
|
141
|
+
*/
|
|
142
|
+
repoVisibility?: RepoVisibility;
|
|
135
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* A repository's visibility on its CI provider. Used ONLY to decide whether the
|
|
146
|
+
* read-only jobs (verify, close-job) may check out with
|
|
147
|
+
* `persist-credentials: false`: on a PUBLIC repo every git read works without a
|
|
148
|
+
* token, so dropping the persisted token cannot break a fetch; on a private or
|
|
149
|
+
* internal repo (or when visibility is unknown) a fetch may need it.
|
|
150
|
+
*/
|
|
151
|
+
export type RepoVisibility = 'public' | 'private' | 'internal';
|
|
152
|
+
/** Parse a provider's visibility answer (`PUBLIC`, `private`, ...); unknown ⇒ `undefined`. */
|
|
153
|
+
export declare function parseRepoVisibility(raw: string): RepoVisibility | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* Whether the read-only jobs (verify, close-job) should check out with
|
|
156
|
+
* `persist-credentials: false`. True ONLY when the repo is KNOWN to be public:
|
|
157
|
+
* then the persisted token adds nothing a git read needs (those jobs have
|
|
158
|
+
* `contents: read`, so they cannot push either way), while leaving it in
|
|
159
|
+
* `.git/config` hands it to every later step, including the project-setup
|
|
160
|
+
* hook's dependency installs. Unknown or non-public ⇒ keep today's checkout, so
|
|
161
|
+
* a project gate that runs `git fetch` on a private repo keeps working.
|
|
162
|
+
*/
|
|
163
|
+
export declare function shouldDropCheckoutCredentials(config: Pick<ResolvedCIConfig, 'repoVisibility'>): boolean;
|
|
136
164
|
/** The default harness the composite setup action installs. */
|
|
137
165
|
export declare const DEFAULT_HARNESS: HarnessAdapter;
|
|
138
166
|
/**
|
|
@@ -207,6 +235,13 @@ export interface CIProviderContext {
|
|
|
207
235
|
* no default-branch concept.
|
|
208
236
|
*/
|
|
209
237
|
getDefaultBranch?(): Promise<string | undefined>;
|
|
238
|
+
/**
|
|
239
|
+
* OPTIONALLY report the repo's VISIBILITY (GitHub:
|
|
240
|
+
* `gh repo view --json visibility`). Read-only. Returns `undefined` when the
|
|
241
|
+
* lookup fails; absent on a provider with no such concept. Drives
|
|
242
|
+
* {@link shouldDropCheckoutCredentials}.
|
|
243
|
+
*/
|
|
244
|
+
getRepoVisibility?(): Promise<RepoVisibility | undefined>;
|
|
210
245
|
/**
|
|
211
246
|
* OPTIONALLY create/replace a branch RULESET (GitHub:
|
|
212
247
|
* `POST /repos/{owner}/{repo}/rulesets`) carrying the deadlock-guard
|
|
@@ -395,6 +430,48 @@ export declare function resolveCIConfig(file: CIConfigFile): ResolvedCIConfig;
|
|
|
395
430
|
* the `secrets` field is omitted entirely (never an empty object).
|
|
396
431
|
*/
|
|
397
432
|
export declare function exportCIConfig(config: ResolvedCIConfig, secrets?: Record<string, string>): string;
|
|
433
|
+
/**
|
|
434
|
+
* The npm package the composite setup action installs for the `pi` harness.
|
|
435
|
+
*
|
|
436
|
+
* Upstream moved the harness from `@mariozechner/pi-coding-agent` (deprecated,
|
|
437
|
+
* frozen at 0.73.1) to this name. The binary is still `pi` and it still reads
|
|
438
|
+
* `~/.pi/agent/` (models.json / auth.json), so nothing else in the generated
|
|
439
|
+
* action changes.
|
|
440
|
+
*/
|
|
441
|
+
export declare const PI_HARNESS_PACKAGE = "@earendil-works/pi-coding-agent";
|
|
442
|
+
/**
|
|
443
|
+
* The EXACT `pi` harness version the composite setup action installs.
|
|
444
|
+
*
|
|
445
|
+
* Pinned because the install runs in jobs that hold `contents: write` and a
|
|
446
|
+
* provider API key: an unpinned `npm install -g` resolves whatever `latest` is
|
|
447
|
+
* at RUN time, so a compromised or broken release would reach those
|
|
448
|
+
* credentials with no review and no lockfile to catch it.
|
|
449
|
+
*
|
|
450
|
+
* It is a constant dorfl DECLARES (not an install-ci parameter) because the
|
|
451
|
+
* harness is coupled to dorfl, not to the consumer: dorfl drives `pi` through
|
|
452
|
+
* its CLI flags and reads its session files (`session-path.ts`,
|
|
453
|
+
* `watch-session.ts`), so the harness version that works is a property of the
|
|
454
|
+
* dorfl release. Bump it here, with a changeset, when a dorfl release needs a
|
|
455
|
+
* newer harness; every consumer picks it up on their next `install-ci` run.
|
|
456
|
+
*
|
|
457
|
+
* 0.80.6 is the version dorfl is exercised against day to day (the maintainer's
|
|
458
|
+
* installed `pi`), not the newest release: a harness upgrade should be a
|
|
459
|
+
* deliberate, tested bump. It requires Node >= 22.19.0, which the action's
|
|
460
|
+
* `node-version: '22'` satisfies (setup-node resolves the latest 22.x).
|
|
461
|
+
*/
|
|
462
|
+
export declare const PI_HARNESS_VERSION = "0.80.6";
|
|
463
|
+
/**
|
|
464
|
+
* The version of THIS dorfl package, read at runtime from its own
|
|
465
|
+
* `package.json` (the single source changesets bumps on release). The composite
|
|
466
|
+
* setup action installs `dorfl@<this version>` so a consumer's CI runs the SAME
|
|
467
|
+
* CLI that generated its workflows, instead of whatever `latest` is at run time.
|
|
468
|
+
*
|
|
469
|
+
* Resolved relative to this module (`dist/install-ci-core.js` or
|
|
470
|
+
* `src/install-ci-core.ts` → `../package.json`), so it works from the built CLI
|
|
471
|
+
* and under tsx. Throws when the version cannot be read: silently falling back
|
|
472
|
+
* to an unpinned install would reintroduce exactly the risk the pin removes.
|
|
473
|
+
*/
|
|
474
|
+
export declare function dorflPackageVersion(): string;
|
|
398
475
|
/**
|
|
399
476
|
* Generate the shared COMPOSITE SETUP ACTION (`dorfl-setup`): installs
|
|
400
477
|
* Node + `dorfl` + the configured harness, configures git identity, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-ci-core.d.ts","sourceRoot":"","sources":["../src/install-ci-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;AAErD,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC7B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,MAAM,EAAE;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IACvB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC5B,6CAA6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IACnB,6DAA6D;IAC7D,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,sFAAsF;IACtF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"install-ci-core.d.ts","sourceRoot":"","sources":["../src/install-ci-core.ts"],"names":[],"mappings":"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"}
|