@tacuchi/agent-workflow-cli 21.17.0 → 22.0.1
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 -16
- package/dist/adapters/git-cli.js +66 -5
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/adapters/node-process.js +25 -5
- package/dist/adapters/node-process.js.map +1 -1
- package/dist/application/capability/design-handler.js +67 -21
- package/dist/application/capability/design-handler.js.map +1 -1
- package/dist/application/capability/dispatcher.js +1 -1
- package/dist/application/capability/dispatcher.js.map +1 -1
- package/dist/application/capability/durable-effect.js +1 -1
- package/dist/application/capability/durable-effect.js.map +1 -1
- package/dist/application/check-branch-service.js +1 -0
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/checkpoint-service.js +4 -3
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/design/consumer-document.js +179 -0
- package/dist/application/design/consumer-document.js.map +1 -0
- package/dist/application/design/design-gate-service.js +18 -1
- package/dist/application/design/design-gate-service.js.map +1 -1
- package/dist/application/design/design-index-service.js +22 -3
- package/dist/application/design/design-index-service.js.map +1 -1
- package/dist/application/design/design-publish-service.js +27 -6
- package/dist/application/design/design-publish-service.js.map +1 -1
- package/dist/application/design/design-simple-service.js +34 -22
- package/dist/application/design/design-simple-service.js.map +1 -1
- package/dist/application/dev-only-services.js +19 -12
- package/dist/application/dev-only-services.js.map +1 -1
- package/dist/application/docs-canon-service.js +79 -5
- package/dist/application/docs-canon-service.js.map +1 -1
- package/dist/application/dsn-reader-service.js +12 -47
- package/dist/application/dsn-reader-service.js.map +1 -1
- package/dist/application/export-service.js +20 -11
- package/dist/application/export-service.js.map +1 -1
- package/dist/application/flow/flow-service.js +25 -0
- package/dist/application/flow/flow-service.js.map +1 -1
- package/dist/application/flow/internal-actions.js +5 -0
- package/dist/application/flow/internal-actions.js.map +1 -1
- package/dist/application/flow/submit.js +156 -22
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/history-table.js +82 -44
- package/dist/application/history-table.js.map +1 -1
- package/dist/application/history-update-service.js +19 -9
- package/dist/application/history-update-service.js.map +1 -1
- package/dist/application/hook-git-commit-advisor.js +5 -4
- package/dist/application/hook-git-commit-advisor.js.map +1 -1
- package/dist/application/hook-sql-mutation-guard.js +1 -1
- package/dist/application/hook-sql-mutation-guard.js.map +1 -1
- package/dist/application/lifecycle-target.js +1 -0
- package/dist/application/lifecycle-target.js.map +1 -1
- package/dist/application/local-proposal.js +47 -23
- package/dist/application/local-proposal.js.map +1 -1
- package/dist/application/mcp-connections-service.js +37 -2
- package/dist/application/mcp-connections-service.js.map +1 -1
- package/dist/application/mcp-dbhub-launcher.js +22 -50
- package/dist/application/mcp-dbhub-launcher.js.map +1 -1
- package/dist/application/mcp-doctor-service.js +14 -23
- package/dist/application/mcp-doctor-service.js.map +1 -1
- package/dist/application/mcp-remove-service.js +3 -3
- package/dist/application/mcp-remove-service.js.map +1 -1
- package/dist/application/mcp-setup-service.js +4 -4
- package/dist/application/mcp-setup-service.js.map +1 -1
- package/dist/application/mcp-test-connection-service.js +9 -9
- package/dist/application/mcp-test-connection-service.js.map +1 -1
- package/dist/application/parsers/phases.js +17 -5
- package/dist/application/parsers/phases.js.map +1 -1
- package/dist/application/parsers/project-block.js +5 -11
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/parsers/sessions-csv.js +16 -14
- package/dist/application/parsers/sessions-csv.js.map +1 -1
- package/dist/application/parsers/spec-relation.js +15 -11
- package/dist/application/parsers/spec-relation.js.map +1 -1
- package/dist/application/parsers/tasks.js +25 -1
- package/dist/application/parsers/tasks.js.map +1 -1
- package/dist/application/persist-service.js +67 -29
- package/dist/application/persist-service.js.map +1 -1
- package/dist/application/plugin-doctor/skills.js +1 -40
- package/dist/application/plugin-doctor/skills.js.map +1 -1
- package/dist/application/plugin-doctor-service.js +1 -3
- package/dist/application/plugin-doctor-service.js.map +1 -1
- package/dist/application/release-data/artifacts.js +1 -0
- package/dist/application/release-data/artifacts.js.map +1 -1
- package/dist/application/release-data/bundles.js +15 -6
- package/dist/application/release-data/bundles.js.map +1 -1
- package/dist/application/release-data/common.js +16 -7
- package/dist/application/release-data/common.js.map +1 -1
- package/dist/application/release-data/sessions.js +36 -8
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/render/project-block.js +2 -2
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/resume-service.js +9 -1
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/retirement/graph.js +14 -13
- package/dist/application/retirement/graph.js.map +1 -1
- package/dist/application/retirement/prepare.js +15 -2
- package/dist/application/retirement/prepare.js.map +1 -1
- package/dist/application/retirement/resolve.js.map +1 -1
- package/dist/application/self/clean-legacy.js +2 -4
- package/dist/application/self/clean-legacy.js.map +1 -1
- package/dist/application/self/install-plugin-skills-git.js +8 -4
- package/dist/application/self/install-plugin-skills-git.js.map +1 -1
- package/dist/application/self/mcp-config.js +8 -9
- package/dist/application/self/mcp-config.js.map +1 -1
- package/dist/application/session-close-service.js +8 -2
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.js +26 -14
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-resolver.js +80 -34
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/session-resume-service.js +4 -3
- package/dist/application/session-resume-service.js.map +1 -1
- package/dist/application/source-boundary-policy.js +504 -0
- package/dist/application/source-boundary-policy.js.map +1 -0
- package/dist/application/status-service.js +1 -0
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/workline-index-service.js +42 -20
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/application/workspace-migrate/apply.js +2 -4
- package/dist/application/workspace-migrate/apply.js.map +1 -1
- package/dist/application/workspace-migrate/plan.js +9 -6
- package/dist/application/workspace-migrate/plan.js.map +1 -1
- package/dist/application/workspace-migrate/preview.js +3 -3
- package/dist/application/workspace-migrate/preview.js.map +1 -1
- package/dist/application/worktree-service.js +3 -0
- package/dist/application/worktree-service.js.map +1 -1
- package/dist/cli/commands/capability.js +89 -5
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/designs.js +2 -6
- package/dist/cli/commands/designs.js.map +1 -1
- package/dist/cli/commands/dev-only.js +1 -1
- package/dist/cli/commands/dev-only.js.map +1 -1
- package/dist/cli/commands/flow.js +3 -1
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/index.js +0 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/mcp.js +53 -55
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/persist.js +27 -21
- package/dist/cli/commands/persist.js.map +1 -1
- package/dist/cli/commands/resume.js +2 -2
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/session-create.js +2 -1
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/help-groups.js +0 -1
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/main.js +0 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.js +1 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/data/recommended-skills.js +2 -2
- package/dist/cli/tui/data/recommended-skills.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab-helpers.js +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +2 -2
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/dist/domain/capability/protocol.js.map +1 -1
- package/dist/domain/correlative.js +121 -0
- package/dist/domain/correlative.js.map +1 -0
- package/dist/domain/design/capability.js +18 -0
- package/dist/domain/design/capability.js.map +1 -1
- package/dist/domain/docs-canon.js +31 -0
- package/dist/domain/docs-canon.js.map +1 -0
- package/dist/domain/flow/answer.js +57 -1
- package/dist/domain/flow/answer.js.map +1 -1
- package/dist/domain/flow/authority.js +28 -29
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/flow/execution-result.js +13 -1
- package/dist/domain/flow/execution-result.js.map +1 -1
- package/dist/domain/flow/run-state.js.map +1 -1
- package/dist/domain/mcp-entry.js +7 -12
- package/dist/domain/mcp-entry.js.map +1 -1
- package/dist/domain/retirement/selector.js +16 -14
- package/dist/domain/retirement/selector.js.map +1 -1
- package/dist/domain/source-boundary.js +3 -0
- package/dist/domain/source-boundary.js.map +1 -0
- package/dist/domain/workline-node.js +12 -5
- package/dist/domain/workline-node.js.map +1 -1
- package/dist/runtime/namespace-resolver.js +0 -3
- package/dist/runtime/namespace-resolver.js.map +1 -1
- package/package.json +5 -5
- package/skills/w/SKILL.md +2 -2
- package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +14 -9
- package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +7 -0
- package/skills/w/commands/export-scripts.md +8 -2
- package/skills/w/commands/plan-new.md +1 -0
- package/skills/w/context/MANIFEST.json +2 -9
- package/skills/w/exports/export-scripts/EXPORT.md +13 -9
- package/skills/w/loops/CHASSIS.md +1 -1
- package/skills/w/loops/plan-exec-loop/LOOP.md +14 -10
- package/skills/w/loops/plan-new-loop/LOOP.md +16 -16
- package/skills/w/loops/plan-refine-loop/LOOP.md +6 -1
- package/skills/w/loops/quick-loop/LOOP.md +2 -2
- package/skills/w/loops/spec-refine-loop/LOOP.md +4 -0
- package/skills/w/modules/DB-RESEARCH-RULE.md +5 -5
- package/skills/w/modules/DB-SCRIPTS-ONLY.md +5 -6
- package/skills/w/modules/EXEC-DB-POLICY.md +2 -2
- package/skills/w/modules/PLAN-INPUT.md +11 -9
- package/skills/w/roles/sql/ROLE.md +9 -9
- package/dist/application/decisiones-service.js +0 -31
- package/dist/application/decisiones-service.js.map +0 -1
- package/dist/application/dev-bootstrap-dsn-service.js +0 -76
- package/dist/application/dev-bootstrap-dsn-service.js.map +0 -1
- package/dist/application/profile/profile-service.js +0 -199
- package/dist/application/profile/profile-service.js.map +0 -1
- package/dist/application/tasks-service.js +0 -45
- package/dist/application/tasks-service.js.map +0 -1
- package/dist/cli/commands/bootstrap-dsn.js +0 -16
- package/dist/cli/commands/bootstrap-dsn.js.map +0 -1
- package/dist/cli/tui/components/process-list.js +0 -43
- package/dist/cli/tui/components/process-list.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resume-service.js","sourceRoot":"","sources":["../../src/application/session-resume-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAyB,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,aAAa,EAGb,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAoC/B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,KAAyB;IAEzB,0EAA0E;IAC1E,sEAAsE;IACtE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpE,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IACzE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE;QACvD,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,WAAW,EAAE,IAAI;QACjB,
|
|
1
|
+
{"version":3,"file":"session-resume-service.js","sourceRoot":"","sources":["../../src/application/session-resume-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import { checkSafeRelativePath } from "../domain/safe-path.js";
|
|
2
|
+
import { scanMarkdown } from "./markdown.js";
|
|
3
|
+
import { semanticDigest } from "./semantic-operation/protocol.js";
|
|
4
|
+
export { SOURCE_BOUNDED_EVIDENCE, } from "../domain/source-boundary.js";
|
|
5
|
+
export const CHECKOUT_EXECUTION_SURFACE = "checkout";
|
|
6
|
+
const TASKS_HEADING = "tasks";
|
|
7
|
+
const PHASE_HEADING = /^F(\d+)\s*(?:[—–-]\s*)?(.*)$/;
|
|
8
|
+
const SURFACE_LINE = /^>\s*(?:L[ií]mite de ejecuci[oó]n|Execution surface)\s*:\s*(.+)$/i;
|
|
9
|
+
const SOURCES_LINE = /^>\s*Fuentes\s*:\s*(.*)$/i;
|
|
10
|
+
const TASK_LINE = /^\s*[-*]\s*\[[ xX]\]\s+(.+)$/;
|
|
11
|
+
const TASK_SOURCES = /_\(\s*fuentes\s*:\s*([^)]*)\)_/i;
|
|
12
|
+
// These are structural labels that define a closing clause, not a vocabulary of
|
|
13
|
+
// forbidden deployment words. The policy then reasons from a *positive* local
|
|
14
|
+
// proof grammar and from locators, whose syntax carries their surface.
|
|
15
|
+
const HANDOFF_HEADING = /^(?:handoff operativo|operational handoff)$/i;
|
|
16
|
+
const VALIDATIONS_HEADING = /^(?:validaciones|validations)$/i;
|
|
17
|
+
const PHASE_VALIDATION_LINE = /^\s*(?:[-*]\s*)?(?:\*\*)?\s*(?:validaci[oó]n(?: de fase)?|phase validation)(?:\*\*)?\s*:/i;
|
|
18
|
+
const PHASE_EXIT_LINE = /^\s*(?:[-*]\s*)?(?:\*\*)?\s*(?:condici[oó]n de salida|exit condition|cierre|closure)(?:\*\*)?\s*:/i;
|
|
19
|
+
// A URI or host:port is an execution surface by grammar, independently of its
|
|
20
|
+
// name. This intentionally catches a new host/connection without having to add
|
|
21
|
+
// it to a blacklist.
|
|
22
|
+
const REMOTE_LOCATOR = /(?:\b[A-Za-z][A-Za-z0-9+.-]{0,31}:\/\/[^\s<>()]+|\b[A-Za-z0-9][A-Za-z0-9.-]*:\d{2,5}(?:\/[^\s<>()]*)?)/;
|
|
23
|
+
// `remote-read` is the discriminant of RemoteContextSnapshot, not a prose term.
|
|
24
|
+
// Seeing that typed context in a closure clause is invalid by construction.
|
|
25
|
+
const REMOTE_CONTEXT_DISCRIMINANT = /\bkind\s*:\s*["'`]?remote-read\b/i;
|
|
26
|
+
// A close is allowed only when it names one of the local proof forms Workline
|
|
27
|
+
// can reproduce. This is an allowlist of evidence *semantics*, not a list of
|
|
28
|
+
// remote products/hosts to forbid. Relative checkout artifacts are evidence too.
|
|
29
|
+
const LOCAL_PROOF = /\b(?:checkout|checkoutproof|fixture|ephemeral|test(?:s)?|prueba(?:s)?|inspecci[oó]n|inspection|lint|typecheck|build|golden(?:s)?|diff)\b|\bnpm\s+(?:run\s+)?(?:test|lint|typecheck|build|pack)\b|(?:^|[\s`(])(?:\.?\/?(?:src|tests|fixtures|docs|scripts)\/)/i;
|
|
30
|
+
/**
|
|
31
|
+
* Reads the structural source declarations from a plan without interpreting its
|
|
32
|
+
* business prose. The source policy therefore has one seam for every caller:
|
|
33
|
+
* parsers, promotion gates and plan-exec all see the same phase/task graph.
|
|
34
|
+
*/
|
|
35
|
+
export function parsePlanSourceBoundary(text) {
|
|
36
|
+
const phases = [];
|
|
37
|
+
let surface = null;
|
|
38
|
+
let inTasks = false;
|
|
39
|
+
let current = null;
|
|
40
|
+
let currentTask = null;
|
|
41
|
+
const markdown = scanMarkdown(text);
|
|
42
|
+
for (const [index, raw] of markdown.lines.entries()) {
|
|
43
|
+
if (markdown.fenced[index])
|
|
44
|
+
continue;
|
|
45
|
+
const line = index + 1;
|
|
46
|
+
const heading = /^(#{1,6})\s+(.+?)\s*$/.exec(raw);
|
|
47
|
+
if (heading?.[1] !== undefined && heading[2] !== undefined) {
|
|
48
|
+
const level = heading[1].length;
|
|
49
|
+
if (level <= 2) {
|
|
50
|
+
inTasks = level === 2 && foldHeading(heading[2]) === TASKS_HEADING;
|
|
51
|
+
current = null;
|
|
52
|
+
currentTask = null;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (level === 3) {
|
|
56
|
+
current = inTasks ? phaseFromHeading(heading[2], line) : null;
|
|
57
|
+
if (current !== null)
|
|
58
|
+
phases.push(current);
|
|
59
|
+
currentTask = null;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const surfaceMatch = SURFACE_LINE.exec(raw.trim());
|
|
64
|
+
if (surfaceMatch?.[1] !== undefined && surface === null) {
|
|
65
|
+
surface = readExecutionSurface(surfaceMatch[1]);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (current === null)
|
|
69
|
+
continue;
|
|
70
|
+
const sourceMatch = SOURCES_LINE.exec(raw.trim());
|
|
71
|
+
if (sourceMatch !== null && current.sources === null) {
|
|
72
|
+
current.sources = readAliases(sourceMatch[1] ?? "");
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const taskMatch = TASK_LINE.exec(raw);
|
|
76
|
+
if (taskMatch?.[1] !== undefined) {
|
|
77
|
+
const task = taskMatch[1];
|
|
78
|
+
const declared = TASK_SOURCES.exec(task);
|
|
79
|
+
currentTask = {
|
|
80
|
+
n: current.tasks.length + 1,
|
|
81
|
+
line,
|
|
82
|
+
sources: declared === null ? null : readAliases(declared[1] ?? ""),
|
|
83
|
+
};
|
|
84
|
+
current.tasks.push(currentTask);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Markdown keeps a wrapped list item's continuation indented. Let the
|
|
88
|
+
// declaration sit on that continuation, but never scan arbitrary prose in
|
|
89
|
+
// the phase: an annotation in a validation paragraph cannot retroactively
|
|
90
|
+
// make the preceding task executable.
|
|
91
|
+
if (currentTask !== null &&
|
|
92
|
+
currentTask.sources === null &&
|
|
93
|
+
/^\s{2,}\S/.test(raw) &&
|
|
94
|
+
raw.trim().length > 0) {
|
|
95
|
+
const declared = TASK_SOURCES.exec(raw);
|
|
96
|
+
if (declared !== null)
|
|
97
|
+
currentTask.sources = readAliases(declared[1] ?? "");
|
|
98
|
+
}
|
|
99
|
+
else if (raw.trim().length === 0) {
|
|
100
|
+
currentTask = null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { execution_surface: surface, phases };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validates the plan's source contract against the aliases its WORKSPACE block
|
|
107
|
+
* declares. `workspace` is the sole reserved alias; every other spelling must
|
|
108
|
+
* resolve through that block. Errors are structural, not keyword-based: a
|
|
109
|
+
* narrative cannot make an undeclared or remote source locally executable.
|
|
110
|
+
*/
|
|
111
|
+
export function validatePlanSourceBoundary(text, declaredSources) {
|
|
112
|
+
const parsed = parsePlanSourceBoundary(text);
|
|
113
|
+
const failures = [];
|
|
114
|
+
if (parsed.execution_surface !== CHECKOUT_EXECUTION_SURFACE) {
|
|
115
|
+
failures.push({
|
|
116
|
+
code: "PLAN_SOURCE_BOUNDARY_MISSING",
|
|
117
|
+
message: "el plan debe declarar '> Límite de ejecución: checkout' antes de poder ejecutarse",
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (parsed.phases.length === 0) {
|
|
121
|
+
failures.push({
|
|
122
|
+
code: "PLAN_SOURCE_BOUNDARY_MISSING",
|
|
123
|
+
message: "el plan no declara ninguna fase con fuentes explícitas",
|
|
124
|
+
});
|
|
125
|
+
return failures;
|
|
126
|
+
}
|
|
127
|
+
const known = new Set(["workspace", ...declaredSources]);
|
|
128
|
+
for (const phase of parsed.phases) {
|
|
129
|
+
if (phase.sources === null || phase.sources.length === 0) {
|
|
130
|
+
failures.push({
|
|
131
|
+
code: "PLAN_SOURCE_BOUNDARY_MISSING",
|
|
132
|
+
message: `F${phase.n} no declara '> Fuentes:'`,
|
|
133
|
+
line: phase.line,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
failures.push(...unknownSources(phase.sources, known, phase.line, `F${phase.n}`));
|
|
138
|
+
}
|
|
139
|
+
const phaseSources = new Set(phase.sources ?? []);
|
|
140
|
+
for (const task of phase.tasks) {
|
|
141
|
+
if (task.sources === null || task.sources.length === 0) {
|
|
142
|
+
failures.push({
|
|
143
|
+
code: "PLAN_SOURCE_BOUNDARY_MISSING",
|
|
144
|
+
message: `T${phase.n}.${task.n} no declara '_(fuentes: …)_'`,
|
|
145
|
+
line: task.line,
|
|
146
|
+
});
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
failures.push(...unknownSources(task.sources, known, task.line, `T${phase.n}.${task.n}`));
|
|
150
|
+
const outside = task.sources.filter((source) => !phaseSources.has(source));
|
|
151
|
+
if (outside.length > 0) {
|
|
152
|
+
failures.push({
|
|
153
|
+
code: "PLAN_TASK_SOURCE_OUTSIDE_PHASE",
|
|
154
|
+
message: `T${phase.n}.${task.n} declara ${outside.join(", ")} fuera de las fuentes de F${phase.n}`,
|
|
155
|
+
line: task.line,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
failures.push(...validateSourceBoundedSemantics(text));
|
|
161
|
+
return failures;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Read the prose positions that can turn a plan into an external dependency.
|
|
165
|
+
*
|
|
166
|
+
* This is intentionally not a denylist such as `prod|staging|host`: a renamed
|
|
167
|
+
* host must not become executable merely because the word was not known. A
|
|
168
|
+
* closing clause is instead a small semantic object: it needs a positive local
|
|
169
|
+
* proof form, and it may not contain a syntactically remote locator or the
|
|
170
|
+
* typed RemoteContextSnapshot discriminant. Handoffs are deliberately outside
|
|
171
|
+
* this grammar because they are deliveries, never closure conditions.
|
|
172
|
+
*/
|
|
173
|
+
export function validateSourceBoundedSemantics(text) {
|
|
174
|
+
const failures = [];
|
|
175
|
+
for (const clause of sourceBoundedClauses(text)) {
|
|
176
|
+
const remote = remoteSurfaceOf(clause.text);
|
|
177
|
+
if (remote !== null) {
|
|
178
|
+
failures.push({
|
|
179
|
+
code: "PLAN_SOURCE_EXTERNAL_CLOSURE",
|
|
180
|
+
line: clause.line,
|
|
181
|
+
message: `${semanticClauseLabel(clause)} depende de la superficie externa '${remote}'`,
|
|
182
|
+
});
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
if ((clause.kind === "phase-validation" || clause.kind === "plan-validation") &&
|
|
186
|
+
!LOCAL_PROOF.test(clause.text)) {
|
|
187
|
+
failures.push({
|
|
188
|
+
code: "PLAN_SOURCE_LOCAL_PROOF_MISSING",
|
|
189
|
+
line: clause.line,
|
|
190
|
+
message: `${semanticClauseLabel(clause)} no nombra una prueba local de checkout`,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return failures;
|
|
195
|
+
}
|
|
196
|
+
function sourceBoundedClauses(text) {
|
|
197
|
+
const clauses = [];
|
|
198
|
+
const markdown = scanMarkdown(text);
|
|
199
|
+
const headings = new Map(markdown.headings.map((heading) => [heading.line, heading]));
|
|
200
|
+
let inTasks = false;
|
|
201
|
+
let inHandoff = false;
|
|
202
|
+
let inValidations = false;
|
|
203
|
+
let inPhase = false;
|
|
204
|
+
let active = null;
|
|
205
|
+
const add = (kind, line, value) => {
|
|
206
|
+
const clause = { kind, line, text: value.trim() };
|
|
207
|
+
clauses.push(clause);
|
|
208
|
+
return clause;
|
|
209
|
+
};
|
|
210
|
+
for (let index = 0; index < markdown.lines.length; index += 1) {
|
|
211
|
+
if (markdown.fenced[index]) {
|
|
212
|
+
active = null;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
const raw = markdown.lines[index] ?? "";
|
|
216
|
+
const trimmed = raw.trim();
|
|
217
|
+
const heading = headings.get(index);
|
|
218
|
+
if (heading !== undefined) {
|
|
219
|
+
const folded = foldHeading(heading.title);
|
|
220
|
+
if (heading.level <= 2) {
|
|
221
|
+
inHandoff = HANDOFF_HEADING.test(folded);
|
|
222
|
+
inValidations = VALIDATIONS_HEADING.test(folded);
|
|
223
|
+
inTasks = folded === TASKS_HEADING;
|
|
224
|
+
inPhase = false;
|
|
225
|
+
}
|
|
226
|
+
else if (heading.level === 3) {
|
|
227
|
+
inPhase = inTasks && phaseFromHeading(heading.title, index + 1) !== null;
|
|
228
|
+
}
|
|
229
|
+
active = null;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
if (inHandoff)
|
|
233
|
+
continue;
|
|
234
|
+
const task = TASK_LINE.exec(raw);
|
|
235
|
+
if (inTasks && inPhase && task?.[1] !== undefined) {
|
|
236
|
+
active = add("task", index + 1, task[1].replace(TASK_SOURCES, ""));
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
if (inPhase && PHASE_VALIDATION_LINE.test(raw)) {
|
|
240
|
+
active = add("phase-validation", index + 1, raw);
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
if (inPhase && PHASE_EXIT_LINE.test(raw)) {
|
|
244
|
+
active = add("phase-exit", index + 1, raw);
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
if (inValidations && trimmed.length > 0 && /^[-*]\s+/.test(trimmed)) {
|
|
248
|
+
active = add("plan-validation", index + 1, trimmed.replace(/^[-*]\s+/, ""));
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
// A wrapped task/validation stays one semantic clause. We only append
|
|
252
|
+
// Markdown's indented continuation, never arbitrary phase prose.
|
|
253
|
+
if (active !== null && /^\s{2,}\S/.test(raw)) {
|
|
254
|
+
active.text = `${active.text} ${trimmed}`;
|
|
255
|
+
}
|
|
256
|
+
else if (trimmed.length === 0) {
|
|
257
|
+
active = null;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return clauses;
|
|
261
|
+
}
|
|
262
|
+
function remoteSurfaceOf(text) {
|
|
263
|
+
const locator = REMOTE_LOCATOR.exec(text)?.[0];
|
|
264
|
+
if (locator !== undefined)
|
|
265
|
+
return locator;
|
|
266
|
+
return REMOTE_CONTEXT_DISCRIMINANT.test(text) ? "RemoteContextSnapshot" : null;
|
|
267
|
+
}
|
|
268
|
+
function semanticClauseLabel(clause) {
|
|
269
|
+
switch (clause.kind) {
|
|
270
|
+
case "task":
|
|
271
|
+
return `la tarea de línea ${clause.line}`;
|
|
272
|
+
case "phase-validation":
|
|
273
|
+
return `la validación de fase de línea ${clause.line}`;
|
|
274
|
+
case "phase-exit":
|
|
275
|
+
return `la condición de salida de línea ${clause.line}`;
|
|
276
|
+
case "plan-validation":
|
|
277
|
+
return `la validación de plan de línea ${clause.line}`;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/** The exact source aliases a valid plan scopes, in first-declared order. */
|
|
281
|
+
export function sourceAliasesOfPlan(text) {
|
|
282
|
+
const seen = new Set();
|
|
283
|
+
const out = [];
|
|
284
|
+
for (const phase of parsePlanSourceBoundary(text).phases) {
|
|
285
|
+
for (const source of phase.sources ?? []) {
|
|
286
|
+
if (seen.has(source))
|
|
287
|
+
continue;
|
|
288
|
+
seen.add(source);
|
|
289
|
+
out.push(source);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return out;
|
|
293
|
+
}
|
|
294
|
+
/** A stable digest of the checkout state a proof was obtained from. */
|
|
295
|
+
export function checkoutDigest(input) {
|
|
296
|
+
return semanticDigest({
|
|
297
|
+
source: input.source,
|
|
298
|
+
head: input.head,
|
|
299
|
+
dirty: input.dirty,
|
|
300
|
+
changed_files: [...input.changed_files].sort(),
|
|
301
|
+
worktree_fingerprint: input.worktree_fingerprint,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/** The sources a proof may name, so a rejected one says what it should have been. */
|
|
305
|
+
function eligibleSources(states) {
|
|
306
|
+
const names = states.map((state) => state.source);
|
|
307
|
+
return names.length > 0 ? names.join(", ") : "ninguna";
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* A digest that does not survive its own recomputation is not evidence that the
|
|
311
|
+
* checkout moved, and saying so sends the reader to look for a change that may
|
|
312
|
+
* not exist.
|
|
313
|
+
*/
|
|
314
|
+
function staleMessage(source, reproducible) {
|
|
315
|
+
if (reproducible !== false) {
|
|
316
|
+
return `el checkout de '${source}' cambió desde que se capturó la prueba`;
|
|
317
|
+
}
|
|
318
|
+
return [
|
|
319
|
+
`el digest de '${source}' no coincide y NO es estable entre dos cómputos consecutivos:`,
|
|
320
|
+
"o el árbol cambia mientras se valida, o la huella no es reproducible;",
|
|
321
|
+
"recapturar la prueba no alcanza si persiste",
|
|
322
|
+
].join(" ");
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Validates a proof against freshly observed checkout state.
|
|
326
|
+
*
|
|
327
|
+
* A caller supplies only checkouts it has already resolved and acquired. This
|
|
328
|
+
* keeps path/worktree discovery outside the policy while keeping all proof shape,
|
|
329
|
+
* source and freshness rules in one module.
|
|
330
|
+
*/
|
|
331
|
+
export function validateCheckoutProof(proof, states) {
|
|
332
|
+
if (proof === undefined) {
|
|
333
|
+
return {
|
|
334
|
+
code: "WORKLINE_CHECKOUT_PROOF_MISSING",
|
|
335
|
+
message: "la evidencia source-bounded debe incluir su CheckoutProof local",
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
const basic = proofFailure(proof);
|
|
339
|
+
if (basic !== null)
|
|
340
|
+
return basic;
|
|
341
|
+
// A pure/parser caller can enforce the proof's shape before it has acquired a
|
|
342
|
+
// checkout. The execution route always supplies the live states and therefore
|
|
343
|
+
// also enforces ownership and freshness.
|
|
344
|
+
if (states === null)
|
|
345
|
+
return null;
|
|
346
|
+
const current = states.find((state) => state.source === proof.source);
|
|
347
|
+
if (current === undefined) {
|
|
348
|
+
return {
|
|
349
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
350
|
+
message: `la prueba declara la fuente '${proof.source}', que no pertenece al ` +
|
|
351
|
+
`checkout adquirido (elegibles: ${eligibleSources(states)})`,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
if (current.digest !== proof.checkout_digest) {
|
|
355
|
+
return {
|
|
356
|
+
code: "WORKLINE_CHECKOUT_PROOF_STALE",
|
|
357
|
+
message: staleMessage(proof.source, current.reproducible),
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
/** Structural validation for an explicitly captured research-only remote read. */
|
|
363
|
+
export function validateRemoteContextSnapshot(value) {
|
|
364
|
+
if (!isRecord(value) || value.kind !== "remote-read" || value.readonly !== true)
|
|
365
|
+
return null;
|
|
366
|
+
if (typeof value.connection !== "string" ||
|
|
367
|
+
typeof value.query_artifact !== "string" ||
|
|
368
|
+
typeof value.captured_at !== "string" ||
|
|
369
|
+
typeof value.result_digest !== "string") {
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
if (value.connection.trim().length === 0 ||
|
|
373
|
+
value.query_artifact.trim().length === 0 ||
|
|
374
|
+
value.captured_at.trim().length === 0 ||
|
|
375
|
+
value.result_digest.trim().length === 0) {
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
return {
|
|
379
|
+
kind: "remote-read",
|
|
380
|
+
connection: value.connection,
|
|
381
|
+
readonly: true,
|
|
382
|
+
query_artifact: value.query_artifact,
|
|
383
|
+
captured_at: value.captured_at,
|
|
384
|
+
result_digest: value.result_digest,
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
function phaseFromHeading(title, line) {
|
|
388
|
+
const match = PHASE_HEADING.exec(title.trim());
|
|
389
|
+
if (match?.[1] === undefined)
|
|
390
|
+
return null;
|
|
391
|
+
return { n: Number(match[1]), line, sources: null, tasks: [] };
|
|
392
|
+
}
|
|
393
|
+
function foldHeading(value) {
|
|
394
|
+
return value
|
|
395
|
+
.replace(/\s*\([^)]*\)\s*:?\s*$/, "")
|
|
396
|
+
.replace(/:\s*$/, "")
|
|
397
|
+
.trim()
|
|
398
|
+
.toLowerCase();
|
|
399
|
+
}
|
|
400
|
+
function readExecutionSurface(value) {
|
|
401
|
+
return value.trim().toLowerCase() === CHECKOUT_EXECUTION_SURFACE
|
|
402
|
+
? CHECKOUT_EXECUTION_SURFACE
|
|
403
|
+
: null;
|
|
404
|
+
}
|
|
405
|
+
function readAliases(value) {
|
|
406
|
+
return value
|
|
407
|
+
.split(",")
|
|
408
|
+
.map((part) => part.trim())
|
|
409
|
+
.filter((part) => part.length > 0);
|
|
410
|
+
}
|
|
411
|
+
function unknownSources(sources, known, line, owner) {
|
|
412
|
+
const unknown = sources.filter((source) => !known.has(source));
|
|
413
|
+
if (unknown.length === 0)
|
|
414
|
+
return [];
|
|
415
|
+
return [
|
|
416
|
+
{
|
|
417
|
+
code: "PLAN_SOURCE_UNKNOWN",
|
|
418
|
+
message: `${owner} declara fuentes no presentes en AGENTS.md > Fuentes: ${unknown.join(", ")}`,
|
|
419
|
+
line,
|
|
420
|
+
},
|
|
421
|
+
];
|
|
422
|
+
}
|
|
423
|
+
function proofFailure(proof) {
|
|
424
|
+
if (proof.source.trim().length === 0 || proof.checkout_digest.trim().length === 0) {
|
|
425
|
+
return {
|
|
426
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
427
|
+
message: "la prueba debe declarar source y checkout_digest no vacíos",
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
const cwd = proof.relative_cwd === "." ? { ok: true } : checkSafeRelativePath(proof.relative_cwd);
|
|
431
|
+
if (!cwd.ok) {
|
|
432
|
+
return {
|
|
433
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
434
|
+
message: `relative_cwd '${proof.relative_cwd}' no es una ruta segura dentro del checkout`,
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
return proof.kind === "command" ? commandProofFailure(proof) : inspectionProofFailure(proof);
|
|
438
|
+
}
|
|
439
|
+
function commandProofFailure(proof) {
|
|
440
|
+
if (!("program" in proof.invocation)) {
|
|
441
|
+
return {
|
|
442
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
443
|
+
message: "una prueba command debe declarar una invocación command",
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
if (proof.invocation.program.trim().length === 0 ||
|
|
447
|
+
!Array.isArray(proof.invocation.args) ||
|
|
448
|
+
!proof.invocation.args.every((arg) => typeof arg === "string")) {
|
|
449
|
+
return {
|
|
450
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
451
|
+
message: "una prueba command debe declarar program y args de texto",
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
const remote = remoteLocatorIn([proof.invocation.program, ...proof.invocation.args]);
|
|
455
|
+
if (remote === null)
|
|
456
|
+
return null;
|
|
457
|
+
return {
|
|
458
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
459
|
+
message: `una prueba command no puede invocar la superficie externa '${remote}'`,
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
function inspectionProofFailure(proof) {
|
|
463
|
+
if (!("artifact" in proof.invocation)) {
|
|
464
|
+
return {
|
|
465
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
466
|
+
message: "una prueba inspection debe declarar una invocación inspection",
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
if (typeof proof.invocation.artifact !== "string" ||
|
|
470
|
+
proof.invocation.artifact.trim().length === 0) {
|
|
471
|
+
return {
|
|
472
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
473
|
+
message: "una prueba inspection debe declarar su artifact",
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
const artifact = checkSafeRelativePath(proof.invocation.artifact);
|
|
477
|
+
if (!artifact.ok) {
|
|
478
|
+
return {
|
|
479
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
480
|
+
message: `artifact '${proof.invocation.artifact}' no es una ruta segura dentro del checkout`,
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
const remote = remoteLocatorIn([artifact.path]);
|
|
484
|
+
if (remote !== null) {
|
|
485
|
+
return {
|
|
486
|
+
code: "WORKLINE_CHECKOUT_PROOF_INVALID",
|
|
487
|
+
message: `una prueba inspection no puede señalar la superficie externa '${remote}'`,
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
return null;
|
|
491
|
+
}
|
|
492
|
+
/** A command receipt remains local only when none of its fields locates a remote surface. */
|
|
493
|
+
function remoteLocatorIn(values) {
|
|
494
|
+
for (const value of values) {
|
|
495
|
+
const locator = REMOTE_LOCATOR.exec(value)?.[0];
|
|
496
|
+
if (locator !== undefined)
|
|
497
|
+
return locator;
|
|
498
|
+
}
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
function isRecord(value) {
|
|
502
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=source-boundary-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-boundary-policy.js","sourceRoot":"","sources":["../../src/application/source-boundary-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EACL,uBAAuB,GAIxB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,CAAC,MAAM,0BAA0B,GAAqB,UAAU,CAAC;AAsCvE,MAAM,aAAa,GAAG,OAAO,CAAC;AAC9B,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,YAAY,GAAG,mEAAmE,CAAC;AACzF,MAAM,YAAY,GAAG,2BAA2B,CAAC;AACjD,MAAM,SAAS,GAAG,8BAA8B,CAAC;AACjD,MAAM,YAAY,GAAG,iCAAiC,CAAC;AAUvD,gFAAgF;AAChF,8EAA8E;AAC9E,uEAAuE;AACvE,MAAM,eAAe,GAAG,8CAA8C,CAAC;AACvE,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AAC9D,MAAM,qBAAqB,GACzB,2FAA2F,CAAC;AAC9F,MAAM,eAAe,GACnB,oGAAoG,CAAC;AACvG,8EAA8E;AAC9E,+EAA+E;AAC/E,qBAAqB;AACrB,MAAM,cAAc,GAClB,wGAAwG,CAAC;AAC3G,gFAAgF;AAChF,4EAA4E;AAC5E,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AACxE,8EAA8E;AAC9E,6EAA6E;AAC7E,iFAAiF;AACjF,MAAM,WAAW,GACf,+PAA+P,CAAC;AAElQ;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,WAAW,GAA2B,IAAI,CAAC;IAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAEpC,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAChC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,OAAO,GAAG,KAAK,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC;gBACnE,OAAO,GAAG,IAAI,CAAC;gBACf,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9D,IAAI,OAAO,KAAK,IAAI;oBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3C,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACrD,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,WAAW,GAAG;gBACZ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC3B,IAAI;gBACJ,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACnE,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QACD,sEAAsE;QACtE,0EAA0E;QAC1E,0EAA0E;QAC1E,sCAAsC;QACtC,IACE,WAAW,KAAK,IAAI;YACpB,WAAW,CAAC,OAAO,KAAK,IAAI;YAC5B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACrB,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACrB,CAAC;YACD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,QAAQ,KAAK,IAAI;gBAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAY,EACZ,eAAkC;IAElC,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,IAAI,MAAM,CAAC,iBAAiB,KAAK,0BAA0B,EAAE,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,mFAAmF;SAC7F,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,wDAAwD;SAClE,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,8BAA8B;gBACpC,OAAO,EAAE,IAAI,KAAK,CAAC,CAAC,0BAA0B;gBAC9C,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,8BAA8B;oBACpC,OAAO,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,8BAA8B;oBAC5D,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,gCAAgC;oBACtC,OAAO,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,CAAC,EAAE;oBAClG,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,sCAAsC,MAAM,GAAG;aACvF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IACE,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC;YACzE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAC9B,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,iCAAiC;gBACvC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,yCAAyC;aACjF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAA0B,IAAI,CAAC;IAEzC,MAAM,GAAG,GAAG,CAAC,IAAwB,EAAE,IAAY,EAAE,KAAa,EAAkB,EAAE;QACpF,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC9D,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBACvB,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzC,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjD,OAAO,GAAG,MAAM,KAAK,aAAa,CAAC;gBACnC,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;YAC3E,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QACD,IAAI,SAAS;YAAE,SAAS;QAExB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QACD,IAAI,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,CAAC,kBAAkB,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QACD,IAAI,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,GAAG,GAAG,CAAC,iBAAiB,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QACD,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,MAAM,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5C,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,OAAO,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC;AACjF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAsB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,kBAAkB;YACrB,OAAO,kCAAkC,MAAM,CAAC,IAAI,EAAE,CAAC;QACzD,KAAK,YAAY;YACf,OAAO,mCAAmC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1D,KAAK,iBAAiB;YACpB,OAAO,kCAAkC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,cAAc,CAAC,KAO9B;IACC,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;QAC9C,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;KACjD,CAAC,CAAC;AACL,CAAC;AAYD,qFAAqF;AACrF,SAAS,eAAe,CAAC,MAAgC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,MAAc,EAAE,YAAiC;IACrE,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,mBAAmB,MAAM,yCAAyC,CAAC;IAC5E,CAAC;IACD,OAAO;QACL,iBAAiB,MAAM,gEAAgE;QACvF,uEAAuE;QACvE,6CAA6C;KAC9C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAgC,EAChC,MAAuC;IAEvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,iEAAiE;SAC3E,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,8EAA8E;IAC9E,8EAA8E;IAC9E,yCAAyC;IACzC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EACL,gCAAgC,KAAK,CAAC,MAAM,yBAAyB;gBACrE,kCAAkC,eAAe,CAAC,MAAM,CAAC,GAAG;SAC/D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;SAC1D,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7F,IACE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACpC,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QACxC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,EACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QACpC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QACxC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QACrC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAY;IACnD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK;SACT,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,0BAA0B;QAC9D,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CACrB,OAA0B,EAC1B,KAA0B,EAC1B,IAAY,EACZ,KAAa;IAEb,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO;QACL;YACE,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,GAAG,KAAK,yDAAyD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9F,IAAI;SACL;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB;IACxC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClF,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,4DAA4D;SACtE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,iBAAiB,KAAK,CAAC,YAAY,6CAA6C;SAC1F,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAoB;IAC/C,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,yDAAyD;SACnE,CAAC;IACJ,CAAC;IACD,IACE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAC5C,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACrC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,EAC9D,CAAC;QACD,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,0DAA0D;SACpE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE,8DAA8D,MAAM,GAAG;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAoB;IAClD,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,+DAA+D;SACzE,CAAC;IACJ,CAAC;IACD,IACE,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;QAC7C,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAC7C,CAAC;QACD,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,iDAAiD;SAC3D,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,aAAa,KAAK,CAAC,UAAU,CAAC,QAAQ,6CAA6C;SAC7F,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,iEAAiE,MAAM,GAAG;SACpF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6FAA6F;AAC7F,SAAS,eAAe,CAAC,MAAyB;IAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -36,6 +36,7 @@ export async function runStatusCommand(fs, env, paths, input = {}) {
|
|
|
36
36
|
pipeline: index.pipeline,
|
|
37
37
|
designs: index.designs,
|
|
38
38
|
orphan_units: index.orphan_units,
|
|
39
|
+
...(index.docs_canon_error !== undefined ? { docs_canon_error: index.docs_canon_error } : {}),
|
|
39
40
|
counts: {
|
|
40
41
|
specs: index.specs.length,
|
|
41
42
|
specs_refined: index.specs.filter((s) => s.refined).length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-service.js","sourceRoot":"","sources":["../../src/application/status-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAsB,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAQL,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"status-service.js","sourceRoot":"","sources":["../../src/application/status-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAsB,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAQL,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AA2FrC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,QAAqB,EAAE;IAEvB,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC5C,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;YACnE,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,eAAe,EAAE,MAAM;QACvB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,EAAE;YACN,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;YAC1D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YACjC,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;SAC/B;KACF,CAAC;AACJ,CAAC"}
|