autonomous-sdlc-harness 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,18 @@
1
1
  /**
2
- * Generator: the two GitHub Actions workflows remote execution runs on — `harness-run.yml`, the job
3
- * the watcher dispatches a run to, and `harness-resume.yml`, the self-disabling resume poller —
4
- * written into the adopter's `.github/workflows/`.
2
+ * Generator: the GitHub Actions workflows remote execution runs on — `harness-run.yml`, the job
3
+ * the watcher dispatches a run to, `harness-resume.yml`, the self-disabling resume poller, and
4
+ * `harness-trigger.yml`, the issue-label and `repository_dispatch` trigger — written into the
5
+ * adopter's `.github/workflows/`.
5
6
  *
6
- * **The rule this module exists to enforce: the workflows are written exactly when
7
- * `config/model.ts` → `remoteExecutionApplies(config)` holds, and from the two templates under
7
+ * **The rule this module exists to enforce: the first two workflows are written exactly when
8
+ * `config/model.ts` → `remoteExecutionApplies(config)` holds, the trigger exactly when
9
+ * `config/model.ts` → `forgeTriggerApplies(config)` also holds, and all three from the templates under
8
10
  * `cli/templates/` → {@link WORKFLOW_TEMPLATE_DIR} only.** With the key absent or `local` this module
9
11
  * enqueues nothing, so such a repository receives exactly what `init` wrote before remote execution
10
- * existed. Every name — the directory, both file names, the template directory — is imported from
12
+ * existed. Every name — the directory, the file names, the template directory — is imported from
11
13
  * `remote/githubActions.ts`, which owns them.
12
14
  *
13
- * ## Three non-obvious choices, and where each comes from
15
+ * ## Five non-obvious choices, and where each comes from
14
16
  *
15
17
  * 1. **No configured value is rendered into either file; only this CLI's own version is.** The job
16
18
  * reads `harness.config.json` at run time, so a workflow frozen with a configured value would go
@@ -23,44 +25,137 @@
23
25
  * pattern never matches one and the check sees only `{{cliVersion}}`.
24
26
  * 3. **`harness-resume.yml` is copied verbatim, not rendered.** It carries no token, so there is no
25
27
  * value for the renderer to check; a token added to it later belongs in this module first.
28
+ * 4. **The upgrade mode ({@link GithubWorkflowsOptions.upgrade}) replaces through a per-request
29
+ * `forceOverride: 'always'`, not a fifth `WritePolicy`.** The engine's `.bak`-then-replace is
30
+ * exactly the operation wanted, and `core/writer.ts` reserves new policies for a new re-run
31
+ * contract. The condition is the pin `remote/githubActions.ts` → `renderedCliVersions` reads from
32
+ * `harness-run.yml`: absent, or any value other than this CLI's version. A re-render writes that
33
+ * version, so a second run finds nothing to replace. The resume poller's `- cron:` lines are
34
+ * carried into its re-render because the schedule is the one thing an adopter tunes inside that
35
+ * file; every other edit to either file survives only in its `.bak`. The runner and the timeouts
36
+ * are repository variables, which the re-render does not touch.
37
+ * 5. **The trigger workflow is gated on `forgeTriggerApplies`, carries no pin and is not upgraded,**
38
+ * because it calls the scripts on the default branch and shares their re-run contract. It is
39
+ * copied verbatim like `harness-resume.yml` (choice 3) and never carries a `forceOverride`.
26
40
  *
27
- * Both files are `create-if-absent`: the adopter tunes the cron, the timeouts and the runner, and a
41
+ * **Declared mirror.** `cli/templates/github/workflows/harness-run.yml`'s `Install the pinned plugin`
42
+ * step spells the route {@link upgradeWorkflowsCommand} produces,
43
+ * `npx autonomous-sdlc-harness@<version> init --upgrade-workflows`, as a literal the compiler cannot
44
+ * reach, and declares the mirror in its own `# DECLARED MIRRORS` block: a change to
45
+ * {@link UPGRADE_WORKFLOWS_FLAG} or to that route is an edit to that line too.
46
+ *
47
+ * **This module owns {@link IN_FLIGHT_RUNS_NOTE}.** `init`'s upgrade report and `doctor`'s
48
+ * `remote-execution` version warning both print it, and neither re-spells it.
49
+ *
50
+ * Every file is `create-if-absent`: the adopter tunes the cron, the timeouts and the runner, and a
28
51
  * re-run keeps that edit; `--force` replaces each after a `.bak` (`core/writer.ts`'s re-run table).
29
52
  */
53
+ import { existsSync, readFileSync } from 'node:fs';
30
54
  import { join } from 'node:path';
31
- import { remoteExecutionApplies } from '../config/model.js';
55
+ import { forgeTriggerApplies, remoteExecutionApplies } from '../config/model.js';
32
56
  import { ownManifestString, readTemplate } from '../core/paths.js';
33
57
  import { renderTemplate } from '../core/templating.js';
34
- import { WORKFLOW_RESUME_FILE, WORKFLOW_RESUME_PATH, WORKFLOW_RUN_FILE, WORKFLOW_RUN_PATH, WORKFLOW_TEMPLATE_DIR, } from '../remote/githubActions.js';
58
+ import { unquoteYamlScalar } from '../core/yamlScalar.js';
59
+ import { WORKFLOW_RESUME_FILE, WORKFLOW_RESUME_PATH, WORKFLOW_RUN_FILE, WORKFLOW_RUN_PATH, WORKFLOW_TEMPLATE_DIR, WORKFLOW_TRIGGER_FILE, WORKFLOW_TRIGGER_PATH, renderedCliVersions, } from '../remote/githubActions.js';
60
+ /** The `init` flag that runs {@link writeGithubWorkflows} with {@link GithubWorkflowsOptions.upgrade}. */
61
+ export const UPGRADE_WORKFLOWS_FLAG = '--upgrade-workflows';
62
+ /** The one producer of the `npx <package>@<version>` prefix a version-pinned remedy command starts with. */
63
+ export function pinnedCliCommand(version) {
64
+ return `npx ${ownManifestString('name')}@${version}`;
65
+ }
66
+ /** The one producer of the command that re-renders both workflows at `version`. */
67
+ export function upgradeWorkflowsCommand(version) {
68
+ return `${pinnedCliCommand(version)} init ${UPGRADE_WORKFLOWS_FLAG}`;
69
+ }
70
+ /**
71
+ * The upgrade route's one statement that an upgrade does not reach a run already in flight. One
72
+ * complete sentence ending in exactly one `.` and carrying no backtick, so a caller joins it with a
73
+ * space. Its citation is spelled as `harness-run.yml`'s `upgrade_route` spells it.
74
+ */
75
+ export const IN_FLIGHT_RUNS_NOTE = "An upgrade reaches only the runs dropped after it is pushed: each run's branch carries the workflows it was cut with, so a run already in flight finishes on the version it started with, and moving one on purpose is a separate step (docs/remote-execution.md, section 7, Upgrading).";
76
+ const CRON_LINE = /^\s*- cron: /;
77
+ /** The schedule a `- cron:` line carries, quotes stripped. */
78
+ function cronExpression(line) {
79
+ return unquoteYamlScalar(line.replace(CRON_LINE, '').trim());
80
+ }
81
+ /** Substitute `cron` for the template's `- cron:` line, at the template's indentation. */
82
+ function carryCron(template, cron) {
83
+ return template
84
+ .split('\n')
85
+ .flatMap((line) => {
86
+ if (!CRON_LINE.test(line))
87
+ return [line];
88
+ const indent = line.slice(0, line.length - line.trimStart().length);
89
+ return cron.map((carried) => indent + carried.trimStart());
90
+ })
91
+ .join('\n');
92
+ }
35
93
  /**
36
- * Enqueue both workflows when remote execution is on, and nothing otherwise.
94
+ * Enqueue the workflows when remote execution is on — the trigger only when `forgeTriggerApplies` also
95
+ * holds — and nothing otherwise.
37
96
  *
38
- * Nothing here touches the filesystem: the generator plans, and `init` applies the plan once.
97
+ * Nothing here writes the filesystem: the generator plans, and `init` applies the plan once. The
98
+ * upgrade mode reads the two existing workflows to decide.
39
99
  */
40
- export function writeGithubWorkflows({ repoRoot, config, plan }) {
100
+ export function writeGithubWorkflows({ repoRoot, config, plan, upgrade = false, }) {
41
101
  if (!remoteExecutionApplies(config))
42
- return { written: false, workflows: [] };
102
+ return { written: false, workflows: [], trigger: false };
43
103
  const runPath = join(repoRoot, ...WORKFLOW_RUN_PATH.split('/'));
44
104
  const resumePath = join(repoRoot, ...WORKFLOW_RESUME_PATH.split('/'));
105
+ const version = ownManifestString('version');
106
+ let upgradeResult;
107
+ let resumeContent = readTemplate(`${WORKFLOW_TEMPLATE_DIR}/${WORKFLOW_RESUME_FILE}`);
108
+ let replaceResume = false;
109
+ if (upgrade && existsSync(runPath)) {
110
+ const renderedFor = renderedCliVersions(readFileSync(runPath, 'utf8'));
111
+ const replaced = renderedFor.length === 0 || renderedFor.some((pin) => pin !== version);
112
+ let cron;
113
+ if (replaced && existsSync(resumePath)) {
114
+ const existing = readFileSync(resumePath, 'utf8');
115
+ const lines = existing.split(/\r?\n/).filter((line) => CRON_LINE.test(line));
116
+ if (lines.length > 0) {
117
+ cron = lines.map(cronExpression);
118
+ resumeContent = carryCron(resumeContent, lines);
119
+ }
120
+ replaceResume = existing !== resumeContent;
121
+ }
122
+ upgradeResult = { renderedFor, to: version, replaced, cron };
123
+ }
45
124
  const runTemplate = `${WORKFLOW_TEMPLATE_DIR}/${WORKFLOW_RUN_FILE}`;
46
125
  plan.add({
47
126
  path: runPath,
48
127
  policy: 'create-if-absent',
49
- content: renderTemplate(readTemplate(runTemplate), { cliVersion: ownManifestString('version') }, { describe: `the workflow template ${runTemplate}`, assertNoneSurvive: true }),
128
+ content: renderTemplate(readTemplate(runTemplate), { cliVersion: version }, { describe: `the workflow template ${runTemplate}`, assertNoneSurvive: true }),
50
129
  label: `workflow ${WORKFLOW_RUN_FILE}`,
130
+ ...(upgradeResult?.replaced === true ? { forceOverride: 'always' } : {}),
51
131
  });
52
132
  plan.add({
53
133
  path: resumePath,
54
134
  policy: 'create-if-absent',
55
- content: readTemplate(`${WORKFLOW_TEMPLATE_DIR}/${WORKFLOW_RESUME_FILE}`),
135
+ content: resumeContent,
56
136
  label: `workflow ${WORKFLOW_RESUME_FILE}`,
137
+ ...(replaceResume ? { forceOverride: 'always' } : {}),
57
138
  });
139
+ const workflows = [
140
+ { absolute: runPath, repoPath: WORKFLOW_RUN_PATH },
141
+ { absolute: resumePath, repoPath: WORKFLOW_RESUME_PATH },
142
+ ];
143
+ const trigger = forgeTriggerApplies(config);
144
+ if (trigger) {
145
+ const triggerPath = join(repoRoot, ...WORKFLOW_TRIGGER_PATH.split('/'));
146
+ plan.add({
147
+ path: triggerPath,
148
+ policy: 'create-if-absent',
149
+ content: readTemplate(`${WORKFLOW_TEMPLATE_DIR}/${WORKFLOW_TRIGGER_FILE}`),
150
+ label: `workflow ${WORKFLOW_TRIGGER_FILE}`,
151
+ });
152
+ workflows.push({ absolute: triggerPath, repoPath: WORKFLOW_TRIGGER_PATH });
153
+ }
58
154
  return {
59
155
  written: true,
60
- workflows: [
61
- { absolute: runPath, repoPath: WORKFLOW_RUN_PATH },
62
- { absolute: resumePath, repoPath: WORKFLOW_RESUME_PATH },
63
- ],
156
+ workflows,
157
+ trigger,
158
+ ...(upgradeResult === undefined ? {} : { upgrade: upgradeResult }),
64
159
  };
65
160
  }
66
161
  //# sourceMappingURL=githubWorkflows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"githubWorkflows.js","sourceRoot":"","sources":["../../src/generators/githubWorkflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,sBAAsB,EAAsB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AAoBpC;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAA0B;IACrF,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAE9E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,GAAG,qBAAqB,IAAI,iBAAiB,EAAE,CAAC;IACpE,IAAI,CAAC,GAAG,CAAC;QACP,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,cAAc,CACrB,YAAY,CAAC,WAAW,CAAC,EACzB,EAAE,UAAU,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAC5C,EAAE,QAAQ,EAAE,yBAAyB,WAAW,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC9E;QACD,KAAK,EAAE,YAAY,iBAAiB,EAAE;KACvC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC;QACP,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,YAAY,CAAC,GAAG,qBAAqB,IAAI,oBAAoB,EAAE,CAAC;QACzE,KAAK,EAAE,YAAY,oBAAoB,EAAE;KAC1C,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE;YACT,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE;YAClD,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,oBAAoB,EAAE;SACzD;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"githubWorkflows.js","sourceRoot":"","sources":["../../src/generators/githubWorkflows.ts"],"names":[],"mappings":"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"}
@@ -55,15 +55,20 @@
55
55
  * **either** predicate holds, as **one** `merge-json` request carrying whichever halves apply —
56
56
  * two requests for one path would be two writers of one file. With retrieval on and no browser
57
57
  * driven, the file declares the docs server alone.
58
- * 4. **The block covers files a harness command creates, and of the `.bak` siblings only the
59
- * configuration's.** OS and editor noise (`.DS_Store`, `*~`) is per-developer and per-OS, so it
58
+ * 4. **The block covers files a harness command creates, and of the `.bak` siblings only four, each
59
+ * by exact path.** OS and editor noise (`.DS_Store`, `*~`) is per-developer and per-OS, so it
60
60
  * belongs in the adopter's own ignore file or a global `core.excludesFile` and not in a block
61
- * every adopter shares. The `.bak` copies `init --force` takes of every other generated file are
62
- * the adopter's previous copies of files they edit, from a deliberate regeneration whose value is
63
- * that they stay visible — only the {@link CONFIG_FILENAME} `.bak`, which `config set` writes on
64
- * the documented path, is ignored, and it is ignored root-anchored. A bare `*.bak` has no path
65
- * component and so matches at every depth of the adopter's tree; this block is append-only, so a
66
- * too-wide rule can be withdrawn only by hand in every adopter's file.
61
+ * every adopter shares. Ignored: the {@link CONFIG_FILENAME} `.bak`, which `config set` writes on
62
+ * the documented path, root-anchored; the two remote-execution workflows' `.bak` files, because
63
+ * `init --upgrade-workflows` is the routine route on every release and its own report names each
64
+ * copy, so `git status` visibility adds nothing; and the permission profile's `.bak`, because it
65
+ * carries the same machine paths as the profile. The `.bak` copies `init --force` takes of every
66
+ * other generated file are the adopter's previous copies of files they edit, from a deliberate
67
+ * regeneration whose value is that they stay visible. No glob such as `.github/workflows/*.yml.bak`
68
+ * stands in for the workflow pair: it would claim the adopter's own workflow backups, which no
69
+ * harness command creates. A bare `*.bak` has no path component and so matches at every depth of
70
+ * the adopter's tree; this block is append-only, so a too-wide rule can be withdrawn only by hand
71
+ * in every adopter's file.
67
72
  *
68
73
  * Nothing here touches the filesystem beyond reading its templates: the generator plans, and `init`
69
74
  * applies the plan once.
@@ -75,6 +80,7 @@ import { isJsonObject } from '../core/json.js';
75
80
  import { readTemplate } from '../core/paths.js';
76
81
  import { normalizeRepoDir } from '../core/repoPaths.js';
77
82
  import { renderTemplate } from '../core/templating.js';
83
+ import { WORKFLOW_RESUME_PATH, WORKFLOW_RUN_PATH } from '../remote/githubActions.js';
78
84
  import { DOCS_SERVER_NAME } from '../retrieval/server.js';
79
85
  import { INDEX_DIR_NAME } from '../retrieval/store.js';
80
86
  import { PUSH_ENV_PATH, QA_CREDENTIALS_PATH } from './harnessConfig.js';
@@ -484,6 +490,9 @@ export function writeRepoRootFiles({ repoRoot, config, plan }) {
484
490
  testRunLogsReadmeException: testRunLogs.readmeException,
485
491
  // Derived from the configuration's own filename, so a rename moves its ignore rule with it.
486
492
  configBackupFile: `${CONFIG_FILENAME}.bak`,
493
+ // Ungated (choice 4): a rule gated on `remoteExecutionApplies` would change `.gitignore` in the
494
+ // same run that turns remote execution on. No leading slash: each path has an inner separator.
495
+ harnessBackups: [WORKFLOW_RUN_PATH, WORKFLOW_RESUME_PATH, PROFILE_PATH].map((path) => `${path}.bak`).join('\n'),
487
496
  qaBrowserArtifacts,
488
497
  docsRetrievalIndex,
489
498
  });
@@ -1 +1 @@
1
- {"version":3,"file":"repoRoot.js","sourceRoot":"","sources":["../../src/generators/repoRoot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repoRoot.js","sourceRoot":"","sources":["../../src/generators/repoRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAC3H,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAmC,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACL,YAAY,EACZ,gBAAgB,IAAI,mBAAmB,EACvC,uBAAuB,IAAI,0BAA0B,GACtD,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,sGAAsG;AACtG,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,cAAc;IAC3B,kBAAkB,EAAE,qBAAqB;IACzC,aAAa,EAAE,eAAe;IAC9B,GAAG,EAAE,UAAU;IACf,YAAY,EAAE,oBAAoB;CAC1B,CAAC,CAAC;AAEZ,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,+GAA+G,CAAC;AAElH;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAG,iBAAiB,CAAC;AAEnC,+FAA+F;AAC/F,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAQ1C;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAkC,MAAM,CAAC,MAAM,CAAC;IACzE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC;IACxE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;IAC5E,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC;IACvF,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC;IAC1E,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;CAC9E,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,qBAAqB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC7D,mBAAmB;IACnB,oBAAoB;IACpB,MAAM;IACN,iBAAiB;IACjB,OAAO;IACP,QAAQ;IACR,WAAW;IACX,mBAAmB;CACpB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAExC,qGAAqG;AACrG,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,gGAAgG;AAChG,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,sDAAsD;AACtD,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,2EAA2E;AAC3E,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAEpD,oFAAoF;AACpF,MAAM,6BAA6B,GAAG,sBAAsB,CAAC;AAY7D,MAAM,gBAAgB,GAAoB,MAAM,CAAC,MAAM,CAAC;IACtD,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,SAAS,CAAC,GAAG;CAC3B,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAoB,MAAM,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,SAAS,CAAC,YAAY;CACpC,CAAC,CAAC;AAoCH;;;;;;;;;;;GAWG;AACH,SAAS,MAAM,CAAC,QAAgB,EAAE,MAAwC;IACxE,OAAO,cAAc,CAAC,YAAY,CAAC,GAAG,YAAY,IAAI,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE;QACzE,QAAQ,EAAE,0BAA0B,QAAQ,EAAE;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,QAAQ,CAAC,gBAAgB,IAAI,uBAAuB,MAAM,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAAE,MAAM,QAAQ,CAAC,gBAAgB,IAAI,uBAAuB,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,SAAS,uBAAuB,CAAC,QAAyB;IACxD,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,CACZ,4BAA4B,QAAQ,CAAC,IAAI,aAAa,QAAQ,CAAC,IAAI,aAAa,mBAAmB,wEAAwE,QAAQ,WAAW,CAC/L,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,CAAC,KAAK,mBAAmB,SAAS,QAAQ,CAAC,IAAI,wCAAwC,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,0BAA0B,CAAC,OAAmB,EAAE,QAAyB;IAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,CACZ,4BAA4B,QAAQ,CAAC,IAAI,sCAAsC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,QAAQ,aAAa,QAAQ,CAAC,WAAW,8JAA8J,CAC3T,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,CACZ,OAAO,QAAQ,aAAa,QAAQ,CAAC,WAAW,+BAA+B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,QAAQ,CAAC,IAAI,uEAAuE,CAC5N,CAAC;IACJ,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,SAAS,yBAAyB,CAAC,OAAmB;IACpD,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAED,sEAAsE;AACtE,SAAS,kCAAkC,CAAC,OAAmB;IAC7D,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC1D,CAAC;AAED,oGAAoG;AACpG,SAAS,aAAa;IACpB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,YAAY,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,CAAC,OAAO,QAAQ,sBAAsB,WAAW,yCAAyC,CAAC,CAAC;IAC5G,CAAC;IACD,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,YAAY,GAAG,GAAG,YAAY,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;IACjE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,CAAC,OAAO,YAAY,sBAAsB,WAAW,yCAAyC,CAAC,CAAC;IAChH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACxD,MAAM,QAAQ,CACZ,OAAO,YAAY,wCAAwC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,mCAAmC,gBAAgB,yHAAyH,CACpQ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACtG,MAAM,QAAQ,CACZ,OAAO,YAAY,eAAe,gBAAgB,4FAA4F,CAC/I,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC,CAAC;IACvG,MAAM,CAAC,MAAM,CAAC,GAAG;QACf,cAAc,CACZ,IAAI,CAAC,CAAC,CAAC,EACP,EAAE,CAAC,6BAA6B,CAAC,EAAE,oBAAoB,EAAE,EACzD,EAAE,QAAQ,EAAE,OAAO,YAAY,+BAA+B,EAAE,CACjE;KACF,CAAC;IAEF,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,YAAqB,EAAE,cAAuB,EAAE,UAAkB;IACnF,MAAM,OAAO,GAAe,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC;IACnF,IAAI,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC;IAEpC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAe,CAAC;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACvD,MAAM,SAAS,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC,CAAE,KAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;QACjF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBAChC,MAAM,QAAQ,CACZ,OAAO,QAAQ,cAAc,SAAS,CAAC,GAAG,QAAQ,SAAS,CAAC,YAAY,mBAAmB,IAAI,oDAAoD,CACpJ,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAgB,EAAE,GAAW,EAAE,IAAY;IAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,CACZ,yBAAyB,GAAG,OAAO,IAAI,2KAA2K,CACnN,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAiBD,qFAAqF;AACrF,SAAS,wBAAwB,CAAC,QAAgB,EAAE,GAAW;IAC7D,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACrE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,QAAQ,CAAC,GAAG,GAAG,yEAAyE,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,eAAe,EAAE,CAAC;IACrD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,UAAU,EAAE,EAAE,CAAC;AAClG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,CAAC;AAwBD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,MAAM,OAAO,GAAG,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACvE,OAAO,EAAE,GAAG,OAAO,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAmB;IAC5E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;IACtE,gGAAgG;IAChG,+FAA+F;IAC/F,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC;IAC7C,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAClD,+FAA+F;IAC/F,iFAAiF;IACjF,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzG,8FAA8F;IAC9F,kFAAkF;IAClF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAC5F,kGAAkG;IAClG,mFAAmF;IACnF,gGAAgG;IAChG,gGAAgG;IAChG,4EAA4E;IAC5E,MAAM,kBAAkB,GAAG,YAAY;QACrC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,GAAG,QAAQ,IAAI,gBAAgB,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;QACjG,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChD,kGAAkG;IAClG,MAAM,kBAAkB,GAAG,cAAc;QACvC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,GAAG,QAAQ,IAAI,cAAc,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;QACpG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;QAC9C,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,WAAW;QAC9B,aAAa,EAAE,SAAS;QACxB,6EAA6E;QAC7E,qBAAqB,EAAE,YAAY;QACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,mBAAmB,EAAE,IAAI,CAAC,eAAe;QACzC,iGAAiG;QACjG,+DAA+D;QAC/D,mBAAmB,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1F,kBAAkB,EAAE,cAAc,CAAC,QAAQ;QAC3C,6BAA6B,EAAE,cAAc,CAAC,eAAe;QAC7D,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,oBAAoB,EAAE,KAAK,CAAC,eAAe;QAC3C,WAAW,EAAE,OAAO,CAAC,QAAQ;QAC7B,sBAAsB,EAAE,OAAO,CAAC,eAAe;QAC/C,eAAe,EAAE,WAAW,CAAC,QAAQ;QACrC,0BAA0B,EAAE,WAAW,CAAC,eAAe;QACvD,4FAA4F;QAC5F,gBAAgB,EAAE,GAAG,eAAe,MAAM;QAC1C,gGAAgG;QAChG,+FAA+F;QAC/F,cAAc,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/G,kBAAkB;QAClB,kBAAkB;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC;QACP,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;QACpC,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE,kDAAkD;KAC1D,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE3B,IAAI,CAAC,GAAG,CAAC;QACP,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;QACxC,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE;YACvC,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;SAC1E,CAAC;QACF,KAAK,EAAE,wBAAwB;KAChC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAE/B,mEAAmE;IACnE,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC;YACP,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC9B,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,CAAC;YAC5D,KAAK,EAAE,YAAY;gBACjB,CAAC,CAAC,cAAc;oBACd,CAAC,CAAC,uCAAuC;oBACzC,CAAC,CAAC,oBAAoB;gBACxB,CAAC,CAAC,2BAA2B;SAChC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,iGAAiG;IACjG,uCAAuC;IACvC,MAAM,eAAe,GAAG,cAAc;QACpC,CAAC,CAAC,yCAAyC,QAAQ,EAAE;QACrD,CAAC,CAAC,MAAM,QAAQ,cAAc,CAAC;IACjC,IAAI,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC;QAC/B,8FAA8F;QAC9F,iGAAiG;QACjG,4FAA4F;QAC5F,KAAK,CAAC,IAAI,CACR,GAAG,eAAe,yBAAyB,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,8WAA8W,eAAe,kOAAkO,QAAQ,2GAA2G,QAAQ,8KAA8K,eAAe,qKAAqK,CAC/oC,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CACR,GAAG,eAAe,4OAA4O,eAAe,oSAAoS,QAAQ,iOAAiO,eAAe,0KAA0K,CACp9B,CAAC;IACJ,CAAC;IAED,+FAA+F;IAC/F,yDAAyD;IACzD,MAAM,OAAO,GAAG,WAAW;SACxB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AAC/F,CAAC"}
@@ -4,17 +4,26 @@
4
4
  * **The rule this module exists to enforce: every remote-execution name has one owner, and a copy
5
5
  * anywhere else in `cli/src` imports it.** The workflow file names and paths, the template directory,
6
6
  * the repository secret and variable names, the two artifact names and the `gh` test-seam variable
7
- * are declared here once; the generator that writes the workflows and the `doctor` checks that grade
8
- * them read these constants rather than retyping a literal.
7
+ * and the rendered CLI-version pin are declared here once; the generator that writes the workflows and the `doctor` checks that grade
8
+ * them read these constants rather than retyping a literal, and so does `generators/repoRoot.ts`,
9
+ * which spells the two workflow `.bak` ignore rules whatever `execution.target` says.
9
10
  *
10
- * Nothing here is consulted unless `config/model.ts` → `remoteExecutionApplies(config)` is true:
11
- * every consumer tests that switch first.
11
+ * Except in `generators/repoRoot.ts`, nothing here is consulted unless `config/model.ts` →
12
+ * `remoteExecutionApplies(config)` is true: every other consumer tests that switch first. That one
13
+ * is ungated because a gated rule would change `.gitignore` in the same run that turns remote
14
+ * execution on. The issue-trigger names (`WORKFLOW_TRIGGER_*`, `TRIGGER_*`, `DEFAULT_TRIGGER_LABEL`)
15
+ * are gated tighter still: they are consulted only where `forgeTriggerApplies(config)` is true.
12
16
  *
13
17
  * **Shell and YAML mirrors that must agree byte for byte.** The compiler cannot reach them, so each
14
18
  * declares the mirror in its own header, and a rename here is an edit to each of them:
15
- * `cli/templates/scripts/remote-run.sh`, `cli/templates/github/workflows/harness-run.yml` and
16
- * `cli/templates/github/workflows/harness-resume.yml`. `cli/templates/scripts/autonomous-watcher.sh`
17
- * is not one: it reaches GitHub only through `remote-run.sh` and spells none of these names in code.
19
+ * `cli/templates/scripts/remote-run.sh`, `cli/templates/github/workflows/harness-run.yml`,
20
+ * `cli/templates/github/workflows/harness-resume.yml`,
21
+ * `cli/templates/github/workflows/harness-trigger.yml` and
22
+ * `cli/templates/scripts/lib/harness-run-lib.sh`, which mirrors {@link WORKFLOW_RUN_FILE} and
23
+ * {@link STATE_ARTIFACT_NAME} for the GitHub route its notification producers print.
24
+ * `cli/templates/scripts/autonomous-watcher.sh` is not one: it reaches GitHub only through
25
+ * `remote-run.sh`, spells none of these names in code, and reaches the GitHub-route text only through
26
+ * the library's `hr_github_answer_route` and `hr_github_resume_route`.
18
27
  *
19
28
  * **Why {@link GH_CLI_VARIABLE} exists.** Every real route into `gh` reaches the network, which no
20
29
  * test may do, so the binary run as `gh` is taken from `${HARNESS_GH_CLI:-gh}` in both this CLI and
@@ -24,12 +33,16 @@
24
33
  * It reads no configuration and writes nothing.
25
34
  */
26
35
  import { spawnSync } from 'node:child_process';
36
+ import { unquoteYamlScalar } from '../core/yamlScalar.js';
27
37
  /** The adopter-side directory GitHub reads workflows from. */
28
38
  export const WORKFLOWS_DIR = '.github/workflows';
29
39
  export const WORKFLOW_RUN_FILE = 'harness-run.yml';
30
40
  export const WORKFLOW_RUN_PATH = `${WORKFLOWS_DIR}/${WORKFLOW_RUN_FILE}`;
31
41
  export const WORKFLOW_RESUME_FILE = 'harness-resume.yml';
32
42
  export const WORKFLOW_RESUME_PATH = `${WORKFLOWS_DIR}/${WORKFLOW_RESUME_FILE}`;
43
+ /** The workflow that turns a labelled issue or a `repository_dispatch` event into a remote run. */
44
+ export const WORKFLOW_TRIGGER_FILE = 'harness-trigger.yml';
45
+ export const WORKFLOW_TRIGGER_PATH = `${WORKFLOWS_DIR}/${WORKFLOW_TRIGGER_FILE}`;
33
46
  /** Under `cli/templates/`; stored without the dot, which `init` adds (`cli/templates/README.md`). */
34
47
  export const WORKFLOW_TEMPLATE_DIR = 'github/workflows';
35
48
  /** The Actions artifact every job uploads its state bundle as. */
@@ -40,6 +53,14 @@ export const POLL_STATE_ARTIFACT_NAME = 'harness-poll-state';
40
53
  export const RUNNER_VARIABLE = 'HARNESS_RUNNER';
41
54
  /** Repository variable: any non-empty value stops every job and poller tick before it launches. */
42
55
  export const REMOTE_STOP_VARIABLE = 'HARNESS_REMOTE_STOP';
56
+ /** Repository variable naming the issue label that starts a run; unset or empty means {@link DEFAULT_TRIGGER_LABEL}. */
57
+ export const TRIGGER_LABEL_VARIABLE = 'HARNESS_TRIGGER_LABEL';
58
+ /** The issue label that starts a run when {@link TRIGGER_LABEL_VARIABLE} is unset or empty. */
59
+ export const DEFAULT_TRIGGER_LABEL = 'harness';
60
+ /** Repository variable: comma-separated bot logins that may start a run; unset or empty admits none. */
61
+ export const TRIGGER_ALLOWED_BOTS_VARIABLE = 'HARNESS_TRIGGER_ALLOWED_BOTS';
62
+ /** The `repository_dispatch` `event_type` the trigger workflow listens to. */
63
+ export const TRIGGER_DISPATCH_EVENT_TYPE = 'harness-task';
43
64
  /** Repository secret for subscription billing. */
44
65
  export const OAUTH_TOKEN_SECRET = 'CLAUDE_CODE_OAUTH_TOKEN';
45
66
  /** Repository secret for API billing; wins over {@link OAUTH_TOKEN_SECRET} when both are set. */
@@ -48,6 +69,29 @@ export const PUSH_URL_SECRET = 'HARNESS_PUSH_URL';
48
69
  export const GIT_TOKEN_SECRET = 'HARNESS_GIT_TOKEN';
49
70
  /** The environment variable naming the binary run as `gh`: `${HARNESS_GH_CLI:-gh}`. */
50
71
  export const GH_CLI_VARIABLE = 'HARNESS_GH_CLI';
72
+ /**
73
+ * The job-level `env:` variable carrying the CLI version a rendered `harness-run.yml` is pinned to.
74
+ * Mirrored in `cli/templates/github/workflows/harness-run.yml`, once per job.
75
+ */
76
+ export const CLI_VERSION_VARIABLE = 'HARNESS_CLI_VERSION';
77
+ const CLI_VERSION_LINE = new RegExp(`^[ \\t]*${CLI_VERSION_VARIABLE}:[ \\t]*(.*?)(?:[ \\t]+#.*)?[ \\t]*$`);
78
+ /**
79
+ * Every version a workflow's text is pinned to: the value of each `<indent>HARNESS_CLI_VERSION: <value>`
80
+ * line, a trailing ` # comment` and the quotes stripped, distinct and in file order; `[]` when no such
81
+ * line exists. Pure — the caller reads the file.
82
+ */
83
+ export function renderedCliVersions(text) {
84
+ const versions = [];
85
+ for (const line of text.split(/\r?\n/)) {
86
+ const match = CLI_VERSION_LINE.exec(line);
87
+ if (match === null)
88
+ continue;
89
+ const value = unquoteYamlScalar(match[1] ?? '');
90
+ if (value !== '' && !versions.includes(value))
91
+ versions.push(value);
92
+ }
93
+ return versions;
94
+ }
51
95
  /** The binary run as `gh` when {@link GH_CLI_VARIABLE} is unset or empty. */
52
96
  export const DEFAULT_GH_CLI = 'gh';
53
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"githubActions.js","sourceRoot":"","sources":["../../src/remote/githubActions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,aAAa,IAAI,iBAAiB,EAAE,CAAC;AAEzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,aAAa,IAAI,oBAAoB,EAAE,CAAC;AAE/E,qGAAqG;AACrG,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAExD,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAEnD,oGAAoG;AACpG,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAE7D,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEhD,mGAAmG;AACnG,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;;;GAIG;AACH,MAAM,aAAa,GAAG,MAAM,CAAC;AAS7B,2FAA2F;AAC3F,MAAM,UAAU,KAAK;IACnB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAChD,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;AACrF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CAAC,IAAuB,EAAE,GAAW;IACxD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;QACtC,GAAG;QACH,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,gGAAgG;IAChG,kFAAkF;IAClF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"githubActions.js","sourceRoot":"","sources":["../../src/remote/githubActions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autonomous-sdlc-harness",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "The outer loop of the autonomous SDLC harness: init, doctor, config and daemon management for the harness Claude Code plugin, plus opt-in local docs retrieval.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "firu-daniel",
@@ -9,7 +9,7 @@ The generator templates `init` copies into an adopted repository. Nothing here i
9
9
  | `githooks/` | the configured `githooksDir` |
10
10
  | `scripts/` | the configured `scriptsDir` |
11
11
  | `state-dir/` | the configured `stateDir` |
12
- | `github/` | `.github/` in the adopter's repo — `workflows/harness-run.yml` and `workflows/harness-resume.yml`, written only when `execution.target` is `github-actions` |
12
+ | `github/` | `.github/` in the adopter's repo — `workflows/harness-run.yml` and `workflows/harness-resume.yml`, written only when `execution.target` is `github-actions`, and `workflows/harness-trigger.yml`, written only when `forge` is also `github` |
13
13
 
14
14
  **Naming rule for the whole tree: a template whose adopter-side name begins with a dot is stored here without the dot.** `repo/gitignore` is written as `.gitignore`, `repo/mcp.json` as `.mcp.json`, and the `claude/` subtree lands at `.claude/` and the `github/` subtree at `.github/`; `init` adds the dot when it writes. The rule is load-bearing twice over — a real `.gitignore` inside this repository would be honoured by git and could silently exclude files that are meant to ship, and npm rewrites a packaged `.gitignore` to `.npmignore` on publish, so a dot-named template does not survive the wire.
15
15
 
@@ -4,6 +4,8 @@
4
4
  # WHO WRITES IT. `autonomous-sdlc-harness init`, only when harness.config.json's
5
5
  # `execution.target` is `github-actions`. Written create-if-absent: from then on
6
6
  # it is yours to tune, and a re-run of `init` keeps your copy.
7
+ # `init --upgrade-workflows` re-renders it together with the run workflow, after
8
+ # a `.bak`, carrying its `- cron:` lines.
7
9
  #
8
10
  # WHY A POLLER. A `schedule` trigger is a recurring cron read from the default
9
11
  # branch, not a one-shot timer, so resuming at a recorded reset time means
@@ -17,9 +19,12 @@
17
19
  # That also makes moot GitHub's disabling of scheduled workflows in a public
18
20
  # repository after 60 days without activity.
19
21
  #
20
- # UNVERIFIED: whether GITHUB_TOKEN with `actions: write` may enable and disable
21
- # a workflow. If it may not, the pausing job's `paused` notification says
22
- # auto-resume is unavailable, and the run waits for
22
+ # Gate 12 round 2, on 2026-09-29, verified that `gh workflow disable` succeeds
23
+ # under GITHUB_TOKEN with `actions: write`: a hand-started tick logged
24
+ # `poll: no branch is waiting; disabled harness-resume.yml`, and the workflow's
25
+ # state became `disabled_manually`. UNVERIFIED: the enable, because no job
26
+ # ended on a usage pause. If it is refused, the pausing job's `paused`
27
+ # notification says auto-resume is unavailable, and the run waits for
23
28
  # /autonomous-sdlc-harness:branch-resume.
24
29
  #
25
30
  # THE INTERVAL IS YOURS TO EDIT. On a private repository every tick is billed
@@ -56,6 +61,19 @@
56
61
  # HARNESS_REMOTE_STOP, HARNESS_PUSH_URL,
57
62
  # POLL_STATE_ARTIFACT_NAME
58
63
  # cli/src/config/model.ts DEFAULTS.scriptsDir, DEFAULTS.stateDir
64
+ #
65
+ # ACTION PINS.
66
+ # actions/checkout@v5
67
+ # actions/upload-artifact@v6
68
+ # Each is the lowest major whose own action.yml declares `runs.using: node24`,
69
+ # per a maintainer's lookups of each action's action.yml and release notes on
70
+ # 2026-09-29T08:21Z (UTC). Each of those majors' release notes requires Actions
71
+ # Runner 2.327.1 or newer; a GitHub-hosted runner already has it, and a
72
+ # self-hosted one must run it (docs/remote-execution.md, section 8). A major
73
+ # tag, not a commit sha: both are GitHub's own `actions/` organisation, the
74
+ # owner of the runner and GITHUB_TOKEN this job already trusts, and a major tag
75
+ # takes the action's own patch and security releases where a sha would freeze
76
+ # your copy. Pin shas in your copy if you want them.
59
77
 
60
78
  name: harness-resume
61
79
 
@@ -89,7 +107,7 @@ jobs:
89
107
  HARNESS_PUSH_URL: ${{ secrets.HARNESS_PUSH_URL }}
90
108
  steps:
91
109
  - name: Check out the default branch
92
- uses: actions/checkout@v4
110
+ uses: actions/checkout@v5
93
111
  with:
94
112
  ref: ${{ github.event.repository.default_branch }}
95
113
 
@@ -115,7 +133,7 @@ jobs:
115
133
 
116
134
  - name: Upload the poller state
117
135
  if: always() && env.POLL_STATE_DIR != ''
118
- uses: actions/upload-artifact@v4
136
+ uses: actions/upload-artifact@v6
119
137
  with:
120
138
  name: harness-poll-state
121
139
  path: ${{ env.POLL_STATE_DIR }}