autonomous-sdlc-harness 0.1.0 → 0.4.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.
- package/README.md +4 -3
- package/dist/cli.js +0 -0
- package/dist/commands/docs.js +220 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/doctor.js +32 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +240 -64
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/registry.js +2 -0
- package/dist/commands/registry.js.map +1 -1
- package/dist/config/check.js +36 -9
- package/dist/config/check.js.map +1 -1
- package/dist/config/model.js +43 -1
- package/dist/config/model.js.map +1 -1
- package/dist/core/git.js +29 -0
- package/dist/core/git.js.map +1 -1
- package/dist/core/layerGapRemedy.js +3 -2
- package/dist/core/layerGapRemedy.js.map +1 -1
- package/dist/core/paths.js +22 -2
- package/dist/core/paths.js.map +1 -1
- package/dist/core/pluginIdentity.js +33 -0
- package/dist/core/pluginIdentity.js.map +1 -0
- package/dist/core/prompt.js +6 -2
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/report.js +9 -0
- package/dist/core/report.js.map +1 -1
- package/dist/core/writer.js +24 -5
- package/dist/core/writer.js.map +1 -1
- package/dist/detect/presets.js +35 -26
- package/dist/detect/presets.js.map +1 -1
- package/dist/detect/signals.js +13 -9
- package/dist/detect/signals.js.map +1 -1
- package/dist/doctor/checks.js +483 -38
- package/dist/doctor/checks.js.map +1 -1
- package/dist/generators/claudeContext.js +4 -5
- package/dist/generators/claudeContext.js.map +1 -1
- package/dist/generators/githubWorkflows.js +66 -0
- package/dist/generators/githubWorkflows.js.map +1 -0
- package/dist/generators/harnessConfig.js +13 -5
- package/dist/generators/harnessConfig.js.map +1 -1
- package/dist/generators/notifications.js +105 -19
- package/dist/generators/notifications.js.map +1 -1
- package/dist/generators/outerLoopScripts.js +30 -3
- package/dist/generators/outerLoopScripts.js.map +1 -1
- package/dist/generators/permissionProfile.js +152 -21
- package/dist/generators/permissionProfile.js.map +1 -1
- package/dist/generators/projectSettings.js +5 -15
- package/dist/generators/projectSettings.js.map +1 -1
- package/dist/generators/repoRoot.js +148 -25
- package/dist/generators/repoRoot.js.map +1 -1
- package/dist/generators/scripts.js +4 -1
- package/dist/generators/scripts.js.map +1 -1
- package/dist/generators/stateDir.js +9 -3
- package/dist/generators/stateDir.js.map +1 -1
- package/dist/machine/paths.js +19 -4
- package/dist/machine/paths.js.map +1 -1
- package/dist/machine/plugins.js +2 -1
- package/dist/machine/plugins.js.map +1 -1
- package/dist/remote/githubActions.js +86 -0
- package/dist/remote/githubActions.js.map +1 -0
- package/dist/retrieval/chunk.js +158 -0
- package/dist/retrieval/chunk.js.map +1 -0
- package/dist/retrieval/corpus.js +75 -0
- package/dist/retrieval/corpus.js.map +1 -0
- package/dist/retrieval/models.js +175 -0
- package/dist/retrieval/models.js.map +1 -0
- package/dist/retrieval/queryLog.js +70 -0
- package/dist/retrieval/queryLog.js.map +1 -0
- package/dist/retrieval/refresh.js +55 -0
- package/dist/retrieval/refresh.js.map +1 -0
- package/dist/retrieval/runtime.js +161 -0
- package/dist/retrieval/runtime.js.map +1 -0
- package/dist/retrieval/search.js +129 -0
- package/dist/retrieval/search.js.map +1 -0
- package/dist/retrieval/server.js +197 -0
- package/dist/retrieval/server.js.map +1 -0
- package/dist/retrieval/session.js +41 -0
- package/dist/retrieval/session.js.map +1 -0
- package/dist/retrieval/setup.js +121 -0
- package/dist/retrieval/setup.js.map +1 -0
- package/dist/retrieval/store.js +170 -0
- package/dist/retrieval/store.js.map +1 -0
- package/package.json +22 -3
- package/templates/README.md +3 -2
- package/templates/claude/CLAUDE.md +4 -4
- package/templates/claude/README.md +3 -1
- package/templates/claude/context/conventions.md +1 -1
- package/templates/claude/context/layer.md +1 -1
- package/templates/claude/push-notify.env.example +7 -2
- package/templates/claude/settings.autonomous.json +1 -1
- package/templates/claude/settings.autonomous.retrieval.json +9 -0
- package/templates/github/workflows/harness-resume.yml +124 -0
- package/templates/github/workflows/harness-run.yml +446 -0
- package/templates/repo/README.md +2 -0
- package/templates/repo/gitignore +6 -0
- package/templates/repo/gitignore.retrieval +2 -0
- package/templates/repo/mcp.retrieval.json +11 -0
- package/templates/scripts/README.md +1 -1
- package/templates/scripts/autonomous-notify.sh +10 -4
- package/templates/scripts/autonomous-watcher.sh +1445 -221
- package/templates/scripts/cleanup-merged-worktrees.sh +126 -8
- package/templates/scripts/docs-search-server.sh +64 -0
- package/templates/scripts/flow-walker.sh +629 -0
- package/templates/scripts/flows/task_plan_writing.graph.json +192 -0
- package/templates/scripts/lib/flow-walker-gates.sh +165 -0
- package/templates/scripts/lib/harness-run-lib.sh +452 -21
- package/templates/scripts/remote-run.sh +1785 -0
- package/templates/scripts/restart-watcher.sh +24 -3
- package/templates/scripts/run-test-suite.sh +182 -0
- package/templates/scripts/scratch-run.sh +2 -1
- package/templates/state-dir/README-root.md +1 -1
- package/templates/state-dir/autonomous_logs/README.md +1 -1
- package/templates/state-dir/business_parity_reviews/README.md +1 -1
- package/templates/state-dir/clarification_digests/README.md +1 -1
- package/templates/state-dir/clarifications/README.md +4 -4
- package/templates/state-dir/improvement_observations/README.md +2 -0
- package/templates/state-dir/scratch/README.md +1 -1
- package/templates/state-dir/test_fix_plan_reviews/README.md +9 -0
- package/templates/state-dir/test_fix_plans/README.md +9 -0
- package/templates/state-dir/test_fix_point_reviews/README.md +9 -0
- package/templates/state-dir/test_run_logs/README.md +11 -0
|
@@ -0,0 +1,66 @@
|
|
|
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/`.
|
|
5
|
+
*
|
|
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
|
|
8
|
+
* `cli/templates/` → {@link WORKFLOW_TEMPLATE_DIR} only.** With the key absent or `local` this module
|
|
9
|
+
* 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
|
|
11
|
+
* `remote/githubActions.ts`, which owns them.
|
|
12
|
+
*
|
|
13
|
+
* ## Three non-obvious choices, and where each comes from
|
|
14
|
+
*
|
|
15
|
+
* 1. **No configured value is rendered into either file; only this CLI's own version is.** The job
|
|
16
|
+
* reads `harness.config.json` at run time, so a workflow frozen with a configured value would go
|
|
17
|
+
* wrong the moment the key changed. The version is the exception because it is the pin the job
|
|
18
|
+
* installs the plugin and runs `npx autonomous-sdlc-harness@<version>` against, and it is read
|
|
19
|
+
* through `core/paths.ts` → `ownManifestString`, the one reader of this package's manifest.
|
|
20
|
+
* 2. **`assertNoneSurvive` is on for `harness-run.yml`.** The one substituted value is a version
|
|
21
|
+
* string, which has no business carrying `{{…}}`; one that did would ship a workflow pinned to
|
|
22
|
+
* nothing. The template's GitHub expressions are all written `${{ ` with a space, so the token
|
|
23
|
+
* pattern never matches one and the check sees only `{{cliVersion}}`.
|
|
24
|
+
* 3. **`harness-resume.yml` is copied verbatim, not rendered.** It carries no token, so there is no
|
|
25
|
+
* value for the renderer to check; a token added to it later belongs in this module first.
|
|
26
|
+
*
|
|
27
|
+
* Both files are `create-if-absent`: the adopter tunes the cron, the timeouts and the runner, and a
|
|
28
|
+
* re-run keeps that edit; `--force` replaces each after a `.bak` (`core/writer.ts`'s re-run table).
|
|
29
|
+
*/
|
|
30
|
+
import { join } from 'node:path';
|
|
31
|
+
import { remoteExecutionApplies } from '../config/model.js';
|
|
32
|
+
import { ownManifestString, readTemplate } from '../core/paths.js';
|
|
33
|
+
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';
|
|
35
|
+
/**
|
|
36
|
+
* Enqueue both workflows when remote execution is on, and nothing otherwise.
|
|
37
|
+
*
|
|
38
|
+
* Nothing here touches the filesystem: the generator plans, and `init` applies the plan once.
|
|
39
|
+
*/
|
|
40
|
+
export function writeGithubWorkflows({ repoRoot, config, plan }) {
|
|
41
|
+
if (!remoteExecutionApplies(config))
|
|
42
|
+
return { written: false, workflows: [] };
|
|
43
|
+
const runPath = join(repoRoot, ...WORKFLOW_RUN_PATH.split('/'));
|
|
44
|
+
const resumePath = join(repoRoot, ...WORKFLOW_RESUME_PATH.split('/'));
|
|
45
|
+
const runTemplate = `${WORKFLOW_TEMPLATE_DIR}/${WORKFLOW_RUN_FILE}`;
|
|
46
|
+
plan.add({
|
|
47
|
+
path: runPath,
|
|
48
|
+
policy: 'create-if-absent',
|
|
49
|
+
content: renderTemplate(readTemplate(runTemplate), { cliVersion: ownManifestString('version') }, { describe: `the workflow template ${runTemplate}`, assertNoneSurvive: true }),
|
|
50
|
+
label: `workflow ${WORKFLOW_RUN_FILE}`,
|
|
51
|
+
});
|
|
52
|
+
plan.add({
|
|
53
|
+
path: resumePath,
|
|
54
|
+
policy: 'create-if-absent',
|
|
55
|
+
content: readTemplate(`${WORKFLOW_TEMPLATE_DIR}/${WORKFLOW_RESUME_FILE}`),
|
|
56
|
+
label: `workflow ${WORKFLOW_RESUME_FILE}`,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
written: true,
|
|
60
|
+
workflows: [
|
|
61
|
+
{ absolute: runPath, repoPath: WORKFLOW_RUN_PATH },
|
|
62
|
+
{ absolute: resumePath, repoPath: WORKFLOW_RESUME_PATH },
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=githubWorkflows.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -160,7 +160,7 @@ function buildCommands(scriptsDir, raw) {
|
|
|
160
160
|
* on the same single-derivation rule the reporting lines in `detect/presets.ts` read it by, and the
|
|
161
161
|
* written key means **this family derived at least one of the two required commands**.
|
|
162
162
|
*
|
|
163
|
-
* **No `review` key is written here.** It is the `/harness-analyze` command's to record through
|
|
163
|
+
* **No `review` key is written here.** It is the `/autonomous-sdlc-harness:harness-analyze` command's to record through
|
|
164
164
|
* `config set detection.review`, and an empty object would read as a review that happened.
|
|
165
165
|
*
|
|
166
166
|
* **Written on the run that generates the file, and never refreshed by a plain re-run.**
|
|
@@ -416,11 +416,12 @@ function resolveQaDriver(flag, ask, note, defer) {
|
|
|
416
416
|
* `defaultBranch` and `protectedBranches` were written as), {@link resolveQaDriver}'s unknown-answer
|
|
417
417
|
* arm (what `qa.driver` was written as) and {@link settleQaDriver} (what the written driver costs)
|
|
418
418
|
* are deferred warnings, and {@link resolveDefaultBranch}'s five rung notes together with
|
|
419
|
-
* {@link resolveQaDriver}'s three
|
|
419
|
+
* {@link resolveQaDriver}'s three and the docs-retrieval could-not-ask note are deferred notes —
|
|
420
|
+
* every note this assembler has. The
|
|
420
421
|
* `--qa-driver` without `--qa` and `--parity` without `--reference-impl` arms below are not
|
|
421
422
|
* deferred: each is about a flag the adopter typed on this command line.
|
|
422
423
|
*/
|
|
423
|
-
export function buildConfig({ repoRoot, detection, preset, flags, warn, noteIfWritten, warnIfWritten, askDriver, }) {
|
|
424
|
+
export function buildConfig({ repoRoot, detection, preset, flags, warn, noteIfWritten, warnIfWritten, askDriver, askRetrieval, }) {
|
|
424
425
|
const report = warn ?? (() => { });
|
|
425
426
|
const informIfWritten = noteIfWritten ?? (() => { });
|
|
426
427
|
const defer = warnIfWritten ?? (() => { });
|
|
@@ -468,7 +469,13 @@ export function buildConfig({ repoRoot, detection, preset, flags, warn, noteIfWr
|
|
|
468
469
|
report('--qa-driver was given without --qa, so it was not written anywhere: qa.driver is read only while the interactive test phase is on, and no qa section is written while it is off — re-run with --qa to turn the phase on and set the driver in the same run');
|
|
469
470
|
}
|
|
470
471
|
if (phases.docs) {
|
|
471
|
-
|
|
472
|
+
const asked = flags.docsRetrieval === true ? true : askRetrieval?.();
|
|
473
|
+
if (asked === undefined) {
|
|
474
|
+
informIfWritten(`docs retrieval stays off: this run could not ask. Pass --docs-retrieval to turn it on, or later run \`${CLI} config set docs.retrieval true\` and then \`init --force\``);
|
|
475
|
+
}
|
|
476
|
+
// The key is written only when on: an absent key is the schema default, so a declined or unasked
|
|
477
|
+
// run writes the `docs` section it wrote before retrieval existed.
|
|
478
|
+
config.docs = { root: flags.docsRoot ?? DEFAULT_DOCS_ROOT, ...(asked === true ? { retrieval: true } : {}) };
|
|
472
479
|
}
|
|
473
480
|
if (phases.parity) {
|
|
474
481
|
// Omitted rather than written empty when there is nothing to put in it: the phase toggle is
|
|
@@ -522,7 +529,7 @@ function keptQaDriverClause(config) {
|
|
|
522
529
|
* The write itself, the `.bak` and the `--dry-run` suppression all belong to the write engine; this
|
|
523
530
|
* generator has no filesystem-mutating call.
|
|
524
531
|
*/
|
|
525
|
-
export function writeHarnessConfig({ repoRoot, detection, preset, flags, plan, resetConfig = false, dryRun = false, appDirSource = 'default', askDriver, }) {
|
|
532
|
+
export function writeHarnessConfig({ repoRoot, detection, preset, flags, plan, resetConfig = false, dryRun = false, appDirSource = 'default', askDriver, askRetrieval, }) {
|
|
526
533
|
const warnings = [];
|
|
527
534
|
const notes = [];
|
|
528
535
|
// Both held back until `kept` is known, and published or dropped there — one list per stream
|
|
@@ -534,6 +541,7 @@ export function writeHarnessConfig({ repoRoot, detection, preset, flags, plan, r
|
|
|
534
541
|
detection,
|
|
535
542
|
...(preset === undefined ? {} : { preset }),
|
|
536
543
|
...(askDriver === undefined ? {} : { askDriver }),
|
|
544
|
+
...(askRetrieval === undefined ? {} : { askRetrieval }),
|
|
537
545
|
flags,
|
|
538
546
|
warn: (message) => warnings.push(message),
|
|
539
547
|
warnIfWritten: (message) => ifWritten.push(message),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harnessConfig.js","sourceRoot":"","sources":["../../src/generators/harnessConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harnessConfig.js","sourceRoot":"","sources":["../../src/generators/harnessConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
* declares exactly {@link PUSH_URL_KEY} and {@link PUSH_CMD_KEY}. The credential-bearing value is
|
|
13
13
|
* therefore the push **URL**, and its home is the machine-local `push.env` that `docs/watcher.md`
|
|
14
14
|
* §6 already names as the first file the notifier reads. "Guided ntfy setup" ships accordingly as a
|
|
15
|
-
* vendor-neutral
|
|
16
|
-
*
|
|
15
|
+
* vendor-neutral destination: an adopter may give an ntfy topic name, which is written as its
|
|
16
|
+
* `https://ntfy.sh/<topic>` address, or the full URL of any endpoint that accepts a POST.
|
|
17
17
|
*
|
|
18
|
-
* ##
|
|
18
|
+
* ## Four non-obvious choices, and where each comes from
|
|
19
19
|
*
|
|
20
20
|
* 1. **An opt-in with no endpoint writes nothing — and that is the whole point of the file.**
|
|
21
21
|
* `docs/watcher.md` §6's precedence is that the machine-local file wins and the repository's
|
|
@@ -24,17 +24,32 @@
|
|
|
24
24
|
* file that already has values, turning an opt-in into a silent opt-out. When the answer to
|
|
25
25
|
* "where should notifications be posted" is nothing, this generator enqueues nothing and returns
|
|
26
26
|
* the guided setup as a note instead.
|
|
27
|
-
* 2. **The value is never logged back.** The run's action log
|
|
28
|
-
* wrote, the note names the two keys
|
|
27
|
+
* 2. **The value is never logged back — a topic name no more than a URL.** The run's action log
|
|
28
|
+
* names the path the write engine wrote, the note names the two keys and which form was
|
|
29
|
+
* recognised, and none of them says what the URL or the topic is — the same discipline
|
|
29
30
|
* `autonomous-notify.sh`'s header states for the delivery side ("NO VALUE IS EVER PRINTED, by
|
|
30
31
|
* this script or in a failure line — only paths and key names"). A push URL is a bearer
|
|
31
|
-
* credential for every endpoint worth pointing this at, and
|
|
32
|
-
* it
|
|
32
|
+
* credential for every endpoint worth pointing this at, and an ntfy topic is one too: the public
|
|
33
|
+
* server has no account behind a topic, so anyone who knows its name can read and post to it. An
|
|
34
|
+
* answer that is neither form is not repeated either, because it is most likely a mistyped one.
|
|
35
|
+
* A terminal scrollback is not where any of them belongs.
|
|
33
36
|
* 3. **The precedence has exactly one definition on the TypeScript side**, {@link pushEnvCandidates},
|
|
34
37
|
* so a `doctor` check reporting which file is in effect reads that order rather than re-joining
|
|
35
38
|
* either path. Two derivations of a first-wins order is two answers to the one question anybody
|
|
36
39
|
* asks about these files, and the answers would differ exactly where it matters — on a machine
|
|
37
40
|
* that has both.
|
|
41
|
+
* 4. **One grammar for the destination, and a file that survives being sourced.**
|
|
42
|
+
* {@link resolvePushDestination} is the only definition of what may be given, and
|
|
43
|
+
* {@link PUSH_DESTINATION_FORMS} the only sentence describing it, for the reason choice 3 gives
|
|
44
|
+
* for the precedence; {@link UNRECOGNISED_DESTINATION_NOTE}, the line `init`'s re-ask prints,
|
|
45
|
+
* is produced here too. The file is a shell fragment `autonomous-notify.sh` sources under
|
|
46
|
+
* `set -a`, so {@link pushEnvContent} single-quotes a URL outside a conservative character set:
|
|
47
|
+
* an unquoted `&` or `;` in a query string would break the file or run a command. The grammar
|
|
48
|
+
* refuses `'`, so single quotes always suffice.
|
|
49
|
+
*
|
|
50
|
+
* **Finding: `autonomous-notify.sh` needs no change for the topic form.** The stored value is
|
|
51
|
+
* always a full URL, which it POSTs verbatim; a topic is resolved to its address here, before the
|
|
52
|
+
* file is written.
|
|
38
53
|
*
|
|
39
54
|
* Nothing here touches the filesystem: the generator plans, and `init` applies the plan once — so
|
|
40
55
|
* `--dry-run` writes no machine-local file for the same structural reason it writes nothing inside
|
|
@@ -52,13 +67,68 @@ export const PUSH_CMD_KEY = 'HARNESS_PUSH_CMD';
|
|
|
52
67
|
/** Mode of the written file: it holds a credential, so it is the owner's to read and nobody else's. */
|
|
53
68
|
const PUSH_ENV_MODE = 0o600;
|
|
54
69
|
/**
|
|
55
|
-
*
|
|
70
|
+
* A value bash reads back unchanged when written unquoted in an assignment. `~` is deliberately
|
|
71
|
+
* outside it: bash tilde-expands it after a `:` in an assignment.
|
|
72
|
+
*/
|
|
73
|
+
const SHELL_SAFE_VALUE = /^[A-Za-z0-9._:/?#@%+=,-]+$/;
|
|
74
|
+
/** The public ntfy server a bare topic name is posted to. */
|
|
75
|
+
export const NTFY_PUBLIC_ORIGIN = 'https://ntfy.sh';
|
|
76
|
+
/** The ntfy server's own topic-name rule; a name outside it is one the server would refuse. */
|
|
77
|
+
const NTFY_TOPIC_PATTERN = /^[-_A-Za-z0-9]{1,64}$/;
|
|
78
|
+
/** The one placeholder every flag row, note and advice line prints for the destination. */
|
|
79
|
+
export const PUSH_DESTINATION_PLACEHOLDER = '<url-or-ntfy-topic>';
|
|
80
|
+
/**
|
|
81
|
+
* What an ntfy topic becomes once written. Module-private: it reaches callers only inside
|
|
82
|
+
* {@link PUSH_DESTINATION_FORMS}, which is the surface every caller quotes.
|
|
83
|
+
*/
|
|
84
|
+
const GUIDED_ENDPOINT_EXAMPLE = `${NTFY_PUBLIC_ORIGIN}/<your-topic>`;
|
|
85
|
+
/**
|
|
86
|
+
* The one description of what may be given as a push destination: a noun phrase, without a final
|
|
87
|
+
* stop, so a caller can write "Type {@link PUSH_DESTINATION_FORMS}." or "takes …; the value given is
|
|
88
|
+
* neither". Every surface asking for or refusing a destination interpolates it rather than
|
|
89
|
+
* re-wording it.
|
|
90
|
+
*/
|
|
91
|
+
export const PUSH_DESTINATION_FORMS = `either an ntfy topic name — install the free ntfy app from the App Store or Play Store, create a topic there and type its name, with no server and no account needed (it is posted to as ${GUIDED_ENDPOINT_EXAMPLE}); the name works like a password, because anyone who knows it can read and send these notifications, so choose one nobody would guess — or the full http:// or https:// URL of any other endpoint that accepts a POST`;
|
|
92
|
+
const NOT_REPEATED_CLAUSE = 'it is not repeated here, because a push destination is a credential';
|
|
93
|
+
/**
|
|
94
|
+
* The line `init`'s re-ask prints after an unrecognised answer. It names no form, because the
|
|
95
|
+
* question it follows interpolates {@link PUSH_DESTINATION_FORMS}, and never quotes the answer.
|
|
96
|
+
*/
|
|
97
|
+
export const UNRECOGNISED_DESTINATION_NOTE = `That answer is not one of the forms asked for, so it was not used; ${NOT_REPEATED_CLAUSE}.`;
|
|
98
|
+
const HTTP_SCHEME = /^https?:\/\//i;
|
|
99
|
+
// `'` is refused so the single-quoting in `pushEnvContent` can never be broken out of.
|
|
100
|
+
const UNWRITABLE_IN_URL = /[\s\u0000-\u001f\u007f']/;
|
|
101
|
+
const NTFY_HOSTED_TOPIC = /^ntfy\.sh\/([^/]*)\/?$/i;
|
|
102
|
+
/**
|
|
103
|
+
* Resolve a push destination as given — a full `http://` / `https://` URL, `ntfy.sh/<topic>`, or a
|
|
104
|
+
* bare ntfy topic name — to the URL the notifier posts to.
|
|
56
105
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
106
|
+
* **The rule this function exists to enforce: it is the only grammar for this value, and every
|
|
107
|
+
* entry point calls it** — the `--push-url` flag, the terminal prompt, {@link writeNotifications},
|
|
108
|
+
* and any later one such as `ROADMAP.md`'s unshipped `notifications set-url`. A second copy of the
|
|
109
|
+
* grammar is two answers to "what may I type here".
|
|
110
|
+
*
|
|
111
|
+
* A URL is kept as typed (trimmed), not normalised through `URL.href`, so what is written is what
|
|
112
|
+
* the adopter gave.
|
|
60
113
|
*/
|
|
61
|
-
export
|
|
114
|
+
export function resolvePushDestination(answer) {
|
|
115
|
+
const trimmed = answer.trim();
|
|
116
|
+
if (HTTP_SCHEME.test(trimmed) && !UNWRITABLE_IN_URL.test(trimmed)) {
|
|
117
|
+
let hostname = '';
|
|
118
|
+
try {
|
|
119
|
+
hostname = new URL(trimmed).hostname;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
hostname = '';
|
|
123
|
+
}
|
|
124
|
+
if (hostname !== '')
|
|
125
|
+
return { kind: 'url', url: trimmed };
|
|
126
|
+
}
|
|
127
|
+
const topic = NTFY_HOSTED_TOPIC.exec(trimmed)?.[1] ?? trimmed;
|
|
128
|
+
if (NTFY_TOPIC_PATTERN.test(topic))
|
|
129
|
+
return { kind: 'ntfy-topic', url: `${NTFY_PUBLIC_ORIGIN}/${topic}` };
|
|
130
|
+
return { kind: 'unrecognised' };
|
|
131
|
+
}
|
|
62
132
|
/** The machine-local push-notification settings file — the first file the notifier reads. */
|
|
63
133
|
export function machinePushEnvPath() {
|
|
64
134
|
return join(machineConfigDir(), PUSH_ENV_FILENAME);
|
|
@@ -111,8 +181,12 @@ function repositoryPushEnvPath(repoRoot, config) {
|
|
|
111
181
|
* copy is. Nor does it restate what either key does: that is `autonomous-notify.sh`'s header, which
|
|
112
182
|
* is the one implementation of the delivery arms, and a second account of it here would be the copy
|
|
113
183
|
* that goes stale.
|
|
184
|
+
*
|
|
185
|
+
* The value is written unquoted only inside {@link SHELL_SAFE_VALUE}, and single-quoted otherwise
|
|
186
|
+
* (module header, choice 4).
|
|
114
187
|
*/
|
|
115
188
|
function pushEnvContent(url) {
|
|
189
|
+
const value = SHELL_SAFE_VALUE.test(url) ? url : `'${url}'`;
|
|
116
190
|
return [
|
|
117
191
|
'# Push notifications for unattended runs — machine-local, written by',
|
|
118
192
|
'# `npx autonomous-sdlc-harness init --notifications`.',
|
|
@@ -126,8 +200,12 @@ function pushEnvContent(url) {
|
|
|
126
200
|
'# It holds a credential: it is created 0600 inside a 0700 directory, it is outside every',
|
|
127
201
|
'# repository so it cannot be committed by accident, and no command in this CLI prints a value',
|
|
128
202
|
'# from it back. Edit it freely — `init` creates it once and a later run leaves it as you left it.',
|
|
203
|
+
'#',
|
|
204
|
+
`# ${PUSH_URL_KEY} always holds a full URL: an ntfy topic is written as ${NTFY_PUBLIC_ORIGIN}/<topic>,`,
|
|
205
|
+
'# and the topic name in it is itself the credential — anyone who knows it can read and post to it.',
|
|
206
|
+
"# The file is sourced by a shell, so a URL containing `&`, `;` or a space must stay single-quoted.",
|
|
129
207
|
'',
|
|
130
|
-
`${PUSH_URL_KEY}=${
|
|
208
|
+
`${PUSH_URL_KEY}=${value}`,
|
|
131
209
|
`${PUSH_CMD_KEY}=`,
|
|
132
210
|
'',
|
|
133
211
|
].join('\n');
|
|
@@ -135,14 +213,16 @@ function pushEnvContent(url) {
|
|
|
135
213
|
/**
|
|
136
214
|
* Enqueue the machine-local settings file, or explain why nothing was written.
|
|
137
215
|
*
|
|
138
|
-
*
|
|
216
|
+
* Four outcomes, and the second is the one to read first:
|
|
139
217
|
*
|
|
140
218
|
* - **opt-in not taken** — nothing is enqueued and a note records that delivery stays opt-in and
|
|
141
219
|
* defaults to nothing pushed, which is what every release before this one did;
|
|
142
220
|
* - **opt-in taken with no endpoint** — nothing is enqueued, and the note carries the guided setup:
|
|
143
221
|
* the path, the two key names and a worked example. Writing an empty file here would shadow a
|
|
144
222
|
* repository-side file that already has values (choice 1 in the module header);
|
|
145
|
-
* - **opt-in taken with
|
|
223
|
+
* - **opt-in taken with a destination {@link resolvePushDestination} does not recognise** — nothing
|
|
224
|
+
* is enqueued, for the same reason, and one warning says so without repeating the value;
|
|
225
|
+
* - **opt-in taken with a recognised destination** — its resolved URL is written; the directory at `0700` and the file at `0600`, both
|
|
146
226
|
* `allowOutsideRepo`, the file `create-if-absent` so a re-run leaves an edited one alone.
|
|
147
227
|
*/
|
|
148
228
|
export function writeNotifications({ repoRoot, config, plan, enabled, pushUrl, }) {
|
|
@@ -163,13 +243,19 @@ export function writeNotifications({ repoRoot, config, plan, enabled, pushUrl, }
|
|
|
163
243
|
if (pushUrl !== undefined) {
|
|
164
244
|
warnings.push('--push-url was given without --notifications, so it was not written anywhere: the endpoint is only ever written into the machine-local push-notification settings file, and that file is written only when the opt-in is taken — re-run with --notifications to take it and set the endpoint in the same run');
|
|
165
245
|
}
|
|
166
|
-
notes.push(`no push-notification settings were written and none were changed: delivery is opt-in and defaults to nothing pushed, so an unattended run's completed, parked and failed events reach a desktop banner where one is available and nothing else. Re-run with --notifications --push-url
|
|
246
|
+
notes.push(`no push-notification settings were written and none were changed: delivery is opt-in and defaults to nothing pushed, so an unattended run's completed, parked and failed events reach a desktop banner where one is available and nothing else. Re-run with --notifications --push-url ${PUSH_DESTINATION_PLACEHOLDER}, giving ${PUSH_DESTINATION_FORMS}, to write ${target}, or ${repositoryRemedy} — the machine-local file is read first and the repository one only when it is absent (docs/watcher.md §6)`);
|
|
167
247
|
return { written: false, notes, warnings };
|
|
168
248
|
}
|
|
169
249
|
if (pushUrl === undefined) {
|
|
170
|
-
notes.push(`push notifications were asked for and no
|
|
250
|
+
notes.push(`push notifications were asked for and no destination was given, so nothing was written — deliberately: the machine-local file is read before ${repositoryName} and while it exists that one is not read at all, so an empty ${target} would shadow values you may already have there and turn this opt-in into a silent opt-out. Re-run with --push-url ${PUSH_DESTINATION_PLACEHOLDER}, giving ${PUSH_DESTINATION_FORMS}; or write ${target} yourself with ${PUSH_URL_KEY} set to a full URL and ${PUSH_CMD_KEY} empty`);
|
|
251
|
+
return { written: false, notes, warnings };
|
|
252
|
+
}
|
|
253
|
+
const destination = resolvePushDestination(pushUrl);
|
|
254
|
+
if (destination.kind === 'unrecognised') {
|
|
255
|
+
warnings.push(`the push destination given is not ${PUSH_DESTINATION_FORMS}, so nothing was written; ${NOT_REPEATED_CLAUSE}. Re-run with --notifications --push-url ${PUSH_DESTINATION_PLACEHOLDER}, or write ${target} yourself with ${PUSH_URL_KEY} set to a full URL and ${PUSH_CMD_KEY} empty`);
|
|
171
256
|
return { written: false, notes, warnings };
|
|
172
257
|
}
|
|
258
|
+
const recognised = destination.kind === 'ntfy-topic' ? `the ntfy topic you gave, as its ${NTFY_PUBLIC_ORIGIN} address` : 'the URL you gave';
|
|
173
259
|
plan.add({
|
|
174
260
|
path: machineConfigDir(),
|
|
175
261
|
policy: 'ensure-dir',
|
|
@@ -180,12 +266,12 @@ export function writeNotifications({ repoRoot, config, plan, enabled, pushUrl, }
|
|
|
180
266
|
plan.add({
|
|
181
267
|
path: target,
|
|
182
268
|
policy: 'create-if-absent',
|
|
183
|
-
content: pushEnvContent(
|
|
269
|
+
content: pushEnvContent(destination.url),
|
|
184
270
|
label: 'machine-local push-notification settings',
|
|
185
271
|
mode: PUSH_ENV_MODE,
|
|
186
272
|
allowOutsideRepo: true,
|
|
187
273
|
});
|
|
188
|
-
notes.push(`${target} is the machine-local push-notification settings file, written to hold ${PUSH_URL_KEY} and an empty ${PUSH_CMD_KEY} — the endpoint itself is deliberately not printed here or anywhere else. It is machine-local rather than committed, and it is read before ${repositoryName}, which is then not read at all. It is create-if-absent: a file already there is kept exactly as you edited it and still carries the endpoint it was written with, so --push-url on a re-run sets nothing — to point it elsewhere, edit ${PUSH_URL_KEY} in it by hand, or re-run with --force, which copies it to a .bak sibling and re-writes it from this run's --push-url`);
|
|
274
|
+
notes.push(`${target} is the machine-local push-notification settings file, written to hold ${PUSH_URL_KEY}, set to ${recognised}, and an empty ${PUSH_CMD_KEY} — the endpoint itself is deliberately not printed here or anywhere else. It is machine-local rather than committed, and it is read before ${repositoryName}, which is then not read at all. It is create-if-absent: a file already there is kept exactly as you edited it and still carries the endpoint it was written with, so --push-url on a re-run sets nothing — to point it elsewhere, edit ${PUSH_URL_KEY} in it by hand, or re-run with --force, which copies it to a .bak sibling and re-writes it from this run's --push-url`);
|
|
189
275
|
return { written: true, notes, warnings };
|
|
190
276
|
}
|
|
191
277
|
//# sourceMappingURL=notifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/generators/notifications.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/generators/notifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generator: the outer-loop scripts — the run watcher, the git wrappers, the worktree tooling
|
|
3
|
-
*
|
|
2
|
+
* Generator: the outer-loop scripts — the run watcher, the git wrappers, the worktree tooling, the
|
|
3
|
+
* flow walker with its gate library and flow graph, the test-suite runner, and the shared library
|
|
4
|
+
* they all source —
|
|
5
|
+
* written into the adopter's configured `scriptsDir`.
|
|
4
6
|
*
|
|
5
7
|
* **The rule this module exists to enforce: {@link OUTER_LOOP_SCRIPTS} is the single declaration of
|
|
6
8
|
* which outer-loop files ship, where each one lands, what mode it carries and which of them an
|
|
@@ -57,9 +59,19 @@ export const WATCHER_SCRIPT_NAME = 'autonomous-watcher.sh';
|
|
|
57
59
|
* The row below is built from it, so the file is renamed here and nowhere else.
|
|
58
60
|
*/
|
|
59
61
|
export const NOTIFY_SCRIPT_NAME = 'autonomous-notify.sh';
|
|
62
|
+
/**
|
|
63
|
+
* The docs-retrieval server launcher's file name, named on its own for the same reason
|
|
64
|
+
* {@link WATCHER_SCRIPT_NAME} is: `generators/repoRoot.ts` → `retrievalWiring` joins it into
|
|
65
|
+
* `.mcp.json`'s launcher argument, and that argument and the writer disagreeing would declare a
|
|
66
|
+
* server whose program was never written.
|
|
67
|
+
*
|
|
68
|
+
* The row below is built from it, so the file is renamed here and nowhere else.
|
|
69
|
+
*/
|
|
70
|
+
export const DOCS_SEARCH_SERVER_SCRIPT_NAME = 'docs-search-server.sh';
|
|
60
71
|
/**
|
|
61
72
|
* The whole outer-loop set, in the order `init` writes it: the shared library first, because every
|
|
62
|
-
* other row sources it
|
|
73
|
+
* other row sources it, and each further library or data file before the script that sources or
|
|
74
|
+
* reads it.
|
|
63
75
|
*
|
|
64
76
|
* **Declared once, here.** One row is one line, and adding a script is adding its template plus its
|
|
65
77
|
* row — no condition threaded through the writer, no second list to keep in step.
|
|
@@ -76,13 +88,28 @@ export const OUTER_LOOP_SCRIPTS = Object.freeze([
|
|
|
76
88
|
// regenerated, which is the whole point of shipping it as a script rather than as an interpreter
|
|
77
89
|
// allow entry.
|
|
78
90
|
Object.freeze({ file: 'scratch-run.sh', mode: 0o755, agentInvocable: true }),
|
|
91
|
+
// Sourced and read by `flow-walker.sh` from its own directory, never run.
|
|
92
|
+
Object.freeze({ file: 'flow-walker-gates.sh', subdir: 'lib', mode: 0o644, agentInvocable: false }),
|
|
93
|
+
Object.freeze({ file: 'task_plan_writing.graph.json', subdir: 'flows', mode: 0o644, agentInvocable: false }),
|
|
94
|
+
// Run by the orchestrating session; no `DENY_SCRIPT_BASENAMES` entry, because it must be reachable.
|
|
95
|
+
Object.freeze({ file: 'flow-walker.sh', mode: 0o755, agentInvocable: true }),
|
|
96
|
+
// Run by the orchestrating session in the Run gates phase; no `DENY_SCRIPT_BASENAMES` entry,
|
|
97
|
+
// because it must be reachable.
|
|
98
|
+
Object.freeze({ file: 'run-test-suite.sh', mode: 0o755, agentInvocable: true }),
|
|
79
99
|
Object.freeze({ file: 'create-worktree.sh', mode: 0o755, agentInvocable: false }),
|
|
80
100
|
Object.freeze({ file: 'setup-worktree.sh', mode: 0o755, agentInvocable: false }),
|
|
101
|
+
// Started by the agent runner from `.mcp.json`, never by a dispatched agent's Bash call, so `false`
|
|
102
|
+
// is a calling convention. No `DENY_SCRIPT_BASENAMES` entry: the guard auto-allowing it runs
|
|
103
|
+
// nothing destructive.
|
|
104
|
+
Object.freeze({ file: DOCS_SEARCH_SERVER_SCRIPT_NAME, mode: 0o755, agentInvocable: false }),
|
|
81
105
|
Object.freeze({ file: 'cleanup-merged-worktrees.sh', mode: 0o755, agentInvocable: false }),
|
|
82
106
|
Object.freeze({ file: 'autonomous-format-stream.sh', mode: 0o755, agentInvocable: false }),
|
|
83
107
|
Object.freeze({ file: NOTIFY_SCRIPT_NAME, mode: 0o755, agentInvocable: false }),
|
|
84
108
|
Object.freeze({ file: WATCHER_SCRIPT_NAME, mode: 0o755, agentInvocable: false }),
|
|
85
109
|
Object.freeze({ file: 'restart-watcher.sh', mode: 0o755, agentInvocable: false }),
|
|
110
|
+
// Run by the watcher, the remote job or a person. Carries a `DENY_SCRIPT_BASENAMES` entry: a run that
|
|
111
|
+
// could dispatch runs could start runs about itself.
|
|
112
|
+
Object.freeze({ file: 'remote-run.sh', mode: 0o755, agentInvocable: false }),
|
|
86
113
|
]);
|
|
87
114
|
/** The templates' subdirectory under `cli/templates/`, addressed as {@link readTemplate} wants it. */
|
|
88
115
|
const TEMPLATE_DIR = 'scripts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outerLoopScripts.js","sourceRoot":"","sources":["../../src/generators/outerLoopScripts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"outerLoopScripts.js","sourceRoot":"","sources":["../../src/generators/outerLoopScripts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAsB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAqDhD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,uBAAuB,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmC,MAAM,CAAC,MAAM,CAAC;IAC9E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACjF,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC5E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC/E,kGAAkG;IAClG,8FAA8F;IAC9F,mGAAmG;IACnG,+FAA+F;IAC/F,iGAAiG;IACjG,eAAe;IACf,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC5E,0EAA0E;IAC1E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAClG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC5G,oGAAoG;IACpG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC5E,6FAA6F;IAC7F,gCAAgC;IAChC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC/E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACjF,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChF,oGAAoG;IACpG,6FAA6F;IAC7F,uBAAuB;IACvB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC3F,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC1F,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC1F,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC/E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChF,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACjF,sGAAsG;IACtG,qDAAqD;IACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;CACpE,CAAC,CAAC;AAEZ,sGAAsG;AACtG,MAAM,YAAY,GAAG,SAAS,CAAC;AAqC/B;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAuB;IAC3D,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AACvF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAqB;IACvD,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,MAAqB,EAAE,YAAoB;IAC/F,OAAO,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAA2B;IACvF,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAE5G,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC;gBACP,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;gBACxC,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,gCAAgC,MAAM,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC;YACP,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM,EAAE,kBAAkB;YAC1B,OAAO,EAAE,YAAY,CAAC,GAAG,YAAY,IAAI,QAAQ,EAAE,CAAC;YACpD,KAAK,EAAE,qBAAqB,QAAQ,EAAE;YACtC,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,KAAK,GACT,OAAO,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,GAAG,OAAO,CAAC,MAAM,eAAe,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,iBAAiB,UAAU,4RAA4R;SAC5Y,CAAC;IAER,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC"}
|